test.govlab/code-parse/core/classifiers/source.classifier.test.ts
test.govlab/code-parse/core/classifiers/source.classifier.test.ts is a file in Codebase Testing. 38 lines of code and 0 definitions.
import { DETECTABLE_LANGUAGES, detectLanguage } from "@govlab/code-parse";
import {
EXTENSION_DOT,
SHEBANG_PREFIX,
SHEBANG_TOKENS,
UNDECLARED_EXTENSIONS,
} from "@govlab/code-parse/configuration/constants/source.constants.ts";
import { describe, expect, it } from "vitest";
import { loadDerivedExtensions } from "@govlab/code-parse/core/loaders/source.loader.ts";
describe("detectLanguage", () => {
it("detects languages from the derived extension map", () => {
expect(detectLanguage("main.go")).toBe("go");
expect(detectLanguage("app.mjs")).toBe("javascript");
expect(detectLanguage("APP.CJS")).toBe("javascript");
});
it("detects the ecosystem alias extensions the grammars omit", () => {
for (const [extension, language] of UNDECLARED_EXTENSIONS) {
expect(detectLanguage(`file${extension}`)).toBe(language);
}
});
it("falls back to the shebang for a file with no known extension", () => {
expect(detectLanguage("script", `${SHEBANG_PREFIX}/usr/bin/env node\n`)).toBe("javascript");
expect(detectLanguage("script", "echo")).toBeNull();
expect(detectLanguage("script", `${SHEBANG_PREFIX}/usr/bin/unknown`)).toBeNull();
});
it("names every language it can return", () => {
for (const language of SHEBANG_TOKENS.values()) {
expect(DETECTABLE_LANGUAGES.has(language)).toBe(true);
}
});
});
describe("loadDerivedExtensions", () => {
it("keys every extension with its dot and in lower case", () => {
const map = loadDerivedExtensions();
expect(map.size).toBeGreaterThan(0);
expect([...map.keys()].every((key) => key.startsWith(EXTENSION_DOT) && key === key.toLowerCase())).toBe(true);
});
});