mirror of
https://github.com/Ed94/Odin.git
synced 2026-06-17 03:12:22 -07:00
b6c4dfb68d
Changes - Support multi-threaded testing. - Support `set_fail_timeout` on all platforms. - Display an animated progress report. - Setup all tests with a context logger. - Give all tests their own separate custom allocators. - Support tracking test memory usage. - Display a summary of the failed tests at the end. - Let users select only specific tests to run. - Support copying failed tests to the clipboard to run again. - Support catching SIGINT (CTRL-C) to cancel early. - Record context in cleanup procs. - Write all log messages to STDERR for easy redirection. - Possibly more I've forgotten. New Options - `-define:test_threads=N`: Specify thread count. - `-define:test_thread_memory=B`: Specify initial memory block size in bytes to each thread. - `-define:test_track_memory=true`: Track the memory usage of individual tests. - `-define:test_fancy=false`: Disable animated progress report. - `-define:test_select=package.test_name,...`: Run only select tests. - `-define:test_clipboard=true`: Copy names of failed tests to the clipboard. - `-define:test_progress_width=24`: Change the width of the animated progress bars.
20 lines
405 B
Odin
20 lines
405 B
Odin
//+private
|
|
//+build windows, linux, darwin, freebsd, openbsd, netbsd, haiku
|
|
package testing
|
|
|
|
import "base:intrinsics"
|
|
import "core:c/libc"
|
|
|
|
@(private="file")
|
|
abort_flag: libc.sig_atomic_t
|
|
|
|
setup_signal_handler :: proc() {
|
|
libc.signal(libc.SIGINT, proc "c" (sig: libc.int) {
|
|
intrinsics.atomic_add(&abort_flag, 1)
|
|
})
|
|
}
|
|
|
|
should_abort :: proc() -> bool {
|
|
return intrinsics.atomic_load(&abort_flag) > 0
|
|
}
|