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.
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