5555
5656 - name : Run clippy
5757 run : cargo clippy --workspace --all-features -- -D warnings
58- # Moved-module aliases (patch::vendor → vendor, patch::go_mod_edit →
59- # vendor::go_mod_edit, patch::go_redirect → patch::redirect::golang_local)
60- # exist only for external consumers of the published core crate.
61- # #[deprecated] on a `pub use` re-export emits no warnings
62- # (rust-lang/rust#30827), so the compiler cannot pressure internal code
63- # off the old paths — this grep is the guard instead.
64- - name : Reject internal uses of moved-module alias paths
65- run : |
66- if grep -rn --include='*.rs' \
67- -e 'patch::vendor' -e 'patch::go_mod_edit' \
68- -e 'patch::go_redirect' -e 'patch::bun_lock_text' \
69- -e 'utils::telemetry' -e 'utils::cleanup_blobs' \
70- -e 'utils::date' -e 'utils::fuzzy_match' \
71- -e 'gem_setup::' -e 'composer_setup::' -e 'pth_hook::' \
72- crates; then
73- echo '::error::use the canonical module paths (crate::vendor, patch::redirect::golang_local, crate::telemetry, manifest::cleanup_blobs, api::date, crawlers::fuzzy_match); the old-path aliases exist only for external consumers'
74- exit 1
75- fi
7658
7759 # The napi addon is only ever loaded by Node, so cargo's own tests never
7860 # exercise its JS loader or the engine/provider boundary.
10789 run : node --test crates/socket-patch-node/npm/test/smoke.mjs
10890
10991 # Lint the out-of-workspace packaging artifacts: the RubyGems CLI launcher
110- # gem + the Bundler plugin gem (Ruby), and the curl|sh installer. Ruby is
92+ # gem (Ruby), and the curl|sh installer. Ruby is
11193 # pre-installed on the ubuntu-latest runner.
11294 lint-ecosystems :
11395 runs-on : ubuntu-latest
@@ -118,13 +100,9 @@ jobs:
118100 with :
119101 persist-credentials : false
120102
121- - name : Ruby — syntax-check + build the launcher gem and Bundler plugin
103+ - name : Ruby — syntax-check + build the launcher gem
122104 run : |
123105 ( cd gem/socket-patch && ruby -c lib/socket_patch/launcher.rb && ruby -c exe/socket-patch && gem build socket-patch.gemspec )
124- ( cd gem/socket-patch-bundler && ruby -c plugins.rb && gem build socket-patch-bundler.gemspec )
125- # The generated-plugin templates are pure Ruby — keep them parseable.
126- ruby -c crates/socket-patch-core/src/setup/gem/templates/plugins.rb.tmpl
127- ruby -c crates/socket-patch-core/src/setup/gem/templates/gemspec.tmpl
128106
129107 - name : Python — test native installer harnesses
130108 run : python3 -B -m unittest discover -s scripts/tests -v
@@ -311,13 +289,13 @@ jobs:
311289 echo "$(go env GOPATH)/bin" >> "$GITHUB_PATH"
312290
313291 - name : Run tests
314- # `--all-features` would also RUN the docker-e2e / setup-e2e suites,
292+ # `--all-features` would also RUN the docker-e2e suites,
315293 # which soft-skip as "ok" in this job (no images are built here, and
316294 # macOS/Windows have no Docker at all) — dozens of fake greens per OS
317295 # that would hide a broken skip-guard behind a passing checkmark.
318296 # Build them with --all-features (compile rot is real coverage), but
319- # run only the default-feature suites; the dedicated e2e-docker and
320- # setup-matrix jobs run the gated suites for real.
297+ # run only the default-feature suites; the dedicated e2e-docker
298+ # job runs the gated suites for real.
321299 #
322300 # `--no-fail-fast`: without it cargo stops at the first failing test
323301 # BINARY, so one bad file hides every later binary's result on that
@@ -368,7 +346,7 @@ jobs:
368346 # profile's comment in Cargo.toml). Same opt-level/debug-assertion
369347 # semantics this job exists to validate; ~23m of LTO relinking gone.
370348 # Build/run split for the same reason as the `test` job: the gated
371- # docker-e2e / setup-e2e suites only soft-skip here — compile them,
349+ # docker-e2e suites only soft-skip here — compile them,
372350 # don't count their skips as passes.
373351 run : |
374352 set -euo pipefail
@@ -681,10 +659,10 @@ jobs:
681659 fail-fast : false
682660 matrix :
683661 include :
684- - os : ubuntu-latest
685- suite : e2e_cargo
686- - os : ubuntu-latest
687- suite : e2e_golang
662+ # (No e2e_cargo / e2e_golang rows: neither suite has an
663+ # `#[ignore]`-gated test or needs a real toolchain, so the
664+ # unfiltered `test` job already runs all of them and the rows'
665+ # `--ignored` legs selected zero tests.)
688666 - os : ubuntu-latest
689667 suite : e2e_maven
690668 - os : ubuntu-latest
@@ -717,9 +695,6 @@ jobs:
717695 - {os: ubuntu-latest, suite: e2e_redirect_composer_build, composer: '2'}
718696 - {os: ubuntu-latest, suite: e2e_redirect_composer_build, composer: '2.2'}
719697 - {os: ubuntu-latest, suite: e2e_redirect_composer_build, composer: '1'}
720- # setup-e2e host guards run in no other job (test job = default
721- # features; setup-matrix job = shell script).
722- - {os: ubuntu-latest, suite: setup_matrix_composer, test_filter: host_guard}
723698 # Real-bundler gem capstones, one leg per bundler era. Boundaries:
724699 # 1.17/2.1 merged GEM section, 2.2 separate sections, 2.5 last
725700 # pre-CHECKSUMS, 2.6 CHECKSUMS, 4.0.15/4.0.21 before/after the
@@ -741,8 +716,6 @@ jobs:
741716 - {os: ubuntu-latest, suite: e2e_vendor_gem_build, ruby: '3.3', bundler: '2.7.2'}
742717 - {os: ubuntu-latest, suite: e2e_vendor_gem_build, ruby: '3.4', bundler: '4.0.15'}
743718 - {os: ubuntu-latest, suite: e2e_vendor_gem_build, ruby: '3.4', bundler: '4.0.21'}
744- # not #[ignore]-gated -> --include-ignored is mandatory
745- - {os: ubuntu-latest, suite: setup_matrix_gem, ruby: '3.3', bundler: '2.7.2', test_filter: --include-ignored}
746719 # The live-API smoke suites (e2e_npm, e2e_pypi, e2e_gem,
747720 # e2e_scan) are intentionally NOT in the PR matrix — their
748721 # `#[ignore]`-gated tests hit the real public proxy at
@@ -1615,78 +1588,6 @@ jobs:
16151588 set -euo pipefail
16161589 cargo test -p socket-patch-cli --test e2e_vendor_cargo_build -- old_toolchain --nocapture
16171590
1618- # ----------------------------------------------------------------------
1619- # Experimental `setup`-flow matrix (NON-BLOCKING).
1620- #
1621- # For each ecosystem/package manager, drives the full intended flow —
1622- # prepare deps + a committed patch set, run `socket-patch setup`, run
1623- # the native install, check whether the patch was applied — plus the
1624- # negative controls (no setup, empty/wrong/alt patch sets). See
1625- # tests/setup_matrix/ and scripts/setup-matrix.sh.
1626- #
1627- # This is EXPERIMENTAL and intentionally not required to pass yet:
1628- # `setup` configures install hooks for npm, PyPI, Bundler and Composer
1629- # only, so the other ecosystems' `baseline_with_setup` cases are
1630- # EXPECTED to fail (a baseline of what `setup` must eventually support). `continue-on-error: true`
1631- # means this job never blocks a PR — it must ALSO be left OUT of the
1632- # repo's required status checks (configured in the branch-protection
1633- # UI, not in this file). The orchestrator exits non-zero only on a
1634- # *regression* vs the recorded baseline; the full per-case result set
1635- # is uploaded as a JSON artifact for inspection.
1636- # ----------------------------------------------------------------------
1637- setup-matrix :
1638- runs-on : ubuntu-latest
1639- timeout-minutes : 45
1640- continue-on-error : true
1641- permissions :
1642- contents : read
1643- strategy :
1644- fail-fast : false
1645- matrix :
1646- ecosystem : [npm, pypi, cargo, gem, golang, maven, composer, nuget, deno]
1647- steps :
1648- - name : Checkout
1649- uses : actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
1650- with :
1651- persist-credentials : false
1652-
1653- - name : Set up Docker Buildx
1654- # `driver: docker` — the per-ecosystem image's `FROM
1655- # socket-patch-test-base:latest` only resolves when buildx talks
1656- # directly to the host docker daemon (see e2e-docker above).
1657- uses : docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
1658- with :
1659- driver : docker
1660-
1661- - name : Install Rust
1662- run : rustup show
1663-
1664- - name : Build base image
1665- uses : docker/build-push-action@f9f3042f7e2789586610d6e8b85c8f03e5195baf # v7.2.0
1666- with :
1667- context : .
1668- file : tests/docker/Dockerfile.base
1669- tags : socket-patch-test-base:latest
1670- load : true
1671-
1672- - name : Build ${{ matrix.ecosystem }} image
1673- uses : docker/build-push-action@f9f3042f7e2789586610d6e8b85c8f03e5195baf # v7.2.0
1674- with :
1675- context : .
1676- file : tests/docker/Dockerfile.${{ matrix.ecosystem }}
1677- tags : socket-patch-test-${{ matrix.ecosystem }}:latest
1678- load : true
1679-
1680- - name : Run ${{ matrix.ecosystem }} setup-matrix
1681- run : scripts/setup-matrix.sh run --ecosystem ${{ matrix.ecosystem }} --out "report-${{ matrix.ecosystem }}.json"
1682-
1683- - name : Upload ${{ matrix.ecosystem }} setup-matrix report
1684- if : always()
1685- uses : ./.github/actions/upload-artifact
1686- with :
1687- name : setup-matrix-${{ matrix.ecosystem }}
1688- path : report-${{ matrix.ecosystem }}.json
1689-
16901591 # ----------------------------------------------------------------------
16911592 # Hosted-mode production e2e — REQUIRED status check, with a kill switch.
16921593 #
0 commit comments