From 1155470f3e5fb872accd4d104b8dfcda41f676ce Mon Sep 17 00:00:00 2001 From: Zoltan Kochan Date: Mon, 11 May 2026 01:51:30 +0200 Subject: [PATCH] fix: honor devEngines.packageManager.onFail=error (#252) (#254) ## Summary - Export `pnpm_config_pm_on_fail=download` from the action so the bootstrap pnpm switches versions via `manage-package-manager-versions` instead of throwing `BAD_PM_VERSION` when a project pins `devEngines.packageManager.onFail = "error"` without supplying a `version:` input. - Adds a `test_dev_engines_on_fail_error` workflow job (Linux/macOS/Windows, exact + range) that reproduces #252. Fixes #252. --- .github/workflows/test.yaml | 375 +++++++++++++----------------------- dist/index.js | Bin 1385076 -> 1385135 bytes src/install-pnpm/run.ts | 7 +- 3 files changed, 138 insertions(+), 244 deletions(-) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index c0e183b..bd024e7 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -1,43 +1,73 @@ name: Test Action on: - - push - - pull_request - - workflow_dispatch + pull_request: + push: + branches: + - master + workflow_dispatch: jobs: - test_default_inputs: - name: Test with default inputs + smoke: + # Cross-OS coverage. Exercises the bootstrap install + PATH on each platform, + # the version-respects-request regression (#225 / #230 — Windows PATH shadow), + # and the bin_dest output regression (#247). Multi-version coverage on Linux + # so we don't pay 3x for major-version differences. + name: 'Smoke (${{ matrix.name }})' runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: - pnpm: - - 9.15.5 - os: - - ubuntu-latest - - macos-latest - - windows-latest + include: + - name: 'ubuntu / v9.15.5' + os: ubuntu-latest + version: '9.15.5' + - name: 'ubuntu / v10.33.0' + os: ubuntu-latest + version: '10.33.0' + - name: 'ubuntu / v9.15.5 / custom-dest' + os: ubuntu-latest + version: '9.15.5' + dest: '~/test/pnpm' + - name: 'macos / v9.15.5' + os: macos-latest + version: '9.15.5' + - name: 'windows / v9.15.5' + os: windows-latest + version: '9.15.5' steps: - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 - - name: Run the action + - id: pnpm + name: Run the action uses: ./ with: - version: 9.15.5 + version: ${{ matrix.version }} + dest: ${{ matrix.dest || '~/setup-pnpm' }} - - name: 'Test: which' - run: which pnpm; which pnpx - - - name: 'Test: version' + - name: 'Test: pnpm/pnpx on PATH report the requested version (incl. via bin_dest)' + # Pass paths via env, not template interpolation, so Windows + # backslashes in `bin_dest` aren't eaten by bash's escape handling. + env: + BIN_DEST: ${{ steps.pnpm.outputs.bin_dest }} + REQUIRED: ${{ matrix.version }} run: | + set -e + which pnpm + which pnpx actual="$(pnpm --version)" - echo "pnpm version: ${actual}" - if [[ ! "${actual}" =~ ^[0-9]+\.[0-9]+\.[0-9]+(-.+)?$ ]]; then - echo "ERROR: pnpm --version did not produce valid output" + echo "pnpm --version: ${actual}" + if [ "${actual}" != "${REQUIRED}" ]; then + echo "Expected pnpm version ${REQUIRED}, but got ${actual}" + exit 1 + fi + bin_dest_version="$("$BIN_DEST/pnpm" --version)" + echo "bin_dest pnpm --version: ${bin_dest_version}" + if [ "${bin_dest_version}" != "${REQUIRED}" ]; then + echo "Expected ${REQUIRED} via bin_dest, but got ${bin_dest_version}" exit 1 fi shell: bash @@ -50,54 +80,95 @@ jobs: pnpm add is-odd shell: bash - test_dest: - name: Test with dest + manifest_pin: + # Folds the old test_package_manager_field, test_dev_engines, and + # test_dev_engines_on_fail_error jobs. The action's manifest handling is + # OS-independent, so ubuntu-only is sufficient. + name: 'Manifest pin: ${{ matrix.label }}' - runs-on: ${{ matrix.os }} + runs-on: ubuntu-latest strategy: fail-fast: false matrix: - pnpm: - - 9.15.5 - os: - - ubuntu-latest - - macos-latest - - windows-latest + include: + - label: 'packageManager pnpm@9.15.5 (#227)' + manifest: '{"packageManager":"pnpm@9.15.5"}' + version: '9.15.5' + - label: 'packageManager pnpm@10.33.0' + manifest: '{"packageManager":"pnpm@10.33.0"}' + version: '10.33.0' + - label: 'devEngines onFail=download, exact' + manifest: '{"devEngines":{"packageManager":{"name":"pnpm","version":"9.15.5","onFail":"download"}}}' + version: '9.15.5' + - label: 'devEngines onFail=download, range' + manifest: '{"devEngines":{"packageManager":{"name":"pnpm","version":">=9.15.0","onFail":"download"}}}' + version: '>=9.15.0' + - label: 'devEngines onFail=error, exact (#252)' + manifest: '{"devEngines":{"packageManager":{"name":"pnpm","version":"9.15.5","onFail":"error"}}}' + version: '9.15.5' + - label: 'devEngines onFail=error, range (#252)' + manifest: '{"devEngines":{"packageManager":{"name":"pnpm","version":">=9.15.0","onFail":"error"}}}' + version: '>=9.15.0' + - label: 'explicit version: pnpm_config_pm_on_fail not exported' + # Regression guard for the af8e203 scope fix: when the user passes an + # explicit `version:` input, the action must NOT export + # pnpm_config_pm_on_fail=download, so the user's strict onFail policy + # is preserved. Asserted directly on the env var rather than pnpm + # runtime behavior — different pnpm majors read devEngines + # differently (v10 ignores it, v11+ honors it). + manifest: '{"devEngines":{"packageManager":{"name":"pnpm","version":"9.15.5","onFail":"error"}}}' + explicit_version: '10.33.0' + expect_pm_on_fail_unset: true steps: - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 + - name: Set up package.json + run: echo '${{ matrix.manifest }}' > package.json + shell: bash + - name: Run the action uses: ./ with: - version: 9.15.5 - dest: ~/test/pnpm + version: ${{ matrix.explicit_version }} - - name: 'Test: which' - run: which pnpm && which pnpx - - - name: 'Test: version' + - name: 'Test: pnpm reports the pinned version' + if: ${{ !matrix.expect_pm_on_fail_unset }} + env: + REQUIRED: ${{ matrix.version }} run: | + set -e actual="$(pnpm --version)" echo "pnpm version: ${actual}" - if [[ ! "${actual}" =~ ^[0-9]+\.[0-9]+\.[0-9]+(-.+)?$ ]]; then - echo "ERROR: pnpm --version did not produce valid output" - exit 1 + if [ "${REQUIRED}" = ">=9.15.0" ]; then + min="9.15.0" + if [ "$(printf '%s\n' "${min}" "${actual}" | sort -V | head -n1)" != "${min}" ]; then + echo "Expected pnpm version >= ${min}, but got ${actual}" + exit 1 + fi + else + if [ "${actual}" != "${REQUIRED}" ]; then + echo "Expected pnpm version ${REQUIRED}, but got ${actual}" + exit 1 + fi fi shell: bash - test_standalone: - name: Test with standalone + - name: 'Test: pnpm_config_pm_on_fail not exported (explicit version preserves strict policy)' + if: ${{ matrix.expect_pm_on_fail_unset }} + run: | + if [ -n "${pnpm_config_pm_on_fail:-}" ]; then + echo "Expected pnpm_config_pm_on_fail to be unset, but got: '${pnpm_config_pm_on_fail}'" + exit 1 + fi + echo "pnpm_config_pm_on_fail is unset, as expected" + shell: bash - runs-on: ${{ matrix.os }} + standalone: + name: Standalone mode - strategy: - fail-fast: false - matrix: - os: - - ubuntu-latest - - windows-latest + runs-on: ubuntu-latest steps: - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 @@ -108,210 +179,29 @@ jobs: version: 9.15.0 standalone: true - - name: 'Test: which' - run: which pnpm - - - name: 'Test: version' + - name: 'Test: pnpm works' run: | + set -e + which pnpm actual="$(pnpm --version)" - echo "pnpm version: ${actual}" - if [[ ! "${actual}" =~ ^[0-9]+\.[0-9]+\.[0-9]+(-.+)?$ ]]; then - echo "ERROR: pnpm --version did not produce valid output" + if [ "${actual}" != "9.15.0" ]; then + echo "Expected 9.15.0, got ${actual}" exit 1 fi - shell: bash - - - name: 'Test: install in a fresh project' - run: | mkdir /tmp/test-standalone cd /tmp/test-standalone pnpm init pnpm add is-odd shell: bash - test_version_respects_request: - name: 'Test version input is actually installed (${{ matrix.version }}, ${{ matrix.os }})' - # Regression test for #225 / #230: the bootstrap pnpm on PATH was shadowing the self-updated binary, - # so a user requesting e.g. `version: 9.15.5` would silently get the bootstrap version. + run_install: + name: 'run_install (${{ matrix.run_install.name }})' - runs-on: ${{ matrix.os }} + runs-on: ubuntu-latest strategy: fail-fast: false matrix: - os: - - ubuntu-latest - - macos-latest - - windows-latest - version: - - '9.15.5' - - '10.33.0' - - steps: - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 - - - name: Run the action - uses: ./ - with: - version: ${{ matrix.version }} - - - name: 'Test: exact version installed' - run: | - required='${{ matrix.version }}' - actual="$(pnpm --version)" - echo "pnpm version: ${actual}" - if [ "${actual}" != "${required}" ]; then - echo "Expected pnpm version ${required}, but got ${actual}" - exit 1 - fi - shell: bash - - test_bin_dest_output: - name: 'Test bin_dest output points to requested version (${{ matrix.version }}, ${{ matrix.os }})' - # Regression test for #247: invoking pnpm via the `bin_dest` output returned the - # bootstrap version because self-update writes the target to `${bin_dest}/bin/`, - # not directly into `${bin_dest}/`. - - runs-on: ${{ matrix.os }} - - strategy: - fail-fast: false - matrix: - os: - - ubuntu-latest - - macos-latest - - windows-latest - version: - - '9.15.5' - - '10.33.2' - - steps: - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 - - - id: pnpm - name: Run the action - uses: ./ - with: - version: ${{ matrix.version }} - - - name: 'Test: bin_dest/pnpm reports requested version' - # Pass paths via env, not template interpolation, so Windows - # backslashes in `bin_dest` aren't eaten by bash's escape handling. - env: - BIN_DEST: ${{ steps.pnpm.outputs.bin_dest }} - REQUIRED: ${{ matrix.version }} - run: | - actual="$("$BIN_DEST/pnpm" --version)" - echo "pnpm version via bin_dest: ${actual}" - if [ "${actual}" != "${REQUIRED}" ]; then - echo "Expected pnpm version ${REQUIRED}, but got ${actual}" - exit 1 - fi - shell: bash - - test_package_manager_field: - name: 'Test packageManager field is respected (${{ matrix.version }}, ${{ matrix.os }})' - # Reproduces #227: when `packageManager` is set in package.json and no `version:` input is given, - # the action should install the version specified there. - - runs-on: ${{ matrix.os }} - - strategy: - fail-fast: false - matrix: - os: - - ubuntu-latest - - macos-latest - - windows-latest - version: - - '9.15.5' - - '10.33.0' - - steps: - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 - - - name: Set up package.json with packageManager field - run: echo '{"packageManager":"pnpm@${{ matrix.version }}"}' > package.json - shell: bash - - - name: Run the action - uses: ./ - - - name: 'Test: exact version installed' - run: | - required='${{ matrix.version }}' - actual="$(pnpm --version)" - echo "pnpm version: ${actual}" - if [ "${actual}" != "${required}" ]; then - echo "Expected pnpm version ${required}, but got ${actual}" - exit 1 - fi - shell: bash - - test_dev_engines: - name: Test with devEngines.packageManager - - runs-on: ${{ matrix.os }} - - strategy: - fail-fast: false - matrix: - os: - - ubuntu-latest - - macos-latest - - windows-latest - version: - - '9.15.5' - - '>=9.15.0' - - steps: - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 - - - name: Set up package.json with devEngines.packageManager - run: echo '{"devEngines":{"packageManager":{"name":"pnpm","version":"${{ matrix.version }}","onFail":"download"}}}' > package.json - shell: bash - - - name: Run the action - uses: ./ - - - name: 'Test: which' - run: which pnpm; which pnpx - - - name: 'Test: version' - run: | - set -e - required='${{ matrix.version }}' - actual="$(pnpm --version)" - echo "pnpm version: ${actual}" - - if [ "${required}" = ">=9.15.0" ]; then - min="9.15.0" - if [ "$(printf '%s\n' "${min}" "${actual}" | sort -V | head -n1)" != "${min}" ]; then - echo "Expected pnpm version >= ${min}, but got ${actual}" - exit 1 - fi - else - if [ "${actual}" != "${required}" ]; then - echo "Expected pnpm version ${required}, but got ${actual}" - exit 1 - fi - fi - shell: bash - - test_run_install: - name: 'Test with run_install (${{ matrix.run_install.name }}, ${{ matrix.os }})' - - runs-on: ${{ matrix.os }} - - strategy: - fail-fast: false - matrix: - pnpm: - - 9.15.5 - os: - - ubuntu-latest - - macos-latest - - windows-latest run_install: - name: 'null' value: 'null' @@ -332,15 +222,14 @@ jobs: version: 9.15.5 run_install: ${{ matrix.run_install.value }} - - name: 'Test: which' - run: which pnpm; which pnpx - - - name: 'Test: version' + - name: 'Test: pnpm works' run: | + set -e + which pnpm + which pnpx actual="$(pnpm --version)" - echo "pnpm version: ${actual}" - if [[ ! "${actual}" =~ ^[0-9]+\.[0-9]+\.[0-9]+(-.+)?$ ]]; then - echo "ERROR: pnpm --version did not produce valid output" + if [ "${actual}" != "9.15.5" ]; then + echo "Expected 9.15.5, got ${actual}" exit 1 fi shell: bash diff --git a/dist/index.js b/dist/index.js index f7910dc05a6e3a36a092fd438c1d8d25a266cb0a..203a791769f338f0853f67598d597f9e982246b7 100644 GIT binary patch delta 10029 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 LiwlVn2ho26A73Gt diff --git a/src/install-pnpm/run.ts b/src/install-pnpm/run.ts index 6b04107..ffcf3b8 100644 --- a/src/install-pnpm/run.ts +++ b/src/install-pnpm/run.ts @@ -102,7 +102,12 @@ export async function runSelfInstaller(inputs: Inputs): Promise