Files
msd-core/scripts/lib/suite-detection.cjs

33 lines
1.3 KiB
JavaScript

'use strict';
/**
* Suite classification by filename suffix (#4591 packaging fix — extracted
* from scripts/run-tests.cjs so a SHIPPED script, e.g.
* scripts/gen-platform-conformance-tier.cjs, can depend on it: run-tests.cjs
* itself does not ship (it is a repo-development-only tool), so a shipped
* file requiring it directly is MODULE_NOT_FOUND in a published install
* (tests/packaging-shipped-scripts-require-only-shipped.test.cjs, #2858).
* run-tests.cjs re-exports suiteOf from here unchanged for full backward
* compatibility — this is a pure relocation, not a behavior change.
*
* A file with no suite suffix (plain `foo.test.cjs`) belongs to the `unit`
* suite and returns `null` here; a suite-tagged file (`foo.install.test.cjs`)
* returns its marker string.
*/
const { basename } = require('node:path');
const MARKED_SUITES = ['integration', 'install', 'security', 'slow', 'qa'];
function suiteOf(filename) {
const name = basename(filename);
if (!name.endsWith('.test.cjs')) return null;
const base = name.slice(0, -'.test.cjs'.length);
const lastDot = base.lastIndexOf('.');
if (lastDot === -1) return null;
const marker = base.slice(lastDot + 1);
return MARKED_SUITES.includes(marker) ? marker : null;
}
module.exports = { MARKED_SUITES, suiteOf };