Skip to content

Throwing an error when python-version input is empty and PYTHON_VERSION_REQUIRED is set true #1088

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 4 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions .github/workflows/test-python.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
9 changes: 8 additions & 1 deletion dist/setup/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -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')}`);
Expand Down
10 changes: 10 additions & 0 deletions docs/advanced-usage.md
Original file line number Diff line number Diff line change
Expand Up @@ -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<python_version>[-v<pypy_version>]` or `pypy-<python_version>[-v<pypy_version>]`.
The `-v<pypy_version>` parameter is optional and can be skipped. The latest PyPy version will be used in this case.
Expand Down
14 changes: 11 additions & 3 deletions src/setup-python.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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')}`);
Expand Down