aboutsummaryrefslogtreecommitdiff
path: root/core/testing
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2021-05-01 23:06:14 +0100
committergingerBill <bill@gingerbill.org>2021-05-01 23:06:14 +0100
commitcf0bf1a7cb395cb334cc456d30af3224fa607ca0 (patch)
treec3175fbb67c869184c13756c8f960161a542a2b1 /core/testing
parent364e6c9573f35cb32be50cabb898ceb2afa57b88 (diff)
Add `testing.fail_now`
Diffstat (limited to 'core/testing')
-rw-r--r--core/testing/runner_windows.odin6
-rw-r--r--core/testing/testing.odin9
2 files changed, 14 insertions, 1 deletions
diff --git a/core/testing/runner_windows.odin b/core/testing/runner_windows.odin
index 4ab24f39c..4b600218a 100644
--- a/core/testing/runner_windows.odin
+++ b/core/testing/runner_windows.odin
@@ -156,7 +156,7 @@ run_internal_test :: proc(t: ^T, it: Internal_Test) {
context.assertion_failure_proc = proc(prefix, message: string, loc: runtime.Source_Code_Location) {
errorf(t=global_current_t, format="%s %s", args={prefix, message}, loc=loc);
- intrinsics.debug_trap();
+ intrinsics.trap();
};
thread.it.p(thread.t);
@@ -168,6 +168,10 @@ run_internal_test :: proc(t: ^T, it: Internal_Test) {
sema_reset(&global_threaded_runner_semaphore);
global_current_t = t;
+ t._fail_now = proc() -> ! {
+ intrinsics.trap();
+ };
+
thread.t = t;
thread.it = it;
thread.success = false;
diff --git a/core/testing/testing.odin b/core/testing/testing.odin
index 8a32ce7c8..ec47ca4d4 100644
--- a/core/testing/testing.odin
+++ b/core/testing/testing.odin
@@ -25,6 +25,8 @@ T :: struct {
w: io.Writer,
cleanups: [dynamic]Internal_Cleanup,
+
+ _fail_now: proc() -> !,
}
@@ -46,6 +48,13 @@ fail :: proc(t: ^T) {
t.error_count += 1;
}
+fail_now :: proc(t: ^T) {
+ fail(t);
+ if t._fail_now != nil {
+ t._fail_now();
+ }
+}
+
failed :: proc(t: ^T) -> bool {
return t.error_count != 0;
}