@descent-vtt/spec-guard 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../src/reporter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,gDAAgD;IAChD,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAKD,QAAA,MAAM,IAAI;aACR,KAAK;aACL,IAAI;aACJ,GAAG;aACH,GAAG;aACH,KAAK;aACL,MAAM;aACN,IAAI;aACJ,OAAO;aACP,IAAI;aACJ,IAAI;CACI,CAAC;AAEX,KAAK,KAAK,GAAG,MAAM,OAAO,IAAI,CAAC;AAE/B,yEAAyE;AACzE,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,KAAK,MAAM,CAI1F;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,EAC3B,IAAI,EAAE,OAAO,GAAG,SAAS,EACzB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAKT;AAED,kFAAkF;AAClF,wBAAgB,cAAc,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,EAAE,QAAQ,kBAAmB,GAAG,OAAO,CAGzG;AA+ED,8CAA8C;AAC9C,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,SAAI,GAAG,MAAM,CA6DjG;AAED,gDAAgD;AAChD,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CA4CpD"}
1
+ {"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../src/reporter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,gDAAgD;IAChD,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAKD,QAAA,MAAM,IAAI;aACR,KAAK;aACL,IAAI;aACJ,GAAG;aACH,GAAG;aACH,KAAK;aACL,MAAM;aACN,IAAI;aACJ,OAAO;aACP,IAAI;aACJ,IAAI;CACI,CAAC;AAEX,KAAK,KAAK,GAAG,MAAM,OAAO,IAAI,CAAC;AAE/B,yEAAyE;AACzE,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,KAAK,MAAM,CAI1F;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,EAC3B,IAAI,EAAE,OAAO,GAAG,SAAS,EACzB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAKT;AAED,kFAAkF;AAClF,wBAAgB,cAAc,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,EAAE,QAAQ,kBAAmB,GAAG,OAAO,CAGzG;AAgHD,8CAA8C;AAC9C,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,SAAI,GAAG,MAAM,CA6EjG;AAED,gDAAgD;AAChD,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CA8CpD"}
package/dist/reporter.js CHANGED
@@ -62,6 +62,23 @@ function countLabel(count, noun) {
62
62
  function formatLocation(result) {
63
63
  return `${result.location.relativeFile}:${result.location.line}`;
64
64
  }
65
+ /**
66
+ * Prose for the two ways comment classification changed a count.
67
+ *
68
+ * Kept next to each other because they pull in opposite directions: excluded
69
+ * matches make an assertion easier to satisfy, unclassified files make it
70
+ * harder. Both are worth saying out loud.
71
+ */
72
+ function commentNotes(result) {
73
+ const notes = [];
74
+ if (result.commentMatches > 0) {
75
+ notes.push(`${countLabel(result.commentMatches, 'match')} inside comments ${result.commentMatches === 1 ? 'was' : 'were'} not counted; add comments="include" to count ${result.commentMatches === 1 ? 'it' : 'them'}`);
76
+ }
77
+ if (result.unclassifiedFiles > 0) {
78
+ notes.push(`comment syntax unknown for ${countLabel(result.unclassifiedFiles, 'matching file')}; comments in ${result.unclassifiedFiles === 1 ? 'it' : 'them'} counted as code`);
79
+ }
80
+ return notes;
81
+ }
65
82
  function formatFailure(result, paint, glyphs, maxSnippets) {
66
83
  const lines = [];
67
84
  lines.push(`${paint(glyphs.fail, 'red', 'bold')} ${paint(formatLocation(result), 'bold')} ${paint(`@${result.kind}`, 'magenta')}`);
@@ -69,6 +86,9 @@ function formatFailure(result, paint, glyphs, maxSnippets) {
69
86
  lines.push(` ${paint(result.message, 'red')}`);
70
87
  if (result.reason)
71
88
  lines.push(` ${paint(`reason: ${result.reason}`, 'dim')}`);
89
+ for (const note of commentNotes(result)) {
90
+ lines.push(` ${paint(`${glyphs.warn} ${note}`, 'yellow')}`);
91
+ }
72
92
  for (const warning of result.warnings) {
73
93
  lines.push(` ${paint(`${glyphs.warn} ${warning}`, 'yellow')}`);
74
94
  }
@@ -127,8 +147,8 @@ export function formatReport(report, options, maxSnippets = 5) {
127
147
  lines.push('');
128
148
  if (options.verbose) {
129
149
  for (const result of passes) {
130
- for (const warning of result.warnings) {
131
- lines.push(`${paint(glyphs.warn, 'yellow')} ${paint(`${formatLocation(result)} ${warning}`, 'yellow')}`);
150
+ for (const note of [...commentNotes(result), ...result.warnings]) {
151
+ lines.push(`${paint(glyphs.warn, 'yellow')} ${paint(`${formatLocation(result)} ${note}`, 'yellow')}`);
132
152
  }
133
153
  }
134
154
  }
@@ -140,6 +160,19 @@ export function formatReport(report, options, maxSnippets = 5) {
140
160
  lines.push(...formatFailure(failure, paint, glyphs, maxSnippets));
141
161
  lines.push('');
142
162
  }
163
+ // Passing assertions only. A failure prints its own notes above; a pass prints
164
+ // nothing at all, and a pass that owes itself to comment exclusion is exactly
165
+ // the thing that must not stay quiet.
166
+ const totals = passes.reduce((sum, result) => ({
167
+ commentMatches: sum.commentMatches + result.commentMatches,
168
+ unclassifiedFiles: sum.unclassifiedFiles + result.unclassifiedFiles,
169
+ }), { commentMatches: 0, unclassifiedFiles: 0 });
170
+ const summaryNotes = commentNotes(totals);
171
+ if (summaryNotes.length > 0) {
172
+ for (const note of summaryNotes)
173
+ lines.push(`${paint(glyphs.warn, 'yellow')} ${paint(note, 'yellow')}`);
174
+ lines.push('');
175
+ }
143
176
  const parts = [
144
177
  paint(`${report.summary.passed} passed`, 'green'),
145
178
  failures.length > 0 ? paint(`${report.summary.failed} failed`, 'red', 'bold') : null,
@@ -180,6 +213,8 @@ export function formatJson(report) {
180
213
  actual: result.actual,
181
214
  matches: result.matches,
182
215
  warnings: result.warnings,
216
+ commentMatches: result.commentMatches,
217
+ unclassifiedFiles: result.unclassifiedFiles,
183
218
  engine: result.engine,
184
219
  durationMs: Math.round(result.durationMs * 1000) / 1000,
185
220
  })),
@@ -1 +1 @@
1
- {"version":3,"file":"reporter.js","sourceRoot":"","sources":["../src/reporter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reporter.js","sourceRoot":"","sources":["../src/reporter.ts"],"names":[],"mappings":"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"}
package/dist/runner.d.ts CHANGED
@@ -6,6 +6,7 @@
6
6
  * silently-passing assertion. A spec that lies is worse than no spec at all.
7
7
  */
8
8
  import { type Engine, type EnginePreference } from './engine.js';
9
+ import { type ImportIndex } from './imports.js';
9
10
  import type { Assertion, AssertionResult, Directive, DirectiveError, RunReport } from './types.js';
10
11
  export declare const DEFAULT_MAX_SNIPPETS = 5;
11
12
  export declare const DEFAULT_CONCURRENCY = 8;
@@ -18,7 +19,14 @@ export interface RunOptions {
18
19
  engine?: EnginePreference;
19
20
  /** Stop at the first failing assertion. */
20
21
  failFast?: boolean;
21
- /** Treat a target path that does not exist as a failure instead of a warning. */
22
+ /**
23
+ * Tolerate target paths that do not exist.
24
+ *
25
+ * Off by default, and deliberately so: a check that cannot tell "the code is
26
+ * clean" from "the directory moved" reports success while verifying nothing.
27
+ */
28
+ allowMissingTargets?: boolean;
29
+ /** Treat analysis that could not be completed as a failure. */
22
30
  strictTargets?: boolean;
23
31
  /** Count matches inside the spec files themselves (off by default). */
24
32
  includeSpecs?: boolean;
@@ -44,8 +52,11 @@ export declare function resolveDirective(directive: Directive, context: ResolveC
44
52
  export interface ExecuteOptions {
45
53
  root: string;
46
54
  engine: Engine;
55
+ allowMissingTargets: boolean;
47
56
  strictTargets: boolean;
48
57
  maxSnippets: number;
58
+ /** Per-run analysis cache: parse once, query many. */
59
+ imports: ImportIndex;
49
60
  }
50
61
  /** Executes a single resolved assertion. */
51
62
  export declare function executeAssertion(assertion: Assertion, options: ExecuteOptions): Promise<AssertionResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,EAIL,KAAK,MAAM,EACX,KAAK,gBAAgB,EAEtB,MAAM,aAAa,CAAC;AAGrB,OAAO,KAAK,EACV,SAAS,EACT,eAAe,EAEf,SAAS,EACT,cAAc,EACd,SAAS,EAGV,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC,MAAM,WAAW,UAAU;IACzB,8DAA8D;IAC9D,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,kEAAkE;IAClE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iFAAiF;IACjF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,uEAAuE;IACvE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,iCAAiC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+CAA+C;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,SAAU,SAAQ,SAAS;IAC1C,uDAAuD;IACvD,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AA4ED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACnC;AAED,qEAAqE;AACrE,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,cAAc,GACtB;IAAE,SAAS,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,cAAc,CAAA;CAAE,CAoGtD;AAMD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAiGD,4CAA4C;AAC5C,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,CAI9G;AAYD,gFAAgF;AAChF,wBAAsB,YAAY,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,CAqH1E"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,EAKL,KAAK,MAAM,EACX,KAAK,gBAAgB,EAEtB,MAAM,aAAa,CAAC;AAErB,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EACV,SAAS,EACT,eAAe,EAEf,SAAS,EACT,cAAc,EAEd,SAAS,EAGV,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC,MAAM,WAAW,UAAU;IACzB,8DAA8D;IAC9D,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,kEAAkE;IAClE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,+DAA+D;IAC/D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,uEAAuE;IACvE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,iCAAiC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+CAA+C;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,SAAU,SAAQ,SAAS;IAC1C,uDAAuD;IACvD,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAiGD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACnC;AAED,qEAAqE;AACrE,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,cAAc,GACtB;IAAE,SAAS,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,cAAc,CAAA;CAAE,CAkJtD;AAMD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,mBAAmB,EAAE,OAAO,CAAC;IAC7B,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,OAAO,EAAE,WAAW,CAAC;CACtB;AA0MD,4CAA4C;AAC5C,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,CAI9G;AAYD,gFAAgF;AAChF,wBAAsB,YAAY,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,CA6H1E"}
package/dist/runner.js CHANGED
@@ -7,8 +7,9 @@
7
7
  */
8
8
  import { promises as fs } from 'node:fs';
9
9
  import path from 'node:path';
10
- import { createCachedEngine, resolveEngine, runSearches, } from './engine.js';
11
- import { expandSpecPatterns, toPosix } from './glob.js';
10
+ import { createCachedEngine, enumerateCandidates, resolveEngine, runSearches, } from './engine.js';
11
+ import { createExcludeMatcher, expandSpecPatterns, toPosix } from './glob.js';
12
+ import { ANALYSABLE_EXTENSIONS, createImportIndex, resolveSpecifier, } from './imports.js';
12
13
  import { parseDirectives } from './parser.js';
13
14
  export const DEFAULT_MAX_SNIPPETS = 5;
14
15
  export const DEFAULT_CONCURRENCY = 8;
@@ -31,11 +32,19 @@ function parseCount(value, attribute) {
31
32
  }
32
33
  return Number.parseInt(normalized, 10);
33
34
  }
35
+ /**
36
+ * Splits a list attribute on commas or whitespace.
37
+ *
38
+ * Both because both read naturally for different lists:
39
+ * `target="src, lib"` and `exclude="src/config/** tests/**"`. The cost is that
40
+ * a path containing a space cannot be expressed; that is documented, and no
41
+ * separator choice avoids it without quoting rules this syntax does not have.
42
+ */
34
43
  function splitList(value) {
35
44
  if (value === undefined)
36
45
  return [];
37
46
  return value
38
- .split(',')
47
+ .split(/[,\s]+/)
39
48
  .map((item) => item.trim())
40
49
  .filter((item) => item.length > 0);
41
50
  }
@@ -80,6 +89,20 @@ function describeExpectation(bounds) {
80
89
  /* c8 ignore next */
81
90
  return max === undefined ? 'may appear any number of times' : `must appear at most ${times(max)}`;
82
91
  }
92
+ /** Prose for an import claim: "must not import", "must import at least 2 files". */
93
+ function describeImportExpectation(bounds) {
94
+ const { min, max } = bounds;
95
+ const files = (value) => `${value} file${value === 1 ? '' : 's'}`;
96
+ if (max === 0 && min === undefined)
97
+ return 'must not import';
98
+ if (min !== undefined && max !== undefined) {
99
+ return min === max ? `must import from exactly ${files(min)}` : `must import from between ${min} and ${max} files`;
100
+ }
101
+ if (min !== undefined)
102
+ return `must import from at least ${files(min)}`;
103
+ /* c8 ignore next */
104
+ return max === undefined ? 'may import' : `must import from at most ${files(max)}`;
105
+ }
83
106
  function satisfies(count, bounds) {
84
107
  if (bounds.min !== undefined && count < bounds.min)
85
108
  return false;
@@ -113,16 +136,22 @@ export function resolveDirective(directive, context) {
113
136
  },
114
137
  };
115
138
  }
116
- const symbol = attributes['symbol'];
139
+ const isImportKind = kind === 'assert-import-absence' || kind === 'assert-import-count';
140
+ const subject = isImportKind ? 'module' : 'symbol';
141
+ const symbol = attributes[subject];
117
142
  if (symbol === undefined || symbol.length === 0) {
118
- return fail(`@${kind} requires a non-empty symbol="..." attribute.`);
143
+ return fail(`@${kind} requires a non-empty ${subject}="..." attribute.`);
144
+ }
145
+ const comments = (attributes['comments'] ?? 'ignore').trim().toLowerCase();
146
+ if (comments !== 'ignore' && comments !== 'include') {
147
+ return fail(`Attribute "comments" must be ignore or include, got "${attributes['comments']}".`);
119
148
  }
120
149
  const rawTargets = splitList(attributes['target']);
121
150
  const targets = (rawTargets.length > 0 ? rawTargets : ['.']).map((target) => normalizeTarget(target, context.root, 'target'));
122
151
  const bounds = {};
123
- if (kind === 'assert-absence') {
152
+ if (kind === 'assert-absence' || kind === 'assert-import-absence') {
124
153
  if (attributes['expected'] !== undefined && attributes['max'] !== undefined) {
125
- return fail('@assert-absence accepts either expected="..." or max="...", not both.');
154
+ return fail(`@${kind} accepts either expected="..." or max="...", not both.`);
126
155
  }
127
156
  const limit = attributes['expected'] ?? attributes['max'];
128
157
  bounds.max = limit === undefined ? 0 : parseCount(limit, attributes['expected'] !== undefined ? 'expected' : 'max');
@@ -131,7 +160,7 @@ export function resolveDirective(directive, context) {
131
160
  const expected = attributes['expected'];
132
161
  if (expected !== undefined) {
133
162
  if (attributes['min'] !== undefined || attributes['max'] !== undefined) {
134
- return fail('@assert-count accepts either expected="..." or min/max, not both.');
163
+ return fail(`@${kind} accepts either expected="..." or min/max, not both.`);
135
164
  }
136
165
  const value = parseCount(expected, 'expected');
137
166
  bounds.min = value;
@@ -139,7 +168,7 @@ export function resolveDirective(directive, context) {
139
168
  }
140
169
  else {
141
170
  if (attributes['min'] === undefined && attributes['max'] === undefined) {
142
- return fail('@assert-count requires expected="...", min="..." or max="...".');
171
+ return fail(`@${kind} requires expected="...", min="..." or max="...".`);
143
172
  }
144
173
  if (attributes['min'] !== undefined)
145
174
  bounds.min = parseCount(attributes['min'], 'min');
@@ -150,11 +179,48 @@ export function resolveDirective(directive, context) {
150
179
  }
151
180
  }
152
181
  }
182
+ if (isImportKind) {
183
+ const scope = targets.join(', ');
184
+ const excludeGlobs = splitList(attributes['exclude']);
185
+ const except = excludeGlobs.length > 0 ? ` (excluding ${excludeGlobs.join(', ')})` : '';
186
+ const includeTypes = (attributes['types'] ?? 'include').trim().toLowerCase() !== 'ignore';
187
+ if (!['include', 'ignore'].includes((attributes['types'] ?? 'include').trim().toLowerCase())) {
188
+ return fail(`Attribute "types" must be include or ignore, got "${attributes['types']}".`);
189
+ }
190
+ return {
191
+ assertion: {
192
+ kind,
193
+ location,
194
+ description: `${scope} ${describeImportExpectation(bounds)} "${symbol}"${except}`,
195
+ reason,
196
+ symbol,
197
+ targets,
198
+ files: [],
199
+ bounds,
200
+ search: {
201
+ regex: false,
202
+ word: false,
203
+ ignoreCase: false,
204
+ globs: [],
205
+ excludeGlobs,
206
+ // Inert here - these options only reach enumerateCandidates, never a
207
+ // text search. It is set true because it is true: the tokenizer
208
+ // reads imports, so a module named in a comment was never a match.
209
+ ignoreComments: true,
210
+ excludeFiles: context.excludeFiles,
211
+ },
212
+ imports: { modules: splitList(symbol), includeTypes },
213
+ missingTargets: [],
214
+ },
215
+ };
216
+ }
153
217
  const search = {
154
218
  regex: parseBoolean(attributes['regex'], 'regex'),
155
219
  word: parseBoolean(attributes['word'], 'word'),
156
220
  ignoreCase: parseBoolean(attributes['ignore-case'], 'ignore-case'),
157
221
  globs: splitList(attributes['glob']),
222
+ excludeGlobs: splitList(attributes['exclude']),
223
+ ignoreComments: comments !== 'include',
158
224
  excludeFiles: context.excludeFiles,
159
225
  };
160
226
  if (search.regex) {
@@ -166,11 +232,12 @@ export function resolveDirective(directive, context) {
166
232
  }
167
233
  }
168
234
  const scope = targets.join(', ');
235
+ const except = search.excludeGlobs.length > 0 ? ` (excluding ${search.excludeGlobs.join(', ')})` : '';
169
236
  return {
170
237
  assertion: {
171
238
  kind,
172
239
  location,
173
- description: `"${symbol}" ${describeExpectation(bounds)} in ${scope}`,
240
+ description: `"${symbol}" ${describeExpectation(bounds)} in ${scope}${except}`,
174
241
  reason,
175
242
  symbol,
176
243
  targets,
@@ -205,6 +272,8 @@ async function prepareAssertion(assertion, options) {
205
272
  files: assertion.files,
206
273
  bounds: assertion.bounds,
207
274
  warnings,
275
+ commentMatches: 0,
276
+ unclassifiedFiles: 0,
208
277
  };
209
278
  if (assertion.kind === 'assert-present') {
210
279
  const missing = [];
@@ -224,6 +293,9 @@ async function prepareAssertion(assertion, options) {
224
293
  durationMs: performance.now() - startedAt,
225
294
  };
226
295
  }
296
+ if (assertion.imports) {
297
+ return executeImportAssertion(assertion, options, base, warnings, startedAt);
298
+ }
227
299
  const existingTargets = [];
228
300
  for (const target of assertion.targets) {
229
301
  if (await pathExists(path.resolve(options.root, target)))
@@ -234,7 +306,7 @@ async function prepareAssertion(assertion, options) {
234
306
  if (assertion.missingTargets.length > 0) {
235
307
  warnings.push(`target path${assertion.missingTargets.length === 1 ? '' : 's'} not found: ${assertion.missingTargets.join(', ')}`);
236
308
  }
237
- if (options.strictTargets && assertion.missingTargets.length > 0) {
309
+ if (!options.allowMissingTargets && assertion.missingTargets.length > 0) {
238
310
  return {
239
311
  ...base,
240
312
  ok: false,
@@ -257,11 +329,87 @@ async function prepareAssertion(assertion, options) {
257
329
  actual: search.count,
258
330
  message: `expected ${describeBounds(assertion.bounds)}, found ${search.count}`,
259
331
  matches: search.matches.slice(0, options.maxSnippets),
332
+ // Carried as numbers, not prose, so the reporter can total them across a
333
+ // run and JSON consumers can act on them.
334
+ commentMatches: search.commentMatches,
335
+ unclassifiedFiles: search.unclassifiedFiles,
260
336
  engine: search.engine,
261
337
  durationMs: performance.now() - startedAt,
262
338
  }),
263
339
  };
264
340
  }
341
+ /**
342
+ * Counts the files in scope that depend on the requested module.
343
+ *
344
+ * The unit is files, not references: "two files import the database" is the
345
+ * useful statement, and it does not change when someone splits one import
346
+ * statement into two.
347
+ */
348
+ async function executeImportAssertion(assertion, options, base, warnings, startedAt) {
349
+ const query = assertion.imports;
350
+ const existingTargets = [];
351
+ for (const target of assertion.targets) {
352
+ if (await pathExists(path.resolve(options.root, target)))
353
+ existingTargets.push(target);
354
+ else
355
+ assertion.missingTargets.push(target);
356
+ }
357
+ if (assertion.missingTargets.length > 0) {
358
+ warnings.push(`target path${assertion.missingTargets.length === 1 ? '' : 's'} not found: ${assertion.missingTargets.join(', ')}`);
359
+ }
360
+ const enumeration = await enumerateCandidates({
361
+ root: options.root,
362
+ symbol: '',
363
+ targets: existingTargets,
364
+ options: assertion.search,
365
+ });
366
+ const analysable = enumeration.files.filter((file) => ANALYSABLE_EXTENSIONS.has(path.posix.extname(file.relativePath)));
367
+ const skipped = enumeration.files.length - analysable.length;
368
+ if (skipped > 0) {
369
+ warnings.push(`analysed ${analysable.length} of ${enumeration.files.length} files; ${skipped} are not JavaScript or TypeScript`);
370
+ }
371
+ const matchesModule = createExcludeMatcher(query.modules);
372
+ const matches = [];
373
+ const unresolved = [];
374
+ for (const file of analysable) {
375
+ const analysis = await options.imports.analyze(file.absolutePath, file.relativePath);
376
+ for (const note of analysis.notes) {
377
+ unresolved.push(`${note.file}:${note.line} ${note.detail}`);
378
+ }
379
+ const hit = analysis.references.find((reference) => {
380
+ if (reference.typeOnly && !query.includeTypes)
381
+ return false;
382
+ return matchesModule(resolveSpecifier(reference.specifier, file.relativePath));
383
+ });
384
+ if (hit) {
385
+ matches.push({
386
+ file: file.relativePath,
387
+ line: hit.line,
388
+ column: hit.column,
389
+ text: `${hit.kind === 'export' ? 'export' : 'import'} ${hit.specifier}`,
390
+ count: 1,
391
+ });
392
+ }
393
+ }
394
+ if (unresolved.length > 0) {
395
+ warnings.push(`${unresolved.length} module reference${unresolved.length === 1 ? '' : 's'} could not be resolved statically`, ...unresolved.slice(0, options.maxSnippets).map((entry) => ` ${entry}`));
396
+ }
397
+ const missingFailure = !options.allowMissingTargets && assertion.missingTargets.length > 0;
398
+ const strictFailure = missingFailure || (options.strictTargets && unresolved.length > 0);
399
+ const ok = satisfies(matches.length, assertion.bounds) && !strictFailure;
400
+ return {
401
+ ...base,
402
+ ok,
403
+ actual: matches.length,
404
+ message: missingFailure
405
+ ? `target path${assertion.missingTargets.length === 1 ? ' does' : 's do'} not exist: ${assertion.missingTargets.join(', ')}`
406
+ : strictFailure
407
+ ? `expected ${describeBounds(assertion.bounds)}, found ${matches.length}, and ${unresolved.length} reference(s) could not be resolved`
408
+ : `expected ${describeBounds(assertion.bounds)}, found ${matches.length}`,
409
+ matches: matches.slice(0, options.maxSnippets),
410
+ durationMs: performance.now() - startedAt,
411
+ };
412
+ }
265
413
  /** Executes a single resolved assertion. */
266
414
  export async function executeAssertion(assertion, options) {
267
415
  const prepared = await prepareAssertion(assertion, options);
@@ -284,6 +432,7 @@ export async function runSpecGuard(options) {
284
432
  const root = path.resolve(options.root ?? process.cwd());
285
433
  const maxSnippets = options.maxSnippets ?? DEFAULT_MAX_SNIPPETS;
286
434
  const strictTargets = options.strictTargets ?? false;
435
+ const allowMissingTargets = options.allowMissingTargets ?? false;
287
436
  const specFiles = await expandSpecPatterns(options.patterns, root);
288
437
  const excludeFiles = new Set(options.includeSpecs ? [] : specFiles.map((file) => path.resolve(file)));
289
438
  const directives = [];
@@ -313,7 +462,14 @@ export async function runSpecGuard(options) {
313
462
  assertions.push(resolved.assertion);
314
463
  }
315
464
  const engine = createCachedEngine(await resolveEngine(options.engine ?? 'auto'));
316
- const executeOptions = { root, engine, strictTargets, maxSnippets };
465
+ const executeOptions = {
466
+ root,
467
+ engine,
468
+ allowMissingTargets,
469
+ strictTargets,
470
+ maxSnippets,
471
+ imports: createImportIndex(),
472
+ };
317
473
  const results = new Array(assertions.length);
318
474
  if (options.failFast) {
319
475
  // Fail-fast trades throughput for an early exit, so it runs unbatched.
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -5,7 +5,14 @@
5
5
  * parser -> Directive[] -> runner (+ engine) -> AssertionResult[] -> reporter
6
6
  */
7
7
  /** The three assertion kinds understood by the parser. */
8
- export type DirectiveKind = 'assert-absence' | 'assert-count' | 'assert-present';
8
+ export type DirectiveKind = 'assert-absence' | 'assert-count' | 'assert-present' | 'assert-import-absence' | 'assert-import-count';
9
+ /** Extra scope carried by the import assertions. */
10
+ export interface ImportQuery {
11
+ /** Module patterns, matched with gitignore-style rules. */
12
+ modules: string[];
13
+ /** Whether `import type` / `export type` count as dependencies. */
14
+ includeTypes: boolean;
15
+ }
9
16
  /** Source location of a directive inside a spec file. */
10
17
  export interface SourceLocation {
11
18
  /** Absolute path to the spec file. */
@@ -45,6 +52,18 @@ export interface SearchOptions {
45
52
  ignoreCase: boolean;
46
53
  /** Include-only glob filters, e.g. `*.ts`. Empty means "every file". */
47
54
  globs: string[];
55
+ /**
56
+ * Paths to leave out, gitignore-style: a bare name matches any segment, so
57
+ * `tests` excludes that directory wherever it appears.
58
+ */
59
+ excludeGlobs: string[];
60
+ /**
61
+ * Skip matches that sit inside comments.
62
+ *
63
+ * On by default: the comment recording that a symbol was removed should not
64
+ * be what proves the symbol is still there.
65
+ */
66
+ ignoreComments: boolean;
48
67
  /** Absolute file paths to exclude from results (the spec files themselves). */
49
68
  excludeFiles: ReadonlySet<string>;
50
69
  }
@@ -69,6 +88,10 @@ export interface MatchLocation {
69
88
  export interface SearchResult {
70
89
  /** Total number of matched occurrences (not lines). */
71
90
  count: number;
91
+ /** Matches excluded because they were inside comments. */
92
+ commentMatches: number;
93
+ /** Files whose language has no known comment syntax, so nothing was excluded. */
94
+ unclassifiedFiles: number;
72
95
  /** Up to `maxSnippets` match locations, in file order. */
73
96
  matches: MatchLocation[];
74
97
  /** Engine that produced this result. */
@@ -91,6 +114,8 @@ export interface Assertion {
91
114
  files: string[];
92
115
  bounds: Bounds;
93
116
  search?: SearchOptions;
117
+ /** Present on the import assertions. */
118
+ imports?: ImportQuery;
94
119
  /** Targets that do not exist on disk. */
95
120
  missingTargets: string[];
96
121
  }
@@ -110,6 +135,14 @@ export interface AssertionResult {
110
135
  message: string;
111
136
  matches: MatchLocation[];
112
137
  warnings: string[];
138
+ /**
139
+ * Matches that were found but not counted because they sat inside comments.
140
+ * Reported rather than discarded: comment exclusion is the only thing that
141
+ * can turn a failure into a pass without anyone touching code.
142
+ */
143
+ commentMatches: number;
144
+ /** Matching files whose language is unknown, so their comments counted as code. */
145
+ unclassifiedFiles: number;
113
146
  engine?: EngineName;
114
147
  durationMs: number;
115
148
  }