ci: fold the PowerShell installer job into the tests-os Windows lanes
installer-tests.yml predates nothing it still owned. Its pytest step
(test_source_launcher_stages.py) is platforms("windows") and already runs in
both tests-os Windows lanes, so every installer PR ran it twice. The
`installer` lane never gated anything on its own either: every path that set
it also sets `python`, which gates tests-os.
The two standalone scripts/tests/*.ps1 suites become one platforms("windows")
pytest file parametrized over Windows PowerShell 5.1 and pwsh 7, so
list_os_marked_tests picks them up with everything else. The `installer` lane
goes away from the classifier, detect-changes, ci.yaml and the
all-checks-pass gate; the classifier contract now pins that install.ps1 and
its suites turn `python` on.
This commit is contained in:
3
.github/actions/detect-changes/action.yml
vendored
3
.github/actions/detect-changes/action.yml
vendored
@@ -45,9 +45,6 @@ outputs:
|
||||
npm_lock:
|
||||
description: Post/update the semantic package-lock.json diff PR comment.
|
||||
value: ${{ steps.classify.outputs.npm_lock }}
|
||||
installer:
|
||||
description: Run the PowerShell installer tests on a Windows runner.
|
||||
value: ${{ steps.classify.outputs.installer }}
|
||||
bootstrap:
|
||||
description: Run the bootstrap installer lane (install.sh sandbox + stamp verification).
|
||||
value: ${{ steps.classify.outputs.bootstrap }}
|
||||
|
||||
4
.github/workflows/bootstrap-installer.yml
vendored
4
.github/workflows/bootstrap-installer.yml
vendored
@@ -2,8 +2,8 @@ name: Bootstrap installer
|
||||
|
||||
# Exercises the bootstrap-installer path on PRs that can affect it: the
|
||||
# POSIX shell installer (scripts/install.sh), its generated pin fragments,
|
||||
# and the version stamp the `complete` stage ships. The PowerShell installer
|
||||
# keeps its own Windows-only lane (installer-tests.yml); this lane runs the
|
||||
# and the version stamp the `complete` stage ships. The PowerShell installer's
|
||||
# native tests run in the tests-os Windows lanes; this lane runs the
|
||||
# protocol/stamp cross-checks plus a whole current installer against a tiny
|
||||
# application graph. The latter runs real PM/uv and generated launchers, not
|
||||
# every production extra. Tool download/hash tests remain separate.
|
||||
|
||||
13
.github/workflows/ci.yaml
vendored
13
.github/workflows/ci.yaml
vendored
@@ -72,7 +72,6 @@ jobs:
|
||||
deps: ${{ steps.gate-lanes.outputs.deps }}
|
||||
uv_lock: ${{ steps.gate-lanes.outputs.uv_lock }}
|
||||
npm_lock: ${{ steps.gate-lanes.outputs.npm_lock }}
|
||||
installer: ${{ steps.gate-lanes.outputs.installer }}
|
||||
bootstrap: ${{ steps.gate-lanes.outputs.bootstrap }}
|
||||
desktop_updater: ${{ steps.gate-lanes.outputs.desktop_updater }}
|
||||
rust: ${{ steps.gate-lanes.outputs.rust }}
|
||||
@@ -147,13 +146,6 @@ jobs:
|
||||
if: needs.detect.outputs.frontend == 'true'
|
||||
uses: ./.github/workflows/js-tests.yml
|
||||
|
||||
installer-tests:
|
||||
name: Installer tests
|
||||
needs: detect
|
||||
# Windows-only, and only for PRs that touch install.ps1 or its tests.
|
||||
if: needs.detect.outputs.installer == 'true'
|
||||
uses: ./.github/workflows/installer-tests.yml
|
||||
|
||||
rust-tests:
|
||||
name: Rust tests
|
||||
needs: detect
|
||||
@@ -166,8 +158,8 @@ jobs:
|
||||
name: Bootstrap installer
|
||||
needs: detect
|
||||
# The bootstrap-installer path: install.sh, the pin fragments it embeds,
|
||||
# and the version stamp it ships. The PowerShell installer has its own
|
||||
# Windows-only lane above (installer-tests).
|
||||
# and the version stamp it ships. The PowerShell installer's native tests
|
||||
# are platforms("windows") pytest files and run in tests-os.
|
||||
if: needs.detect.outputs.bootstrap == 'true'
|
||||
uses: ./.github/workflows/bootstrap-installer.yml
|
||||
|
||||
@@ -300,7 +292,6 @@ jobs:
|
||||
- tests-os
|
||||
- lint
|
||||
- js-tests
|
||||
- installer-tests
|
||||
- rust-tests
|
||||
- bootstrap-installer
|
||||
- e2e-desktop
|
||||
|
||||
59
.github/workflows/installer-tests.yml
vendored
59
.github/workflows/installer-tests.yml
vendored
@@ -1,59 +0,0 @@
|
||||
name: Installer tests
|
||||
|
||||
# scripts/install.ps1's PowerShell tests. They exercise the installer as a real
|
||||
# subprocess, and every path contract they assert (8.3 short-name aliases,
|
||||
# Git Bash layouts, provider-cmdlet behavior) is Windows-specific — so they need
|
||||
# a Windows runner. Before this workflow existed the files were in the tree but
|
||||
# nothing ever ran them.
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
concurrency:
|
||||
group: installer-tests-${{ github.ref_type == 'tag' && github.run_id || github.ref }}
|
||||
cancel-in-progress: ${{ github.ref_type != 'tag' }}
|
||||
|
||||
jobs:
|
||||
powershell:
|
||||
name: PowerShell installer tests
|
||||
runs-on: windows-latest
|
||||
timeout-minutes: 15
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
|
||||
# Windows PowerShell 5.1 as well as pwsh 7: install.ps1 is delivered via
|
||||
# `irm | iex` into whatever shell the user already has, and 5.1 is what
|
||||
# ships with Windows. A construct that only parses under 7 is a broken
|
||||
# installer for most of the people hitting it.
|
||||
- name: 8.3 short-path normalization (pwsh 7)
|
||||
shell: pwsh
|
||||
run: pwsh -NoProfile -ExecutionPolicy Bypass -File scripts/tests/test-install-ps1-longpath.ps1
|
||||
|
||||
- name: 8.3 short-path normalization (Windows PowerShell 5.1)
|
||||
shell: powershell
|
||||
run: powershell -NoProfile -ExecutionPolicy Bypass -File scripts/tests/test-install-ps1-longpath.ps1
|
||||
|
||||
- name: System Node and npm compatibility (pwsh 7)
|
||||
shell: pwsh
|
||||
run: pwsh -NoProfile -ExecutionPolicy Bypass -File scripts/tests/test-install-ps1-node-compatibility.ps1
|
||||
|
||||
- name: System Node and npm compatibility (Windows PowerShell 5.1)
|
||||
shell: powershell
|
||||
run: powershell -NoProfile -ExecutionPolicy Bypass -File scripts/tests/test-install-ps1-node-compatibility.ps1
|
||||
|
||||
- name: Prepare native publication-test tools
|
||||
uses: ./.github/actions/setup-pm
|
||||
|
||||
- name: Prepare isolated acceptance-test dependencies
|
||||
shell: bash
|
||||
run: python -m scripts.ci.python_packages pytest==9.1.1 pytest-asyncio==1.3.0 ruamel.yaml==0.18.17 packaging==26.0 distlib==0.4.3
|
||||
|
||||
- name: Whole-script launcher publication (PowerShell 5.1 and 7)
|
||||
shell: bash
|
||||
env:
|
||||
HERMES_TEST_FILE_RETRIES: '0'
|
||||
run: bash scripts/run_tests.sh tests/pm/test_source_launcher_stages.py -k powershell_stage -q -j 1
|
||||
Reference in New Issue
Block a user