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);
    });
});