diff options
| author | avanspector <avanspector@gmail.com> | 2024-09-17 16:57:02 +0200 |
|---|---|---|
| committer | avanspector <avanspector@gmail.com> | 2024-09-17 16:57:02 +0200 |
| commit | c794f853e943ba0f70c0e927c50ada1bf5136117 (patch) | |
| tree | 717f6769657041f8ae9f30928ba3bafd95e760b6 | |
| parent | 3135c89a0aed7528baba4ec8d45a6c2549862007 (diff) | |
init ansi on a standalone testing exe
| -rw-r--r-- | core/testing/runner.odin | 4 | ||||
| -rw-r--r-- | core/testing/runner_windows.odin | 22 |
2 files changed, 26 insertions, 0 deletions
diff --git a/core/testing/runner.odin b/core/testing/runner.odin index 386ba8cb5..10d5dca5c 100644 --- a/core/testing/runner.odin +++ b/core/testing/runner.odin @@ -204,6 +204,10 @@ runner :: proc(internal_tests: []Internal_Test) -> bool { } } + when ODIN_OS == .Windows { + console_ansi_init() + } + stdout := io.to_writer(os.stream_from_handle(os.stdout)) stderr := io.to_writer(os.stream_from_handle(os.stderr)) diff --git a/core/testing/runner_windows.odin b/core/testing/runner_windows.odin new file mode 100644 index 000000000..fa233ff84 --- /dev/null +++ b/core/testing/runner_windows.odin @@ -0,0 +1,22 @@ +//+private +package testing + +import win32 "core:sys/windows" + +console_ansi_init :: proc() { + stdout := win32.GetStdHandle(win32.STD_OUTPUT_HANDLE) + if stdout != win32.INVALID_HANDLE && stdout != nil { + old_console_mode: u32 + if win32.GetConsoleMode(stdout, &old_console_mode) { + win32.SetConsoleMode(stdout, old_console_mode | win32.ENABLE_VIRTUAL_TERMINAL_PROCESSING) + } + } + + stderr := win32.GetStdHandle(win32.STD_ERROR_HANDLE) + if stderr != win32.INVALID_HANDLE && stderr != nil { + old_console_mode: u32 + if win32.GetConsoleMode(stderr, &old_console_mode) { + win32.SetConsoleMode(stderr, old_console_mode | win32.ENABLE_VIRTUAL_TERMINAL_PROCESSING) + } + } +} |