test: multi-perspective improvement rotation (20 new tests, exit code fix, docs)#5
Open
SebTardif wants to merge 6 commits into
Open
test: multi-perspective improvement rotation (20 new tests, exit code fix, docs)#5SebTardif wants to merge 6 commits into
SebTardif wants to merge 6 commits into
Conversation
QA Engineer perspective (MPI iteration 1): - cli: help flag, unknown flag, missing --file value, invalid --jobs, duplicate target - parser: indented line outside rule, empty rule name (bare 'rule'), trailing whitespace-only rule name, unknown top-level/rule directive, expand_vars edge cases (bare $ at end, unclosed brace), empty env key - graph: self-cycle detection (a -> a) - cache: empty/malformed deserialization Also fixed parser to reject 'rule' with no name (previously unreachable error path because trim() consumed trailing whitespace before strip_prefix). Signed-off-by: Sebastien Tardif <sebtardif@ncf.ca>
Developer perspective (MPI iteration 2): Collect failures by destructuring RuleResult::Failed(name, reason) instead of discarding the fields with matches!(). The executor's eprintln already reports failures to stderr, so this prepares the data for any future structured exit reporting without changing behavior. Signed-off-by: Sebastien Tardif <sebtardif@ncf.ca>
End User perspective (MPI iteration 3): - Missing --version/-V flag in README CLI Usage section - Test count was stale at 36 (now 53 after QA iteration) Signed-off-by: Sebastien Tardif <sebtardif@ncf.ca>
Spec/Contract Compliance perspective (MPI iteration 8): Previously --help and --version used the Err path, printing to stderr and exiting with code 1. Standard CLI convention is informational flags print to stdout and exit 0 (only real errors exit non-zero). Introduce ParseOutcome enum to distinguish Info (--help, --version) from Run (normal build) at the type level. Tests updated accordingly. Signed-off-by: Sebastien Tardif <sebtardif@ncf.ca>
Adversarial Tester perspective (MPI iteration 11): - Double dollar ($$X) expansion behavior documented via test - Unicode rule names (cafe with accent) work correctly - Large dependency lists (50 deps) handled without issues Signed-off-by: Sebastien Tardif <sebtardif@ncf.ca>
Post-cycle gate B: documentation accuracy audit. Signed-off-by: Sebastien Tardif <sebtardif@ncf.ca>
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
Multi-perspective improvement rotation across 14 perspectives.
Changes
QA Engineer (iteration 1):
rule(no name) which was an unreachable error pathDeveloper (iteration 2):
main.rsto destructureRuleResult::Failedfields instead of discarding them viamatches!()End User (iteration 3):
--version/-Vflag to README CLI usage sectionSpec/Contract Compliance (iteration 8):
--helpand--versionto print to stdout and exit 0 (was printing to stderr and exiting 1)ParseOutcomeenum to distinguish informational output from normal builds at the type levelAdversarial Tester (iteration 11):
Post-cycle gate:
Test results
All 56 tests pass.
make cigreen locally (fmt, clippy, test, docs, lockfile, deny).