Merge pull request #4255 from avanspector/master

init ansi on a standalone testing exe
This commit is contained in:
Jeroen van Rijn
2024-09-17 17:15:41 +02:00
committed by GitHub
2 changed files with 26 additions and 0 deletions

View File

@@ -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))

View File

@@ -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)
}
}
}