@mmnto/cli 1.104.0 → 1.105.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.
- package/dist/commands/docs.test.js +1 -0
- package/dist/commands/docs.test.js.map +1 -1
- package/dist/commands/lint-staleness.d.ts +4 -2
- package/dist/commands/lint-staleness.d.ts.map +1 -1
- package/dist/commands/lint-staleness.js +4 -2
- package/dist/commands/lint-staleness.js.map +1 -1
- package/dist/commands/lint.d.ts.map +1 -1
- package/dist/commands/lint.js +38 -1
- package/dist/commands/lint.js.map +1 -1
- package/dist/commands/lint.test.js +72 -0
- package/dist/commands/lint.test.js.map +1 -1
- package/dist/commands/run-compiled-rules.d.ts +11 -1
- package/dist/commands/run-compiled-rules.d.ts.map +1 -1
- package/dist/commands/run-compiled-rules.js +134 -9
- package/dist/commands/run-compiled-rules.js.map +1 -1
- package/dist/commands/run-compiled-rules.test.js +181 -0
- package/dist/commands/run-compiled-rules.test.js.map +1 -1
- package/dist/commands/shield-learn.test.js +1 -0
- package/dist/commands/shield-learn.test.js.map +1 -1
- package/dist/utils/pilot.test.js +1 -0
- package/dist/utils/pilot.test.js.map +1 -1
- package/dist/utils.test.js +1 -0
- package/dist/utils.test.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,5 +1,87 @@
|
|
|
1
1
|
// ─── Constants ──────────────────────────────────────
|
|
2
2
|
const COMPILED_RULES_FILE = 'compiled-rules.json';
|
|
3
|
+
// ─── Corpus-bearing derivation (mmnto-ai/totem-strategy#971, Prop 309) ─
|
|
4
|
+
/**
|
|
5
|
+
* Count the lesson-corpus files a repo carries on disk: every existing file
|
|
6
|
+
* matched by a lesson-kind ingest target's glob in the loaded totem config,
|
|
7
|
+
* deduplicated across targets.
|
|
8
|
+
*
|
|
9
|
+
* This is the discriminator {@link runCompiledRules} uses when zero compiled
|
|
10
|
+
* rules load. A count > 0 means the repo genuinely HAS lessons, so a
|
|
11
|
+
* zero-rules run has silently disarmed the enforcement gate and must fail loud
|
|
12
|
+
* (mmnto-ai/totem-strategy#971, Prop 309). A count of 0 is a legitimate
|
|
13
|
+
* empty-corpus / early-adoption repo that skips (mmnto-ai/totem#1831).
|
|
14
|
+
*
|
|
15
|
+
* Config-driven — the lesson paths come from `config.targets`, never a
|
|
16
|
+
* hardcoded `.totem/lessons` (`totem describe`'s "Lessons: N" reads the fixed
|
|
17
|
+
* dir; this derivation honors a config that relocates the corpus). Pure
|
|
18
|
+
* filesystem scan with NO git spawn, so it stays Windows-temp-dir safe under
|
|
19
|
+
* test: each target's static path prefix bounds the walk, and candidate paths
|
|
20
|
+
* are matched with the shared glob matcher.
|
|
21
|
+
*/
|
|
22
|
+
async function countLessonCorpusFiles(config, projectRoot) {
|
|
23
|
+
const fs = await import('node:fs');
|
|
24
|
+
const path = await import('node:path');
|
|
25
|
+
const { matchesGlob } = await import('@mmnto/totem');
|
|
26
|
+
const WILDCARD = /[*?{}[\]]/;
|
|
27
|
+
// Bound the walk so a broad lesson glob can never blow up on heavy trees. A
|
|
28
|
+
// non-terminal wildcard (e.g. '.totem/*/lessons/*.md') collapses the static
|
|
29
|
+
// prefix to a shallow dir, so the heavy subtrees lessons never live in —
|
|
30
|
+
// embedding stores and build output — are skipped by name alongside the
|
|
31
|
+
// usual suspects.
|
|
32
|
+
const SKIP_DIRS = new Set(['.git', 'node_modules', '.lancedb', 'dist']);
|
|
33
|
+
const toPosix = (p) => p.replace(/\\/g, '/');
|
|
34
|
+
const matched = new Set();
|
|
35
|
+
for (const target of config.targets) {
|
|
36
|
+
if (target.type !== 'lesson')
|
|
37
|
+
continue;
|
|
38
|
+
const glob = target.glob;
|
|
39
|
+
// Concrete path (no wildcard) — a direct existence check (e.g. a single
|
|
40
|
+
// aggregated `.totem/lessons.md`).
|
|
41
|
+
if (!WILDCARD.test(glob)) {
|
|
42
|
+
try {
|
|
43
|
+
if (fs.statSync(path.join(projectRoot, glob)).isFile())
|
|
44
|
+
matched.add(toPosix(glob));
|
|
45
|
+
// totem-context: best-effort — an absent concrete lesson path is simply not counted; ENOENT here is expected, never surfaced.
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
// path absent — contributes nothing
|
|
49
|
+
}
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
// Wildcard glob — walk the static prefix directory (segments before the
|
|
53
|
+
// first wildcard segment) and match each candidate against the full config
|
|
54
|
+
// glob. The prefix scopes the walk to the lessons subtree.
|
|
55
|
+
const segments = glob.split('/');
|
|
56
|
+
const firstWildcard = segments.findIndex((s) => WILDCARD.test(s));
|
|
57
|
+
const baseRel = segments.slice(0, firstWildcard).join('/');
|
|
58
|
+
const stack = [baseRel ? path.join(projectRoot, baseRel) : projectRoot];
|
|
59
|
+
while (stack.length > 0) {
|
|
60
|
+
const dir = stack.pop();
|
|
61
|
+
let entries;
|
|
62
|
+
try {
|
|
63
|
+
entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
64
|
+
// totem-context: best-effort — an unreadable/absent lesson subtree contributes nothing rather than throwing; this cold-path scan must never crash lint.
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
for (const entry of entries) {
|
|
70
|
+
const abs = path.join(dir, entry.name);
|
|
71
|
+
if (entry.isDirectory()) {
|
|
72
|
+
if (!SKIP_DIRS.has(entry.name))
|
|
73
|
+
stack.push(abs);
|
|
74
|
+
}
|
|
75
|
+
else if (entry.isFile()) {
|
|
76
|
+
const rel = toPosix(path.relative(projectRoot, abs));
|
|
77
|
+
if (matchesGlob(rel, glob))
|
|
78
|
+
matched.add(rel);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return matched.size;
|
|
84
|
+
}
|
|
3
85
|
// ─── Core logic ─────────────────────────────────────
|
|
4
86
|
/**
|
|
5
87
|
* Compiled-rules execution engine used by `totem lint`. Loads rules, extracts additions, enriches
|
|
@@ -19,17 +101,28 @@ export async function runCompiledRules(options) {
|
|
|
19
101
|
state: { hasWarnedShieldContext: false },
|
|
20
102
|
};
|
|
21
103
|
const resolvedTotemDir = path.join(options.configRoot ?? cwd, totemDir);
|
|
22
|
-
// Load compiled rules
|
|
104
|
+
// Load compiled rules. Thread an `onWarn` that both RECORDS the load-time
|
|
105
|
+
// warning and RENDERS it (log.warn). The lint call site historically omitted
|
|
106
|
+
// onWarn, so a truncated / unreadable manifest dropped even the accounting
|
|
107
|
+
// line and lint passed vacuously (mmnto-ai/totem-strategy#971, Prop 309).
|
|
108
|
+
// Zod-shape errors still THROW from core (a corrupt SCHEMA is never a skip).
|
|
23
109
|
const rulesPath = path.join(resolvedTotemDir, COMPILED_RULES_FILE);
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
// `compiled-rules.json` length directly in their pipeline.
|
|
110
|
+
let loadWarning;
|
|
111
|
+
const rules = loadCompiledRules(rulesPath, (msg) => {
|
|
112
|
+
loadWarning = msg;
|
|
113
|
+
log.warn(tag, msg);
|
|
114
|
+
});
|
|
30
115
|
if (rules.length === 0) {
|
|
31
|
-
|
|
32
|
-
|
|
116
|
+
// Zero rules can mean two very different things. An empty-corpus /
|
|
117
|
+
// early-adoption repo legitimately skips (mmnto-ai/totem#1831). But a repo
|
|
118
|
+
// that ACTUALLY carries a lesson corpus and still loads zero rules has its
|
|
119
|
+
// entire enforcement gate silently disarmed behind a green exit
|
|
120
|
+
// (mmnto-ai/totem-strategy#971, Prop 309) — a missing manifest, a
|
|
121
|
+
// truncated/unreadable one (onWarn fired above), or a manifest that
|
|
122
|
+
// filtered down to zero ACTIVE rules. Discriminate on corpus-bearing: does
|
|
123
|
+
// the config declare lesson-kind targets that match real files on disk?
|
|
124
|
+
const fs = await import('node:fs');
|
|
125
|
+
const emptyResult = {
|
|
33
126
|
violations: [],
|
|
34
127
|
findings: [],
|
|
35
128
|
rules: [],
|
|
@@ -37,6 +130,38 @@ export async function runCompiledRules(options) {
|
|
|
37
130
|
regexTimeouts: [],
|
|
38
131
|
astParseFailures: [],
|
|
39
132
|
};
|
|
133
|
+
const lessonCount = options.config
|
|
134
|
+
? await countLessonCorpusFiles(options.config, options.configRoot ?? cwd)
|
|
135
|
+
: 0;
|
|
136
|
+
if (lessonCount > 0) {
|
|
137
|
+
const manifestRel = `${totemDir}/${COMPILED_RULES_FILE}`;
|
|
138
|
+
// This existsSync re-derives what loadCompiledRules saw internally
|
|
139
|
+
// (compiler.ts checks the same path). A manifest CREATED between the two
|
|
140
|
+
// reads would fall through to the zero-active-rules info-skip — an
|
|
141
|
+
// accepted single-shot-CLI race (mmnto-ai/totem#2499 review): the window
|
|
142
|
+
// is microseconds and a concurrent compile implies an imminent re-lint.
|
|
143
|
+
if (!fs.existsSync(rulesPath)) {
|
|
144
|
+
throw new TotemError('LINT_LESSONS_FAILED', `Enforcement disarmed: ${lessonCount} lesson file(s) present but no compiled-rules manifest at ${manifestRel} — 'totem lint' would pass every diff vacuously.`, "Regenerate the manifest with 'totem lesson compile' so the compiled rules are enforced.");
|
|
145
|
+
}
|
|
146
|
+
if (loadWarning) {
|
|
147
|
+
throw new TotemError('LINT_LESSONS_FAILED', `Enforcement disarmed: ${lessonCount} lesson file(s) present but the compiled-rules manifest at ${manifestRel} could not be loaded — ${loadWarning}. 'totem lint' would pass every diff vacuously.`, "Repair or regenerate the manifest with 'totem lesson compile' so the compiled rules are enforced.");
|
|
148
|
+
}
|
|
149
|
+
// Manifest present and loaded validly, but every rule filtered out as
|
|
150
|
+
// inert (archived / pending-verification / untested-against-codebase).
|
|
151
|
+
// Archived-in-place rules preserve telemetry by design — a legitimate
|
|
152
|
+
// lifecycle state, NOT a disarmed gate — so this stays an info-skip, but
|
|
153
|
+
// one that NAMES the zero-active-rules condition instead of masquerading
|
|
154
|
+
// as an empty corpus.
|
|
155
|
+
log.info(tag, `${manifestRel} is present with zero ACTIVE rules (all archived / pending-verification / untested-against-codebase) — skipping. Legitimate lifecycle state, not a disarmed gate.`);
|
|
156
|
+
return emptyResult;
|
|
157
|
+
}
|
|
158
|
+
// Not corpus-bearing — preserve the mmnto-ai/totem#1831 empty-corpus skip
|
|
159
|
+
// exactly (early-adoption / aspirational repos with a valid lint config but
|
|
160
|
+
// no lessons compiled yet). Consumers that need a "rule count > 0" CI
|
|
161
|
+
// guardrail can check `compiled-rules.json` length directly in their
|
|
162
|
+
// pipeline.
|
|
163
|
+
log.info(tag, `No compiled rules at ${totemDir}/${COMPILED_RULES_FILE} — skipping (empty-corpus repo). Run 'totem lesson compile' once you have lessons.`);
|
|
164
|
+
return emptyResult;
|
|
40
165
|
}
|
|
41
166
|
log.info(tag, `Running ${rules.length} rules (zero LLM)...`);
|
|
42
167
|
// Extract additions, exclude compiled rules file, export targets, and binary files
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-compiled-rules.js","sourceRoot":"","sources":["../../src/commands/run-compiled-rules.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"run-compiled-rules.js","sourceRoot":"","sources":["../../src/commands/run-compiled-rules.ts"],"names":[],"mappings":"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"}
|
|
@@ -1354,4 +1354,185 @@ describe('--ast-parse-mode lenient', () => {
|
|
|
1354
1354
|
expect(result.output).not.toContain('Frozen-lesson');
|
|
1355
1355
|
});
|
|
1356
1356
|
});
|
|
1357
|
+
// ─── Corpus-bearing zero-rules hard-error (mmnto-ai/totem-strategy#971, Prop 309) ──
|
|
1358
|
+
//
|
|
1359
|
+
// A repo that carries a lesson corpus but loads ZERO compiled rules has its
|
|
1360
|
+
// entire enforcement gate silently disarmed behind a green exit. `totem lint`
|
|
1361
|
+
// must fail loud in that case (induced-failure triple below), while still
|
|
1362
|
+
// preserving the legitimate empty-corpus skip (mmnto-ai/totem#1831) and the
|
|
1363
|
+
// archived-in-place zero-active-rules lifecycle state (the controls).
|
|
1364
|
+
describe('corpus-bearing zero-rules hard-error (mmnto-ai/totem-strategy#971)', () => {
|
|
1365
|
+
let tmpDir;
|
|
1366
|
+
beforeEach(() => {
|
|
1367
|
+
tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'totem-rcr-corpus-'));
|
|
1368
|
+
fs.mkdirSync(path.join(tmpDir, TOTEM_DIR), { recursive: true });
|
|
1369
|
+
});
|
|
1370
|
+
afterEach(() => {
|
|
1371
|
+
cleanTmpDir(tmpDir);
|
|
1372
|
+
});
|
|
1373
|
+
/** Write a real lesson `.md` under `.totem/lessons/` so the repo is corpus-bearing. */
|
|
1374
|
+
function writeLesson(dir, name = 'baseline.md') {
|
|
1375
|
+
const lessonsDir = path.join(dir, TOTEM_DIR, 'lessons');
|
|
1376
|
+
fs.mkdirSync(lessonsDir, { recursive: true });
|
|
1377
|
+
fs.writeFileSync(path.join(lessonsDir, name), '# A lesson\n\nBody.\n');
|
|
1378
|
+
}
|
|
1379
|
+
/** A config whose only lesson-kind target matches `.totem/lessons/*.md`. */
|
|
1380
|
+
function lessonConfig(glob = '.totem/lessons/*.md') {
|
|
1381
|
+
return { targets: [{ glob, type: 'lesson', strategy: 'markdown-heading' }] };
|
|
1382
|
+
}
|
|
1383
|
+
const cleanDiff = () => makeDiff('src/app.ts', ' const x = 1;');
|
|
1384
|
+
// ── Induced-failure triple ──────────────────────────
|
|
1385
|
+
it('hard-errors when the manifest is missing but the repo carries lessons', async () => {
|
|
1386
|
+
writeLesson(tmpDir); // corpus-bearing; no compiled-rules.json written
|
|
1387
|
+
await expect(runCompiledRules({
|
|
1388
|
+
diff: cleanDiff(),
|
|
1389
|
+
cwd: tmpDir,
|
|
1390
|
+
totemDir: TOTEM_DIR,
|
|
1391
|
+
format: 'text',
|
|
1392
|
+
tag: 'Test',
|
|
1393
|
+
config: lessonConfig(),
|
|
1394
|
+
})).rejects.toThrow(/enforcement disarmed/i);
|
|
1395
|
+
});
|
|
1396
|
+
it('hard-errors on a truncated manifest instead of passing vacuously', async () => {
|
|
1397
|
+
writeLesson(tmpDir);
|
|
1398
|
+
// Truncated mid-array — JSON.parse throws SyntaxError, which core reports via
|
|
1399
|
+
// onWarn and returns []. Unmodified code passes vacuously here; the fix throws.
|
|
1400
|
+
fs.writeFileSync(path.join(tmpDir, TOTEM_DIR, 'compiled-rules.json'), '{"version":1,"rules":[');
|
|
1401
|
+
await expect(runCompiledRules({
|
|
1402
|
+
diff: cleanDiff(),
|
|
1403
|
+
cwd: tmpDir,
|
|
1404
|
+
totemDir: TOTEM_DIR,
|
|
1405
|
+
format: 'text',
|
|
1406
|
+
tag: 'Test',
|
|
1407
|
+
config: lessonConfig(),
|
|
1408
|
+
})).rejects.toThrow(/enforcement disarmed/i);
|
|
1409
|
+
});
|
|
1410
|
+
it('hard-errors on an EISDIR I/O fault and surfaces the load-warning accounting text', async () => {
|
|
1411
|
+
writeLesson(tmpDir);
|
|
1412
|
+
// Replace the manifest with a DIRECTORY at the same path — the portable,
|
|
1413
|
+
// Windows-safe I/O fault (readFileSync throws EISDIR on win32 and posix).
|
|
1414
|
+
fs.mkdirSync(path.join(tmpDir, TOTEM_DIR, 'compiled-rules.json'), { recursive: true });
|
|
1415
|
+
let message = '';
|
|
1416
|
+
try {
|
|
1417
|
+
await runCompiledRules({
|
|
1418
|
+
diff: cleanDiff(),
|
|
1419
|
+
cwd: tmpDir,
|
|
1420
|
+
totemDir: TOTEM_DIR,
|
|
1421
|
+
format: 'text',
|
|
1422
|
+
tag: 'Test',
|
|
1423
|
+
config: lessonConfig(),
|
|
1424
|
+
});
|
|
1425
|
+
}
|
|
1426
|
+
catch (err) {
|
|
1427
|
+
message = err instanceof Error ? err.message : String(err);
|
|
1428
|
+
}
|
|
1429
|
+
expect(message).toMatch(/enforcement disarmed/i);
|
|
1430
|
+
// The onWarn accounting text (dropped before the fix) is surfaced in the throw.
|
|
1431
|
+
expect(message).toContain('Could not load compiled rules');
|
|
1432
|
+
});
|
|
1433
|
+
// ── Controls ────────────────────────────────────────
|
|
1434
|
+
it('control: an empty-corpus repo (no lesson files) with a missing manifest still exits clean (mmnto-ai/totem#1831)', async () => {
|
|
1435
|
+
// Config DECLARES a lesson target, but no lesson files exist on disk, so the
|
|
1436
|
+
// discriminator treats the repo as empty-corpus — the info-skip is preserved.
|
|
1437
|
+
const result = await runCompiledRules({
|
|
1438
|
+
diff: cleanDiff(),
|
|
1439
|
+
cwd: tmpDir,
|
|
1440
|
+
totemDir: TOTEM_DIR,
|
|
1441
|
+
format: 'text',
|
|
1442
|
+
tag: 'Test',
|
|
1443
|
+
config: lessonConfig(),
|
|
1444
|
+
});
|
|
1445
|
+
expect(result.violations).toHaveLength(0);
|
|
1446
|
+
expect(result.rules).toHaveLength(0);
|
|
1447
|
+
expect(result.output).toBe('');
|
|
1448
|
+
});
|
|
1449
|
+
it('control: a corpus-bearing repo whose manifest holds only archived rules exits clean with a zero-active-rules message', async () => {
|
|
1450
|
+
writeLesson(tmpDir);
|
|
1451
|
+
// Valid manifest, present and parseable, but every rule is inert (archived).
|
|
1452
|
+
// loadCompiledRules filters it to [] with no warning — a legitimate lifecycle
|
|
1453
|
+
// state, NOT a disarmed gate.
|
|
1454
|
+
writeRules(tmpDir, [
|
|
1455
|
+
makeRule('console\\.log', 'No console', 'No console', { status: 'archived' }),
|
|
1456
|
+
]);
|
|
1457
|
+
const stderrSpy = vi.spyOn(console, 'error').mockImplementation(() => { });
|
|
1458
|
+
try {
|
|
1459
|
+
const result = await runCompiledRules({
|
|
1460
|
+
diff: cleanDiff(),
|
|
1461
|
+
cwd: tmpDir,
|
|
1462
|
+
totemDir: TOTEM_DIR,
|
|
1463
|
+
format: 'text',
|
|
1464
|
+
tag: 'Test',
|
|
1465
|
+
config: lessonConfig(),
|
|
1466
|
+
});
|
|
1467
|
+
expect(result.rules).toHaveLength(0);
|
|
1468
|
+
expect(result.violations).toHaveLength(0);
|
|
1469
|
+
// Join ALL args per call — coupling to log.info's internal arity would
|
|
1470
|
+
// silently break this assertion if the tag and message ever split.
|
|
1471
|
+
const messages = stderrSpy.mock.calls.map((c) => c.join(' '));
|
|
1472
|
+
expect(messages.find((m) => m.includes('zero ACTIVE rules'))).toBeDefined();
|
|
1473
|
+
}
|
|
1474
|
+
finally {
|
|
1475
|
+
stderrSpy.mockRestore();
|
|
1476
|
+
}
|
|
1477
|
+
});
|
|
1478
|
+
it('control: a repo with valid active rules is unaffected by the corpus-bearing gate', async () => {
|
|
1479
|
+
writeLesson(tmpDir);
|
|
1480
|
+
writeRules(tmpDir, [makeRule('neverMatchXYZ123', 'no match', 'No match rule')]);
|
|
1481
|
+
const result = await runCompiledRules({
|
|
1482
|
+
diff: cleanDiff(),
|
|
1483
|
+
cwd: tmpDir,
|
|
1484
|
+
totemDir: TOTEM_DIR,
|
|
1485
|
+
format: 'json',
|
|
1486
|
+
tag: 'Test',
|
|
1487
|
+
config: lessonConfig(),
|
|
1488
|
+
});
|
|
1489
|
+
expect(result.rules).toHaveLength(1);
|
|
1490
|
+
expect(result.violations).toHaveLength(0);
|
|
1491
|
+
expect(JSON.parse(result.output).pass).toBe(true);
|
|
1492
|
+
});
|
|
1493
|
+
it('control: a config-less caller with a truncated manifest surfaces the load warning but never hard-errors (the shield-estimate opt-out contract)', async () => {
|
|
1494
|
+
writeLesson(tmpDir);
|
|
1495
|
+
fs.writeFileSync(path.join(tmpDir, TOTEM_DIR, 'compiled-rules.json'), '{"version":1,"rules":[');
|
|
1496
|
+
const stderrSpy = vi.spyOn(console, 'error').mockImplementation(() => { });
|
|
1497
|
+
try {
|
|
1498
|
+
// No `config` option — the caller opts out of the corpus-bearing hard
|
|
1499
|
+
// error (e.g. `shield estimate`). The accounting line must still render:
|
|
1500
|
+
// the opt-out covers the exit code, not the disclosure.
|
|
1501
|
+
const result = await runCompiledRules({
|
|
1502
|
+
diff: cleanDiff(),
|
|
1503
|
+
cwd: tmpDir,
|
|
1504
|
+
totemDir: TOTEM_DIR,
|
|
1505
|
+
format: 'text',
|
|
1506
|
+
tag: 'Test',
|
|
1507
|
+
});
|
|
1508
|
+
expect(result.rules).toHaveLength(0);
|
|
1509
|
+
expect(result.violations).toHaveLength(0);
|
|
1510
|
+
// Join ALL args per call — see the arity note in the archived-rules control.
|
|
1511
|
+
const messages = stderrSpy.mock.calls.map((c) => c.join(' '));
|
|
1512
|
+
expect(messages.find((m) => m.includes('Could not load compiled rules'))).toBeDefined();
|
|
1513
|
+
}
|
|
1514
|
+
finally {
|
|
1515
|
+
stderrSpy.mockRestore();
|
|
1516
|
+
}
|
|
1517
|
+
});
|
|
1518
|
+
it('hard-errors via a concrete (non-wildcard) lesson target — the aggregated .totem/lessons.md shape', async () => {
|
|
1519
|
+
// The production config declares BOTH a wildcard dir target and a concrete
|
|
1520
|
+
// aggregated-file target; this exercises the statSync existence branch (and
|
|
1521
|
+
// mixed-target iteration) that the wildcard-walk tests never reach.
|
|
1522
|
+
fs.writeFileSync(path.join(tmpDir, TOTEM_DIR, 'lessons.md'), '# Lessons\n\n## One\n\nBody.\n');
|
|
1523
|
+
await expect(runCompiledRules({
|
|
1524
|
+
diff: cleanDiff(),
|
|
1525
|
+
cwd: tmpDir,
|
|
1526
|
+
totemDir: TOTEM_DIR,
|
|
1527
|
+
format: 'text',
|
|
1528
|
+
tag: 'Test',
|
|
1529
|
+
config: {
|
|
1530
|
+
targets: [
|
|
1531
|
+
{ glob: '.totem/lessons/*.md', type: 'lesson', strategy: 'markdown-heading' },
|
|
1532
|
+
{ glob: '.totem/lessons.md', type: 'lesson', strategy: 'markdown-heading' },
|
|
1533
|
+
],
|
|
1534
|
+
},
|
|
1535
|
+
})).rejects.toThrow(/enforcement disarmed/i);
|
|
1536
|
+
});
|
|
1537
|
+
});
|
|
1357
1538
|
//# sourceMappingURL=run-compiled-rules.test.js.map
|