|
41 | 41 | * describe do not apply. |
42 | 42 | * |
43 | 43 | * Measured by disabling each arm in turn and re-running this file together with |
44 | | - * `sql-driver-out-of-contract-filter-input.test.ts`: |
| 44 | + * `sql-driver-out-of-contract-filter-input.test.ts` (48 tests across the two, |
| 45 | + * re-measured on `main` at d367f03 — i.e. after #6210's `DriverQuery` narrowing): |
45 | 46 | * |
46 | | - * - LIKE arm disabled → **8 failed / 32 passed**. The eighth is in the other |
| 47 | + * - LIKE arm disabled → **8 failed / 40 passed**. The eighth is in the other |
47 | 48 | * file: the superseded `{ $startsWith: {} }` pin, which is the point of |
48 | 49 | * having replaced it rather than deleted it. |
49 | | - * - member arm disabled → **4 failed / 36 passed** — the `$in`, `$nin`, |
| 50 | + * - member arm disabled → **4 failed / 44 passed** — the `$in`, `$nin`, |
50 | 51 | * nested-array and `$between` cases. The `$field` member case is NOT among |
51 | 52 | * them, and that is the arm ordering being verified rather than a gap: |
52 | 53 | * #5041's cross-field refusal still answers first for that shape. |
53 | 54 | * |
54 | 55 | * The counts are here because a bare "reverting turns it red" claims nothing |
55 | 56 | * checkable — if a later change makes one of these arms unreachable, the count |
56 | | - * moves and the next reader can see that it did. |
| 57 | + * moves and the next reader can see that it did. The FAILURE counts are the |
| 58 | + * load-bearing half; the pass counts drift as neighbouring tests are added (they |
| 59 | + * read 32 / 36 when this file was first written, against 40 tests). |
| 60 | + * |
| 61 | + * The analytics side answers the same way, measured the same way: reverting |
| 62 | + * `read-scope-sql.ts` and `filter-normalizer.ts` to their pre-#5234 `main` |
| 63 | + * versions turns `comparand-shape-refusal.test.ts` **17 failed / 41 passed**. |
| 64 | + * `like-metacharacter-escape.test.ts` stays GREEN under that revert, and that is |
| 65 | + * correct rather than a hole: it pins the two packages' PREDICATES against each |
| 66 | + * other, while this refusal file pins that the doors actually call them. Both |
| 67 | + * are needed — parity with nothing calling it is #4984's dead-rule shape. |
57 | 68 | * |
58 | 69 | * The row-set assertions are the other half, and they are what makes the |
59 | 70 | * refusals meaningful rather than self-referential: `keeps` pins that every |
@@ -124,8 +135,12 @@ describe('[#5234] SqlDriver refuses the two comparand shapes that compiled to a |
124 | 135 | for (const row of ROWS) await driver.create('probe', row); |
125 | 136 | }); |
126 | 137 |
|
| 138 | + // No `object` key: #6210 narrowed the driver query parameter to `DriverQuery`, |
| 139 | + // whose object is the first argument and nothing else. Kept in step here rather |
| 140 | + // than cast away — a rejection test that builds its query off-contract stops |
| 141 | + // exercising the shape a caller can actually send. |
127 | 142 | const find = (where: unknown) => |
128 | | - driver.find('probe', { object: 'probe', fields: ['id'], where: where as FilterCondition }); |
| 143 | + driver.find('probe', { fields: ['id'], where: where as FilterCondition }); |
129 | 144 |
|
130 | 145 | const ids = async (where: unknown): Promise<string[]> => |
131 | 146 | ((await find(where)) as Array<{ id: string }>).map((r) => r.id).sort(); |
|
0 commit comments