From ddf60b459dd7e3db2c6353420a53e21196d3a962 Mon Sep 17 00:00:00 2001 From: Jeroen van Rijn Date: Wed, 5 Aug 2026 12:28:39 +0200 Subject: [PATCH] #+build !netbsd --- tests/core/math/rand/test_core_math_rand.odin | 8 ++- tests/core/slice/not_netbsd.odin | 62 +++++++++++++++++++ tests/core/slice/test_core_slice.odin | 54 ---------------- 3 files changed, 67 insertions(+), 57 deletions(-) create mode 100644 tests/core/slice/not_netbsd.odin diff --git a/tests/core/math/rand/test_core_math_rand.odin b/tests/core/math/rand/test_core_math_rand.odin index 965d315e1..efc5c1be0 100644 --- a/tests/core/math/rand/test_core_math_rand.odin +++ b/tests/core/math/rand/test_core_math_rand.odin @@ -1,3 +1,4 @@ +#+build !netbsd package test_core_math_rand import "core:math" @@ -11,7 +12,9 @@ Generator :: struct { } // Disable on NetBSD due to Illegal Instruction on CI, even with `microarch:native` -@(test, disabled=ODIN_OS == .NetBSD) +// `@(test, disable="...")` still runs the test. + +@(test) test_prngs :: proc(t: ^testing.T) { gens := []Generator { { @@ -49,8 +52,7 @@ rand_determinism :: proc(t: ^testing.T, rng: Generator) { testing.expectf(t, first_value == second_value, "rng '%s' is non-deterministic.", rng.name) } -// Disable on NetBSD due to Illegal Instruction on CI, even with `microarch:native` -@(test, disabled=ODIN_OS == .NetBSD) +@(test) test_default_rand_determinism_user_set :: proc(t: ^testing.T) { rng_state_1 := rand.create(13) rng_state_2 := rand.create(13) diff --git a/tests/core/slice/not_netbsd.odin b/tests/core/slice/not_netbsd.odin new file mode 100644 index 000000000..f33be479d --- /dev/null +++ b/tests/core/slice/not_netbsd.odin @@ -0,0 +1,62 @@ +#+build !netbsd +package test_core_slice + +import "core:slice" +import "core:testing" +import "core:math/rand" + +// Disable on NetBSD due to Illegal Instruction on CI, even with `microarch:native` +// `@(test, disable="...")` still runs the test. + +@(test) +test_unique :: proc(t: ^testing.T) { + for v in UNIQUE_TEST_VECTORS { + assorted := v[0] + expected := v[1] + + uniq := slice.unique(assorted) + testing.expectf(t, slice.equal(uniq, expected), "Expected slice.uniq(%v) == %v, got %v", v[0], v[1], uniq) + } + + for v in UNIQUE_TEST_VECTORS { + assorted := v[0] + expected := v[1] + + uniq := slice.unique_proc(assorted, proc(a, b: int) -> bool { + return a == b + }) + testing.expectf(t, slice.equal(uniq, expected), "Expected slice.unique_proc(%v, ...) == %v, got %v", v[0], v[1], uniq) + } + + r := rand.create(t.seed) + context.random_generator = rand.default_random_generator(&r) + + // 10_000 random tests + for _ in 0..<10_000 { + assorted: [dynamic]i64 + expected: [dynamic]i64 + + // Prime with 1 value + old := rand.int63() + append(&assorted, old) + append(&expected, old) + + // Add 99 additional random values + for _ in 1..<100 { + new := rand.int63() + append(&assorted, new) + if old != new { + append(&expected, new) + } + old = new + } + + original := slice.clone(assorted[:]) + uniq := slice.unique(assorted[:]) + testing.expectf(t, slice.equal(uniq, expected[:]), "Expected slice.uniq(%v) == %v, got %v", original, expected, uniq) + + delete(assorted) + delete(original) + delete(expected) + } +} \ No newline at end of file diff --git a/tests/core/slice/test_core_slice.odin b/tests/core/slice/test_core_slice.odin index eb630699f..b0fb791a6 100644 --- a/tests/core/slice/test_core_slice.odin +++ b/tests/core/slice/test_core_slice.odin @@ -225,60 +225,6 @@ UNIQUE_TEST_VECTORS :: [][2][]int{ {{1,2,4,4,5}, {1,2,4,5}}, } -// Disable on NetBSD due to Illegal Instruction on CI, even with `microarch:native` -@(test, disabled=ODIN_OS == .NetBSD) -test_unique :: proc(t: ^testing.T) { - for v in UNIQUE_TEST_VECTORS { - assorted := v[0] - expected := v[1] - - uniq := slice.unique(assorted) - testing.expectf(t, slice.equal(uniq, expected), "Expected slice.uniq(%v) == %v, got %v", v[0], v[1], uniq) - } - - for v in UNIQUE_TEST_VECTORS { - assorted := v[0] - expected := v[1] - - uniq := slice.unique_proc(assorted, proc(a, b: int) -> bool { - return a == b - }) - testing.expectf(t, slice.equal(uniq, expected), "Expected slice.unique_proc(%v, ...) == %v, got %v", v[0], v[1], uniq) - } - - r := rand.create(t.seed) - context.random_generator = rand.default_random_generator(&r) - - // 10_000 random tests - for _ in 0..<10_000 { - assorted: [dynamic]i64 - expected: [dynamic]i64 - - // Prime with 1 value - old := rand.int63() - append(&assorted, old) - append(&expected, old) - - // Add 99 additional random values - for _ in 1..<100 { - new := rand.int63() - append(&assorted, new) - if old != new { - append(&expected, new) - } - old = new - } - - original := slice.clone(assorted[:]) - uniq := slice.unique(assorted[:]) - testing.expectf(t, slice.equal(uniq, expected[:]), "Expected slice.uniq(%v) == %v, got %v", original, expected, uniq) - - delete(assorted) - delete(original) - delete(expected) - } -} - @test test_compare_empty :: proc(t: ^testing.T) { a := []int{}