test: observational baseline for per-module rebuild counts#14310
Merged
Conversation
There was a problem hiding this comment.
Pull request overview
Adds an observational blackbox cram test to capture the current (pre-#4572) rebuild behavior for a consumer module when interfaces of entry modules in an unwrapped dependency library change.
Changes:
- Introduces a new cram test that edits
A1,A2,A3interfaces in an unwrappedbaselibrary and records rebuild-target counts for consumer moduleC. - Records current baseline expectations (
A1=1,A3=1,A2>0) intended to be promoted once per-module tightening lands.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 1 out of 1 changed files in this pull request and generated no new comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Collaborator
Author
|
Looking for a volunteer to review. |
rgrinberg
reviewed
Apr 25, 2026
robinbb
added a commit
to robinbb/dune
that referenced
this pull request
Apr 27, 2026
Per rgrinberg review on ocaml#14310: replace the [length]-based jq pipeline with the idiomatic [targetsMatchingFilter] pattern used in sibling tests (e.g. alias-reexport.t). The recorded output now shows the actual target paths under [_build/default/consumer/] that are rebuilt when each of A1/A2/A3 is edited, rather than a bare count. This also unifies the three blocks: A1, A3, and A2 all use the same pipeline. Once ocaml#14116's per-module filter lands, the A1/A3 blocks promote to [], while A2 keeps the c.cmi/c.cmo/c.cmt list. Signed-off-by: Robin Bate Boerop <me@robinbb.com>
robinbb
added a commit
to robinbb/dune
that referenced
this pull request
Apr 27, 2026
ocaml#14310 (the dep PR that owns unwrapped-tight-deps.t) was updated per rgrinberg's review to print rebuild target names via [targetsMatchingFilter] rather than counts via [length], matching the idiom used by sibling tests like alias-reexport.t. Resync this PR's copy with ocaml#14310's current shape: take the canonical content from ocaml#14310, with A1/A3 assertions promoted to [] (the per-module filter drops unreferenced [base] modules from [c]'s deps) and A2 keeping its rebuild target list (the one module [c] references must still rebuild). The other dep PRs whose tests this branch borrows have only prose-style differences (post-fix prose on this branch vs observational-baseline prose on the dep PR) — not new churn — so they don't need a similar resync. Signed-off-by: Robin Bate Boerop <me@robinbb.com>
Add a blackbox test that records, for a consumer module C referencing only A2 of an unwrapped library [base] with three entry modules A1/A2/A3 (each with an explicit interface), the rebuild-target count for C when each of A1/A2/A3 has its signature edited. On current main, editing any of A1/A2/A3 rebuilds C because the consumer depends conservatively on a directory-wide glob over [base]'s object dir. The test records A1=1, A3=1, A2>0. The test anchors the tightening surface for ocaml#4572: once per-module filtering lands, editing A1 or A3 is expected to leave C untouched, at which point the recorded counts are promoted. Signed-off-by: Robin Bate Boerop <me@robinbb.com>
Previously [consumer] was a single-module library stanza. Dune skips ocamldep for single-module stanzas with no library deps as an optimisation, and the per-module-lib-deps filter depends on ocamldep output. So under the filter's feature branch the test's A1/A3 rebuild counts flipped from 1 to 0 for two independent reasons: the filter running on ocamldep output, and a concurrent tweak to the skip-ocamldep optimisation to run ocamldep for single-module stanzas that have library deps. Add an unused module [d.ml] to [consumer]. Ocamldep now runs unconditionally for [consumer], and the recorded rebuild count for [c] reflects only the per-module filter's work, not the skip-ocamldep behaviour. The probe regex still matches [c] only so [d] being in the rebuild set does not affect the count. Signed-off-by: Robin Bate Boerop <me@robinbb.com>
Per rgrinberg review on ocaml#14310: replace the [length]-based jq pipeline with the idiomatic [targetsMatchingFilter] pattern used in sibling tests (e.g. alias-reexport.t). The recorded output now shows the actual target paths under [_build/default/consumer/] that are rebuilt when each of A1/A2/A3 is edited, rather than a bare count. This also unifies the three blocks: A1, A3, and A2 all use the same pipeline. Once ocaml#14116's per-module filter lands, the A1/A3 blocks promote to [], while A2 keeps the c.cmi/c.cmo/c.cmt list. Signed-off-by: Robin Bate Boerop <me@robinbb.com>
60fd49a to
f56a633
Compare
robinbb
added a commit
to robinbb/dune
that referenced
this pull request
Apr 27, 2026
Each of the dep PRs supplying a test in [per-module-lib-deps/] was renamed per Leonidas's review on ocaml#14309: generic [libA]/[modA1]-style names replaced by role-bearing names like [dep_lib]/[spurious_rebuild]. This commit applies the same renames to this PR's local copies of those tests so they stay convergent with the dep PRs' canonical versions. Touches: - single-module-unreferenced-lib.t (ocaml#14308) - sibling-unreferenced-lib.t (ocaml#14309) - unwrapped-tight-deps.t (ocaml#14310) - lib-vs-lib-name-collision.t (ocaml#14324) - opaque-mli-change.t, opaque-cmx-deps-local.t (ocaml#14331) - transitive-unreferenced-lib.t (ocaml#14332) - wrapped-reexport-via-open-flag.t (ocaml#14346) - auto-wrapped-child-reexport.t (ocaml#14347) Pure rename + path/dir adjustments. Count assertions preserved (this PR's promotions to the post-fix counts are unchanged). Test suite passes. Signed-off-by: Robin Bate Boerop <me@robinbb.com>
robinbb
added a commit
to robinbb/dune
that referenced
this pull request
Apr 27, 2026
ocaml#14310 (the dep PR that owns unwrapped-tight-deps.t) was updated per rgrinberg's review to print rebuild target names via [targetsMatchingFilter] rather than counts via [length], matching the idiom used by sibling tests like alias-reexport.t. Resync this PR's copy with ocaml#14310's current shape: take the canonical content from ocaml#14310, with A1/A3 assertions promoted to [] (the per-module filter drops unreferenced [base] modules from [c]'s deps) and A2 keeping its rebuild target list (the one module [c] references must still rebuild). The other dep PRs whose tests this branch borrows have only prose-style differences (post-fix prose on this branch vs observational-baseline prose on the dep PR) — not new churn — so they don't need a similar resync. Signed-off-by: Robin Bate Boerop <me@robinbb.com>
rgrinberg
approved these changes
Apr 27, 2026
robinbb
added a commit
to robinbb/dune
that referenced
this pull request
Apr 28, 2026
Per Copilot review on ocaml#14332: [intermediate_lib] and the [main] executable were single-module stanzas. Dune's [dep_rules.ml] short-circuits ocamldep for single-module stanzas, so the test was exercising the cctx-wide glob fallback rather than isolating the per-module dependency filtering being baselined. A future change that flips the short-circuit (e.g. adding [not has_library_deps]) would change this test's count for an unrelated reason — the same conflation that ocaml#14310 had to undo retroactively. Add an unused [intermediate_dummy] module to [intermediate_lib] and an unused [main_dummy] module to the [main] executable so ocamldep runs unconditionally for both stanzas. Tighten the trace-probe regex to [dune__exe__Main\\.] so it only matches Main targets, not the new [Main_dummy]. Switch from a [length]-based count to the idiomatic [targetsMatchingFilter] JSON dump used elsewhere in this directory; the recorded targets are now the explicit [.cmi/.cmti] and [.cmo/.cmt] target_files lists for the two ocamlc invocations on Main. Signed-off-by: Robin Bate Boerop <me@robinbb.com>
robinbb
added a commit
to robinbb/dune
that referenced
this pull request
Apr 29, 2026
xyz-3 was branched from xyz-2 c71, which predates several test- only refinements that landed on xyz: library renames for clarity ([lib_a]/[lib_b] → [dep_lib]/[consumer_lib]), exact-[target_files] array assertions in place of [length] counts, and the format resync of [unwrapped-tight-deps.t] tracking dep PR ocaml#14310. This commit copies the xyz HEAD versions of the ten cluster tests that diverged. All assertions hold under the conservative wrapped- lib glob fix; no test outcome changes. Files: - auto-wrapped-child-reexport.t - implicit-transitive-deps-false.t - lib-vs-lib-name-collision.t - opaque-cmx-deps-local.t - opaque-mli-change.t - sibling-unreferenced-lib.t - single-module-unreferenced-lib.t - transitive-unreferenced-lib.t - unwrapped-tight-deps.t - wrapped-reexport-via-open-flag.t Signed-off-by: Robin Bate Boerop <me@robinbb.com>
robinbb
added a commit
to robinbb/dune
that referenced
this pull request
Apr 29, 2026
xyz-3 was branched from xyz-2 c71, which predates several test- only refinements that landed on xyz: library renames for clarity ([lib_a]/[lib_b] → [dep_lib]/[consumer_lib]), exact-[target_files] array assertions in place of [length] counts, and the format resync of [unwrapped-tight-deps.t] tracking dep PR ocaml#14310. This commit copies the xyz HEAD versions of the ten cluster tests that diverged. All assertions hold under the conservative wrapped- lib glob fix; no test outcome changes. Files: - auto-wrapped-child-reexport.t - implicit-transitive-deps-false.t - lib-vs-lib-name-collision.t - opaque-cmx-deps-local.t - opaque-mli-change.t - sibling-unreferenced-lib.t - single-module-unreferenced-lib.t - transitive-unreferenced-lib.t - unwrapped-tight-deps.t - wrapped-reexport-via-open-flag.t Signed-off-by: Robin Bate Boerop <me@robinbb.com>
robinbb
added a commit
to robinbb/dune
that referenced
this pull request
Apr 29, 2026
xyz-3 was branched from xyz-2 c71, which predates several test- only refinements that landed on xyz: library renames for clarity ([lib_a]/[lib_b] → [dep_lib]/[consumer_lib]), exact-[target_files] array assertions in place of [length] counts, and the format resync of [unwrapped-tight-deps.t] tracking dep PR ocaml#14310. This commit copies the xyz HEAD versions of the ten cluster tests that diverged. All assertions hold under the conservative wrapped- lib glob fix; no test outcome changes. Files: - auto-wrapped-child-reexport.t - implicit-transitive-deps-false.t - lib-vs-lib-name-collision.t - opaque-cmx-deps-local.t - opaque-mli-change.t - sibling-unreferenced-lib.t - single-module-unreferenced-lib.t - transitive-unreferenced-lib.t - unwrapped-tight-deps.t - wrapped-reexport-via-open-flag.t Signed-off-by: Robin Bate Boerop <me@robinbb.com>
robinbb
added a commit
to robinbb/dune
that referenced
this pull request
Apr 29, 2026
xyz-3 was branched from xyz-2 c71, which predates several test- only refinements that landed on xyz: library renames for clarity ([lib_a]/[lib_b] → [dep_lib]/[consumer_lib]), exact-[target_files] array assertions in place of [length] counts, and the format resync of [unwrapped-tight-deps.t] tracking dep PR ocaml#14310. This commit copies the xyz HEAD versions of the ten cluster tests that diverged. All assertions hold under the conservative wrapped- lib glob fix; no test outcome changes. Files: - auto-wrapped-child-reexport.t - implicit-transitive-deps-false.t - lib-vs-lib-name-collision.t - opaque-cmx-deps-local.t - opaque-mli-change.t - sibling-unreferenced-lib.t - single-module-unreferenced-lib.t - transitive-unreferenced-lib.t - unwrapped-tight-deps.t - wrapped-reexport-via-open-flag.t Signed-off-by: Robin Bate Boerop <me@robinbb.com>
robinbb
added a commit
to robinbb/dune
that referenced
this pull request
Apr 29, 2026
xyz-3 was branched from xyz-2 c71, which predates several test- only refinements that landed on xyz: library renames for clarity ([lib_a]/[lib_b] → [dep_lib]/[consumer_lib]), exact-[target_files] array assertions in place of [length] counts, and the format resync of [unwrapped-tight-deps.t] tracking dep PR ocaml#14310. This commit copies the xyz HEAD versions of the ten cluster tests that diverged. All assertions hold under the conservative wrapped- lib glob fix; no test outcome changes. Files: - auto-wrapped-child-reexport.t - implicit-transitive-deps-false.t - lib-vs-lib-name-collision.t - opaque-cmx-deps-local.t - opaque-mli-change.t - sibling-unreferenced-lib.t - single-module-unreferenced-lib.t - transitive-unreferenced-lib.t - unwrapped-tight-deps.t - wrapped-reexport-via-open-flag.t Signed-off-by: Robin Bate Boerop <me@robinbb.com>
robinbb
added a commit
that referenced
this pull request
Apr 30, 2026
xyz-3 was branched from xyz-2 c71, which predates several test- only refinements that landed on xyz: library renames for clarity ([lib_a]/[lib_b] → [dep_lib]/[consumer_lib]), exact-[target_files] array assertions in place of [length] counts, and the format resync of [unwrapped-tight-deps.t] tracking dep PR #14310. This commit copies the xyz HEAD versions of the ten cluster tests that diverged. All assertions hold under the conservative wrapped- lib glob fix; no test outcome changes. Files: - auto-wrapped-child-reexport.t - implicit-transitive-deps-false.t - lib-vs-lib-name-collision.t - opaque-cmx-deps-local.t - opaque-mli-change.t - sibling-unreferenced-lib.t - single-module-unreferenced-lib.t - transitive-unreferenced-lib.t - unwrapped-tight-deps.t - wrapped-reexport-via-open-flag.t Signed-off-by: Robin Bate Boerop <me@robinbb.com>
robinbb
added a commit
that referenced
this pull request
May 1, 2026
xyz-3 was branched from xyz-2 c71, which predates several test- only refinements that landed on xyz: library renames for clarity ([lib_a]/[lib_b] → [dep_lib]/[consumer_lib]), exact-[target_files] array assertions in place of [length] counts, and the format resync of [unwrapped-tight-deps.t] tracking dep PR #14310. This commit copies the xyz HEAD versions of the ten cluster tests that diverged. All assertions hold under the conservative wrapped- lib glob fix; no test outcome changes. Files: - auto-wrapped-child-reexport.t - implicit-transitive-deps-false.t - lib-vs-lib-name-collision.t - opaque-cmx-deps-local.t - opaque-mli-change.t - sibling-unreferenced-lib.t - single-module-unreferenced-lib.t - transitive-unreferenced-lib.t - unwrapped-tight-deps.t - wrapped-reexport-via-open-flag.t Signed-off-by: Robin Bate Boerop <me@robinbb.com>
robinbb
added a commit
that referenced
this pull request
May 1, 2026
xyz-3 was branched from xyz-2 c71, which predates several test- only refinements that landed on xyz: library renames for clarity ([lib_a]/[lib_b] → [dep_lib]/[consumer_lib]), exact-[target_files] array assertions in place of [length] counts, and the format resync of [unwrapped-tight-deps.t] tracking dep PR #14310. This commit copies the xyz HEAD versions of the ten cluster tests that diverged. All assertions hold under the conservative wrapped- lib glob fix; no test outcome changes. Files: - auto-wrapped-child-reexport.t - implicit-transitive-deps-false.t - lib-vs-lib-name-collision.t - opaque-cmx-deps-local.t - opaque-mli-change.t - sibling-unreferenced-lib.t - single-module-unreferenced-lib.t - transitive-unreferenced-lib.t - unwrapped-tight-deps.t - wrapped-reexport-via-open-flag.t Signed-off-by: Robin Bate Boerop <me@robinbb.com>
robinbb
added a commit
that referenced
this pull request
May 1, 2026
xyz-3 was branched from xyz-2 c71, which predates several test- only refinements that landed on xyz: library renames for clarity ([lib_a]/[lib_b] → [dep_lib]/[consumer_lib]), exact-[target_files] array assertions in place of [length] counts, and the format resync of [unwrapped-tight-deps.t] tracking dep PR #14310. This commit copies the xyz HEAD versions of the ten cluster tests that diverged. All assertions hold under the conservative wrapped- lib glob fix; no test outcome changes. Files: - auto-wrapped-child-reexport.t - implicit-transitive-deps-false.t - lib-vs-lib-name-collision.t - opaque-cmx-deps-local.t - opaque-mli-change.t - sibling-unreferenced-lib.t - single-module-unreferenced-lib.t - transitive-unreferenced-lib.t - unwrapped-tight-deps.t - wrapped-reexport-via-open-flag.t Signed-off-by: Robin Bate Boerop <me@robinbb.com>
robinbb
added a commit
that referenced
this pull request
May 1, 2026
xyz-3 was branched from xyz-2 c71, which predates several test- only refinements that landed on xyz: library renames for clarity ([lib_a]/[lib_b] → [dep_lib]/[consumer_lib]), exact-[target_files] array assertions in place of [length] counts, and the format resync of [unwrapped-tight-deps.t] tracking dep PR #14310. This commit copies the xyz HEAD versions of the ten cluster tests that diverged. All assertions hold under the conservative wrapped- lib glob fix; no test outcome changes. Files: - auto-wrapped-child-reexport.t - implicit-transitive-deps-false.t - lib-vs-lib-name-collision.t - opaque-cmx-deps-local.t - opaque-mli-change.t - sibling-unreferenced-lib.t - single-module-unreferenced-lib.t - transitive-unreferenced-lib.t - unwrapped-tight-deps.t - wrapped-reexport-via-open-flag.t Signed-off-by: Robin Bate Boerop <me@robinbb.com>
robinbb
added a commit
to robinbb/dune
that referenced
this pull request
May 2, 2026
xyz-3 was branched from xyz-2 c71, which predates several test- only refinements that landed on xyz: library renames for clarity ([lib_a]/[lib_b] → [dep_lib]/[consumer_lib]), exact-[target_files] array assertions in place of [length] counts, and the format resync of [unwrapped-tight-deps.t] tracking dep PR ocaml#14310. This commit copies the xyz HEAD versions of the ten cluster tests that diverged. All assertions hold under the conservative wrapped- lib glob fix; no test outcome changes. Files: - auto-wrapped-child-reexport.t - implicit-transitive-deps-false.t - lib-vs-lib-name-collision.t - opaque-cmx-deps-local.t - opaque-mli-change.t - sibling-unreferenced-lib.t - single-module-unreferenced-lib.t - transitive-unreferenced-lib.t - unwrapped-tight-deps.t - wrapped-reexport-via-open-flag.t Signed-off-by: Robin Bate Boerop <me@robinbb.com>
robinbb
added a commit
to robinbb/dune
that referenced
this pull request
May 2, 2026
xyz-3 was branched from xyz-2 c71, which predates several test- only refinements that landed on xyz: library renames for clarity ([lib_a]/[lib_b] → [dep_lib]/[consumer_lib]), exact-[target_files] array assertions in place of [length] counts, and the format resync of [unwrapped-tight-deps.t] tracking dep PR ocaml#14310. This commit copies the xyz HEAD versions of the ten cluster tests that diverged. All assertions hold under the conservative wrapped- lib glob fix; no test outcome changes. Files: - auto-wrapped-child-reexport.t - implicit-transitive-deps-false.t - lib-vs-lib-name-collision.t - opaque-cmx-deps-local.t - opaque-mli-change.t - sibling-unreferenced-lib.t - single-module-unreferenced-lib.t - transitive-unreferenced-lib.t - unwrapped-tight-deps.t - wrapped-reexport-via-open-flag.t Signed-off-by: Robin Bate Boerop <me@robinbb.com>
robinbb
added a commit
to robinbb/dune
that referenced
this pull request
May 3, 2026
xyz-3 was branched from xyz-2 c71, which predates several test- only refinements that landed on xyz: library renames for clarity ([lib_a]/[lib_b] → [dep_lib]/[consumer_lib]), exact-[target_files] array assertions in place of [length] counts, and the format resync of [unwrapped-tight-deps.t] tracking dep PR ocaml#14310. This commit copies the xyz HEAD versions of the ten cluster tests that diverged. All assertions hold under the conservative wrapped- lib glob fix; no test outcome changes. Files: - auto-wrapped-child-reexport.t - implicit-transitive-deps-false.t - lib-vs-lib-name-collision.t - opaque-cmx-deps-local.t - opaque-mli-change.t - sibling-unreferenced-lib.t - single-module-unreferenced-lib.t - transitive-unreferenced-lib.t - unwrapped-tight-deps.t - wrapped-reexport-via-open-flag.t Signed-off-by: Robin Bate Boerop <me@robinbb.com>
robinbb
added a commit
to robinbb/dune
that referenced
this pull request
May 3, 2026
xyz-3 was branched from xyz-2 c71, which predates several test- only refinements that landed on xyz: library renames for clarity ([lib_a]/[lib_b] → [dep_lib]/[consumer_lib]), exact-[target_files] array assertions in place of [length] counts, and the format resync of [unwrapped-tight-deps.t] tracking dep PR ocaml#14310. This commit copies the xyz HEAD versions of the ten cluster tests that diverged. All assertions hold under the conservative wrapped- lib glob fix; no test outcome changes. Files: - auto-wrapped-child-reexport.t - implicit-transitive-deps-false.t - lib-vs-lib-name-collision.t - opaque-cmx-deps-local.t - opaque-mli-change.t - sibling-unreferenced-lib.t - single-module-unreferenced-lib.t - transitive-unreferenced-lib.t - unwrapped-tight-deps.t - wrapped-reexport-via-open-flag.t Signed-off-by: Robin Bate Boerop <me@robinbb.com>
robinbb
added a commit
to robinbb/dune
that referenced
this pull request
May 3, 2026
xyz-3 was branched from xyz-2 c71, which predates several test- only refinements that landed on xyz: library renames for clarity ([lib_a]/[lib_b] → [dep_lib]/[consumer_lib]), exact-[target_files] array assertions in place of [length] counts, and the format resync of [unwrapped-tight-deps.t] tracking dep PR ocaml#14310. This commit copies the xyz HEAD versions of the ten cluster tests that diverged. All assertions hold under the conservative wrapped- lib glob fix; no test outcome changes. Files: - auto-wrapped-child-reexport.t - implicit-transitive-deps-false.t - lib-vs-lib-name-collision.t - opaque-cmx-deps-local.t - opaque-mli-change.t - sibling-unreferenced-lib.t - single-module-unreferenced-lib.t - transitive-unreferenced-lib.t - unwrapped-tight-deps.t - wrapped-reexport-via-open-flag.t Signed-off-by: Robin Bate Boerop <me@robinbb.com>
robinbb
added a commit
to robinbb/dune
that referenced
this pull request
May 3, 2026
xyz-3 was branched from xyz-2 c71, which predates several test- only refinements that landed on xyz: library renames for clarity ([lib_a]/[lib_b] → [dep_lib]/[consumer_lib]), exact-[target_files] array assertions in place of [length] counts, and the format resync of [unwrapped-tight-deps.t] tracking dep PR ocaml#14310. This commit copies the xyz HEAD versions of the ten cluster tests that diverged. All assertions hold under the conservative wrapped- lib glob fix; no test outcome changes. Files: - auto-wrapped-child-reexport.t - implicit-transitive-deps-false.t - lib-vs-lib-name-collision.t - opaque-cmx-deps-local.t - opaque-mli-change.t - sibling-unreferenced-lib.t - single-module-unreferenced-lib.t - transitive-unreferenced-lib.t - unwrapped-tight-deps.t - wrapped-reexport-via-open-flag.t Signed-off-by: Robin Bate Boerop <me@robinbb.com>
robinbb
added a commit
to robinbb/dune
that referenced
this pull request
May 3, 2026
xyz-3 was branched from xyz-2 c71, which predates several test- only refinements that landed on xyz: library renames for clarity ([lib_a]/[lib_b] → [dep_lib]/[consumer_lib]), exact-[target_files] array assertions in place of [length] counts, and the format resync of [unwrapped-tight-deps.t] tracking dep PR ocaml#14310. This commit copies the xyz HEAD versions of the ten cluster tests that diverged. All assertions hold under the conservative wrapped- lib glob fix; no test outcome changes. Files: - auto-wrapped-child-reexport.t - implicit-transitive-deps-false.t - lib-vs-lib-name-collision.t - opaque-cmx-deps-local.t - opaque-mli-change.t - sibling-unreferenced-lib.t - single-module-unreferenced-lib.t - transitive-unreferenced-lib.t - unwrapped-tight-deps.t - wrapped-reexport-via-open-flag.t Signed-off-by: Robin Bate Boerop <me@robinbb.com>
robinbb
added a commit
to robinbb/dune
that referenced
this pull request
May 4, 2026
xyz-3 was branched from xyz-2 c71, which predates several test- only refinements that landed on xyz: library renames for clarity ([lib_a]/[lib_b] → [dep_lib]/[consumer_lib]), exact-[target_files] array assertions in place of [length] counts, and the format resync of [unwrapped-tight-deps.t] tracking dep PR ocaml#14310. This commit copies the xyz HEAD versions of the ten cluster tests that diverged. All assertions hold under the conservative wrapped- lib glob fix; no test outcome changes. Files: - auto-wrapped-child-reexport.t - implicit-transitive-deps-false.t - lib-vs-lib-name-collision.t - opaque-cmx-deps-local.t - opaque-mli-change.t - sibling-unreferenced-lib.t - single-module-unreferenced-lib.t - transitive-unreferenced-lib.t - unwrapped-tight-deps.t - wrapped-reexport-via-open-flag.t Signed-off-by: Robin Bate Boerop <me@robinbb.com>
robinbb
added a commit
to robinbb/dune
that referenced
this pull request
May 6, 2026
xyz-3 was branched from xyz-2 c71, which predates several test- only refinements that landed on xyz: library renames for clarity ([lib_a]/[lib_b] → [dep_lib]/[consumer_lib]), exact-[target_files] array assertions in place of [length] counts, and the format resync of [unwrapped-tight-deps.t] tracking dep PR ocaml#14310. This commit copies the xyz HEAD versions of the ten cluster tests that diverged. All assertions hold under the conservative wrapped- lib glob fix; no test outcome changes. Files: - auto-wrapped-child-reexport.t - implicit-transitive-deps-false.t - lib-vs-lib-name-collision.t - opaque-cmx-deps-local.t - opaque-mli-change.t - sibling-unreferenced-lib.t - single-module-unreferenced-lib.t - transitive-unreferenced-lib.t - unwrapped-tight-deps.t - wrapped-reexport-via-open-flag.t Signed-off-by: Robin Bate Boerop <me@robinbb.com>
robinbb
added a commit
to robinbb/dune
that referenced
this pull request
May 6, 2026
xyz-3 was branched from xyz-2 c71, which predates several test- only refinements that landed on xyz: library renames for clarity ([lib_a]/[lib_b] → [dep_lib]/[consumer_lib]), exact-[target_files] array assertions in place of [length] counts, and the format resync of [unwrapped-tight-deps.t] tracking dep PR ocaml#14310. This commit copies the xyz HEAD versions of the ten cluster tests that diverged. All assertions hold under the conservative wrapped- lib glob fix; no test outcome changes. Files: - auto-wrapped-child-reexport.t - implicit-transitive-deps-false.t - lib-vs-lib-name-collision.t - opaque-cmx-deps-local.t - opaque-mli-change.t - sibling-unreferenced-lib.t - single-module-unreferenced-lib.t - transitive-unreferenced-lib.t - unwrapped-tight-deps.t - wrapped-reexport-via-open-flag.t Signed-off-by: Robin Bate Boerop <me@robinbb.com>
robinbb
added a commit
to robinbb/dune
that referenced
this pull request
May 6, 2026
xyz-3 was branched from xyz-2 c71, which predates several test- only refinements that landed on xyz: library renames for clarity ([lib_a]/[lib_b] → [dep_lib]/[consumer_lib]), exact-[target_files] array assertions in place of [length] counts, and the format resync of [unwrapped-tight-deps.t] tracking dep PR ocaml#14310. This commit copies the xyz HEAD versions of the ten cluster tests that diverged. All assertions hold under the conservative wrapped- lib glob fix; no test outcome changes. Files: - auto-wrapped-child-reexport.t - implicit-transitive-deps-false.t - lib-vs-lib-name-collision.t - opaque-cmx-deps-local.t - opaque-mli-change.t - sibling-unreferenced-lib.t - single-module-unreferenced-lib.t - transitive-unreferenced-lib.t - unwrapped-tight-deps.t - wrapped-reexport-via-open-flag.t Signed-off-by: Robin Bate Boerop <me@robinbb.com>
robinbb
added a commit
to robinbb/dune
that referenced
this pull request
May 6, 2026
xyz-3 was branched from xyz-2 c71, which predates several test- only refinements that landed on xyz: library renames for clarity ([lib_a]/[lib_b] → [dep_lib]/[consumer_lib]), exact-[target_files] array assertions in place of [length] counts, and the format resync of [unwrapped-tight-deps.t] tracking dep PR ocaml#14310. This commit copies the xyz HEAD versions of the ten cluster tests that diverged. All assertions hold under the conservative wrapped- lib glob fix; no test outcome changes. Files: - auto-wrapped-child-reexport.t - implicit-transitive-deps-false.t - lib-vs-lib-name-collision.t - opaque-cmx-deps-local.t - opaque-mli-change.t - sibling-unreferenced-lib.t - single-module-unreferenced-lib.t - transitive-unreferenced-lib.t - unwrapped-tight-deps.t - wrapped-reexport-via-open-flag.t Signed-off-by: Robin Bate Boerop <me@robinbb.com>
robinbb
added a commit
to robinbb/dune
that referenced
this pull request
May 7, 2026
xyz-3 was branched from xyz-2 c71, which predates several test- only refinements that landed on xyz: library renames for clarity ([lib_a]/[lib_b] → [dep_lib]/[consumer_lib]), exact-[target_files] array assertions in place of [length] counts, and the format resync of [unwrapped-tight-deps.t] tracking dep PR ocaml#14310. This commit copies the xyz HEAD versions of the ten cluster tests that diverged. All assertions hold under the conservative wrapped- lib glob fix; no test outcome changes. Files: - auto-wrapped-child-reexport.t - implicit-transitive-deps-false.t - lib-vs-lib-name-collision.t - opaque-cmx-deps-local.t - opaque-mli-change.t - sibling-unreferenced-lib.t - single-module-unreferenced-lib.t - transitive-unreferenced-lib.t - unwrapped-tight-deps.t - wrapped-reexport-via-open-flag.t Signed-off-by: Robin Bate Boerop <me@robinbb.com>
robinbb
added a commit
that referenced
this pull request
May 7, 2026
xyz-3 was branched from xyz-2 c71, which predates several test- only refinements that landed on xyz: library renames for clarity ([lib_a]/[lib_b] → [dep_lib]/[consumer_lib]), exact-[target_files] array assertions in place of [length] counts, and the format resync of [unwrapped-tight-deps.t] tracking dep PR #14310. This commit copies the xyz HEAD versions of the ten cluster tests that diverged. All assertions hold under the conservative wrapped- lib glob fix; no test outcome changes. Files: - auto-wrapped-child-reexport.t - implicit-transitive-deps-false.t - lib-vs-lib-name-collision.t - opaque-cmx-deps-local.t - opaque-mli-change.t - sibling-unreferenced-lib.t - single-module-unreferenced-lib.t - transitive-unreferenced-lib.t - unwrapped-tight-deps.t - wrapped-reexport-via-open-flag.t Signed-off-by: Robin Bate Boerop <me@robinbb.com>
robinbb
added a commit
to robinbb/dune
that referenced
this pull request
May 7, 2026
xyz-3 was branched from xyz-2 c71, which predates several test- only refinements that landed on xyz: library renames for clarity ([lib_a]/[lib_b] → [dep_lib]/[consumer_lib]), exact-[target_files] array assertions in place of [length] counts, and the format resync of [unwrapped-tight-deps.t] tracking dep PR ocaml#14310. This commit copies the xyz HEAD versions of the ten cluster tests that diverged. All assertions hold under the conservative wrapped- lib glob fix; no test outcome changes. Files: - auto-wrapped-child-reexport.t - implicit-transitive-deps-false.t - lib-vs-lib-name-collision.t - opaque-cmx-deps-local.t - opaque-mli-change.t - sibling-unreferenced-lib.t - single-module-unreferenced-lib.t - transitive-unreferenced-lib.t - unwrapped-tight-deps.t - wrapped-reexport-via-open-flag.t Signed-off-by: Robin Bate Boerop <me@robinbb.com>
robinbb
added a commit
that referenced
this pull request
May 7, 2026
xyz-3 was branched from xyz-2 c71, which predates several test- only refinements that landed on xyz: library renames for clarity ([lib_a]/[lib_b] → [dep_lib]/[consumer_lib]), exact-[target_files] array assertions in place of [length] counts, and the format resync of [unwrapped-tight-deps.t] tracking dep PR #14310. This commit copies the xyz HEAD versions of the ten cluster tests that diverged. All assertions hold under the conservative wrapped- lib glob fix; no test outcome changes. Files: - auto-wrapped-child-reexport.t - implicit-transitive-deps-false.t - lib-vs-lib-name-collision.t - opaque-cmx-deps-local.t - opaque-mli-change.t - sibling-unreferenced-lib.t - single-module-unreferenced-lib.t - transitive-unreferenced-lib.t - unwrapped-tight-deps.t - wrapped-reexport-via-open-flag.t Signed-off-by: Robin Bate Boerop <me@robinbb.com>
robinbb
added a commit
to robinbb/dune
that referenced
this pull request
May 7, 2026
xyz-3 was branched from xyz-2 c71, which predates several test- only refinements that landed on xyz: library renames for clarity ([lib_a]/[lib_b] → [dep_lib]/[consumer_lib]), exact-[target_files] array assertions in place of [length] counts, and the format resync of [unwrapped-tight-deps.t] tracking dep PR ocaml#14310. This commit copies the xyz HEAD versions of the ten cluster tests that diverged. All assertions hold under the conservative wrapped- lib glob fix; no test outcome changes. Files: - auto-wrapped-child-reexport.t - implicit-transitive-deps-false.t - lib-vs-lib-name-collision.t - opaque-cmx-deps-local.t - opaque-mli-change.t - sibling-unreferenced-lib.t - single-module-unreferenced-lib.t - transitive-unreferenced-lib.t - unwrapped-tight-deps.t - wrapped-reexport-via-open-flag.t Signed-off-by: Robin Bate Boerop <me@robinbb.com>
robinbb
added a commit
to robinbb/dune
that referenced
this pull request
May 8, 2026
xyz-3 was branched from xyz-2 c71, which predates several test- only refinements that landed on xyz: library renames for clarity ([lib_a]/[lib_b] → [dep_lib]/[consumer_lib]), exact-[target_files] array assertions in place of [length] counts, and the format resync of [unwrapped-tight-deps.t] tracking dep PR ocaml#14310. This commit copies the xyz HEAD versions of the ten cluster tests that diverged. All assertions hold under the conservative wrapped- lib glob fix; no test outcome changes. Files: - auto-wrapped-child-reexport.t - implicit-transitive-deps-false.t - lib-vs-lib-name-collision.t - opaque-cmx-deps-local.t - opaque-mli-change.t - sibling-unreferenced-lib.t - single-module-unreferenced-lib.t - transitive-unreferenced-lib.t - unwrapped-tight-deps.t - wrapped-reexport-via-open-flag.t Signed-off-by: Robin Bate Boerop <me@robinbb.com>
robinbb
added a commit
to robinbb/dune
that referenced
this pull request
May 8, 2026
xyz-3 was branched from xyz-2 c71, which predates several test- only refinements that landed on xyz: library renames for clarity ([lib_a]/[lib_b] → [dep_lib]/[consumer_lib]), exact-[target_files] array assertions in place of [length] counts, and the format resync of [unwrapped-tight-deps.t] tracking dep PR ocaml#14310. This commit copies the xyz HEAD versions of the ten cluster tests that diverged. All assertions hold under the conservative wrapped- lib glob fix; no test outcome changes. Files: - auto-wrapped-child-reexport.t - implicit-transitive-deps-false.t - lib-vs-lib-name-collision.t - opaque-cmx-deps-local.t - opaque-mli-change.t - sibling-unreferenced-lib.t - single-module-unreferenced-lib.t - transitive-unreferenced-lib.t - unwrapped-tight-deps.t - wrapped-reexport-via-open-flag.t Signed-off-by: Robin Bate Boerop <me@robinbb.com>
robinbb
added a commit
to robinbb/dune
that referenced
this pull request
May 8, 2026
xyz-3 was branched from xyz-2 c71, which predates several test- only refinements that landed on xyz: library renames for clarity ([lib_a]/[lib_b] → [dep_lib]/[consumer_lib]), exact-[target_files] array assertions in place of [length] counts, and the format resync of [unwrapped-tight-deps.t] tracking dep PR ocaml#14310. This commit copies the xyz HEAD versions of the ten cluster tests that diverged. All assertions hold under the conservative wrapped- lib glob fix; no test outcome changes. Files: - auto-wrapped-child-reexport.t - implicit-transitive-deps-false.t - lib-vs-lib-name-collision.t - opaque-cmx-deps-local.t - opaque-mli-change.t - sibling-unreferenced-lib.t - single-module-unreferenced-lib.t - transitive-unreferenced-lib.t - unwrapped-tight-deps.t - wrapped-reexport-via-open-flag.t Signed-off-by: Robin Bate Boerop <me@robinbb.com>
robinbb
added a commit
to robinbb/dune
that referenced
this pull request
May 8, 2026
xyz-3 was branched from xyz-2 c71, which predates several test- only refinements that landed on xyz: library renames for clarity ([lib_a]/[lib_b] → [dep_lib]/[consumer_lib]), exact-[target_files] array assertions in place of [length] counts, and the format resync of [unwrapped-tight-deps.t] tracking dep PR ocaml#14310. This commit copies the xyz HEAD versions of the ten cluster tests that diverged. All assertions hold under the conservative wrapped- lib glob fix; no test outcome changes. Files: - auto-wrapped-child-reexport.t - implicit-transitive-deps-false.t - lib-vs-lib-name-collision.t - opaque-cmx-deps-local.t - opaque-mli-change.t - sibling-unreferenced-lib.t - single-module-unreferenced-lib.t - transitive-unreferenced-lib.t - unwrapped-tight-deps.t - wrapped-reexport-via-open-flag.t Signed-off-by: Robin Bate Boerop <me@robinbb.com>
robinbb
added a commit
to robinbb/dune
that referenced
this pull request
May 9, 2026
xyz-3 was branched from xyz-2 c71, which predates several test- only refinements that landed on xyz: library renames for clarity ([lib_a]/[lib_b] → [dep_lib]/[consumer_lib]), exact-[target_files] array assertions in place of [length] counts, and the format resync of [unwrapped-tight-deps.t] tracking dep PR ocaml#14310. This commit copies the xyz HEAD versions of the ten cluster tests that diverged. All assertions hold under the conservative wrapped- lib glob fix; no test outcome changes. Files: - auto-wrapped-child-reexport.t - implicit-transitive-deps-false.t - lib-vs-lib-name-collision.t - opaque-cmx-deps-local.t - opaque-mli-change.t - sibling-unreferenced-lib.t - single-module-unreferenced-lib.t - transitive-unreferenced-lib.t - unwrapped-tight-deps.t - wrapped-reexport-via-open-flag.t Signed-off-by: Robin Bate Boerop <me@robinbb.com>
robinbb
added a commit
that referenced
this pull request
May 9, 2026
xyz-3 was branched from xyz-2 c71, which predates several test- only refinements that landed on xyz: library renames for clarity ([lib_a]/[lib_b] → [dep_lib]/[consumer_lib]), exact-[target_files] array assertions in place of [length] counts, and the format resync of [unwrapped-tight-deps.t] tracking dep PR #14310. This commit copies the xyz HEAD versions of the ten cluster tests that diverged. All assertions hold under the conservative wrapped- lib glob fix; no test outcome changes. Files: - auto-wrapped-child-reexport.t - implicit-transitive-deps-false.t - lib-vs-lib-name-collision.t - opaque-cmx-deps-local.t - opaque-mli-change.t - sibling-unreferenced-lib.t - single-module-unreferenced-lib.t - transitive-unreferenced-lib.t - unwrapped-tight-deps.t - wrapped-reexport-via-open-flag.t Signed-off-by: Robin Bate Boerop <me@robinbb.com>
robinbb
added a commit
that referenced
this pull request
May 10, 2026
xyz-3 was branched from xyz-2 c71, which predates several test- only refinements that landed on xyz: library renames for clarity ([lib_a]/[lib_b] → [dep_lib]/[consumer_lib]), exact-[target_files] array assertions in place of [length] counts, and the format resync of [unwrapped-tight-deps.t] tracking dep PR #14310. This commit copies the xyz HEAD versions of the ten cluster tests that diverged. All assertions hold under the conservative wrapped- lib glob fix; no test outcome changes. Files: - auto-wrapped-child-reexport.t - implicit-transitive-deps-false.t - lib-vs-lib-name-collision.t - opaque-cmx-deps-local.t - opaque-mli-change.t - sibling-unreferenced-lib.t - single-module-unreferenced-lib.t - transitive-unreferenced-lib.t - unwrapped-tight-deps.t - wrapped-reexport-via-open-flag.t Signed-off-by: Robin Bate Boerop <me@robinbb.com>
robinbb
added a commit
that referenced
this pull request
May 10, 2026
xyz-3 was branched from xyz-2 c71, which predates several test- only refinements that landed on xyz: library renames for clarity ([lib_a]/[lib_b] → [dep_lib]/[consumer_lib]), exact-[target_files] array assertions in place of [length] counts, and the format resync of [unwrapped-tight-deps.t] tracking dep PR #14310. This commit copies the xyz HEAD versions of the ten cluster tests that diverged. All assertions hold under the conservative wrapped- lib glob fix; no test outcome changes. Files: - auto-wrapped-child-reexport.t - implicit-transitive-deps-false.t - lib-vs-lib-name-collision.t - opaque-cmx-deps-local.t - opaque-mli-change.t - sibling-unreferenced-lib.t - single-module-unreferenced-lib.t - transitive-unreferenced-lib.t - unwrapped-tight-deps.t - wrapped-reexport-via-open-flag.t Signed-off-by: Robin Bate Boerop <me@robinbb.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds a blackbox cram test that records the rebuild-target count for a
consumer module
Cwhen each of three entry modules (A1,A2,A3)of an unwrapped dependency library has its interface edited.
Creferences only
A2.On current main, editing any of
A1/A2/A3rebuildsC(conservativeglob dep over the dependency's object dir). The recorded counts are
A1=1,A3=1,A2>0. Once per-module tightening (#4572) lands,A1and
A3counts go to zero and a later PR promotes the test output.Related: #4572, #14116