diff --git a/.github/workflows/e2e-cache.yml b/.github/workflows/e2e-cache.yml index d15c6f2b6..66ed09736 100644 --- a/.github/workflows/e2e-cache.yml +++ b/.github/workflows/e2e-cache.yml @@ -40,17 +40,24 @@ jobs: matrix: os: [ubuntu-latest, windows-latest, macos-latest] python-version: ['3.7', '3.8', '3.9', 'pypy-3.7-v7.3.5', 'pypy-3.7-v7.x'] + # exclude: + # - os: windows-latest + # python-version: 'pypy-3.7-v7.3.5' + # - os: windows-latest + # python-version: 'pypy-3.7-v7.x' steps: - uses: actions/checkout@v2 - - name: Install pipenv - run: pipx install pipenv - name: Setup Python uses: ./ with: python-version: ${{ matrix.python-version }} cache: 'pipenv' + - name: Install pipenv + run: pipx install pipenv - name: Install dependencies - run: pipenv install flake8 + run: | + pipenv install numpy + cat Pipfile.lock python-pip-dependencies-caching-path: name: Test pip (Python ${{ matrix.python-version}}, ${{ matrix.os }}) @@ -79,15 +86,22 @@ jobs: matrix: os: [ubuntu-latest, windows-latest, macos-latest] python-version: ['3.7', '3.8', '3.9', 'pypy-3.7-v7.3.5', 'pypy-3.7-v7.x'] + # exclude: + # - os: windows-latest + # python-version: 'pypy-3.7-v7.3.5' + # - os: windows-latest + # python-version: 'pypy-3.7-v7.x' steps: - uses: actions/checkout@v2 - - name: Install pipenv - run: pipx install pipenv - name: Setup Python uses: ./ with: python-version: ${{ matrix.python-version }} cache: 'pipenv' cache-dependency-path: '**/requirements-linux.txt' + - name: Install pipenv + run: pipx install pipenv - name: Install dependencies - run: pipenv install flake8 \ No newline at end of file + run: | + pipenv install numpy + cat Pipfile.lock \ No newline at end of file diff --git a/__tests__/cache-restore.test.ts b/__tests__/cache-restore.test.ts index f3c5b01d4..d982fd060 100644 --- a/__tests__/cache-restore.test.ts +++ b/__tests__/cache-restore.test.ts @@ -92,13 +92,9 @@ describe('restore-cache', () => { dependencyFile ); await cacheDistributor.restoreCache(); - let pythonKey = ''; - if (packageManager === 'pipenv') { - pythonKey = `python-${pythonVersion}-`; - } expect(infoSpy).toHaveBeenCalledWith( - `Cache restored from key: setup-python-${process.env['RUNNER_OS']}-${pythonKey}${packageManager}-${fileHash}` + `Cache restored from key: setup-python-${process.env['RUNNER_OS']}-python-${pythonVersion}-${packageManager}-${fileHash}` ); } ); diff --git a/dist/setup/index.js b/dist/setup/index.js index 321877d9a..ca8a37cbd 100644 --- a/dist/setup/index.js +++ b/dist/setup/index.js @@ -34467,8 +34467,9 @@ const path = __importStar(__webpack_require__(622)); const os_1 = __importDefault(__webpack_require__(87)); const cache_distributor_1 = __importDefault(__webpack_require__(435)); class PipCache extends cache_distributor_1.default { - constructor(cacheDependencyPath = '**/requirements.txt') { + constructor(pythonVersion, cacheDependencyPath = '**/requirements.txt') { super('pip', cacheDependencyPath); + this.pythonVersion = pythonVersion; } getCacheGlobalDirectories() { return __awaiter(this, void 0, void 0, function* () { @@ -34487,8 +34488,8 @@ class PipCache extends cache_distributor_1.default { computeKeys() { return __awaiter(this, void 0, void 0, function* () { const hash = yield glob.hashFiles(this.cacheDependencyPath); - const primaryKey = `${this.CACHE_KEY_PREFIX}-${process.env['RUNNER_OS']}-${this.packageManager}-${hash}`; - const restoreKey = `${this.CACHE_KEY_PREFIX}-${process.env['RUNNER_OS']}-${this.packageManager}`; + const primaryKey = `${this.CACHE_KEY_PREFIX}-${process.env['RUNNER_OS']}-python-${this.pythonVersion}-${this.packageManager}-${hash}`; + const restoreKey = `${this.CACHE_KEY_PREFIX}-${process.env['RUNNER_OS']}-python-${this.pythonVersion}-${this.packageManager}`; return { primaryKey, restoreKey: [restoreKey] @@ -43888,7 +43889,7 @@ var PackageManagers; function getCacheDistributor(packageManager, pythonVersion, cacheDependencyPath) { switch (packageManager) { case PackageManagers.Pip: - return new pip_cache_1.default(cacheDependencyPath); + return new pip_cache_1.default(pythonVersion, cacheDependencyPath); case PackageManagers.Pipenv: return new pipenv_cache_1.default(pythonVersion, cacheDependencyPath); default: diff --git a/src/cache-distributions/cache-factory.ts b/src/cache-distributions/cache-factory.ts index 1a8a055f0..3e363a0e2 100644 --- a/src/cache-distributions/cache-factory.ts +++ b/src/cache-distributions/cache-factory.ts @@ -13,7 +13,7 @@ export function getCacheDistributor( ) { switch (packageManager) { case PackageManagers.Pip: - return new PipCache(cacheDependencyPath); + return new PipCache(pythonVersion, cacheDependencyPath); case PackageManagers.Pipenv: return new PipenvCache(pythonVersion, cacheDependencyPath); default: diff --git a/src/cache-distributions/pip-cache.ts b/src/cache-distributions/pip-cache.ts index 81b875fda..f4d7c2424 100644 --- a/src/cache-distributions/pip-cache.ts +++ b/src/cache-distributions/pip-cache.ts @@ -8,7 +8,10 @@ import os from 'os'; import CacheDistributor from './cache-distributor'; class PipCache extends CacheDistributor { - constructor(cacheDependencyPath: string = '**/requirements.txt') { + constructor( + private pythonVersion: string, + cacheDependencyPath: string = '**/requirements.txt' + ) { super('pip', cacheDependencyPath); } @@ -36,8 +39,8 @@ class PipCache extends CacheDistributor { protected async computeKeys() { const hash = await glob.hashFiles(this.cacheDependencyPath); - const primaryKey = `${this.CACHE_KEY_PREFIX}-${process.env['RUNNER_OS']}-${this.packageManager}-${hash}`; - const restoreKey = `${this.CACHE_KEY_PREFIX}-${process.env['RUNNER_OS']}-${this.packageManager}`; + const primaryKey = `${this.CACHE_KEY_PREFIX}-${process.env['RUNNER_OS']}-python-${this.pythonVersion}-${this.packageManager}-${hash}`; + const restoreKey = `${this.CACHE_KEY_PREFIX}-${process.env['RUNNER_OS']}-python-${this.pythonVersion}-${this.packageManager}`; return { primaryKey,