mirror of
				https://git.mirrors.martin98.com/https://github.com/actions/setup-python
				synced 2025-10-31 15:01:07 +08:00 
			
		
		
		
	Add range validation for toml files (#726)
This commit is contained in:
		
							parent
							
								
									f97b83114c
								
							
						
					
					
						commit
						65d7f2d534
					
				
							
								
								
									
										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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Dmitry Shibanov
						Dmitry Shibanov