1
0
Fork 0
mirror of https://code.forgejo.org/actions/setup-python synced 2025-06-16 16:04:11 +02:00

Add freethreaded input and fix handling of prerelease versions

This commit is contained in:
Sam Gross 2025-01-30 19:46:04 +00:00
parent d653c0b66e
commit 72902a03bd
7 changed files with 163 additions and 55 deletions

View file

@ -1,18 +1,54 @@
import {desugarVersion} from '../src/find-python';
import {desugarVersion, pythonVersionToSemantic} from '../src/find-python';
describe('desugarVersion', () => {
it.each([
['3.13', ['3.13', '']],
['3.13t', ['3.13', '-freethreaded']],
['3.13.1', ['3.13.1', '']],
['3.13.1t', ['3.13.1', '-freethreaded']],
['3.14-dev', ['~3.14.0-0', '']],
['3.14t-dev', ['~3.14.0-0', '-freethreaded']],
['3.14.0a4', ['3.14.0a4', '']],
['3.14.0ta4', ['3.14.0a4', '-freethreaded']],
['3.14.0rc1', ['3.14.0rc1', '']],
['3.14.0trc1', ['3.14.0rc1', '-freethreaded']]
['3.13', {version: '3.13', freethreaded: false}],
['3.13t', {version: '3.13', freethreaded: true}],
['3.13.1', {version: '3.13.1', freethreaded: false}],
['3.13.1t', {version: '3.13.1', freethreaded: true}],
['3.14-dev', {version: '~3.14.0-0', freethreaded: false}],
['3.14t-dev', {version: '~3.14.0-0', freethreaded: true}],
['3.14.0a4', {version: '3.14.0a4', freethreaded: false}],
['3.14.0rc1', {version: '3.14.0rc1', freethreaded: false}],
['3.14.0rc1t', {version: '3.14.0rc1', freethreaded: true}]
])('%s -> %s', (input, expected) => {
expect(desugarVersion(input)).toEqual(expected);
});
});
// Test the combined desugarVersion and pythonVersionToSemantic functions
describe('pythonVersions', () => {
it.each([
['3.13', {version: '3.13', freethreaded: false}],
['3.13t', {version: '3.13', freethreaded: true}],
['3.13.1', {version: '3.13.1', freethreaded: false}],
['3.13.1t', {version: '3.13.1', freethreaded: true}],
['3.14-dev', {version: '~3.14.0-0', freethreaded: false}],
['3.14t-dev', {version: '~3.14.0-0', freethreaded: true}],
['3.14.0a4', {version: '3.14.0-alpha.4', freethreaded: false}],
['3.14.0a4t', {version: '3.14.0-alpha.4', freethreaded: true}],
['3.14.0rc1', {version: '3.14.0-rc.1', freethreaded: false}],
['3.14.0rc1t', {version: '3.14.0-rc.1', freethreaded: true}]
])('%s -> %s', (input, expected) => {
const {version, freethreaded} = desugarVersion(input);
let semanticVersionSpec = pythonVersionToSemantic(version, false);
expect({version: semanticVersionSpec, freethreaded}).toEqual(expected);
});
it.each([
['3.13', {version: '~3.13.0-0', freethreaded: false}],
['3.13t', {version: '~3.13.0-0', freethreaded: true}],
['3.13.1', {version: '3.13.1', freethreaded: false}],
['3.13.1t', {version: '3.13.1', freethreaded: true}],
['3.14-dev', {version: '~3.14.0-0', freethreaded: false}],
['3.14t-dev', {version: '~3.14.0-0', freethreaded: true}],
['3.14.0a4', {version: '3.14.0-alpha.4', freethreaded: false}],
['3.14.0a4t', {version: '3.14.0-alpha.4', freethreaded: true}],
['3.14.0rc1', {version: '3.14.0-rc.1', freethreaded: false}],
['3.14.0rc1t', {version: '3.14.0-rc.1', freethreaded: true}]
])('%s (allowPreReleases=true) -> %s', (input, expected) => {
const {version, freethreaded} = desugarVersion(input);
let semanticVersionSpec = pythonVersionToSemantic(version, true);
expect({version: semanticVersionSpec, freethreaded}).toEqual(expected);
});
});