mirror of
https://github.com/actions/setup-python.git
synced 2024-12-25 17:18:32 +01:00
Add range validation for toml files (#726)
This commit is contained in:
parent
f97b83114c
commit
65d7f2d534
4 changed files with 29 additions and 6 deletions
4
.github/workflows/test-python.yml
vendored
4
.github/workflows/test-python.yml
vendored
|
@ -157,7 +157,7 @@ jobs:
|
|||
fail-fast: false
|
||||
matrix:
|
||||
os: [macos-latest, windows-latest, ubuntu-20.04, ubuntu-22.04]
|
||||
python: [3.5.4, 3.6.7, 3.7.5, 3.8.15, 3.9.13]
|
||||
python: [3.5.4, 3.6.7, 3.7.5, 3.8.15, 3.9.13, '==3.10.10']
|
||||
exclude:
|
||||
- os: ubuntu-22.04
|
||||
python: 3.5.4
|
||||
|
@ -190,7 +190,7 @@ jobs:
|
|||
- name: Validate version
|
||||
run: |
|
||||
$pythonVersion = (python --version)
|
||||
if ("Python ${{ matrix.python }}" -ne "$pythonVersion"){
|
||||
if ("Python ${{ matrix.python }}".replace("==", "") -ne "$pythonVersion"){
|
||||
Write-Host "The current version is $pythonVersion; expected version is ${{ matrix.python }}"
|
||||
exit 1
|
||||
}
|
||||
|
|
|
@ -107,7 +107,7 @@ describe('Version from file test', () => {
|
|||
await io.mkdirP(tempDir);
|
||||
const pythonVersionFileName = 'pyproject.toml';
|
||||
const pythonVersionFilePath = path.join(tempDir, pythonVersionFileName);
|
||||
const pythonVersion = '>=3.7';
|
||||
const pythonVersion = '>=3.7.0';
|
||||
const pythonVersionFileContent = `[project]\nrequires-python = "${pythonVersion}"`;
|
||||
fs.writeFileSync(pythonVersionFilePath, pythonVersionFileContent);
|
||||
expect(_fn(pythonVersionFilePath)).toEqual([pythonVersion]);
|
||||
|
@ -119,7 +119,7 @@ describe('Version from file test', () => {
|
|||
await io.mkdirP(tempDir);
|
||||
const pythonVersionFileName = 'pyproject.toml';
|
||||
const pythonVersionFilePath = path.join(tempDir, pythonVersionFileName);
|
||||
const pythonVersion = '>=3.7';
|
||||
const pythonVersion = '>=3.7.0';
|
||||
const pythonVersionFileContent = `[tool.poetry.dependencies]\npython = "${pythonVersion}"`;
|
||||
fs.writeFileSync(pythonVersionFilePath, pythonVersionFileContent);
|
||||
expect(_fn(pythonVersionFilePath)).toEqual([pythonVersion]);
|
||||
|
|
11
dist/setup/index.js
vendored
11
dist/setup/index.js
vendored
|
@ -70143,7 +70143,16 @@ function getVersionInputFromTomlFile(versionFile) {
|
|||
versions.push(version);
|
||||
}
|
||||
core.info(`Extracted ${versions} from ${versionFile}`);
|
||||
return Array.from(versions, version => version.split(',').join(' '));
|
||||
const rawVersions = Array.from(versions, version => version.split(',').join(' '));
|
||||
const validatedVersions = rawVersions
|
||||
.map(item => semver.validRange(item, true))
|
||||
.filter((versionRange, index) => {
|
||||
if (!versionRange) {
|
||||
core.debug(`The version ${rawVersions[index]} is not valid SemVer range`);
|
||||
}
|
||||
return !!versionRange;
|
||||
});
|
||||
return validatedVersions;
|
||||
}
|
||||
exports.getVersionInputFromTomlFile = getVersionInputFromTomlFile;
|
||||
/**
|
||||
|
|
16
src/utils.ts
16
src/utils.ts
|
@ -229,7 +229,21 @@ export function getVersionInputFromTomlFile(versionFile: string): string[] {
|
|||
}
|
||||
|
||||
core.info(`Extracted ${versions} from ${versionFile}`);
|
||||
return Array.from(versions, version => version.split(',').join(' '));
|
||||
const rawVersions = Array.from(versions, version =>
|
||||
version.split(',').join(' ')
|
||||
);
|
||||
const validatedVersions = rawVersions
|
||||
.map(item => semver.validRange(item, true))
|
||||
.filter((versionRange, index) => {
|
||||
if (!versionRange) {
|
||||
core.debug(
|
||||
`The version ${rawVersions[index]} is not valid SemVer range`
|
||||
);
|
||||
}
|
||||
|
||||
return !!versionRange;
|
||||
}) as string[];
|
||||
return validatedVersions;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in a new issue