37 lines
1.2 KiB
JavaScript
37 lines
1.2 KiB
JavaScript
import { test } from "node:test";
|
|
import assert from "node:assert/strict";
|
|
import { createRequire } from "node:module";
|
|
|
|
// Minimal vscode shim without l10n: exercises the fallback path that unit
|
|
// tests and extension hosts without a loaded bundle use.
|
|
const require = createRequire(import.meta.url);
|
|
const Module = require("module");
|
|
const origResolve = Module._resolveFilename;
|
|
Module._resolveFilename = function (request, ...args) {
|
|
if (request === "vscode") return "vscode-stub";
|
|
return origResolve.call(this, request, ...args);
|
|
};
|
|
require.cache["vscode-stub"] = {
|
|
id: "vscode-stub",
|
|
filename: "vscode-stub",
|
|
loaded: true,
|
|
exports: {},
|
|
};
|
|
|
|
const { t, tN } = require("../out/localize.js");
|
|
|
|
test("t fallback substitutes positional placeholders", () => {
|
|
assert.equal(t("Hello {0}!", "World"), "Hello World!");
|
|
assert.equal(t("{0} and {1}", "A", 2), "A and 2");
|
|
assert.equal(t("No placeholders"), "No placeholders");
|
|
});
|
|
|
|
test("tN fallback substitutes named placeholders", () => {
|
|
assert.equal(tN("Hello {name}", { name: "Codex" }), "Hello Codex");
|
|
assert.equal(
|
|
tN("Keep {missing}", {}),
|
|
"Keep {missing}",
|
|
"unknown placeholders stay untouched",
|
|
);
|
|
});
|