Repository navigation
Commit 49fe3f9
test(mutation): take sql_builder off the threshold line, and name what stays alive
The module cleared the 90% mutation threshold by a single mutant (128 killed of
141 = 90.8%), which is not a margin worth keeping: the next covered line added
to it would have put the gate back in the red for reasons unrelated to the
change. Thirteen mutants survived; nine of them could never have been killed.
Eight mutated the type argument of a `typing.cast` — a cast returns its second
argument untouched and never evaluates the first, so no test can observe the
difference. Both casts are plain annotations now, which says the same thing to
mypy and leaves nothing to mutate; the cast calls' own six killable mutants went
with them, so the denominator shrank to 126. The ninth turned `rows = []` into
`rows = None` in a branch whose next statement is `bool(rows)` — equivalent, and
marked `# pragma: no mutate` in place, with the reason above it. Nothing was
silenced that was not first shown to be equivalent, and the threshold in
scripts/mutation_report.py is untouched.
The remaining four were the `dialect="duckdb"` argument, and two of them are now
dead: DuckDB indexes lists from 1 where sqlglot's default dialect does not, so
`list_value(1, 2)[1]` parsed without the dialect leaves the scoper as `[2]` —
the tenant scoper would have changed which element the query asked for while it
added a WHERE clause. The new test states that as a property of the query, not
of sqlglot.
`_scope_sql__mutmut_41` and `_43` stay alive and are named in the test file with
what was tried against them, rather than pragma'd: they drop the dialect from
the parse of the relation `_qualify_table` generates itself, whose one fixed
shape parses to an AST that renders identically under the `sql(dialect="duckdb")`
applied on the way out. That is not the same as dialect-neutral — the
default-dialect *render* of that shape rewrites `EXCLUDE` to `EXCEPT`, which is
exactly why the render-side mutants are dead and must stay pinned.
Measured with scripts/mutation_local.py (py3.13, sqlglot 30.12.0) against the
bytes that ship: 126 generated, 124 killed, 2 survived, 98.4%.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018GqSmXR1bp1xPTZdsdjgTE1 parent 25769d7 commit 49fe3f9
3 files changed
Lines changed: 139 additions & 10 deletions
File tree
- src/agentflow_runtime/serving/semantic_layer/query
- tests/unit
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
85 | 85 | | |
86 | 86 | | |
87 | 87 | | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
88 | 117 | | |
89 | 118 | | |
90 | 119 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
4 | | - | |
5 | 4 | | |
6 | 5 | | |
7 | 6 | | |
| |||
97 | 96 | | |
98 | 97 | | |
99 | 98 | | |
100 | | - | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
101 | 107 | | |
102 | 108 | | |
103 | 109 | | |
| |||
112 | 118 | | |
113 | 119 | | |
114 | 120 | | |
115 | | - | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
116 | 128 | | |
117 | 129 | | |
118 | 130 | | |
| |||
141 | 153 | | |
142 | 154 | | |
143 | 155 | | |
144 | | - | |
145 | | - | |
146 | | - | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
147 | 161 | | |
148 | 162 | | |
149 | 163 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
60 | 60 | | |
61 | 61 | | |
62 | 62 | | |
63 | | - | |
64 | | - | |
65 | | - | |
66 | | - | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
67 | 94 | | |
68 | 95 | | |
69 | 96 | | |
| |||
770 | 797 | | |
771 | 798 | | |
772 | 799 | | |
| 800 | + | |
| 801 | + | |
| 802 | + | |
| 803 | + | |
| 804 | + | |
| 805 | + | |
| 806 | + | |
| 807 | + | |
| 808 | + | |
| 809 | + | |
| 810 | + | |
| 811 | + | |
| 812 | + | |
| 813 | + | |
| 814 | + | |
| 815 | + | |
| 816 | + | |
| 817 | + | |
| 818 | + | |
| 819 | + | |
| 820 | + | |
| 821 | + | |
| 822 | + | |
| 823 | + | |
| 824 | + | |
| 825 | + | |
| 826 | + | |
| 827 | + | |
| 828 | + | |
| 829 | + | |
| 830 | + | |
| 831 | + | |
| 832 | + | |
| 833 | + | |
| 834 | + | |
| 835 | + | |
| 836 | + | |
| 837 | + | |
| 838 | + | |
| 839 | + | |
| 840 | + | |
| 841 | + | |
| 842 | + | |
| 843 | + | |
| 844 | + | |
| 845 | + | |
| 846 | + | |
| 847 | + | |
| 848 | + | |
| 849 | + | |
| 850 | + | |
| 851 | + | |
| 852 | + | |
| 853 | + | |
| 854 | + | |
| 855 | + | |
| 856 | + | |
| 857 | + | |
| 858 | + | |
0 commit comments