162 lines
5.2 KiB
JavaScript
162 lines
5.2 KiB
JavaScript
/**
|
|
* Basic Windows Tests
|
|
* Simple tests for Windows-specific functionality without complex imports
|
|
*/
|
|
|
|
const {
|
|
detectWindowsTerminal,
|
|
getWindowsTerminalCapabilities,
|
|
getWindowsColorSupport,
|
|
getWindowsUnicodeSupport,
|
|
} = require("../../../src/tui/utils/modernTerminal.js");
|
|
|
|
describe("Basic Windows Tests", () => {
|
|
const originalEnv = process.env;
|
|
const originalPlatform = process.platform;
|
|
|
|
beforeEach(() => {
|
|
// Reset environment
|
|
process.env = { ...originalEnv };
|
|
Object.defineProperty(process, "platform", {
|
|
value: "win32",
|
|
writable: true,
|
|
});
|
|
});
|
|
|
|
afterEach(() => {
|
|
process.env = originalEnv;
|
|
Object.defineProperty(process, "platform", {
|
|
value: originalPlatform,
|
|
writable: true,
|
|
});
|
|
});
|
|
|
|
describe("Windows Terminal Detection", () => {
|
|
test("should detect Windows Terminal with WT_SESSION", () => {
|
|
process.env.WT_SESSION = "abc123-def456";
|
|
process.env.TERM_PROGRAM = "Windows Terminal";
|
|
|
|
const isWindowsTerminal = detectWindowsTerminal();
|
|
expect(isWindowsTerminal).toBe(true);
|
|
});
|
|
|
|
test("should not detect Windows Terminal without proper env vars", () => {
|
|
delete process.env.WT_SESSION;
|
|
delete process.env.TERM_PROGRAM;
|
|
|
|
const isWindowsTerminal = detectWindowsTerminal();
|
|
expect(isWindowsTerminal).toBe(false);
|
|
});
|
|
|
|
test("should not detect Windows Terminal on non-Windows platforms", () => {
|
|
Object.defineProperty(process, "platform", { value: "linux" });
|
|
process.env.WT_SESSION = "test";
|
|
|
|
const isWindowsTerminal = detectWindowsTerminal();
|
|
expect(isWindowsTerminal).toBe(false);
|
|
});
|
|
});
|
|
|
|
describe("Windows Terminal Capabilities", () => {
|
|
test("should detect Windows Terminal capabilities", () => {
|
|
process.env.WT_SESSION = "test-session";
|
|
process.env.COLORTERM = "truecolor";
|
|
|
|
const capabilities = getWindowsTerminalCapabilities();
|
|
expect(capabilities.isWindows).toBe(true);
|
|
expect(capabilities.isWindowsTerminal).toBe(true);
|
|
expect(capabilities.supportsUnicode).toBe(true);
|
|
expect(capabilities.supportsTrueColor).toBe(true);
|
|
});
|
|
|
|
test("should detect Command Prompt limitations", () => {
|
|
process.env.COMSPEC = "C:\\Windows\\system32\\cmd.exe";
|
|
delete process.env.WT_SESSION;
|
|
delete process.env.COLORTERM;
|
|
delete process.env.TERM_PROGRAM;
|
|
delete process.env.PSModulePath;
|
|
|
|
const capabilities = getWindowsTerminalCapabilities();
|
|
|
|
expect(capabilities.isCommandPrompt).toBe(true);
|
|
expect(capabilities.supportsUnicode).toBe(false);
|
|
expect(capabilities.supportsTrueColor).toBe(false);
|
|
expect(capabilities.supportsColor).toBe(true);
|
|
});
|
|
|
|
test("should detect PowerShell capabilities", () => {
|
|
process.env.PSModulePath = "C:\\Program Files\\PowerShell\\Modules";
|
|
delete process.env.WT_SESSION;
|
|
|
|
const capabilities = getWindowsTerminalCapabilities();
|
|
expect(capabilities.isPowerShell).toBe(true);
|
|
expect(capabilities.supportsUnicode).toBe(true);
|
|
expect(capabilities.supportsTrueColor).toBe(false);
|
|
});
|
|
});
|
|
|
|
describe("Color Support Detection", () => {
|
|
test("should detect true color support in Windows Terminal", () => {
|
|
process.env.WT_SESSION = "test";
|
|
process.env.COLORTERM = "truecolor";
|
|
|
|
const colorSupport = getWindowsColorSupport();
|
|
expect(colorSupport.supportsTrueColor).toBe(true);
|
|
expect(colorSupport.supports256Color).toBe(true);
|
|
expect(colorSupport.supportsBasicColor).toBe(true);
|
|
});
|
|
|
|
test("should detect limited color support in Command Prompt", () => {
|
|
process.env.COMSPEC = "C:\\Windows\\system32\\cmd.exe";
|
|
delete process.env.WT_SESSION;
|
|
delete process.env.COLORTERM;
|
|
delete process.env.TERM_PROGRAM;
|
|
delete process.env.PSModulePath;
|
|
|
|
const colorSupport = getWindowsColorSupport();
|
|
expect(colorSupport.supportsTrueColor).toBe(false);
|
|
expect(colorSupport.supports256Color).toBe(false);
|
|
expect(colorSupport.supportsBasicColor).toBe(true);
|
|
});
|
|
});
|
|
|
|
describe("Unicode Support Detection", () => {
|
|
test("should detect Unicode support in Windows Terminal", () => {
|
|
process.env.WT_SESSION = "test";
|
|
|
|
const unicodeSupport = getWindowsUnicodeSupport();
|
|
expect(unicodeSupport.supportsUnicode).toBe(true);
|
|
expect(unicodeSupport.supportsEmoji).toBe(true);
|
|
expect(unicodeSupport.supportsBoxDrawing).toBe(true);
|
|
});
|
|
|
|
test("should detect limited Unicode support in Command Prompt", () => {
|
|
process.env.COMSPEC = "C:\\Windows\\system32\\cmd.exe";
|
|
delete process.env.WT_SESSION;
|
|
delete process.env.COLORTERM;
|
|
delete process.env.TERM_PROGRAM;
|
|
delete process.env.PSModulePath;
|
|
|
|
const unicodeSupport = getWindowsUnicodeSupport();
|
|
expect(unicodeSupport.supportsUnicode).toBe(false);
|
|
expect(unicodeSupport.supportsEmoji).toBe(false);
|
|
expect(unicodeSupport.supportsBoxDrawing).toBe(false);
|
|
});
|
|
});
|
|
|
|
describe("Platform Detection", () => {
|
|
test("should correctly identify Windows platform", () => {
|
|
const capabilities = getWindowsTerminalCapabilities();
|
|
expect(capabilities.isWindows).toBe(true);
|
|
});
|
|
|
|
test("should handle non-Windows platforms", () => {
|
|
Object.defineProperty(process, "platform", { value: "darwin" });
|
|
|
|
const capabilities = getWindowsTerminalCapabilities();
|
|
expect(capabilities.isWindows).toBe(false);
|
|
expect(capabilities.isWindowsTerminal).toBe(false);
|
|
});
|
|
});
|
|
});
|