# normalize-syntax-rules/tests
Integration tests for the syntax rules crate.
`rule_fixtures.rs` contains a `test_rule_fixtures` test that auto-discovers all fixture directories under `tests/fixtures/` and runs each rule against its `match.<ext>` file (must produce >= 1 findings) and `no_match.<ext>` file (must produce 0 findings). Rule IDs are derived from the fixture path relative to `tests/fixtures/` by joining path components with `/` (e.g. `fixtures/rust/static-mut/` → `rust/static-mut`). A dedicated `test_rust_missing_module_doc` test handles the `rust/missing-module-doc` rule, which uses a `files` inclusion filter and requires actual `lib.rs`-named fixture files. The `fixtures/` directory contains per-language subdirectories for Go, JS, Python, Ruby, Rust, TypeScript, Java, C, C++, C#, Kotlin, Swift, and PHP, plus top-level directories for cross-language rules (`hardcoded-secret`, `no-fixme-comment`, `no-todo-comment`). 83 builtin rules with standard fixture coverage, plus 1 with a dedicated test.