{"record":{"id":"e15deb8ee13c46bd","repo":"rtk-ai/rtk","slug":"filter-s-have-no-inline-tests-use-require-a","errorCode":null,"errorMessage":"{} filter(s) have no inline tests (use --require-all in CI)","messagePattern":"(.+?) filter\\(s\\) have no inline tests \\(use --require-all in CI\\)","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"src/hooks/verify_cmd.rs","lineNumber":38,"sourceCode":"        if !outcome.passed {\n            eprintln!(\n                \"FAIL [{}] {}\\n  expected: {:?}\\n  actual:   {:?}\",\n                outcome.filter_name, outcome.test_name, outcome.expected, outcome.actual\n            );\n        }\n    }\n\n    if total == 0 {\n        println!(\"No inline tests found.\");\n    } else {\n        println!(\"{}/{} tests passed\", passed, total);\n    }\n\n    if require_all && !results.filters_without_tests.is_empty() {\n        for name in &results.filters_without_tests {\n            eprintln!(\"MISSING tests for filter: {}\", name);\n        }\n        anyhow::bail!(\n            \"{} filter(s) have no inline tests (use --require-all in CI)\",\n            results.filters_without_tests.len()\n        );\n    }\n\n    if failed > 0 {\n        anyhow::bail!(\"{} test(s) failed\", failed);\n    }\n\n    Ok(())\n}\n","sourceCodeStart":20,"sourceCodeEnd":50,"githubUrl":"https://github.com/rtk-ai/rtk/blob/d977e1c31621fe8704e6500ceeb9c7a0de2b6836/src/hooks/verify_cmd.rs#L20-L50","documentation":"`rtk verify` executes the inline test cases embedded in filter TOML files. With --require-all it also enforces a coverage gate: every filter must carry at least one [[tests.<filter-name>]] entry; filters without tests are listed on stderr ('MISSING tests for filter: X') before this counted bail. Intended for CI so untested filters cannot ship silently.","triggerScenarios":"`rtk verify --require-all` while any [filters.*] entry in .rtk/filters.toml or ~/.config/rtk/filters.toml has no matching [[tests.<name>]] section — src/hooks/verify_cmd.rs:40.","commonSituations":"Enabling --require-all in CI after filters already exist; adding a new filter and forgetting its inline tests.","solutions":["Add a [[tests.<filter-name>]] block (name, input, expected) for each filter listed on stderr","Run `rtk verify` without --require-all first to see the passed/total summary and the gaps","Keep --require-all in CI — the friction is the point of the gate"],"exampleFix":"# .rtk/filters.toml before\n[filters.make]\nmatch_command = \"^make\\\\b\"\n# no tests → verify --require-all fails\n\n# after\n[[tests.make]]\nname = \"strips make chatter\"\ninput = \"\"\"\nmake[1]: Entering directory '/home/user'\ngcc -O2 foo.c\n\"\"\"\nexpected = \"\"\"\ngcc -O2 foo.c\n\"\"\"","handlingStrategy":"validation","validationCode":"# CI: require full inline-test coverage for custom filters\nrtk verify --require-all","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Add a [[tests.<name>]] block (name, input, expected) in the same commit that adds a filter","Gate merges on `rtk verify --require-all` so untested filters cannot land","Watch stderr: 'MISSING tests for filter: X' lines name exactly what to fix"],"tags":["verify","ci","testing","filters","quality-gate"],"backgroundTag":null,"analyzedSha":"d977e1c31621fe8704e6500ceeb9c7a0de2b6836","analyzedAt":"2026-08-16T05:40:46.291Z","schemaVersion":2},"datasetVersion":"2026-08-16T08:17:34.114Z"}