Feoramund
0196cc46e3
Allow custom main when -no-entry-point is set
2024-06-18 01:49:55 -04:00
Feoramund
eb5a66c944
Forbid private test cases
2024-06-18 01:28:05 -04:00
Feoramund
9e4899d35c
Add tests for decode_grapheme_clusters
2024-06-17 21:57:32 -04:00
Feoramund
63973f431e
Make core:unicode letter procs @(require_results)
2024-06-17 21:57:32 -04:00
Feoramund
1620a69398
Add decode_grapheme_clusters to core:unicode/utf8
2024-06-17 21:57:32 -04:00
Feoramund
1a93dfd28f
Fix indentation
2024-06-17 13:24:47 -04:00
Feoramund
78a5a27212
Fix bit_set construction crash on constant non-integer field
2024-06-16 12:27:42 -04:00
Feoramund
53140dca15
Fix default_random_generator_proc not using state
2024-06-15 12:54:30 -04:00
Feoramund
753516c392
Add ODIN_TEST_SHORT_LOGS define
...
Strips out the procedure, date, and time information, for when you just
need to know the file, line, and message.
2024-06-15 11:18:40 -04:00
Feoramund
f353adc7fb
Prefer log.error over fail_now in this case
2024-06-15 10:53:21 -04:00
Feoramund
bb823d5ba0
Make testing.fail_now divergent
...
This is in line with the old way it worked on Windows.
2024-06-15 10:53:21 -04:00
Feoramund
784408358d
Call cleanups after test signal
2024-06-15 10:46:47 -04:00
Feoramund
c560553c21
Fix compiler silently returning if parse_packages fails
2024-06-13 13:01:51 -04:00
Feoramund
abe5c2ca83
Add test for %w
2024-06-12 21:07:15 -04:00
Feoramund
0c9f487783
Fix and document %w verb for core:fmt
2024-06-12 20:35:50 -04:00
Feoramund
33270f14a4
Fix #3739
2024-06-12 15:31:43 -04:00
Feoramund
61c630bbf8
Fix #3730
2024-06-11 05:23:43 -04:00
Feoramund
0e6bcd0dbb
Add FreeBSD to CI
2024-06-11 04:16:42 -04:00
Feoramund
fc88de12c2
Implement absolute_path_from_handle for FreeBSD
2024-06-11 04:16:42 -04:00
Feoramund
a3da796d54
Fix file_size on FreeBSD
...
It was using the generic UNIX `fstat` implemented in Odin, which is more
than what is needed here.
This also avoids the issue of needing a proper
`absolute_path_from_handle` implementation for it to work without error.
2024-06-11 03:55:41 -04:00
Feoramund
40e99ebb10
Fix file open O_* flags on FreeBSD
2024-06-11 03:55:41 -04:00
Feoramund
c68560c573
Use correct __error link name for FreeBSD
2024-06-11 03:55:41 -04:00
Feoramund
76292c8ed5
Forbid all BSDs from running core:net tests
...
`net` is not yet implemented on them.
2024-06-11 03:55:41 -04:00
Feoramund
bd198aeada
Fix #3460
2024-06-10 23:37:54 -04:00
Feoramund
50464bdce3
Use #any_int for reserve_* and resize_* procs
...
Resolves #3088
2024-06-10 20:51:58 -04:00
Feoramund
71a812e7fe
Use get_final_microarchitecture() for ODIN_MICROARCH_STRING
2024-06-10 05:30:16 -04:00
Feoramund
ff7fcb6d38
Add compilation-related constants
...
`ODIN_VERSION_HASH` is the `git` SHA hash of the commit the Odin
compiler was built with.
`ODIN_MICROARCH_STRING` is the string passed to `-microarch` when
the program was built.
`ODIN_OPTIMIZATION_MODE` is an enum value of which optimization mode was
used to build the program.
2024-06-10 03:47:20 -04:00
Feoramund
45d1328a85
Fix typo in a #force_inline error message
2024-06-10 00:50:16 -04:00
Feoramund
8702bf00d5
Remove _ in Syntax_Error verbose message
2024-06-09 22:47:43 -04:00
Feoramund
9d28f2e18c
Fix or_or_<branch> error messages
2024-06-09 22:46:45 -04:00
Feoramund
70820c2c40
Add missing string_to_int alias in core:math/big
2024-06-09 21:42:31 -04:00
Feoramund
fe5c278fca
Add test for core:math/big permutation & combination procs
2024-06-09 20:42:09 -04:00
Feoramund
f0d65112b8
Rename math/big test package
...
This is in line with the other tests, and it does not seem to affect
building the library.
2024-06-09 20:42:07 -04:00
Feoramund
5fbd876db1
Add permutation & combination procedures to core:math/big
2024-06-09 20:42:04 -04:00
Feoramund
047b505836
Add test for slice.permute
2024-06-09 16:15:43 -04:00
Feoramund
1f64d8d5bd
Add slice.permute
2024-06-09 16:15:41 -04:00
Feoramund
49f147cc86
Prevent panic when swizzle called with < 2 indices
...
The requirement for at least 2 indices has been sourced from
`lb_addr_swizzle` in `llvm_backend_general.cpp`, where there is an
assert to ensure the swizzle_count is `1 < n <= 4`.
2024-06-08 17:05:00 -04:00
Feoramund
5c8f78a25a
Add *.bmp to core tests .gitignore
2024-06-08 16:43:45 -04:00
Feoramund
affd48c791
Add #caller_location to check in fmt tests
...
This makes it much easier to track down which line failed.
2024-06-07 16:08:37 -04:00
Feoramund
b65589d036
Add %p tests for fmt
2024-06-07 16:07:11 -04:00
Feoramund
61c481bd81
Fix %p pointers not printing leading 0x
2024-06-07 15:27:43 -04:00
Feoramund
b2f9f0af68
Fix some typos
2024-06-04 19:01:30 -04:00
Feoramund
25feff3eb4
Permit parsing of incomplete infinity but do not return true
...
To clarify, `parse_f64` will indeed take `infi` to mean `+Inf` and
return that as the value, but it will not return `ok = true`. It treats
it as `inf` followed by any other trailing character.
`parse_f64_prefix` is the lenient one which will return true so long as
it finds some meaningful value.
2024-06-04 18:55:13 -04:00
Feoramund
1fc6ff91b2
Add test for infinity with trailing characters
2024-06-04 18:55:13 -04:00
Feoramund
b4cfae222c
Strike incorrect note from parse_f64_prefix doc
2024-06-04 17:50:19 -04:00
Feoramund
265e6aa781
Add parse_complex/quaternion* to core:strconv
2024-06-04 17:12:55 -04:00
Feoramund
c656a9e4cd
Fix and subsume test_issue_2087 into strconv test suite
...
The full "infinity" strings were expected to be partial consumes, but
this is not the case. That has been fixed and the relevant extra tests
from that file have been added to this test suite.
Fixes #2670
2024-06-04 14:23:48 -04:00
Feoramund
7d670f6562
Add initial test suite for core:strconv
2024-06-04 14:20:31 -04:00
Feoramund
d33668fa91
Fix partial parsing of "infinity" in parse_f64_prefix
...
It was previously reporting an invalid number of characters parsed for
any string other than "inf", "+inf", or "-inf".
2024-06-04 13:24:46 -04:00
Feoramund
eb93779f63
Fix duplicate sign printing of complex and quaternion types
...
Negative zero wasn't being detected (so it would appear as `+-0`), and
`+Inf` was appearing as `++Inf` when imaginary.
2024-06-03 19:51:17 -04:00
Feoramund
d2a9122176
Add fmt tests for printing complex and quaternion types
2024-06-03 19:48:09 -04:00
Feoramund
d7f6def8ad
Add aliases for Raw_* complex/quaternion types into core:mem
2024-06-03 17:18:27 -04:00
Feoramund
88598c2c64
Make use of runtime.Raw_* types in core:math/linalg
2024-06-03 15:58:33 -04:00
Feoramund
97f1d12e04
Add missing Raw_* types for complex and quaternion
2024-06-03 15:41:14 -04:00
Feoramund
4e1dd4ced2
Move Raw_Complex/Quaternion types to base:runtime
2024-06-03 15:40:28 -04:00
Feoramund
0ff130d82b
Fix ad hoc printf in test runner signal handler
2024-06-02 23:36:04 -04:00
Feoramund
fa29974dab
Use Warning log level for reporting memory leaks
...
Works well with `-define:ODIN_TEST_LOG_LEVEL=warning`.
2024-06-02 23:21:44 -04:00
Feoramund
7764ab2ab0
Prevent test runner deadlock on NetBSD
...
Add `pthread_testcancel` to `core:sys/unix`
2024-06-02 21:27:36 -04:00
Feoramund
6a5633df2d
Fix wrong PTHREAD_CANCEL_ASYNCHRONOUS on FreeBSD and OpenBSD
...
The test runner was deadlocking when a test raised a signal on FreeBSD.
This is untested on OpenBSD, but I have referenced this file:
https://github.com/openbsd/src/blob/master/include/pthread.h
2024-06-02 20:41:25 -04:00
Feoramund
c8539fe411
Revert "Disable NetBSD tests until 'undefined reference to stdout' is solved."
...
This reverts commit 21a1ddfbae .
2024-06-02 19:29:27 -04:00
Feoramund
ac9484206b
Fix STDIN, STDOUT, STDERR handles for BSDs
...
Tested on FreeBSD 14.0 and NetBSD 10.0
OpenBSD is untested, but link names were sourced from:
https://github.com/openbsd/src/blob/master/include/stdio.h
According to this, OpenBSD shares the same layout as NetBSD.
FreeBSD has the same as Darwin in this regard.
2024-06-02 19:29:27 -04:00
Feoramund
f030603f0d
Fix #3660
...
This also prevents a segfault if you do `odin build .odin -file`
2024-06-02 16:47:46 -04:00
Feoramund
f77ce359ce
Be pedantic about not overwriting Odin errors
...
I was encountering bounds-check error messages being overwritten during
a test, if the test failed for another reason and sent a log message.
The original intent of having this check inside of the above `if` block
was that if a test sent an error message, then it was assumed an
overwrite would be safe, but it's completely possible for a test to fail
for a legitimate reason, then do an unrelated bounds check somewhere
else that would be buried under the animation.
This change will make sure that, no matter what, the progress display
will not trigger a clear if a signal was raised. There's still no
guarantee that bounds-check messages will be printed properly, and it's
best to redirect STDERR.
The only way that can be fixed is if they get a similar hook to
`context.assertion_failure_proc`.
2024-06-02 15:51:26 -04:00
Feoramund
3f1249c27e
Tell user about ODIN_TEST_RANDOM_SEED option
2024-06-02 15:34:13 -04:00
Feoramund
8d8c42e962
Use T.seed in tests where applicable
2024-06-02 15:30:23 -04:00
Feoramund
890fe07c6e
Disable FANCY_OUTPUT in Odin test scripts
...
This should tidy up the CI output logs a bit.
2024-06-02 14:54:32 -04:00
Feoramund
d581dbbec5
Keep test runner main thread from using 100% of a CPU core
2024-06-02 14:54:32 -04:00
Feoramund
5e3e958574
Add -define:ODIN_TEST_LOG_LEVEL to set lowest log level
2024-06-02 14:54:32 -04:00
Feoramund
6a9203328b
Log thread count at test run start
...
Provides a helpful info message about the option to change how many
threads are used per run.
2024-06-02 14:54:32 -04:00
Feoramund
5db65aa796
Make it easier to learn about ODIN_TEST_CLIPBOARD
2024-06-02 14:54:32 -04:00
Feoramund
cb00b8022b
Add note about SIGSEGV edge case on UNIX-likes
2024-06-02 14:54:32 -04:00
Feoramund
4875f745c8
Remove Windows test runner in favor of libc implementation
2024-06-02 14:54:32 -04:00
Feoramund
ccdbd4b6ce
Simplify casts in mem.Rollback_Stack procs
2024-06-02 14:54:32 -04:00
Feoramund
9dcf345795
Set thread pool is_running to false on shutdown
2024-06-02 14:54:32 -04:00
Feoramund
21064fbb60
Clear thread pool task data on restart
2024-06-02 14:54:32 -04:00
Feoramund
45fa9d8148
Expand documentation comment for ODIN_TEST_NAMES
2024-06-02 14:54:32 -04:00
Feoramund
cb8faf5b74
Remove -test-name in favor of test runner option
...
`-define:ODIN_TEST_NAMES=...` is capable of selecting test by package
and name or name only, with the ability to access packages included by
`-all-packages`.
2024-06-02 14:54:32 -04:00
Feoramund
6a5d51f0d6
Use more concise way of satisfying -vet
2024-06-02 14:54:31 -04:00
Feoramund
433ca538bf
Be specific about platforms not implementing test runner signal handler
2024-06-02 14:54:31 -04:00
Feoramund
d1723664a7
Catch SIGILL, SIGFPE, SIGSEGV in the test runner
2024-06-02 14:54:31 -04:00
Feoramund
fb37572c4c
Rename signal_handler.odin to signal_handler_libc.odin
2024-06-02 14:54:31 -04:00
Feoramund
b74b956fda
Remove unneeded import
2024-06-02 14:47:08 -04:00
Feoramund
1f6a6f2cd3
Support deterministic random seeding of tests
...
Add a new option `ODIN_TEST_RANDOM_SEED` which is picked from the cycle
counter at startup, if it's not specified by the user.
This number is sent to every test in the `T` struct and reset every test
(just in case).
2024-06-02 14:47:07 -04:00
Feoramund
84ad71fdb3
Support ODIN_TEST_PROGRESS_WIDTH=0
...
This will automatically calculate how wide the progress bars should be
based on the package with the greatest number of tests.
The progress width is now capped to 100.
2024-06-02 14:47:07 -04:00
Feoramund
49fa66370f
Report test memory usage only if there's an issue
...
Adds new option `ODIN_TEST_ALWAYS_REPORT_MEMORY`, for when you always
want to see the memory usage report.
2024-06-02 14:47:07 -04:00
Feoramund
e1a3c0e21d
Track memory in the test runner by default
2024-06-02 14:47:07 -04:00
Feoramund
bf42e39b1c
Be specific about int size for Rollback_Stack asserts
...
This should fix tests failing on 32-bit platforms.
2024-06-02 14:47:07 -04:00
Feoramund
b7e1ae7073
Change test runner options to SCREAMING_SNAKE_CASE
...
This commit also changes the name of `test_select` to `ODIN_TEST_NAMES`,
to better conform with the already-existing `-test-name:<name>` option.
2024-06-02 14:47:07 -04:00
Feoramund
e11f3d2520
Fix missing - for define in tests/core/build.bat
2024-06-02 14:47:07 -04:00
Feoramund
dcfda195d2
Send terminal control code to STDOUT instead
...
`STDERR` might be redirected, and this code signals to the terminal to
show the cursor again. Otherwise, the cursor will be invisible.
2024-06-02 14:47:07 -04:00
Feoramund
a1c5bebac7
Fix ANSI redraw eating last log line
2024-06-02 14:47:07 -04:00
Feoramund
89d8df28be
Combine multi-line attributes onto one line
2024-06-02 14:47:07 -04:00
Feoramund
dffc3af86c
Remove safe_heap_allocator from test runner
...
I was under the impression that the default `context.allocator` was not
thread-safe, but I've been told that this is not the case.
2024-06-02 14:47:06 -04:00
Feoramund
eadfbb1318
Forbid singleton allocations from shrinking their block offset
2024-06-02 14:47:06 -04:00
Feoramund
1afc235359
Use plain sort for internal_tests
2024-06-02 14:47:06 -04:00
Feoramund
09ef08f035
Add more sanity checking to mem.Rollback_Stack
2024-06-02 14:47:06 -04:00
Feoramund
0f675fa436
Use uintptr where applicable in mem.Rollback_Stack
2024-06-02 14:47:06 -04:00
Feoramund
568b746c98
Fix indentation
2024-06-02 14:47:06 -04:00
Feoramund
852f694bee
Get tests passing again
...
`T` no longer has a writer assigned to it.
`test_core_cbor.odin` has global state and is run with `odin test`,
so I've set it to use only one thread.
2024-06-02 14:34:31 -04:00
Feoramund
87ea4a2652
Temporarily disable Windows-specific test runner
...
I do not have a Windows machine to test the refactored test runner, and
I am unsure if it would even run correctly on Windows without this
disabled.
2024-06-02 14:34:31 -04:00