diff --git a/.github/workflows/test-python.yml b/.github/workflows/test-python.yml index d89646f30..c701e74b4 100644 --- a/.github/workflows/test-python.yml +++ b/.github/workflows/test-python.yml @@ -505,3 +505,30 @@ jobs: } $pythonVersion shell: pwsh + + setup-python-version-required: + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + [ + macos-latest, + windows-latest, + ubuntu-22.04, + ubuntu-22.04-arm, + ubuntu-24.04-arm, + ubuntu-latest, + macos-13 + ] + steps: + - uses: actions/checkout@v4 + - name: Setup Python + id: setup-python + uses: ./ + env: + PYTHON_VERSION_REQUIRED: true + continue-on-error: true + - name: Validate failure + if: steps.setup-python.outcome != 'failure' + run: exit 1 diff --git a/dist/setup/index.js b/dist/setup/index.js index ec5261efc..4febd9757 100644 --- a/dist/setup/index.js +++ b/dist/setup/index.js @@ -97729,7 +97729,14 @@ function run() { } } else { - core.warning('The `python-version` input is not set. The version of Python currently in `PATH` will be used.'); + const trueValue = ['true', 'True', 'TRUE']; + const pythonVersionRequired = process.env['PYTHON_VERSION_REQUIRED'] || ''; + if (!trueValue.includes(pythonVersionRequired)) { + core.warning('The `python-version` input is not set. The version of Python currently in `PATH` will be used.'); + } + else { + throw new Error('The `python-version` input is required.'); + } } const matchersPath = path.join(__dirname, '../..', '.github'); core.info(`##[add-matcher]${path.join(matchersPath, 'python.json')}`); diff --git a/docs/advanced-usage.md b/docs/advanced-usage.md index 72b350169..7f252ead3 100644 --- a/docs/advanced-usage.md +++ b/docs/advanced-usage.md @@ -138,6 +138,16 @@ steps: ``` Please refer to the [Advanced range syntax section](https://github.com/npm/node-semver#advanced-range-syntax) of the [semver](https://github.com/npm/node-semver) to check other available range syntaxes. +If you want to make an error when unspecified, set `PYTHON_VERSION_REQUIRED: true` to env. +```yaml +steps: +- uses: actions/checkout@v4 +- uses: actions/setup-python@v5 + env: + PYTHON_VERSION_REQUIRED: true + # the action fail with error. +``` + ### Specifying a PyPy version The version of PyPy should be specified in the format `pypy[-v]` or `pypy-[-v]`. The `-v` parameter is optional and can be skipped. The latest PyPy version will be used in this case. diff --git a/src/setup-python.ts b/src/setup-python.ts index ab5931b82..1d3948853 100644 --- a/src/setup-python.ts +++ b/src/setup-python.ts @@ -146,9 +146,17 @@ async function run() { await cacheDependencies(cache, pythonVersion); } } else { - core.warning( - 'The `python-version` input is not set. The version of Python currently in `PATH` will be used.' - ); + const trueValue = ['true', 'True', 'TRUE']; + const pythonVersionRequired = process.env['PYTHON_VERSION_REQUIRED'] || ''; + if(!trueValue.includes(pythonVersionRequired)) { + core.warning( + 'The `python-version` input is not set. The version of Python currently in `PATH` will be used.' + ); + } else { + throw new Error( + 'The `python-version` input is required.' + ); + } } const matchersPath = path.join(__dirname, '../..', '.github'); core.info(`##[add-matcher]${path.join(matchersPath, 'python.json')}`);