Files
msd-core/tests/lint-source-test-name-collision.test.cjs
Jakub Zych a9a7a328e6 refactor: hard-fork GSD -> MSD (Make Software Done)
Mechanical rename produced by scripts/msd-rename.cjs: gsd/Gsd/GSD -> msd/Msd/MSD
across contents and paths, upstream package/repo coordinates -> @golem15/msd-core
and golem15com/msd-core. Deep links into upstream history, sibling upstream
packages, the GSD-2 import feature, CHANGELOG.md and .changeset/ are kept as-is.

Hand edits on top: MSD block-letter banner and logos, LICENSE copyright line,
package/plugin identity, regenerated lockfile, install-tree fixtures, derived
registries and benchmark baseline; migration checksum baseline re-locked
(MSD keeps its own install state, so no install had applied the old sums);
sort-order and regex-escaped expectations in tests adjusted.
2026-10-06 01:47:40 +02:00

213 lines
7.1 KiB
JavaScript

'use strict';
const { test, describe } = require('node:test');
const assert = require('node:assert/strict');
const fs = require('fs');
const path = require('path');
const { createTempDir, cleanup } = require('./helpers.cjs');
const {
checkSourceTestNameCollisions,
} = require('../scripts/lint-source-test-name-collision.cjs');
const REPO_ROOT = path.join(__dirname, '..');
function writeFile(root, relPath, content = '// fixture\n') {
const full = path.join(root, relPath);
fs.mkdirSync(path.dirname(full), { recursive: true });
fs.writeFileSync(full, content);
}
function violationFiles(result) {
return result.violations.map((v) => v.file);
}
describe('lint-source-test-name-collision', () => {
test('the real repo tree passes (post-rename)', () => {
const result = checkSourceTestNameCollisions({ root: REPO_ROOT });
assert.equal(
result.ok,
true,
`expected 0 violations, got: ${JSON.stringify(result.violations, null, 2)}`
);
// Not vacuous: the scan must have actually walked a nontrivial number of
// files, or "0 violations" would mean nothing.
assert.ok(
result.scanned.length > 50,
`expected the scan to cover a substantial file count, got ${result.scanned.length}`
);
});
test('a deliberately-colliding fixture DOES fail (proves the lint can fail)', () => {
const root = createTempDir('lint-collision-fail-');
try {
writeFile(root, 'src/test-oops.cts');
const result = checkSourceTestNameCollisions({ root, dirs: ['src'] });
assert.equal(result.ok, false);
assert.deepEqual(violationFiles(result), ['src/test-oops.cts']);
} finally {
cleanup(root);
}
});
test('regression pin: test-home-guard.cts under a source dir is flagged', () => {
// Incident: unmodified `next` tip 622f43353 ran 37199 passed / 1 failed,
// `throw · src/test-home-guard.cts` — a SOURCE module collected and
// executed as a test by the remote push-gate runner. Two further live
// instances found by this same trap before they were renamed:
// scripts/test-failure-reasons.cjs (now scripts/msd-test-gate-reasons.cjs)
// scripts/lint-fix-has-regression-test.cjs (now
// scripts/lint-fix-has-regression-tests.cjs)
const root = createTempDir('lint-collision-incident-');
try {
writeFile(root, 'src/test-home-guard.cts');
const result = checkSourceTestNameCollisions({ root, dirs: ['src'] });
assert.equal(result.ok, false);
assert.deepEqual(violationFiles(result), ['src/test-home-guard.cts']);
} finally {
cleanup(root);
}
});
test('a colliding basename under an EXEMPT dir (tests/) passes', () => {
const root = createTempDir('lint-collision-exempt-');
try {
writeFile(root, 'tests/test-oops.cts');
// Only 'src' is scanned — tests/ is never a configured scan dir, exactly
// as in the real DEFAULT_SCAN_DIRS.
const result = checkSourceTestNameCollisions({ root, dirs: ['src'] });
assert.equal(result.ok, true);
assert.deepEqual(result.violations, []);
} finally {
cleanup(root);
}
});
test('the identical basename under a SOURCE dir fails (contrast case)', () => {
const root = createTempDir('lint-collision-source-');
try {
writeFile(root, 'src/test-oops.cts');
const result = checkSourceTestNameCollisions({ root, dirs: ['src'] });
assert.equal(result.ok, false);
assert.deepEqual(violationFiles(result), ['src/test-oops.cts']);
} finally {
cleanup(root);
}
});
describe('boundary coverage: test-*.EXT', () => {
test('test-foo.cts FAILS', () => {
const root = createTempDir('lint-b1-');
try {
writeFile(root, 'src/test-foo.cts');
const result = checkSourceTestNameCollisions({ root, dirs: ['src'] });
assert.equal(result.ok, false);
} finally {
cleanup(root);
}
});
test('testfoo.cts PASSES', () => {
const root = createTempDir('lint-b2-');
try {
writeFile(root, 'src/testfoo.cts');
const result = checkSourceTestNameCollisions({ root, dirs: ['src'] });
assert.equal(result.ok, true);
} finally {
cleanup(root);
}
});
});
describe('boundary coverage: *-test.EXT', () => {
test('foo-test.cts FAILS', () => {
const root = createTempDir('lint-b3-');
try {
writeFile(root, 'src/foo-test.cts');
const result = checkSourceTestNameCollisions({ root, dirs: ['src'] });
assert.equal(result.ok, false);
} finally {
cleanup(root);
}
});
test('footest.cts PASSES', () => {
const root = createTempDir('lint-b4-');
try {
writeFile(root, 'src/footest.cts');
const result = checkSourceTestNameCollisions({ root, dirs: ['src'] });
assert.equal(result.ok, true);
} finally {
cleanup(root);
}
});
});
describe('boundary coverage: *.test.EXT', () => {
test('foo.test.cts FAILS', () => {
const root = createTempDir('lint-b5-');
try {
writeFile(root, 'src/foo.test.cts');
const result = checkSourceTestNameCollisions({ root, dirs: ['src'] });
assert.equal(result.ok, false);
} finally {
cleanup(root);
}
});
test('foo.tests.cts PASSES', () => {
const root = createTempDir('lint-b6-');
try {
writeFile(root, 'src/foo.tests.cts');
const result = checkSourceTestNameCollisions({ root, dirs: ['src'] });
assert.equal(result.ok, true);
} finally {
cleanup(root);
}
});
});
describe('boundary coverage: test.EXT (bare)', () => {
test('test.cts FAILS', () => {
const root = createTempDir('lint-b7-');
try {
writeFile(root, 'src/test.cts');
const result = checkSourceTestNameCollisions({ root, dirs: ['src'] });
assert.equal(result.ok, false);
} finally {
cleanup(root);
}
});
test('tests.cts PASSES', () => {
const root = createTempDir('lint-b8-');
try {
writeFile(root, 'src/tests.cts');
const result = checkSourceTestNameCollisions({ root, dirs: ['src'] });
assert.equal(result.ok, true);
} finally {
cleanup(root);
}
});
});
test('an unreadable scan directory fails closed, not silently green', () => {
const root = createTempDir('lint-unreadable-');
try {
// No 'src' dir created at all under a DIFFERENT configured dir name so
// fs.existsSync short-circuits it (not this lint's problem, per its own
// contract) — instead force a real read failure by pointing `dirs` at a
// path that exists as a FILE, not a directory, so readdirSync throws.
writeFile(root, 'not-a-dir', '// not a directory\n');
const result = checkSourceTestNameCollisions({ root, dirs: ['not-a-dir'] });
assert.equal(result.ok, false);
assert.ok(
result.violations.some((v) => /cannot read scan directory/.test(v.reason)),
`expected an unreadable-dir violation, got: ${JSON.stringify(result.violations)}`
);
} finally {
cleanup(root);
}
});
});