Problem
canon/parse.go has zero test coverage. This is the core command parser — it splits chains (&&, ||, ;, |), respects quoting, extracts tools/actions/flags/args. Bugs here affect every governance decision.
Acceptance Criteria
Hints
- File:
canon/parse.go
- Functions:
Parse(), ParseOne(), splitChain(), tokenize(), parseOne(), parseFlag(), expandShortFlags()
- Existing test file
canon/canon_test.go may have some coverage — check for overlap before writing
- Create test file:
canon/parse_test.go
Generated by /forge fill
Problem
canon/parse.gohas zero test coverage. This is the core command parser — it splits chains (&&, ||, ;, |), respects quoting, extracts tools/actions/flags/args. Bugs here affect every governance decision.Acceptance Criteria
Parse()splits&&chains into multiple segments with correctOpAndParse()splits||chains withOpOrParse()splits pipes|withOpPipeParse()splits semicolons;withOpSeqParseOne()for simple single commandstokenize()respects quoting and backslash escapesparseFlag()splits--count=5into name/valueexpandShortFlags()expands-rnto["-r", "-n"]but not--verboseor-C5go test ./canon/...Hints
canon/parse.goParse(),ParseOne(),splitChain(),tokenize(),parseOne(),parseFlag(),expandShortFlags()canon/canon_test.gomay have some coverage — check for overlap before writingcanon/parse_test.goGenerated by /forge fill