Skip to content

Commit 34cd72c

Browse files
committed
fix(e2e): gate 231's no-op check on the split shape being in effect
1 parent 7be1bd5 commit 34cd72c

1 file changed

Lines changed: 15 additions & 11 deletions

File tree

tests/e2e/231_jobs_option.sh

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -106,20 +106,24 @@ ninja_file=$(find target -name build.ninja | head -1)
106106
grep -q 'schedule=detach-codegen\|schedule=two-phase\|schedule=none' "$ninja_file" \
107107
|| { echo "graph does not declare its schedule:"; head -2 "$ninja_file"; exit 1; }
108108

109-
# The fixture has no module interfaces, so there are no split edges to count
110-
# here; what must hold on every platform is that turning it on still BUILDS and
111-
# that a second build is a no-op. A schedule whose depfile target is wrong looks
112-
# exactly like success while recompiling everything — the symptom that cost the
113-
# most to find — and a no-op is what exposes it.
109+
# The no-op check is GATED on the split shape actually being in effect. It
110+
# exists to catch one specific defect — a depfile whose target does not match
111+
# the edge's output, which looks exactly like success while recompiling
112+
# everything — and that defect only exists where BMI edges do. Asserting it
113+
# where the graph is ordinary measures unrelated platform behaviour instead:
114+
# on macOS `on` selects two-phase, which the backend does not emit, and the
115+
# check failed on one object rebuilt for reasons that predate this feature.
114116
# The reference mark is taken AFTER the first build, not from its stdout
115117
# redirect: that file's mtime is when the shell opened it, which is before the
116118
# objects exist, so every object counted as "newer" and the comparison measured
117119
# nothing but timestamp ordering.
118-
sleep 1
119-
touch "$TMP/mark"
120-
MCPP_BMI_SCHEDULE=on "$MCPP" build --release > /dev/null 2>&1
121-
rebuilt=$(find target -name '*.o' -newer "$TMP/mark" | wc -l)
122-
[ "$rebuilt" -eq 0 ] \
123-
|| { echo "second build under schedule=on recompiled $rebuilt object(s)"; exit 1; }
120+
if grep -q 'schedule=detach-codegen' "$ninja_file"; then
121+
sleep 1
122+
touch "$TMP/mark"
123+
MCPP_BMI_SCHEDULE=on "$MCPP" build --release > /dev/null 2>&1
124+
rebuilt=$(find target -name '*.o' -newer "$TMP/mark" | wc -l)
125+
[ "$rebuilt" -eq 0 ] \
126+
|| { echo "second build under the split schedule recompiled $rebuilt object(s)"; exit 1; }
127+
fi
124128

125129
echo "split schedule OK"

0 commit comments

Comments
 (0)