mirror of
https://github.com/odin-lang/Odin.git
synced 2026-04-24 15:25:20 +00:00
Restructure core:terminal for better Windows support
This commit is contained in:
@@ -214,10 +214,6 @@ 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))
|
||||
|
||||
@@ -981,9 +977,5 @@ To partly mitigate this, redirect STDERR to a file or use the -define:ODIN_TEST_
|
||||
fmt.assertf(err == nil, "Error writing JSON report: %v", err)
|
||||
}
|
||||
|
||||
when ODIN_OS == .Windows {
|
||||
console_ansi_fini()
|
||||
}
|
||||
|
||||
return total_success_count == total_test_count
|
||||
}
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
#+private
|
||||
package testing
|
||||
|
||||
import win32 "core:sys/windows"
|
||||
|
||||
old_stdout_mode: u32
|
||||
old_stderr_mode: u32
|
||||
|
||||
console_ansi_init :: proc() {
|
||||
stdout := win32.GetStdHandle(win32.STD_OUTPUT_HANDLE)
|
||||
if stdout != win32.INVALID_HANDLE && stdout != nil {
|
||||
if win32.GetConsoleMode(stdout, &old_stdout_mode) {
|
||||
win32.SetConsoleMode(stdout, old_stdout_mode | win32.ENABLE_VIRTUAL_TERMINAL_PROCESSING)
|
||||
}
|
||||
}
|
||||
|
||||
stderr := win32.GetStdHandle(win32.STD_ERROR_HANDLE)
|
||||
if stderr != win32.INVALID_HANDLE && stderr != nil {
|
||||
if win32.GetConsoleMode(stderr, &old_stderr_mode) {
|
||||
win32.SetConsoleMode(stderr, old_stderr_mode | win32.ENABLE_VIRTUAL_TERMINAL_PROCESSING)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Restore the cursor on exit
|
||||
console_ansi_fini :: proc() {
|
||||
stdout := win32.GetStdHandle(win32.STD_OUTPUT_HANDLE)
|
||||
if stdout != win32.INVALID_HANDLE && stdout != nil {
|
||||
win32.SetConsoleMode(stdout, old_stdout_mode)
|
||||
}
|
||||
|
||||
stderr := win32.GetStdHandle(win32.STD_ERROR_HANDLE)
|
||||
if stderr != win32.INVALID_HANDLE && stderr != nil {
|
||||
win32.SetConsoleMode(stderr, old_stderr_mode)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user