name: Test Action on: - push - pull_request - workflow_dispatch jobs: test_default_inputs: name: Test with default inputs runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: pnpm: - 4.11.1 os: - ubuntu-latest - macos-latest - windows-latest steps: - uses: actions/checkout@v4 - name: Run the action uses: ./ with: version: 4.11.1 - name: 'Test: which' run: which pnpm; which pnpx - name: 'Test: install' run: pnpm install test_version_file_asdf: name: Test with version file (asdf) runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: pnpm: - 4.11.1 os: - ubuntu-latest - macos-latest - windows-latest steps: - uses: actions/checkout@v4 - name: Run the action uses: ./ with: version_file_path: test/.tool-versions - name: 'Test: which' run: which pnpm; which pnpx - name: 'Test: install' run: pnpm install test_version_file_engines: name: Test with version file (package.json engines) runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: pnpm: - 4.11.1 os: - ubuntu-latest - macos-latest - windows-latest steps: - uses: actions/checkout@v4 - name: Run the action uses: ./ with: version_file_path: test/package.engines.json - name: 'Test: which' run: which pnpm; which pnpx - name: 'Test: install' run: pnpm install test_version_file_volta: name: Test with version file (volta) runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: pnpm: - 4.11.1 os: - ubuntu-latest - macos-latest - windows-latest steps: - uses: actions/checkout@v4 - name: Run the action uses: ./ with: version_file_path: test/package.volta.json - name: 'Test: which' run: which pnpm; which pnpx - name: 'Test: install' run: pnpm install test_version_file_volta_extends: name: Test with version file (volta extends) runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: pnpm: - 4.11.1 os: - ubuntu-latest - macos-latest - windows-latest steps: - uses: actions/checkout@v4 - name: Run the action uses: ./ with: version_file_path: test/package.volta-extends.json - name: 'Test: which' run: which pnpm; which pnpx - name: 'Test: install' run: pnpm install test_dest: name: Test with dest runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: pnpm: - 4.11.1 os: - ubuntu-latest - macos-latest - windows-latest steps: - uses: actions/checkout@v4 - name: Run the action uses: ./ with: version: 4.11.1 dest: ~/test/pnpm - name: 'Test: which' run: which pnpm && which pnpx - name: 'Test: install' run: pnpm install test_standalone: name: Test with standalone runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: - ubuntu-latest - macos-latest - windows-latest standalone: - true - false steps: - uses: actions/checkout@v4 - name: Run the action uses: ./ with: version: 7.0.0 standalone: ${{ matrix.standalone }} - name: install Node.js uses: actions/setup-node@v4 with: # pnpm@7.0.0 is not compatible with Node.js 12 node-version: 12.22.12 - name: 'Test: which (pnpm)' run: which pnpm - name: 'Test: which (pnpx)' if: matrix.standalone == false run: which pnpx - name: 'Test: install when standalone is true' if: matrix.standalone run: pnpm install - name: 'Test: install when standalone is false' if: matrix.standalone == false # Since the default shell on windows runner is pwsh, we specify bash explicitly shell: bash run: | if pnpm install; then echo "pnpm install should fail" exit 1 else echo "pnpm install failed as expected" fi test_run_install: name: 'Test with run_install (${{ matrix.run_install.name }}, ${{ matrix.os }})' runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: pnpm: - 4.11.1 os: - ubuntu-latest - macos-latest - windows-latest run_install: - name: 'null' value: 'null' - name: 'empty object' value: '{}' - name: 'recursive' value: | recursive: true - name: 'global' value: | args: - --global - --global-dir=./pnpm-global - npm - yarn - pnpm - name: 'array' value: | - {} - recursive: true - args: - --global - --global-dir=./pnpm-global - npm - yarn - pnpm steps: - uses: actions/checkout@v4 - name: Run the action uses: ./ with: version: 4.11.1 run_install: ${{ matrix.run_install.value }} - name: 'Test: which' run: which pnpm; which pnpx - name: 'Test: install' run: pnpm install