test for pypy new version notation

This commit is contained in:
AlyonaSviridenko 2021-04-08 16:00:25 +03:00
parent a1121449a2
commit cb9573b913
4 changed files with 20 additions and 11 deletions

View File

@ -23,13 +23,9 @@ jobs:
- 'pypy-2.7'
- 'pypy-3.6'
- 'pypy-3.7'
- 'pypy-2.7-v7.3.2'
- 'pypy-3.6-v7.3.2'
- 'pypy-3.7-v7.3.2'
- 'pypy-3.6-v7.3.x'
- 'pypy-3.7-v7.x'
- 'pypy-3.6-v7.3.3rc1'
- 'pypy-3.7-nightly'
- 'pypy-2.7-v7.3.4rc1'
steps:
- name: Checkout

View File

@ -28,9 +28,9 @@ export async function findPyPyVersion(
const pypyVersionSpec = parsePyPyVersion(versionSpec);
// PyPy only precompiles binaries for x86, but the architecture parameter defaults to x64.
if (IS_WINDOWS && architecture === 'x64') {
/*if (IS_WINDOWS && architecture === 'x64') {
architecture = 'x86';
}
}*/
({installDir, resolvedPythonVersion, resolvedPyPyVersion} = findPyPyToolCache(
pypyVersionSpec.pythonVersion,

View File

@ -8,6 +8,8 @@ import fs from 'fs';
import {
IS_WINDOWS,
WINDOWS_ARCHS,
WINDOWS_PLATFORMS,
IPyPyManifestRelease,
createSymlinkInFolder,
isNightlyKeyword,
@ -142,10 +144,7 @@ export function findRelease(
isPyPyNightly ||
semver.satisfies(pypyVersionToSemantic(item.pypy_version), pypyVersion);
const isArchPresent =
item.files &&
item.files.some(
file => file.arch === architecture && file.platform === process.platform
);
item.files && (IS_WINDOWS ? isArchPresentForWindows(item) : isArchPresentForMacOrLinux(item, architecture, process.platform));
return isPythonVersionSatisfied && isPyPyVersionSatisfied && isArchPresent;
});
@ -191,3 +190,15 @@ export function pypyVersionToSemantic(versionSpec: string) {
const prereleaseVersion = /(\d+\.\d+\.\d+)((?:a|b|rc))(\d*)/g;
return versionSpec.replace(prereleaseVersion, '$1-$2.$3');
}
export function isArchPresentForWindows(item: any) {
return item.files.some(
file => WINDOWS_ARCHS.includes(file.arch) && WINDOWS_PLATFORMS.includes( file.platform)
);
}
export function isArchPresentForMacOrLinux(item: any, architecture: string, platform: string) {
return item.files.some(
file => file.arch === architecture && file.platform === platform
);
}

View File

@ -4,6 +4,8 @@ import * as semver from 'semver';
export const IS_WINDOWS = process.platform === 'win32';
export const IS_LINUX = process.platform === 'linux';
export const WINDOWS_ARCHS = ['x86', 'x64'];
export const WINDOWS_PLATFORMS = ['win32', 'win64'];
const PYPY_VERSION_FILE = 'PYPY_VERSION';
export interface IPyPyManifestAsset {