import { describe, expect, it } from "vite-plus/test"; import { applyWslEnvironmentConfiguration, parseWslUncPath, resolveProjectPickerTarget, resolveWslProjectSelection,} from "./wslPaths"; describe("parseWslUncPath", () => { it("parses wsl.localhost UNC paths into distro and POSIX path", () => { expect(parseWslUncPath("\\\\wsl.localhost\\Ubuntu-22.04\\home\\josh\\repo")).toEqual({ distro: "Ubuntu-22.04", linuxPath: "/home/josh/repo", }); }); it("parses wsl$ UNC roots as distro root", () => { expect(parseWslUncPath("\\\\wsl$\\Debian")).toEqual({ distro: "Debian", linuxPath: "/", }); }); it("rejects non-WSL paths and invalid distro names", () => { expect(parseWslUncPath("C:\\Users\\Josh\\repo")).toBeNull(); expect(parseWslUncPath("\\\\wsl.localhost\\bad!name\\home")).toBeNull(); });}); describe("resolveWslProjectSelection", () => { it("routes a UNC path to the matching WSL backend", () => { expect( resolveWslProjectSelection("\\\\wsl.localhost\\Ubuntu\\home\\theo\\repo", [ { environmentId: "env-debian", backendId: "wsl:Debian", runningDistro: null }, { environmentId: "env-ubuntu", backendId: "wsl:Ubuntu", runningDistro: null }, ]), ).toEqual({ distro: "Ubuntu", environmentId: "env-ubuntu", linuxPath: "/home/theo/repo", }); }); it("does not route to the only WSL backend when its distro is unknown", () => { expect( resolveWslProjectSelection("\\\\wsl.localhost\\Ubuntu\\home\\theo\\repo", [ { environmentId: "env-wsl", backendId: "wsl:default", runningDistro: null }, ]), ).toBeNull(); }); it("does not route to a sole WSL backend for a different distro", () => { expect( resolveWslProjectSelection("\\\\wsl.localhost\\Debian\\home\\theo\\repo", [ { environmentId: "env-ubuntu", backendId: "wsl:Ubuntu", runningDistro: null }, ]), ).toBeNull(); }); it("does not guess when multiple WSL backends fail to match", () => { expect( resolveWslProjectSelection("\\\\wsl.localhost\\Fedora\\home\\theo\\repo", [ { environmentId: "env-debian", backendId: "wsl:Debian", runningDistro: null }, { environmentId: "env-ubuntu", backendId: "wsl:Ubuntu", runningDistro: null }, ]), ).toBeNull(); }); it("routes a default backend only to the distro used by its running process", () => { const candidates = [ { environmentId: "env-wsl", backendId: "wsl:default", runningDistro: "Debian" }, ]; expect( resolveWslProjectSelection("\\\\wsl.localhost\\Debian\\home\\theo\\repo", candidates), ).toEqual({ distro: "Debian", environmentId: "env-wsl", linuxPath: "/home/theo/repo", }); expect( resolveWslProjectSelection("\\\\wsl.localhost\\Ubuntu\\home\\theo\\repo", candidates), ).toBeNull(); });}); describe("applyWslEnvironmentConfiguration", () => { const ubuntuConfiguration = { enabled: true, wslOnly: false, distro: null, distros: [ { name: "Debian", isDefault: false }, { name: "Ubuntu", isDefault: true }, ], }; it("preserves a live default-distro backend instance id", () => { expect( applyWslEnvironmentConfiguration( [ { environmentId: "env-wsl", backendId: "wsl:default", runningDistro: "Debian", }, ], "env-primary", ubuntuConfiguration, ), ).toEqual([{ environmentId: "env-wsl", backendId: "wsl:default", runningDistro: "Debian" }]); }); it("does not replace a live default backend's running distro from current configuration", () => { const candidates = applyWslEnvironmentConfiguration( [{ environmentId: "env-wsl", backendId: "wsl:default", runningDistro: "Debian" }], "env-primary", ubuntuConfiguration, ); expect( resolveWslProjectSelection("\\\\wsl.localhost\\Ubuntu\\home\\theo\\repo", candidates), ).toBeNull(); expect( resolveWslProjectSelection("\\\\wsl.localhost\\Debian\\home\\theo\\repo", candidates), ).toEqual({ distro: "Debian", environmentId: "env-wsl", linuxPath: "/home/theo/repo", }); }); it("represents an explicitly configured WSL-only primary by its distro", () => { expect( applyWslEnvironmentConfiguration([], "env-primary", { ...ubuntuConfiguration, wslOnly: true, distro: "ubuntu", }), ).toEqual([{ environmentId: "env-primary", backendId: "wsl:Ubuntu", runningDistro: "Ubuntu" }]); }); it("preserves default tracking for a WSL-only primary", () => { expect( applyWslEnvironmentConfiguration([], "env-primary", { ...ubuntuConfiguration, wslOnly: true, }), ).toEqual([{ environmentId: "env-primary", backendId: "wsl:default", runningDistro: null }]); }); it("uses the live primary distro for a default-tracking WSL-only primary", () => { const candidates = applyWslEnvironmentConfiguration( [], "env-primary", { ...ubuntuConfiguration, wslOnly: true, distros: [], }, "Ubuntu", ); expect(candidates).toEqual([ { environmentId: "env-primary", backendId: "wsl:default", runningDistro: "Ubuntu" }, ]); expect( resolveWslProjectSelection("\\\\wsl.localhost\\Ubuntu\\home\\theo\\repo", candidates), ).toEqual({ distro: "Ubuntu", environmentId: "env-primary", linuxPath: "/home/theo/repo", }); }); it("keeps a configured distro authoritative when discovery does not contain it", () => { expect( applyWslEnvironmentConfiguration([], "env-primary", { ...ubuntuConfiguration, wslOnly: true, distro: "Fedora", }), ).toEqual([{ environmentId: "env-primary", backendId: "wsl:Fedora", runningDistro: "Fedora" }]); }); it("does not synthesize a backend for an empty configured distro name", () => { expect( applyWslEnvironmentConfiguration([], "env-primary", { ...ubuntuConfiguration, wslOnly: true, distro: " ", }), ).toEqual([]); });}); describe("resolveProjectPickerTarget", () => { const ubuntuConfiguration = { enabled: true, wslOnly: true, distro: "Ubuntu-22.04", distros: [ { name: "Debian", isDefault: true }, { name: "Ubuntu-22.04", isDefault: false }, ], }; it("routes a WSL-only primary picker to its configured distro", () => { expect( resolveProjectPickerTarget({ browseEnvironmentId: "env-primary", primaryEnvironmentId: "env-primary", desktopInstanceId: null, wslConfiguration: ubuntuConfiguration, }), ).toBe("wsl:Ubuntu-22.04"); }); it("routes a configured distro while discovery is temporarily empty", () => { expect( resolveProjectPickerTarget({ browseEnvironmentId: "env-primary", primaryEnvironmentId: "env-primary", desktopInstanceId: null, wslConfiguration: { ...ubuntuConfiguration, distro: "ubuntu-22.04", distros: [] }, }), ).toBe("wsl:ubuntu-22.04"); }); it("uses installed casing when discovery finds the configured distro", () => { expect( resolveProjectPickerTarget({ browseEnvironmentId: "env-primary", primaryEnvironmentId: "env-primary", desktopInstanceId: null, wslConfiguration: { ...ubuntuConfiguration, distro: "ubuntu-22.04" }, }), ).toBe("wsl:Ubuntu-22.04"); }); it("routes a default-tracking WSL-only primary picker through the live sentinel", () => { expect( resolveProjectPickerTarget({ browseEnvironmentId: "env-primary", primaryEnvironmentId: "env-primary", desktopInstanceId: null, wslConfiguration: { ...ubuntuConfiguration, distro: null }, }), ).toBe("wsl:default"); }); it("routes a default-tracking picker when the distro catalog has no default", () => { expect( resolveProjectPickerTarget({ browseEnvironmentId: "env-primary", primaryEnvironmentId: "env-primary", desktopInstanceId: null, wslConfiguration: { ...ubuntuConfiguration, distro: null, distros: [{ name: "Ubuntu-22.04", isDefault: false }], }, }), ).toBe("wsl:default"); expect( resolveProjectPickerTarget({ browseEnvironmentId: "env-primary", primaryEnvironmentId: "env-primary", desktopInstanceId: null, wslConfiguration: { ...ubuntuConfiguration, distro: null, distros: [] }, }), ).toBe("wsl:default"); }); it("preserves combo-mode routing for primary and WSL backends", () => { const comboConfiguration = { ...ubuntuConfiguration, wslOnly: false }; expect( resolveProjectPickerTarget({ browseEnvironmentId: "env-primary", primaryEnvironmentId: "env-primary", desktopInstanceId: null, wslConfiguration: comboConfiguration, }), ).toBeNull(); expect( resolveProjectPickerTarget({ browseEnvironmentId: "env-wsl", primaryEnvironmentId: "env-primary", desktopInstanceId: "wsl:Ubuntu-22.04", wslConfiguration: comboConfiguration, }), ).toBe("wsl:Ubuntu-22.04"); });});
import { describe, expect, it } from "vite-plus/test";
import {
applyWslEnvironmentConfiguration,
parseWslUncPath,
resolveProjectPickerTarget,
resolveWslProjectSelection,
} from "./wslPaths";
describe("parseWslUncPath", () => {
it("parses wsl.localhost UNC paths into distro and POSIX path", () => {
expect(parseWslUncPath("\\\\wsl.localhost\\Ubuntu-22.04\\home\\josh\\repo")).toEqual({
distro: "Ubuntu-22.04",
linuxPath: "/home/josh/repo",
});
});
it("parses wsl$ UNC roots as distro root", () => {
expect(parseWslUncPath("\\\\wsl$\\Debian")).toEqual({
distro: "Debian",
linuxPath: "/",
});
});
it("rejects non-WSL paths and invalid distro names", () => {
expect(parseWslUncPath("C:\\Users\\Josh\\repo")).toBeNull();
expect(parseWslUncPath("\\\\wsl.localhost\\bad!name\\home")).toBeNull();
});
});
describe("resolveWslProjectSelection", () => {
it("routes a UNC path to the matching WSL backend", () => {
expect(
resolveWslProjectSelection("\\\\wsl.localhost\\Ubuntu\\home\\theo\\repo", [
{ environmentId: "env-debian", backendId: "wsl:Debian", runningDistro: null },
{ environmentId: "env-ubuntu", backendId: "wsl:Ubuntu", runningDistro: null },
]),
).toEqual({
distro: "Ubuntu",
environmentId: "env-ubuntu",
linuxPath: "/home/theo/repo",
});
});
it("does not route to the only WSL backend when its distro is unknown", () => {
expect(
resolveWslProjectSelection("\\\\wsl.localhost\\Ubuntu\\home\\theo\\repo", [
{ environmentId: "env-wsl", backendId: "wsl:default", runningDistro: null },
]),
).toBeNull();
});
it("does not route to a sole WSL backend for a different distro", () => {
expect(
resolveWslProjectSelection("\\\\wsl.localhost\\Debian\\home\\theo\\repo", [
{ environmentId: "env-ubuntu", backendId: "wsl:Ubuntu", runningDistro: null },
]),
).toBeNull();
});
it("does not guess when multiple WSL backends fail to match", () => {
expect(
resolveWslProjectSelection("\\\\wsl.localhost\\Fedora\\home\\theo\\repo", [
{ environmentId: "env-debian", backendId: "wsl:Debian", runningDistro: null },
{ environmentId: "env-ubuntu", backendId: "wsl:Ubuntu", runningDistro: null },
]),
).toBeNull();
});
it("routes a default backend only to the distro used by its running process", () => {
const candidates = [
{ environmentId: "env-wsl", backendId: "wsl:default", runningDistro: "Debian" },
];
expect(
resolveWslProjectSelection("\\\\wsl.localhost\\Debian\\home\\theo\\repo", candidates),
).toEqual({
distro: "Debian",
environmentId: "env-wsl",
linuxPath: "/home/theo/repo",
});
expect(
resolveWslProjectSelection("\\\\wsl.localhost\\Ubuntu\\home\\theo\\repo", candidates),
).toBeNull();
});
});
describe("applyWslEnvironmentConfiguration", () => {
const ubuntuConfiguration = {
enabled: true,
wslOnly: false,
distro: null,
distros: [
{ name: "Debian", isDefault: false },
{ name: "Ubuntu", isDefault: true },
],
};
it("preserves a live default-distro backend instance id", () => {
expect(
applyWslEnvironmentConfiguration(
[
{
environmentId: "env-wsl",
backendId: "wsl:default",
runningDistro: "Debian",
},
],
"env-primary",
ubuntuConfiguration,
),
).toEqual([{ environmentId: "env-wsl", backendId: "wsl:default", runningDistro: "Debian" }]);
});
it("does not replace a live default backend's running distro from current configuration", () => {
const candidates = applyWslEnvironmentConfiguration(
[{ environmentId: "env-wsl", backendId: "wsl:default", runningDistro: "Debian" }],
"env-primary",
ubuntuConfiguration,
);
expect(
resolveWslProjectSelection("\\\\wsl.localhost\\Ubuntu\\home\\theo\\repo", candidates),
).toBeNull();
expect(
resolveWslProjectSelection("\\\\wsl.localhost\\Debian\\home\\theo\\repo", candidates),
).toEqual({
distro: "Debian",
environmentId: "env-wsl",
linuxPath: "/home/theo/repo",
});
});
it("represents an explicitly configured WSL-only primary by its distro", () => {
expect(
applyWslEnvironmentConfiguration([], "env-primary", {
...ubuntuConfiguration,
wslOnly: true,
distro: "ubuntu",
}),
).toEqual([{ environmentId: "env-primary", backendId: "wsl:Ubuntu", runningDistro: "Ubuntu" }]);
});
it("preserves default tracking for a WSL-only primary", () => {
expect(
applyWslEnvironmentConfiguration([], "env-primary", {
...ubuntuConfiguration,
wslOnly: true,
}),
).toEqual([{ environmentId: "env-primary", backendId: "wsl:default", runningDistro: null }]);
});
it("uses the live primary distro for a default-tracking WSL-only primary", () => {
const candidates = applyWslEnvironmentConfiguration(
[],
"env-primary",
{
...ubuntuConfiguration,
wslOnly: true,
distros: [],
},
"Ubuntu",
);
expect(candidates).toEqual([
{ environmentId: "env-primary", backendId: "wsl:default", runningDistro: "Ubuntu" },
]);
expect(
resolveWslProjectSelection("\\\\wsl.localhost\\Ubuntu\\home\\theo\\repo", candidates),
).toEqual({
distro: "Ubuntu",
environmentId: "env-primary",
linuxPath: "/home/theo/repo",
});
});
it("keeps a configured distro authoritative when discovery does not contain it", () => {
expect(
applyWslEnvironmentConfiguration([], "env-primary", {
...ubuntuConfiguration,
wslOnly: true,
distro: "Fedora",
}),
).toEqual([{ environmentId: "env-primary", backendId: "wsl:Fedora", runningDistro: "Fedora" }]);
});
it("does not synthesize a backend for an empty configured distro name", () => {
expect(
applyWslEnvironmentConfiguration([], "env-primary", {
...ubuntuConfiguration,
wslOnly: true,
distro: " ",
}),
).toEqual([]);
});
});
describe("resolveProjectPickerTarget", () => {
const ubuntuConfiguration = {
enabled: true,
wslOnly: true,
distro: "Ubuntu-22.04",
distros: [
{ name: "Debian", isDefault: true },
{ name: "Ubuntu-22.04", isDefault: false },
],
};
it("routes a WSL-only primary picker to its configured distro", () => {
expect(
resolveProjectPickerTarget({
browseEnvironmentId: "env-primary",
primaryEnvironmentId: "env-primary",
desktopInstanceId: null,
wslConfiguration: ubuntuConfiguration,
}),
).toBe("wsl:Ubuntu-22.04");
});
it("routes a configured distro while discovery is temporarily empty", () => {
expect(
resolveProjectPickerTarget({
browseEnvironmentId: "env-primary",
primaryEnvironmentId: "env-primary",
desktopInstanceId: null,
wslConfiguration: { ...ubuntuConfiguration, distro: "ubuntu-22.04", distros: [] },
}),
).toBe("wsl:ubuntu-22.04");
});
it("uses installed casing when discovery finds the configured distro", () => {
expect(
resolveProjectPickerTarget({
browseEnvironmentId: "env-primary",
primaryEnvironmentId: "env-primary",
desktopInstanceId: null,
wslConfiguration: { ...ubuntuConfiguration, distro: "ubuntu-22.04" },
}),
).toBe("wsl:Ubuntu-22.04");
});
it("routes a default-tracking WSL-only primary picker through the live sentinel", () => {
expect(
resolveProjectPickerTarget({
browseEnvironmentId: "env-primary",
primaryEnvironmentId: "env-primary",
desktopInstanceId: null,
wslConfiguration: { ...ubuntuConfiguration, distro: null },
}),
).toBe("wsl:default");
});
it("routes a default-tracking picker when the distro catalog has no default", () => {
expect(
resolveProjectPickerTarget({
browseEnvironmentId: "env-primary",
primaryEnvironmentId: "env-primary",
desktopInstanceId: null,
wslConfiguration: {
...ubuntuConfiguration,
distro: null,
distros: [{ name: "Ubuntu-22.04", isDefault: false }],
},
}),
).toBe("wsl:default");
expect(
resolveProjectPickerTarget({
browseEnvironmentId: "env-primary",
primaryEnvironmentId: "env-primary",
desktopInstanceId: null,
wslConfiguration: { ...ubuntuConfiguration, distro: null, distros: [] },
}),
).toBe("wsl:default");
});
it("preserves combo-mode routing for primary and WSL backends", () => {
const comboConfiguration = { ...ubuntuConfiguration, wslOnly: false };
expect(
resolveProjectPickerTarget({
browseEnvironmentId: "env-primary",
primaryEnvironmentId: "env-primary",
desktopInstanceId: null,
wslConfiguration: comboConfiguration,
}),
).toBeNull();
expect(
resolveProjectPickerTarget({
browseEnvironmentId: "env-wsl",
primaryEnvironmentId: "env-primary",
desktopInstanceId: "wsl:Ubuntu-22.04",
wslConfiguration: comboConfiguration,
}),
).toBe("wsl:Ubuntu-22.04");
});
});