Skip to content

ci: stop warning about missing JUnit on legs stopped as superseded (#2073) - #2076

Merged
JarryShaw merged 1 commit into
mainfrom
fix/2073-superseded-junit-warning
Oct 23, 2026
Merged

JarryShaw merged 1 commit into
mainfrom
fix/2073-superseded-junit-warning

Conversation

@JarryShaw

Copy link
Copy Markdown
Owner

What is the purpose of your pull request?

  • ci — changes to CI configuration files and scripts

Description of your pull request and other information

Closes #2073. Nothing was missing. Both legs in run 39898029852 were stopped as superseded (#1938):

  • The logs: job 120233865230 shows Terminated … systemd-run at 60 s, then main is at 27288aa93, no longer at 271534c35; job 120233865247 shows the same. Only after that does Upload test timings warn about junit*.xml, which pytest never got to write.
  • The path is fine: --junitxml="$RUNNER_TEMP/junit.xml" matches the glob.
  • When it started: 6a4a72f (ci(experimental): skip or stop superseded runs instead of cancelling them (#1938) #1942), which changed cancelling superseded runs into stopping them. Across 114 Experimental runs on main since then, 57 of 58 missing-JUnit warnings come from stopped legs. The other one is a real OOM kill that already warns on its own.

The fix:

Tests: the new test_superseded_junit_upload_2073 covers the expression for each value, the glob against the step's path, and the watcher's output on stop, on a normal exit and on a failed write. It also runs the real Run unit tests script with a stub pytest. On main it gives 8 failed; here, 8 passed. The superseded, KTLO-guard, matrix-tier, reporter, timing, shard and workflow tests all pass.

Unverified until a live run: that upload-artifact v7.0.2 accepts the expression for if-no-files-found.

…2073)

util/superseded.py's `watch` stops the tests of a superseded run before
pytest writes junit.xml, and `Upload test timings` then warned "No files
were found with the provided path" on every stopped leg, beside the
`Superseded` notice that already explains it.

- `watch` writes `stopped=true` to `$GITHUB_OUTPUT` once it has stopped
  the command.
- experimental.yml's `Upload test timings` sets `if-no-files-found` to
  `ignore` on that output and `warn` otherwise, so a leg that ran to its
  end and wrote no file still warns.
- tests/project/test_superseded_junit_upload_2073.py pins the output,
  the upload's expression, the JUnit path, and runs the real tests step.
@JarryShaw JarryShaw added bug Issues reporting a defect (set by the bug report template; a default, not an assessment) ci Pull requests that change CI or workflow configuration (ci: subject prefix) review: running A cross-review is in flight against the current head - no verdict yet labels Oct 23, 2026
@JarryShaw

Copy link
Copy Markdown
Owner Author

GOOD TO GO at 60ee02f32 (Sonnet cross-review).

  • Root cause: confirmed from both jobs' logs. pytest stops at 27% with Terminated … systemd-run, the superseded notice follows, and only then comes the junit*.xml warning.
  • The output reaches the step: superseded.py watch is the step's foreground command, not a background process. It inherits that step's $GITHUB_OUTPUT, writes stopped=true before return 0, and the step id is tests.
  • if-no-files-found: the pinned upload-artifact (cf430e03, v7.0.2) lists warn/error/ignore, and the expression always yields one of them.
  • Real failures still warn: stopped=true is written only after a successful stop. A crash or normal exit writes nothing, so a missing file still warns, and GraalPy's partial shard files are still uploaded.

The same two warnings recur in Discussion #2072 for run 39898095976; this PR and #2075 cover both.

@JarryShaw JarryShaw added review: good-to-go Cross-review at the current head says ready; CI state is separate and removed review: running A cross-review is in flight against the current head - no verdict yet labels Oct 23, 2026
@JarryShaw JarryShaw moved this to In review in PyPCAPKit Oct 23, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Coverage: 91.54% (unit tier, Python 3.15, 60ee02f32, Unit Tests run success)

Package Statements Missed Branches Partial Cover
pcapkit (top level) 104 4 20 2 95.16%
pcapkit/const 19599 880 2618 866 92.12%
pcapkit/corekit 2565 71 812 37 96.56%
pcapkit/dumpkit 282 3 102 3 98.44%
pcapkit/foundation 2930 23 1022 25 98.79%
pcapkit/interface 138 4 52 3 96.32%
pcapkit/protocols 17414 219 4574 185 98.14%
pcapkit/toolkit 869 36 298 10 95.20%
pcapkit/utilities 473 7 136 5 98.03%
pcapkit/vendor 4432 1988 1018 167 51.87%

Per-file detail: the coverage-html artifact of this run.

@JarryShaw

Copy link
Copy Markdown
Owner Author

Ready to merge at 60ee02f32: the review is GOOD TO GO and CI is complete (56 passed, 0 failed). The ordering leg ran 2049 tests with 0 failures. The 3.8–3.10 KTLO legs show 0 failing tests, and the PR is based on current main (61bb4ba66).

@JarryShaw
JarryShaw merged commit 6a8fa68 into main Oct 23, 2026
65 checks passed
@github-project-automation github-project-automation Bot moved this from In review to Done in PyPCAPKit Oct 23, 2026
@JarryShaw
JarryShaw deleted the fix/2073-superseded-junit-warning branch October 23, 2026 13:32
@JarryShaw JarryShaw removed the review: good-to-go Cross-review at the current head says ready; CI state is separate label Oct 23, 2026
JarryShaw added a commit that referenced this pull request Oct 23, 2026
#2073)

#2079's byte pin for the watch command was written before #2076 made a stop write stopped=true to $GITHUB_OUTPUT; together they left main red.
@JarryShaw JarryShaw added this to the PyPCAPKit v1.5 milestone Oct 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Issues reporting a defect (set by the bug report template; a default, not an assessment) ci Pull requests that change CI or workflow configuration (ci: subject prefix)

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

ci: Python 3.14t and GraalPy experimental legs produce no JUnit XML

1 participant