From 13399d0718a14941111c18769dafa65faff677d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kry=C5=A1tof=20Korb?= Date: Thu, 4 Jan 2024 00:33:23 +0100 Subject: [PATCH 1/8] Enhance reading from .python-version --- __tests__/utils.test.ts | 26 ++++++++++++++++++++++++-- src/setup-python.ts | 4 ++-- src/utils.ts | 29 ++++++++++++++++++++++------- 3 files changed, 48 insertions(+), 11 deletions(-) diff --git a/__tests__/utils.test.ts b/__tests__/utils.test.ts index 6c0f0e135..f724195bd 100644 --- a/__tests__/utils.test.ts +++ b/__tests__/utils.test.ts @@ -10,7 +10,7 @@ import { validatePythonVersionFormatForPyPy, isCacheFeatureAvailable, getVersionInputFromFile, - getVersionInputFromPlainFile, + getVersionsInputFromPlainFile, getVersionInputFromTomlFile, getNextPageUrl, isGhes, @@ -95,7 +95,7 @@ const tempDir = path.join( ); describe('Version from file test', () => { - it.each([getVersionInputFromPlainFile, getVersionInputFromFile])( + it.each([getVersionsInputFromPlainFile, getVersionInputFromFile])( 'Version from plain file test', async _fn => { await io.mkdirP(tempDir); @@ -106,6 +106,28 @@ describe('Version from file test', () => { expect(_fn(pythonVersionFilePath)).toEqual([pythonVersionFileContent]); } ); + it.each([getVersionsInputFromPlainFile, getVersionInputFromFile])( + 'Versions from multiline plain file test', + async _fn => { + await io.mkdirP(tempDir); + const pythonVersionFileName = 'python-version.file'; + const pythonVersionFilePath = path.join(tempDir, pythonVersionFileName); + const pythonVersionFileContent = '3.8\r\n3.7'; + fs.writeFileSync(pythonVersionFilePath, pythonVersionFileContent); + expect(_fn(pythonVersionFilePath)).toEqual(['3.8', '3.7']); + } + ); + it.each([getVersionsInputFromPlainFile, getVersionInputFromFile])( + 'Version from complex plain file test', + async _fn => { + await io.mkdirP(tempDir); + const pythonVersionFileName = 'python-version.file'; + const pythonVersionFilePath = path.join(tempDir, pythonVersionFileName); + const pythonVersionFileContent = '3.10/envs/virtualenv\r# 3.9\n3.8\r\n3.7\r\n 3.6 \r\n'; + fs.writeFileSync(pythonVersionFilePath, pythonVersionFileContent); + expect(_fn(pythonVersionFilePath)).toEqual(['3.10', '3.8', '3.7', '3.6']); + } + ); it.each([getVersionInputFromTomlFile, getVersionInputFromFile])( 'Version from standard pyproject.toml test', async _fn => { diff --git a/src/setup-python.ts b/src/setup-python.ts index ab5931b82..5d585d734 100644 --- a/src/setup-python.ts +++ b/src/setup-python.ts @@ -11,7 +11,7 @@ import { logWarning, IS_MAC, getVersionInputFromFile, - getVersionInputFromPlainFile + getVersionsInputFromPlainFile } from './utils'; function isPyPyVersion(versionSpec: string) { @@ -35,7 +35,7 @@ async function cacheDependencies(cache: string, pythonVersion: string) { function resolveVersionInputFromDefaultFile(): string[] { const couples: [string, (versionFile: string) => string[]][] = [ - ['.python-version', getVersionInputFromPlainFile] + ['.python-version', getVersionsInputFromPlainFile] ]; for (const [versionFile, _fn] of couples) { logWarning( diff --git a/src/utils.ts b/src/utils.ts index 6274895e8..174609863 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -269,13 +269,28 @@ export function getVersionInputFromTomlFile(versionFile: string): string[] { } /** - * Python version extracted from a plain text file. + * Python versions extracted from a plain text file. + * - Resolves multiple versions from multiple lines. + * - Handles pyenv-virtualenv pointers (e.g. `3.10/envs/virtualenv`). + * - Ignores empty lines and lines starting with `#` + * - Trims whitespace. */ -export function getVersionInputFromPlainFile(versionFile: string): string[] { - core.debug(`Trying to resolve version form ${versionFile}`); - const version = fs.readFileSync(versionFile, 'utf8').trim(); - core.info(`Resolved ${versionFile} as ${version}`); - return [version]; +export function getVersionsInputFromPlainFile(versionFile: string): string[] { + core.debug(`Trying to resolve versions form ${versionFile}`); + const content = fs.readFileSync(versionFile, 'utf8').trim(); + const lines = content.split(/\r\n|\r|\n/); + const versions = lines + .map(line => { + if (line.startsWith('#') || line.trim() === '') { + return undefined; + } + let version: string = line.trim(); + version = version.split('/')[0]; + return version; + }) + .filter(version => version !== undefined) as string[]; + core.info(`Resolved ${versionFile} as ${versions.join(', ')}`); + return versions; } /** @@ -319,7 +334,7 @@ export function getVersionInputFromFile(versionFile: string): string[] { } else if (versionFile.match('.tool-versions')) { return getVersionInputFromToolVersions(versionFile); } else { - return getVersionInputFromPlainFile(versionFile); + return getVersionsInputFromPlainFile(versionFile); } } From e73db4617cc9be9f51d5673a35d09c00a7f96604 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kry=C5=A1tof=20Korb?= Date: Thu, 4 Jan 2024 00:45:19 +0100 Subject: [PATCH 2/8] Fix typos --- src/utils.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/utils.ts b/src/utils.ts index 174609863..f39006d98 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -228,7 +228,7 @@ function extractValue(obj: any, keys: string[]): string | undefined { * If none is present, returns an empty list. */ export function getVersionInputFromTomlFile(versionFile: string): string[] { - core.debug(`Trying to resolve version form ${versionFile}`); + core.debug(`Trying to resolve version from ${versionFile}`); let pyprojectFile = fs.readFileSync(versionFile, 'utf8'); // Normalize the line endings in the pyprojectFile @@ -276,7 +276,7 @@ export function getVersionInputFromTomlFile(versionFile: string): string[] { * - Trims whitespace. */ export function getVersionsInputFromPlainFile(versionFile: string): string[] { - core.debug(`Trying to resolve versions form ${versionFile}`); + core.debug(`Trying to resolve versions from ${versionFile}`); const content = fs.readFileSync(versionFile, 'utf8').trim(); const lines = content.split(/\r\n|\r|\n/); const versions = lines From 795bdd5e6c8b40c29293dcea30d7ffbf6fe620fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kry=C5=A1tof=20Korb?= Date: Wed, 9 Apr 2025 11:01:32 +0200 Subject: [PATCH 3/8] Fix lint --- __tests__/utils.test.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/__tests__/utils.test.ts b/__tests__/utils.test.ts index f724195bd..052bce7a0 100644 --- a/__tests__/utils.test.ts +++ b/__tests__/utils.test.ts @@ -123,7 +123,8 @@ describe('Version from file test', () => { await io.mkdirP(tempDir); const pythonVersionFileName = 'python-version.file'; const pythonVersionFilePath = path.join(tempDir, pythonVersionFileName); - const pythonVersionFileContent = '3.10/envs/virtualenv\r# 3.9\n3.8\r\n3.7\r\n 3.6 \r\n'; + const pythonVersionFileContent = + '3.10/envs/virtualenv\r# 3.9\n3.8\r\n3.7\r\n 3.6 \r\n'; fs.writeFileSync(pythonVersionFilePath, pythonVersionFileContent); expect(_fn(pythonVersionFilePath)).toEqual(['3.10', '3.8', '3.7', '3.6']); } From 2cd6a529c298f024d1aedb346e94707467c71242 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kry=C5=A1tof=20Korb?= Date: Wed, 14 May 2025 14:52:09 +0200 Subject: [PATCH 4/8] Add built files --- dist/setup/index.js | 39 +++++++++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/dist/setup/index.js b/dist/setup/index.js index 2cdcfaad1..72fc53689 100644 --- a/dist/setup/index.js +++ b/dist/setup/index.js @@ -97622,7 +97622,7 @@ function cacheDependencies(cache, pythonVersion) { } function resolveVersionInputFromDefaultFile() { const couples = [ - ['.python-version', utils_1.getVersionInputFromPlainFile] + ['.python-version', utils_1.getVersionsInputFromPlainFile] ]; for (const [versionFile, _fn] of couples) { (0, utils_1.logWarning)(`Neither 'python-version' nor 'python-version-file' inputs were supplied. Attempting to find '${versionFile}' file.`); @@ -97759,7 +97759,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.getDownloadFileName = exports.getNextPageUrl = exports.getBinaryDirectory = exports.getVersionInputFromFile = exports.getVersionInputFromToolVersions = exports.getVersionInputFromPlainFile = exports.getVersionInputFromTomlFile = exports.getOSInfo = exports.getLinuxInfo = exports.logWarning = exports.isCacheFeatureAvailable = exports.isGhes = exports.validatePythonVersionFormatForPyPy = exports.writeExactPyPyVersionFile = exports.readExactPyPyVersionFile = exports.getPyPyVersionFromPath = exports.isNightlyKeyword = exports.validateVersion = exports.createSymlinkInFolder = exports.WINDOWS_PLATFORMS = exports.WINDOWS_ARCHS = exports.IS_MAC = exports.IS_LINUX = exports.IS_WINDOWS = void 0; +exports.getDownloadFileName = exports.getNextPageUrl = exports.getBinaryDirectory = exports.getVersionInputFromFile = exports.getVersionInputFromToolVersions = exports.getVersionsInputFromPlainFile = exports.getVersionInputFromTomlFile = exports.getOSInfo = exports.getLinuxInfo = exports.logWarning = exports.isCacheFeatureAvailable = exports.isGhes = exports.validatePythonVersionFormatForPyPy = exports.writeExactPyPyVersionFile = exports.readExactPyPyVersionFile = exports.getPyPyVersionFromPath = exports.isNightlyKeyword = exports.validateVersion = exports.createSymlinkInFolder = exports.WINDOWS_PLATFORMS = exports.WINDOWS_ARCHS = exports.IS_MAC = exports.IS_LINUX = exports.IS_WINDOWS = void 0; /* eslint no-unsafe-finally: "off" */ const cache = __importStar(__nccwpck_require__(5116)); const core = __importStar(__nccwpck_require__(7484)); @@ -97940,7 +97940,7 @@ function extractValue(obj, keys) { * If none is present, returns an empty list. */ function getVersionInputFromTomlFile(versionFile) { - core.debug(`Trying to resolve version form ${versionFile}`); + core.debug(`Trying to resolve version from ${versionFile}`); let pyprojectFile = fs_1.default.readFileSync(versionFile, 'utf8'); // Normalize the line endings in the pyprojectFile pyprojectFile = pyprojectFile.replace(/\r\n/g, '\n'); @@ -97973,15 +97973,30 @@ function getVersionInputFromTomlFile(versionFile) { } exports.getVersionInputFromTomlFile = getVersionInputFromTomlFile; /** - * Python version extracted from a plain text file. - */ -function getVersionInputFromPlainFile(versionFile) { - core.debug(`Trying to resolve version form ${versionFile}`); - const version = fs_1.default.readFileSync(versionFile, 'utf8').trim(); - core.info(`Resolved ${versionFile} as ${version}`); - return [version]; + * Python versions extracted from a plain text file. + * - Resolves multiple versions from multiple lines. + * - Handles pyenv-virtualenv pointers (e.g. `3.10/envs/virtualenv`). + * - Ignores empty lines and lines starting with `#` + * - Trims whitespace. + */ +function getVersionsInputFromPlainFile(versionFile) { + core.debug(`Trying to resolve versions from ${versionFile}`); + const content = fs_1.default.readFileSync(versionFile, 'utf8').trim(); + const lines = content.split(/\r\n|\r|\n/); + const versions = lines + .map(line => { + if (line.startsWith('#') || line.trim() === '') { + return undefined; + } + let version = line.trim(); + version = version.split('/')[0]; + return version; + }) + .filter(version => version !== undefined); + core.info(`Resolved ${versionFile} as ${versions.join(', ')}`); + return versions; } -exports.getVersionInputFromPlainFile = getVersionInputFromPlainFile; +exports.getVersionsInputFromPlainFile = getVersionsInputFromPlainFile; /** * Python version extracted from a .tool-versions file. */ @@ -98024,7 +98039,7 @@ function getVersionInputFromFile(versionFile) { return getVersionInputFromToolVersions(versionFile); } else { - return getVersionInputFromPlainFile(versionFile); + return getVersionsInputFromPlainFile(versionFile); } } exports.getVersionInputFromFile = getVersionInputFromFile; From eff48d107148c901220f50882ce797e8cf51ffbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kry=C5=A1tof=20Korb?= Date: Wed, 14 May 2025 15:00:01 +0200 Subject: [PATCH 5/8] Don't use EOL versions in `utils.test.ts` --- __tests__/utils.test.ts | 42 ++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/__tests__/utils.test.ts b/__tests__/utils.test.ts index 052bce7a0..106ed4051 100644 --- a/__tests__/utils.test.ts +++ b/__tests__/utils.test.ts @@ -24,10 +24,10 @@ jest.mock('@actions/core'); describe('validatePythonVersionFormatForPyPy', () => { it.each([ - ['3.6', true], - ['3.7', true], - ['3.6.x', false], - ['3.7.x', false], + ['3.13', true], + ['3.14', true], + ['3.13.x', false], + ['3.14.x', false], ['3.x', false], ['3', false] ])('%s -> %s', (input, expected) => { @@ -101,7 +101,7 @@ describe('Version from file test', () => { await io.mkdirP(tempDir); const pythonVersionFileName = 'python-version.file'; const pythonVersionFilePath = path.join(tempDir, pythonVersionFileName); - const pythonVersionFileContent = '3.7'; + const pythonVersionFileContent = '3.14'; fs.writeFileSync(pythonVersionFilePath, pythonVersionFileContent); expect(_fn(pythonVersionFilePath)).toEqual([pythonVersionFileContent]); } @@ -112,9 +112,9 @@ describe('Version from file test', () => { await io.mkdirP(tempDir); const pythonVersionFileName = 'python-version.file'; const pythonVersionFilePath = path.join(tempDir, pythonVersionFileName); - const pythonVersionFileContent = '3.8\r\n3.7'; + const pythonVersionFileContent = '3.14\r\n3.13'; fs.writeFileSync(pythonVersionFilePath, pythonVersionFileContent); - expect(_fn(pythonVersionFilePath)).toEqual(['3.8', '3.7']); + expect(_fn(pythonVersionFilePath)).toEqual(['3.14', '3.13']); } ); it.each([getVersionsInputFromPlainFile, getVersionInputFromFile])( @@ -124,9 +124,9 @@ describe('Version from file test', () => { const pythonVersionFileName = 'python-version.file'; const pythonVersionFilePath = path.join(tempDir, pythonVersionFileName); const pythonVersionFileContent = - '3.10/envs/virtualenv\r# 3.9\n3.8\r\n3.7\r\n 3.6 \r\n'; + '3.15/envs/virtualenv\r# 3.15\n3.14\r\n3.13\r\n 3.12 \r\n'; fs.writeFileSync(pythonVersionFilePath, pythonVersionFileContent); - expect(_fn(pythonVersionFilePath)).toEqual(['3.10', '3.8', '3.7', '3.6']); + expect(_fn(pythonVersionFilePath)).toEqual(['3.15', '3.14', '3.13', '3.12']); } ); it.each([getVersionInputFromTomlFile, getVersionInputFromFile])( @@ -135,7 +135,7 @@ describe('Version from file test', () => { await io.mkdirP(tempDir); const pythonVersionFileName = 'pyproject.toml'; const pythonVersionFilePath = path.join(tempDir, pythonVersionFileName); - const pythonVersion = '>=3.7.0'; + const pythonVersion = '>=3.13.0'; const pythonVersionFileContent = `[project]\nrequires-python = "${pythonVersion}"`; fs.writeFileSync(pythonVersionFilePath, pythonVersionFileContent); expect(_fn(pythonVersionFilePath)).toEqual([pythonVersion]); @@ -147,7 +147,7 @@ describe('Version from file test', () => { await io.mkdirP(tempDir); const pythonVersionFileName = 'pyproject.toml'; const pythonVersionFilePath = path.join(tempDir, pythonVersionFileName); - const pythonVersion = '>=3.7.0'; + const pythonVersion = '>=3.13.0'; const pythonVersionFileContent = `[tool.poetry.dependencies]\npython = "${pythonVersion}"`; fs.writeFileSync(pythonVersionFilePath, pythonVersionFileContent); expect(_fn(pythonVersionFilePath)).toEqual([pythonVersion]); @@ -168,9 +168,9 @@ describe('Version from file test', () => { async _fn => { const toolVersionFileName = '.tool-versions'; const toolVersionFilePath = path.join(tempDir, toolVersionFileName); - const toolVersionContent = 'python 3.9.10\nnodejs 16'; + const toolVersionContent = 'python 3.13.2\nnodejs 16'; fs.writeFileSync(toolVersionFilePath, toolVersionContent); - expect(_fn(toolVersionFilePath)).toEqual(['3.9.10']); + expect(_fn(toolVersionFilePath)).toEqual(['3.13.2']); } ); @@ -179,9 +179,9 @@ describe('Version from file test', () => { async _fn => { const toolVersionFileName = '.tool-versions'; const toolVersionFilePath = path.join(tempDir, toolVersionFileName); - const toolVersionContent = '# python 3.8\npython 3.9'; + const toolVersionContent = '# python 3.13\npython 3.14'; fs.writeFileSync(toolVersionFilePath, toolVersionContent); - expect(_fn(toolVersionFilePath)).toEqual(['3.9']); + expect(_fn(toolVersionFilePath)).toEqual(['3.14']); } ); @@ -190,9 +190,9 @@ describe('Version from file test', () => { async _fn => { const toolVersionFileName = '.tool-versions'; const toolVersionFilePath = path.join(tempDir, toolVersionFileName); - const toolVersionContent = ' python 3.10 '; + const toolVersionContent = ' python 3.14 '; fs.writeFileSync(toolVersionFilePath, toolVersionContent); - expect(_fn(toolVersionFilePath)).toEqual(['3.10']); + expect(_fn(toolVersionFilePath)).toEqual(['3.14']); } ); @@ -201,9 +201,9 @@ describe('Version from file test', () => { async _fn => { const toolVersionFileName = '.tool-versions'; const toolVersionFilePath = path.join(tempDir, toolVersionFileName); - const toolVersionContent = 'python v3.9.10'; + const toolVersionContent = 'python v3.14.2'; fs.writeFileSync(toolVersionFilePath, toolVersionContent); - expect(_fn(toolVersionFilePath)).toEqual(['3.9.10']); + expect(_fn(toolVersionFilePath)).toEqual(['3.14.2']); } ); @@ -212,9 +212,9 @@ describe('Version from file test', () => { async _fn => { const toolVersionFileName = '.tool-versions'; const toolVersionFilePath = path.join(tempDir, toolVersionFileName); - const toolVersionContent = 'python pypy3.10-7.3.14'; + const toolVersionContent = 'python pypy3.14-7.3.19'; fs.writeFileSync(toolVersionFilePath, toolVersionContent); - expect(_fn(toolVersionFilePath)).toEqual(['pypy3.10-7.3.14']); + expect(_fn(toolVersionFilePath)).toEqual(['pypy3.14-7.3.19']); } ); From 34bb7318ea48437fd41e6e517b4f91951304702c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kry=C5=A1tof=20Korb?= Date: Wed, 14 May 2025 16:28:56 +0200 Subject: [PATCH 6/8] Fix Prettier --- __tests__/utils.test.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/__tests__/utils.test.ts b/__tests__/utils.test.ts index 106ed4051..e677108af 100644 --- a/__tests__/utils.test.ts +++ b/__tests__/utils.test.ts @@ -126,7 +126,12 @@ describe('Version from file test', () => { const pythonVersionFileContent = '3.15/envs/virtualenv\r# 3.15\n3.14\r\n3.13\r\n 3.12 \r\n'; fs.writeFileSync(pythonVersionFilePath, pythonVersionFileContent); - expect(_fn(pythonVersionFilePath)).toEqual(['3.15', '3.14', '3.13', '3.12']); + expect(_fn(pythonVersionFilePath)).toEqual([ + '3.15', + '3.14', + '3.13', + '3.12' + ]); } ); it.each([getVersionInputFromTomlFile, getVersionInputFromFile])( From cf275fe24d3d664ab46fbec3c3ed0c13d45bdd56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kry=C5=A1tof=20Korb?= Date: Mon, 19 May 2025 10:07:18 +0200 Subject: [PATCH 7/8] Don't use unreleased versions in `utils.test.ts` --- __tests__/utils.test.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/__tests__/utils.test.ts b/__tests__/utils.test.ts index e677108af..26d05faa4 100644 --- a/__tests__/utils.test.ts +++ b/__tests__/utils.test.ts @@ -124,13 +124,13 @@ describe('Version from file test', () => { const pythonVersionFileName = 'python-version.file'; const pythonVersionFilePath = path.join(tempDir, pythonVersionFileName); const pythonVersionFileContent = - '3.15/envs/virtualenv\r# 3.15\n3.14\r\n3.13\r\n 3.12 \r\n'; + '3.14/envs/virtualenv\r# 3.14\n3.13\r\n3.12\r\n 3.11 \r\n'; fs.writeFileSync(pythonVersionFilePath, pythonVersionFileContent); expect(_fn(pythonVersionFilePath)).toEqual([ - '3.15', '3.14', '3.13', - '3.12' + '3.12', + '3.11' ]); } ); @@ -206,9 +206,9 @@ describe('Version from file test', () => { async _fn => { const toolVersionFileName = '.tool-versions'; const toolVersionFilePath = path.join(tempDir, toolVersionFileName); - const toolVersionContent = 'python v3.14.2'; + const toolVersionContent = 'python v3.13.2'; fs.writeFileSync(toolVersionFilePath, toolVersionContent); - expect(_fn(toolVersionFilePath)).toEqual(['3.14.2']); + expect(_fn(toolVersionFilePath)).toEqual(['3.13.2']); } ); From 68b6f20e34d9a78bc29c18484ca0ac8e11733e80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kry=C5=A1tof=20Korb?= Date: Tue, 20 May 2025 10:21:27 +0200 Subject: [PATCH 8/8] Update versions in `utils.test.ts` again --- __tests__/utils.test.ts | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/__tests__/utils.test.ts b/__tests__/utils.test.ts index 26d05faa4..009749c6b 100644 --- a/__tests__/utils.test.ts +++ b/__tests__/utils.test.ts @@ -24,10 +24,10 @@ jest.mock('@actions/core'); describe('validatePythonVersionFormatForPyPy', () => { it.each([ + ['3.12', true], ['3.13', true], - ['3.14', true], + ['3.12.x', false], ['3.13.x', false], - ['3.14.x', false], ['3.x', false], ['3', false] ])('%s -> %s', (input, expected) => { @@ -101,7 +101,7 @@ describe('Version from file test', () => { await io.mkdirP(tempDir); const pythonVersionFileName = 'python-version.file'; const pythonVersionFilePath = path.join(tempDir, pythonVersionFileName); - const pythonVersionFileContent = '3.14'; + const pythonVersionFileContent = '3.13'; fs.writeFileSync(pythonVersionFilePath, pythonVersionFileContent); expect(_fn(pythonVersionFilePath)).toEqual([pythonVersionFileContent]); } @@ -112,9 +112,9 @@ describe('Version from file test', () => { await io.mkdirP(tempDir); const pythonVersionFileName = 'python-version.file'; const pythonVersionFilePath = path.join(tempDir, pythonVersionFileName); - const pythonVersionFileContent = '3.14\r\n3.13'; + const pythonVersionFileContent = '3.13\r\n3.12'; fs.writeFileSync(pythonVersionFilePath, pythonVersionFileContent); - expect(_fn(pythonVersionFilePath)).toEqual(['3.14', '3.13']); + expect(_fn(pythonVersionFilePath)).toEqual(['3.13', '3.12']); } ); it.each([getVersionsInputFromPlainFile, getVersionInputFromFile])( @@ -124,13 +124,13 @@ describe('Version from file test', () => { const pythonVersionFileName = 'python-version.file'; const pythonVersionFilePath = path.join(tempDir, pythonVersionFileName); const pythonVersionFileContent = - '3.14/envs/virtualenv\r# 3.14\n3.13\r\n3.12\r\n 3.11 \r\n'; + '3.13/envs/virtualenv\r# 3.12\n3.11\r\n3.10\r\n 3.9 \r\n'; fs.writeFileSync(pythonVersionFilePath, pythonVersionFileContent); expect(_fn(pythonVersionFilePath)).toEqual([ - '3.14', '3.13', - '3.12', - '3.11' + '3.11', + '3.10', + '3.9' ]); } ); @@ -184,9 +184,9 @@ describe('Version from file test', () => { async _fn => { const toolVersionFileName = '.tool-versions'; const toolVersionFilePath = path.join(tempDir, toolVersionFileName); - const toolVersionContent = '# python 3.13\npython 3.14'; + const toolVersionContent = '# python 3.13\npython 3.12'; fs.writeFileSync(toolVersionFilePath, toolVersionContent); - expect(_fn(toolVersionFilePath)).toEqual(['3.14']); + expect(_fn(toolVersionFilePath)).toEqual(['3.12']); } ); @@ -195,9 +195,9 @@ describe('Version from file test', () => { async _fn => { const toolVersionFileName = '.tool-versions'; const toolVersionFilePath = path.join(tempDir, toolVersionFileName); - const toolVersionContent = ' python 3.14 '; + const toolVersionContent = ' python 3.13 '; fs.writeFileSync(toolVersionFilePath, toolVersionContent); - expect(_fn(toolVersionFilePath)).toEqual(['3.14']); + expect(_fn(toolVersionFilePath)).toEqual(['3.13']); } ); @@ -217,9 +217,9 @@ describe('Version from file test', () => { async _fn => { const toolVersionFileName = '.tool-versions'; const toolVersionFilePath = path.join(tempDir, toolVersionFileName); - const toolVersionContent = 'python pypy3.14-7.3.19'; + const toolVersionContent = 'python pypy3.10-7.3.19'; fs.writeFileSync(toolVersionFilePath, toolVersionContent); - expect(_fn(toolVersionFilePath)).toEqual(['pypy3.14-7.3.19']); + expect(_fn(toolVersionFilePath)).toEqual(['pypy3.10-7.3.19']); } );