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
@@ -369,7 +347,7 @@ jobs:
369347 # profile's comment in Cargo.toml). Same opt-level/debug-assertion
370348 # semantics this job exists to validate; ~23m of LTO relinking gone.
371349 # Build/run split for the same reason as the `test` job: the gated
372- # docker-e2e / setup-e2e suites only soft-skip here — compile them,
350+ # docker-e2e suites only soft-skip here — compile them,
373351 # don't count their skips as passes.
374352 run : |
375353 set -euo pipefail
@@ -682,10 +660,10 @@ jobs:
682660 fail-fast : false
683661 matrix :
684662 include :
685- - os : ubuntu-latest
686- suite : e2e_cargo
687- - os : ubuntu-latest
688- suite : e2e_golang
663+ # (No e2e_cargo / e2e_golang rows: neither suite has an
664+ # `#[ignore]`-gated test or needs a real toolchain, so the
665+ # unfiltered `test` job already runs all of them and the rows'
666+ # `--ignored` legs selected zero tests.)
689667 - os : ubuntu-latest
690668 suite : e2e_maven
691669 - os : ubuntu-latest
@@ -718,9 +696,6 @@ jobs:
718696 - {os: ubuntu-latest, suite: e2e_redirect_composer_build, composer: '2'}
719697 - {os: ubuntu-latest, suite: e2e_redirect_composer_build, composer: '2.2'}
720698 - {os: ubuntu-latest, suite: e2e_redirect_composer_build, composer: '1'}
721- # setup-e2e host guards run in no other job (test job = default
722- # features; setup-matrix job = shell script).
723- - {os: ubuntu-latest, suite: setup_matrix_composer, test_filter: host_guard}
724699 # Real-bundler gem capstones, one leg per bundler era. Boundaries:
725700 # 1.17/2.1 merged GEM section, 2.2 separate sections, 2.5 last
726701 # pre-CHECKSUMS, 2.6 CHECKSUMS, 4.0.15/4.0.21 before/after the
@@ -742,8 +717,6 @@ jobs:
742717 - {os: ubuntu-latest, suite: e2e_vendor_gem_build, ruby: '3.3', bundler: '2.7.2'}
743718 - {os: ubuntu-latest, suite: e2e_vendor_gem_build, ruby: '3.4', bundler: '4.0.15'}
744719 - {os: ubuntu-latest, suite: e2e_vendor_gem_build, ruby: '3.4', bundler: '4.0.21'}
745- # not #[ignore]-gated -> --include-ignored is mandatory
746- - {os: ubuntu-latest, suite: setup_matrix_gem, ruby: '3.3', bundler: '2.7.2', test_filter: --include-ignored}
747720 # The live-API smoke suites (e2e_npm, e2e_pypi, e2e_gem,
748721 # e2e_scan) are intentionally NOT in the PR matrix — their
749722 # `#[ignore]`-gated tests hit the real public proxy at
@@ -1616,78 +1589,6 @@ jobs:
16161589 set -euo pipefail
16171590 cargo test -p socket-patch-cli --test e2e_vendor_cargo_build -- old_toolchain --nocapture
16181591
1619- # ----------------------------------------------------------------------
1620- # Experimental `setup`-flow matrix (NON-BLOCKING).
1621- #
1622- # For each ecosystem/package manager, drives the full intended flow —
1623- # prepare deps + a committed patch set, run `socket-patch setup`, run
1624- # the native install, check whether the patch was applied — plus the
1625- # negative controls (no setup, empty/wrong/alt patch sets). See
1626- # tests/setup_matrix/ and scripts/setup-matrix.sh.
1627- #
1628- # This is EXPERIMENTAL and intentionally not required to pass yet:
1629- # `setup` configures install hooks for npm, PyPI, Bundler and Composer
1630- # only, so the other ecosystems' `baseline_with_setup` cases are
1631- # EXPECTED to fail (a baseline of what `setup` must eventually support). `continue-on-error: true`
1632- # means this job never blocks a PR — it must ALSO be left OUT of the
1633- # repo's required status checks (configured in the branch-protection
1634- # UI, not in this file). The orchestrator exits non-zero only on a
1635- # *regression* vs the recorded baseline; the full per-case result set
1636- # is uploaded as a JSON artifact for inspection.
1637- # ----------------------------------------------------------------------
1638- setup-matrix :
1639- runs-on : ubuntu-latest
1640- timeout-minutes : 45
1641- continue-on-error : true
1642- permissions :
1643- contents : read
1644- strategy :
1645- fail-fast : false
1646- matrix :
1647- ecosystem : [npm, pypi, cargo, gem, golang, maven, composer, nuget, deno]
1648- steps :
1649- - name : Checkout
1650- uses : actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
1651- with :
1652- persist-credentials : false
1653-
1654- - name : Set up Docker Buildx
1655- # `driver: docker` — the per-ecosystem image's `FROM
1656- # socket-patch-test-base:latest` only resolves when buildx talks
1657- # directly to the host docker daemon (see e2e-docker above).
1658- uses : docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
1659- with :
1660- driver : docker
1661-
1662- - name : Install Rust
1663- run : rustup show
1664-
1665- - name : Build base image
1666- uses : docker/build-push-action@f9f3042f7e2789586610d6e8b85c8f03e5195baf # v7.2.0
1667- with :
1668- context : .
1669- file : tests/docker/Dockerfile.base
1670- tags : socket-patch-test-base:latest
1671- load : true
1672-
1673- - name : Build ${{ matrix.ecosystem }} image
1674- uses : docker/build-push-action@f9f3042f7e2789586610d6e8b85c8f03e5195baf # v7.2.0
1675- with :
1676- context : .
1677- file : tests/docker/Dockerfile.${{ matrix.ecosystem }}
1678- tags : socket-patch-test-${{ matrix.ecosystem }}:latest
1679- load : true
1680-
1681- - name : Run ${{ matrix.ecosystem }} setup-matrix
1682- run : scripts/setup-matrix.sh run --ecosystem ${{ matrix.ecosystem }} --out "report-${{ matrix.ecosystem }}.json"
1683-
1684- - name : Upload ${{ matrix.ecosystem }} setup-matrix report
1685- if : always()
1686- uses : ./.github/actions/upload-artifact
1687- with :
1688- name : setup-matrix-${{ matrix.ecosystem }}
1689- path : report-${{ matrix.ecosystem }}.json
1690-
16911592 # ----------------------------------------------------------------------
16921593 # Hosted-mode production e2e — REQUIRED status check, with a kill switch.
16931594 #
0 commit comments