OXYGENHUB

A test report and coverage from the hub's CI (closes #307) fbd7c8551932

test runs under cargo-nextest and keeps a JUnit report whether or not
the tests pass; a coverage job runs them instrumented beside it, with
its own cached target, and keeps LCOV. coverage is not a required check,
so it never holds a landing.
Author
Andy McCall @andymccall <[email protected]>
via
agent agent:claude@andymccall <[email protected]> · keyless, under your grant for changes,refs,seal · key 310296cce467
When
· 2026-10-25 21:26 UTC
Signature
◈ sealed by agent:claude@andymccall
Hash
fbd7c85519324ebee2c30a7913f15c859463f75c032a9a3259191e6bc08b76b6
Depends on
380996db84e5 705d11b01a2c a7e6e8e6094c b5668108487f c43e4f631d99
Depended on by
40a43921ef42 3b65065298b7
In bookmarks
api-unknown-fields diffusion-pin-bookmark main proposal-list-fast
In tags
v0.9.11 v0.9.15 v0.9.16 v0.9.19 v0.9.20 v0.9.21 v0.9.22 v0.9.23 v0.9.24 v0.9.4 v0.9.5 v0.9.6 v0.9.7 v0.9.8 v0.9.9
Edits
4 atoms, 2 tree operations, 3 files

Browse the tree at this change

added .config/nextest.toml +8 −0
1 +
# The CI profile (#307): every test runs, and a JUnit report is
2 +
# written to target/nextest/ci/junit.xml for the hub's test report
3 +
# (the job's `junit` artifact).
4 +
[profile.ci]
5 +
fail-fast = false
6 +
7 +
[profile.ci.junit]
8 +
path = "junit.xml"
modified .flow/pipeline.kdl +30 −1
…
54 unchanged lines
55 55
    depends-on "fmt"
56 56
    mount {
57 57
        source "ephemeral://disk"
58 +
    // Under cargo-nextest (#307): a JUnit report for the hub's Tests tab,
59 +
    // kept whether or not the tests pass.
60 +
    exec "sh" ".flow/warm-target.sh" "cargo" "nextest" "run" "--workspace" "--locked" "--profile" "ci"
61 +
    output {
62 +
        artifact "junit" {
63 +
            path "/src/target/nextest/ci/junit.xml"
64 +
            when "always"
65 +
        }
66 +
    }
67 +
}
68 +
69 +
// Line coverage (#307) for the Coverage tab: the tests again, instrumented,
70 +
// in a job of its own beside `test`, so neither waits for the other and the
71 +
// instrumented build keeps its own cached target. Not a required check.
72 +
job "coverage" {
73 +
    sandbox "rust"
74 +
    depends-on "fmt"
75 +
    mount {
76 +
        source "ephemeral://disk"
77 +
        target "/src/target"
78 +
        size "48GiB"
79 +
        cache "coverage-target"
80 +
        key "Cargo.lock"
81 +
    }
82 +
    exec "cargo" "llvm-cov" "nextest" "--workspace" "--locked" "--profile" "ci" "--lcov" "--output-path" "/src/target/lcov.info"
83 +
    output {
84 +
        artifact "coverage" {
85 +
            path "/src/target/lcov.info"
86 +
        }
87 +
    }
58 88
        target "/src/target"
59 89
        size "24GiB"
60 90
    }
61 -
<<<<<<< oxy conflict 2 of 2, side 1 of 2: change 6532b323 "oxygen and oxygenflow as pinned subrepos in deps/ (make pins moves them), and an OxygenFlow pipeline: fmt of this workspace, then clippy, tests and a release build against the pins"
62 91
    env {
63 92
        CARGO_INCREMENTAL "0"
64 93
    }
…
18 unchanged lines
modified CHANGELOG.md +1 −0
…
3 unchanged lines
4 4
5 5
## Unreleased
6 6
7 +
- **The hub's CI writes a test report and coverage (#307):** `test` runs under cargo-nextest and keeps a JUnit report (whether or not the tests pass); a new `coverage` job runs the tests instrumented beside it, with its own cached target, and keeps LCOV coverage. `coverage` is not a required check.
7 8
- **The new proposal form lines up (#315):** as wide as the changes above it; Draft with Claude a secondary button under the editor (it fills the fields, it does not open the proposal); the draft checkbox and Open proposal on one row.
8 9
- **Draft with Claude proposes a title too (#316):** for a proposal not yet opened, the assistant begins its draft with a title in the style of the changes' own titles; it fills the title field unless you wrote one (the page's own suggestion does not count), and stays out of the description.
9 10
- **A waiting WASM job no longer says runners lack its image (#317):** a job with no image (the WASM tier) waited saying every runner "does not hold image" with an empty name; the explanation now skips the image check, as the claim always did.
…
319 unchanged lines