Conversation
Create missing parent directories recursively and require fixture nodes before negative graph assertions. Cover exact bytes, deep paths and blocked parents. Fixes DeusData#2034 Signed-off-by: astandrik <astandrik@yandex-team.ru>
|
Thanks for opening this — it has been seen, and it is queued. This note is automated, but it is not a brush-off: it exists so you know where your PR stands instead of having to guess from silence. Current review status: working through a backlog. What that means for this PR, concretely:
Things that will genuinely speed it up whenever review does happen:
If this fixes a bug, a reproduction we can run is worth more than a description of the symptom. Thanks for contributing, and sorry in advance for the wait. |
Merge upstream main at aa44c28 into the issue DeusData#2034 branch. Preserve the existing one-file fixture patch and validate the merged pipeline suites and CI lint entrypoint. Signed-off-by: astandrik <astandrik@yandex-team.ru>
Signed-off-by: astandrik <astandrik@yandex-team.ru>
There was a problem hiding this comment.
🟢 Approval recommended
The change is test-only, addresses a clear correctness gap (nested fixture directories), and adds targeted regressions that make failures non-vacuous.
Pull request overview
This PR hardens the pipeline test fixture writer so it reliably creates deeply nested fixture directories, and it adds anti-vacuous guards to negative graph assertions by requiring the expected source nodes to exist first.
Changes:
- Switch
write_temp_filefrom single-level directory creation to recursivecbm_mkdir_pfor nested fixture paths. - Add
fixture_node_countandfixture_file_matcheshelpers and use them to assert fixture presence/contents before negative edge checks. - Add regression tests covering deep paths (including Unicode), overwrite behavior, blocked parent paths, byte-boundary exactness (1023/1024/1025), and nested Go indexing endpoints.
File summaries
| File | Description |
|---|---|
| tests/test_pipeline.c | Makes fixture writing recursive, adds helpers to validate fixtures and node presence, and introduces regressions to prevent vacuous negative assertions with nested fixtures. |
Review details
- Files reviewed: 1/1 changed files
- Comments generated: 0
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
Thank you for the focused nested-fixture fix in tests/test_pipeline.c. This is queued for review, and we need a little more time to check the fixture lifecycle and failure handling before giving a decision. The review queue is currently full, so detailed feedback may take a little time. We are working through it carefully and appreciate the work you have put into supporting the project. Thank you for your patience. |
|
Here is the review this was queued for on 2026-09-09. Eleven days is too long for a test-only change, and I am sorry — you were told it was waiting on us, and then it kept waiting. The verdict: this is better than its title, and I want to be specific about why. The headline is reliable nested fixtures, and
fixture_node_count(s, project, "state/state.go", "err", "Field") >= 1pins the file path and the label, so the assertion can only be satisfied by the thing it is about. That is the difference between a test and a green light. And you found an inert fixture. This one is the part I would not have caught by reading: - int event = 0; /* block-local */
+ static int event = 0; /* file scope */Block-local C variables are not emitted as nodes, so the cross-language collision guard — the whole point of that probe — had nothing to collide with. The test was passing because it was checking nothing. A verified-broken fixture getting fixed rather than deleted or worked around is exactly the right call. Verified rather than assumed. I built your head and ran the suite you touch: 280 pipeline tests, 0 failures. Your strengthened assertions hold against what production actually emits, which is the thing that could have gone wrong when you tightened them. The Once that check settles I will merge this. Thank you for the patience, and for tightening assertions that were quietly protecting nothing. |
|
Thank you, @astandrik, and sorry again for how long the review took. The real value here is the assertion hardening. Correction: an earlier version of this comment said "Merged". That was wrong, sorry. #2288 landed a moment before and touched the same spot in |
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com> # Conflicts: # tests/test_pipeline.c
|
@astandrik, the conflict is resolved: we merged |
What does this PR do?
The pipeline test writer only created the immediate parent directory, so fixtures with multiple missing directory levels could silently disappear. Use
cbm_mkdir_pand require the expected source nodes before negative edge checks.Add regressions for exact file contents, nested Go indexing, a regular file blocking directory creation, and exact node counting. Cover deep paths, Unicode, overwrites, and 1023/1024/1025-byte boundaries; make envscan and pkgmap rely on the writer for nested directories.
Verification
The final commit
aec9bfe3changes only fixture comments; executable text and line counts are unchanged. The completed CI results below are from8e29e156; checks on the latest commit are shown in GitHub.8e29e156CI: all 137 suites per platform passed — Linux x64/ARM64 7,792 each, macOS Intel/ARM64 7,788 each, Windows x64 7,667; 0 failed. All ten shard manifests and totals were audited.ci-ok, lint and the existing sanitizer jobs also passed.scripts/test.sh CC=clang CXX=clang++, 141 suites, 7,833 passed, 0 failed, 69 platform skips. Native ARM64 binary, trap-UBSan flags, unchanged source and every suite log verified.5abd77f5: RED/GREEN for directory creation and exact contents; 15 controls passed; all 32 mutations failed at the intended assertions. Full macOS/Linux tests and CI lint passed; known baseline diagnostics are listed below. The fix's added/deleted lines are identical after the main merge.Known unrelated issues: local Linux reports six UBSan diagnostic lines reproduced without the patch; full clang-tidy reports 6,754 diagnostics in unchanged files. The fixed Windows comparison completed 22 attempts: the same cold-storm endpoint failure occurred 2/11 on base and 2/11 on candidate, with no timeouts or precondition skips. That auxiliary job remains red; its strict cleanliness check also flagged only generated
graph-ui/tsconfig.tsbuildinfoin both builds. C/guard source hashes remained unchanged. The upstream Windows guard passed on8e29e156.Fixes #2034
Checklist
git commit -s).scripts/lint.sh --ci) and the memory analyzer pass locally.