


























@@ -2,13 +2,17 @@
22import type { FileDiffMetadata } from "@pierre/diffs";
33import { describe, expect, it } from "vitest";
44import {
5-filterSupportedLanguageHints,
65normalizeDiffViewerPayloadLanguages,
6+normalizeSupportedLanguageHint,
77} from "./language-hints.js";
889-describe("filterSupportedLanguageHints", () => {
9+async function normalizeHints(values: readonly string[], options = {}) {
10+return await Promise.all(values.map((value) => normalizeSupportedLanguageHint(value, options)));
11+}
12+13+describe("normalizeSupportedLanguageHint", () => {
1014it("keeps supported languages", async () => {
11-await expect(filterSupportedLanguageHints(["typescript", "cpp", "text"])).resolves.toEqual([
15+await expect(normalizeHints(["typescript", "cpp", "text"])).resolves.toEqual([
1216"typescript",
1317"cpp",
1418"text",
@@ -17,7 +21,7 @@ describe("filterSupportedLanguageHints", () => {
17211822it("normalizes common aliases to base viewer languages", async () => {
1923await expect(
20-filterSupportedLanguageHints(["ts", "c++", "c#", "bash", "dockerfile", "rb", "kt", "ps1"]),
24+normalizeHints(["ts", "c++", "c#", "bash", "dockerfile", "rb", "kt", "ps1"]),
2125).resolves.toEqual([
2226"typescript",
2327"cpp",
@@ -32,7 +36,7 @@ describe("filterSupportedLanguageHints", () => {
32363337it("keeps mainstream languages in the base viewer without the language pack", async () => {
3438await expect(
35-filterSupportedLanguageHints([
39+normalizeHints([
3640"ruby",
3741"swift",
3842"kotlin",
@@ -57,23 +61,24 @@ describe("filterSupportedLanguageHints", () => {
5761});
58625963it("drops uncommon languages without the language pack", async () => {
60-await expect(filterSupportedLanguageHints(["abap"])).resolves.toEqual(["text"]);
64+await expect(normalizeSupportedLanguageHint("abap")).resolves.toBeUndefined();
6165});
62666367it("keeps uncommon languages when the language pack is available", async () => {
6468await expect(
65-filterSupportedLanguageHints(["abap"], { languagePackAvailable: true }),
66-).resolves.toEqual(["abap"]);
69+normalizeSupportedLanguageHint("abap", { languagePackAvailable: true }),
70+).resolves.toBe("abap");
6771});
687269-it("drops invalid languages and falls back to text", async () => {
70-await expect(filterSupportedLanguageHints(["not-a-real-language"])).resolves.toEqual(["text"]);
73+it("drops invalid languages", async () => {
74+await expect(normalizeSupportedLanguageHint("not-a-real-language")).resolves.toBeUndefined();
7175});
72767377it("keeps valid languages when invalid hints are mixed in", async () => {
74-await expect(
75-filterSupportedLanguageHints(["typescript", "not-a-real-language"]),
76-).resolves.toEqual(["typescript"]);
78+await expect(normalizeHints(["typescript", "not-a-real-language"])).resolves.toEqual([
79+"typescript",
80+undefined,
81+]);
7782});
7883});
7984此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。