@Test public void testAnsiIsPseudoTtyDependsOnWindowsXtermOrOsType() { System.setProperty("os.name", "MMIX"); environmentVariables.clear(ANSI_ENVIRONMENT_VARIABLES); assertFalse("OSTYPE and XTERM are not set", Ansi.isPseudoTTY()); System.setProperty("os.name", "Windows 10 build 12345"); environmentVariables.set("OSTYPE", "222"); environmentVariables.set("TERM", "xterm"); assertTrue(Ansi.isPseudoTTY()); System.setProperty("os.name", "MMIX"); assertFalse("Not Windows", Ansi.isPseudoTTY()); System.setProperty("os.name", "Windows 10 build 12345"); // restore assertTrue("restored", Ansi.isPseudoTTY()); environmentVariables.clear("OSTYPE"); assertTrue("Missing OSTYPE, but TERM=xterm", Ansi.isPseudoTTY()); environmentVariables.set("OSTYPE", "anything"); assertTrue("restored", Ansi.isPseudoTTY()); environmentVariables.clear("XTERM"); assertTrue("Missing XTERM, but OSTYPE defined", Ansi.isPseudoTTY()); }
@Test public void testAnsiAutoEnabledIfNotWindows() { if (!Ansi.isTTY()) { return; } // needs TTY for this test environmentVariables.clear(ANSI_ENVIRONMENT_VARIABLES); System.setProperty("os.name", "MMIX"); assertFalse(Ansi.isWindows()); assertFalse(Ansi.isPseudoTTY()); // TODO Mock this? assertFalse(Ansi.isJansiConsoleInstalled()); assertFalse(Ansi.forceDisabled()); assertFalse(Ansi.forceEnabled()); assertFalse(Ansi.hintDisabled()); assertFalse(Ansi.hintEnabled()); assertTrue("If have TTY, enabled on non-Windows", Ansi.AUTO.enabled()); }
@Test public void testAnsiAutoDisabledIfNoTty() { if (Ansi.isTTY()) { return; } // environmentVariables.clear(ANSI_ENVIRONMENT_VARIABLES); System.setProperty("os.name", "Windows"); assertTrue(Ansi.isWindows()); assertFalse(Ansi.isPseudoTTY()); assertFalse(Ansi.isJansiConsoleInstalled()); assertFalse(Ansi.forceDisabled()); assertFalse(Ansi.forceEnabled()); assertFalse(Ansi.hintDisabled()); assertFalse(Ansi.hintEnabled()); assertFalse("Must have TTY if no JAnsi", Ansi.AUTO.enabled()); }
@Test public void testAnsiIsPseudoTtyDependsOnWindowsXtermOrOsType() { System.setProperty("os.name", "MMIX"); environmentVariables.clear(ANSI_ENVIRONMENT_VARIABLES); assertFalse("OSTYPE and XTERM are not set", Ansi.isPseudoTTY()); System.setProperty("os.name", "Windows 10 build 12345"); environmentVariables.set("OSTYPE", "222"); environmentVariables.set("TERM", "xterm"); assertTrue(Ansi.isPseudoTTY()); System.setProperty("os.name", "MMIX"); assertFalse("Not Windows", Ansi.isPseudoTTY()); System.setProperty("os.name", "Windows 10 build 12345"); // restore assertTrue("restored", Ansi.isPseudoTTY()); environmentVariables.clear("OSTYPE"); assertTrue("Missing OSTYPE, but TERM=xterm", Ansi.isPseudoTTY()); environmentVariables.set("OSTYPE", "anything"); assertTrue("restored", Ansi.isPseudoTTY()); environmentVariables.clear("XTERM"); assertTrue("Missing XTERM, but OSTYPE defined", Ansi.isPseudoTTY()); }
@Test public void testAnsiAutoEnabledIfWindowsPseudoTTY() { environmentVariables.clear(ANSI_ENVIRONMENT_VARIABLES); System.setProperty("os.name", "Windows"); assertTrue(Ansi.isWindows()); assertFalse(Ansi.isJansiConsoleInstalled()); assertFalse(Ansi.forceDisabled()); assertFalse(Ansi.forceEnabled()); assertFalse(Ansi.hintDisabled()); assertFalse(Ansi.hintEnabled()); environmentVariables.set("TERM", "xterm"); assertTrue(Ansi.isPseudoTTY()); assertTrue("If have Cygwin pseudo-TTY, enabled on Windows", Ansi.AUTO.enabled()); environmentVariables.clear(ANSI_ENVIRONMENT_VARIABLES); environmentVariables.set("OSTYPE", "Windows"); assertTrue(Ansi.isPseudoTTY()); assertTrue("If have MSYS pseudo-TTY, enabled on Windows", Ansi.AUTO.enabled()); } }
@Test public void testAnsiAutoJansiConsoleInstalledOverridesHintDisabled() { environmentVariables.clear(ANSI_ENVIRONMENT_VARIABLES); environmentVariables.set("CLICOLOR", "0"); // hint disabled System.setProperty("os.name", "Windows"); assertTrue(Ansi.isWindows()); assertFalse(Ansi.isPseudoTTY()); assertFalse(Ansi.forceDisabled()); assertFalse(Ansi.forceEnabled()); assertTrue(Ansi.hintDisabled()); assertFalse(Ansi.hintEnabled()); assertFalse(Ansi.isJansiConsoleInstalled()); AnsiConsole.systemInstall(); try { assertTrue(Ansi.isJansiConsoleInstalled()); assertTrue(Ansi.AUTO.enabled()); } finally { AnsiConsole.systemUninstall(); } }
@Test public void testAnsiAutoHintDisabledOverridesHintEnabled() { environmentVariables.clear(ANSI_ENVIRONMENT_VARIABLES); environmentVariables.set("CLICOLOR", "0"); // hint disabled environmentVariables.set("ANSICON", "1"); // hint enabled System.setProperty("os.name", "Windows"); assertTrue(Ansi.isWindows()); environmentVariables.set("TERM", "xterm"); // fake Cygwin assertTrue(Ansi.isPseudoTTY()); assertFalse(Ansi.isJansiConsoleInstalled()); assertFalse(Ansi.forceDisabled()); assertFalse(Ansi.forceEnabled()); assertTrue(Ansi.hintDisabled()); assertTrue(Ansi.hintEnabled()); assertFalse("Disabled overrides enabled", Ansi.AUTO.enabled()); }
@Test public void testAnsiAutoEnabledIfNotWindows() { if (!Ansi.isTTY()) { return; } // needs TTY for this test environmentVariables.clear(ANSI_ENVIRONMENT_VARIABLES); System.setProperty("os.name", "MMIX"); assertFalse(Ansi.isWindows()); assertFalse(Ansi.isPseudoTTY()); // TODO Mock this? assertFalse(Ansi.isJansiConsoleInstalled()); assertFalse(Ansi.forceDisabled()); assertFalse(Ansi.forceEnabled()); assertFalse(Ansi.hintDisabled()); assertFalse(Ansi.hintEnabled()); assertTrue("If have TTY, enabled on non-Windows", Ansi.AUTO.enabled()); }
@Test public void testAnsiAutoDisabledIfNoTty() { if (Ansi.isTTY()) { return; } // environmentVariables.clear(ANSI_ENVIRONMENT_VARIABLES); System.setProperty("os.name", "Windows"); assertTrue(Ansi.isWindows()); assertFalse(Ansi.isPseudoTTY()); assertFalse(Ansi.isJansiConsoleInstalled()); assertFalse(Ansi.forceDisabled()); assertFalse(Ansi.forceEnabled()); assertFalse(Ansi.hintDisabled()); assertFalse(Ansi.hintEnabled()); assertFalse("Must have TTY if no JAnsi", Ansi.AUTO.enabled()); }
static boolean ansiPossible() { if (forceDisabled()) { return false; } if (forceEnabled()) { return true; } if (isJansiConsoleInstalled()) { return true; } if (hintDisabled()) { return false; } if (!isTTY() && !isPseudoTTY()) { return false; } return hintEnabled() || !isWindows() || isXterm() || hasOsType(); } static boolean isJansiConsoleInstalled() {
@Test public void testAnsiAutoEnabledIfWindowsPseudoTTY() { environmentVariables.clear(ANSI_ENVIRONMENT_VARIABLES); System.setProperty("os.name", "Windows"); assertTrue(Ansi.isWindows()); assertFalse(Ansi.isJansiConsoleInstalled()); assertFalse(Ansi.forceDisabled()); assertFalse(Ansi.forceEnabled()); assertFalse(Ansi.hintDisabled()); assertFalse(Ansi.hintEnabled()); environmentVariables.set("TERM", "xterm"); assertTrue(Ansi.isPseudoTTY()); assertTrue("If have Cygwin pseudo-TTY, enabled on Windows", Ansi.AUTO.enabled()); environmentVariables.clear(ANSI_ENVIRONMENT_VARIABLES); environmentVariables.set("OSTYPE", "Windows"); assertTrue(Ansi.isPseudoTTY()); assertTrue("If have MSYS pseudo-TTY, enabled on Windows", Ansi.AUTO.enabled()); } }
@Test public void testAnsiAutoJansiConsoleInstalledOverridesHintDisabled() { environmentVariables.clear(ANSI_ENVIRONMENT_VARIABLES); environmentVariables.set("CLICOLOR", "0"); // hint disabled System.setProperty("os.name", "Windows"); assertTrue(Ansi.isWindows()); assertFalse(Ansi.isPseudoTTY()); assertFalse(Ansi.forceDisabled()); assertFalse(Ansi.forceEnabled()); assertTrue(Ansi.hintDisabled()); assertFalse(Ansi.hintEnabled()); assertFalse(Ansi.isJansiConsoleInstalled()); AnsiConsole.systemInstall(); try { assertTrue(Ansi.isJansiConsoleInstalled()); assertTrue(Ansi.AUTO.enabled()); } finally { AnsiConsole.systemUninstall(); } }
@Test public void testAnsiAutoHintDisabledOverridesHintEnabled() { environmentVariables.clear(ANSI_ENVIRONMENT_VARIABLES); environmentVariables.set("CLICOLOR", "0"); // hint disabled environmentVariables.set("ANSICON", "1"); // hint enabled System.setProperty("os.name", "Windows"); assertTrue(Ansi.isWindows()); environmentVariables.set("TERM", "xterm"); // fake Cygwin assertTrue(Ansi.isPseudoTTY()); assertFalse(Ansi.isJansiConsoleInstalled()); assertFalse(Ansi.forceDisabled()); assertFalse(Ansi.forceEnabled()); assertTrue(Ansi.hintDisabled()); assertTrue(Ansi.hintEnabled()); assertFalse("Disabled overrides enabled", Ansi.AUTO.enabled()); }
static boolean ansiPossible() { if (forceDisabled()) { return false; } if (forceEnabled()) { return true; } if (isJansiConsoleInstalled()) { return true; } if (hintDisabled()) { return false; } if (!isTTY() && !isPseudoTTY()) { return false; } return hintEnabled() || !isWindows() || isXterm() || hasOsType(); } static boolean isJansiConsoleInstalled() {