Nim/tests
Andreas Rumpf 979148e863
refactorings to prepare the compiler for IC (#15935)
* added ic specific Nim code; WIP
* make the symbol import mechanism lazy; WIP
* ensure that modules can be imported multiple times
* ambiguity checking
* handle converters and TR macros properly
* make 'enum' test category green again
* special logic for semi-pure enums
* makes nimsuggest tests green again
* fixes nimdata
* makes nimpy green again
* makes more important packages work
2020-12-17 08:01:36 +01:00
..
actiontable
alias
align testament: error instead of silently ignore invalid targets; remove pointless alias target vs targets; document matrix; DRY (#16343) 2020-12-14 10:58:29 +01:00
ambsym
arc testament: error instead of silently ignore invalid targets; remove pointless alias target vs targets; document matrix; DRY (#16343) 2020-12-14 10:58:29 +01:00
arithm fix operators containing percent for VM usage (#13536) 2020-03-11 01:01:25 +01:00
array fix #16025 repr now consistent: does not insert trailing newline (#16034) 2020-11-19 12:12:51 -08:00
assert init checks and 'out' parameters (#14521) 2020-06-23 10:53:57 +02:00
assign fix rtti sizeof for varargs in global scope (#13125) [backport] 2020-01-13 10:17:21 +01:00
astoverload
astspec styleCheck: Fix error for sugar and std/with (#16176) 2020-12-02 20:48:16 +01:00
async testament spec: remove errmsg alias of errormsg (#16188) 2020-11-29 17:32:34 -08:00
bind Add testcases for #11811 and #14315 (#14726) 2020-06-19 14:56:38 +02:00
borrow Add testcase for #14440 (#14771) 2020-06-23 14:17:12 +02:00
casestmt nimout now consistently uses nimoutCheck (#16189) 2020-12-01 21:12:40 +01:00
ccgbugs testament: error instead of silently ignore invalid targets; remove pointless alias target vs targets; document matrix; DRY (#16343) 2020-12-14 10:58:29 +01:00
ccgbugs2 testament: error instead of silently ignore invalid targets; remove pointless alias target vs targets; document matrix; DRY (#16343) 2020-12-14 10:58:29 +01:00
clearmsg
closure testament: error instead of silently ignore invalid targets; remove pointless alias target vs targets; document matrix; DRY (#16343) 2020-12-14 10:58:29 +01:00
cnstseq
collections improve tests for collections (#16328) 2020-12-12 09:33:29 +01:00
compilepragma fixes #10299 (#11324) 2019-05-25 07:33:33 +02:00
compiler testament: error instead of silently ignore invalid targets; remove pointless alias target vs targets; document matrix; DRY (#16343) 2020-12-14 10:58:29 +01:00
compilerapi nimeval errorHook support (#15255) 2020-09-07 20:05:07 +02:00
compilerfeatures new compiler feature: --expandMacro 2019-05-29 20:47:28 +02:00
compiles delete list comprehension (#12392) 2019-11-22 19:57:43 +01:00
concat
concepts make megatest consistent with unjoined tests wrt newlines, honor newlines in output spec (#16151) 2020-11-28 09:09:31 +01:00
constr Add testcase for #10465 (#14943) 2020-07-09 01:51:18 +02:00
constraints
constructors Turn some of the errors back into warnings 2020-04-01 19:38:44 +02:00
controlflow Make unreachable code a warning instead of an error (#14816) 2020-06-29 08:49:53 +02:00
converter add testcase for #9165 (#15787) 2020-10-30 09:57:02 +01:00
coroutines testament: error instead of silently ignore invalid targets; remove pointless alias target vs targets; document matrix; DRY (#16343) 2020-12-14 10:58:29 +01:00
cpp testament: error instead of silently ignore invalid targets; remove pointless alias target vs targets; document matrix; DRY (#16343) 2020-12-14 10:58:29 +01:00
defaultprocparam Add testcase for #12252 (#15676) 2020-10-22 12:51:03 +02:00
deprecated fix #11009 (#14935) 2020-07-09 09:57:35 +02:00
deps Correct all eggs (#15906) 2020-11-10 21:53:25 +01:00
destructor testament: error instead of silently ignore invalid targets; remove pointless alias target vs targets; document matrix; DRY (#16343) 2020-12-14 10:58:29 +01:00
dir with space fixes #10042 (allow spaces in import) (#10504) 2019-01-31 08:20:00 +01:00
discard improve the 'has to be discarded' error message 2020-05-02 22:31:19 +02:00
distinct Make {.requiresInit.} to work for distinct types (#15869) 2020-11-06 18:56:09 +00:00
distros fix tdistros test which was failing on Nightlies 2020-04-28 15:59:32 +02:00
dll fix #16265; fix #13999 (HCR on OSX); cgen now does not line wrap string litterals (#16329) 2020-12-14 11:17:24 +01:00
effects rationals.nim: Use func everywhere (#16302) 2020-12-09 16:17:50 +01:00
enum fix #15145 (#15816) 2020-11-02 08:56:51 +01:00
errmsgs strutils.nim: Use func everywhere (#16281) 2020-12-07 17:07:12 +01:00
exception testament: error instead of silently ignore invalid targets; remove pointless alias target vs targets; document matrix; DRY (#16343) 2020-12-14 10:58:29 +01:00
exprs update tests that tested for the 'discard' error messages 2020-05-02 22:31:19 +02:00
fields make tests green again 2019-05-27 21:29:02 +02:00
flags testament: error instead of silently ignore invalid targets; remove pointless alias target vs targets; document matrix; DRY (#16343) 2020-12-14 10:58:29 +01:00
float targets: use cpp instead of c++ everywhere (was by far the most common) (#15961) 2020-11-14 10:08:15 +01:00
fragmentation
friends
gc gc_regions: cleanup & fixes for deallocation (#11920) 2020-08-17 20:20:48 +02:00
generics testament: error instead of silently overwrite a spec (#16166) 2020-11-29 10:42:50 -08:00
gensym fixes yet another gensym regression (#12145) 2019-09-06 00:45:00 +02:00
global
ic Incremental compilation (IC): Improvements (#11881) 2019-08-08 08:41:05 +02:00
implicit
import_in_config
init init checks and 'out' parameters (#14521) 2020-06-23 10:53:57 +02:00
isolate 'isolate' builtin; refs https://github.com/nim-lang/RFCs/issues/244 (#15011) 2020-07-20 07:50:19 +02:00
iter testament: error instead of silently ignore invalid targets; remove pointless alias target vs targets; document matrix; DRY (#16343) 2020-12-14 10:58:29 +01:00
js unittest: use defines instead of env vars (#16165) 2020-12-10 00:57:52 +01:00
lent testament spec: remove errmsg alias of errormsg (#16188) 2020-11-29 17:32:34 -08:00
let Allow let to not have value when using importc (#14258) 2020-05-12 20:28:18 +02:00
lexer
lookups make megatest consistent with unjoined tests wrt newlines, honor newlines in output spec (#16151) 2020-11-28 09:09:31 +01:00
macros fix broken => for typed procs with pragmas (#16190) 2020-12-01 12:01:36 +01:00
magics make megatest consistent with unjoined tests wrt newlines, honor newlines in output spec (#16151) 2020-11-28 09:09:31 +01:00
manyloc fixed article duplication typos (#16216) 2020-12-02 09:15:29 +01:00
metatype make megatest consistent with unjoined tests wrt newlines, honor newlines in output spec (#16151) 2020-11-28 09:09:31 +01:00
method Error -> Defect for defects (#13908) 2020-04-28 19:56:01 +02:00
misc fixes #15939, fixes #15464, fixes #16169, fixes #16226 VM now supports addr(mystring[ind]) (index + index assignment) (#15987) 2020-12-03 16:55:43 +01:00
modules refactorings to prepare the compiler for IC (#15935) 2020-12-17 08:01:36 +01:00
namedparams fixes #12196 2019-09-16 12:12:44 +02:00
newconfig deprecate existsDir; use dirExists instead (#14884) 2020-07-03 23:04:23 +02:00
nimble testament spec: remove errmsg alias of errormsg (#16188) 2020-11-29 17:32:34 -08:00
nimdoc fix #15916 (#15917) [backport] 2020-11-12 09:31:35 +01:00
niminaction Remove deprecated stuff from stdlib (#14699) 2020-06-17 15:25:02 +02:00
notnil Add tests for #8481, #6490 and #4061 (#14083) 2020-04-23 19:52:33 +02:00
objects testament: error instead of silently ignore invalid targets; remove pointless alias target vs targets; document matrix; DRY (#16343) 2020-12-14 10:58:29 +01:00
objvariant Better case coverage error message for alias and range enum (#12913) 2019-12-18 10:29:01 +01:00
openarray clean up deprecated stuff and unused imports in tests (#13059) 2020-01-07 09:49:08 +01:00
osproc targets: use cpp instead of c++ everywhere (was by far the most common) (#15961) 2020-11-14 10:08:15 +01:00
overflw Fix #15706 (#15846) 2020-11-07 08:00:41 +00:00
overload make megatest consistent with unjoined tests wrt newlines, honor newlines in output spec (#16151) 2020-11-28 09:09:31 +01:00
package_level_objects
parallel workaround #15725 disable freebsd tblocking_channel.nim (#15726) 2020-10-26 10:53:39 +02:00
parser Add testcase for invalid if statement (#15313) 2020-09-12 14:28:19 +02:00
pragmas fix #12558 (#15864) 2020-11-09 11:46:25 +01:00
proc testament spec: remove errmsg alias of errormsg (#16188) 2020-11-29 17:32:34 -08:00
procvar
range Error -> Defect for defects (#13908) 2020-04-28 19:56:01 +02:00
rational Error -> Defect for defects (#13908) 2020-04-28 19:56:01 +02:00
realtimeGC fixed article duplication typos (#16216) 2020-12-02 09:15:29 +01:00
sets tables/sharedtables/intsets/etc: fix #13496, #13504, #13505; add lots of tests (#13498) [backport] 2020-02-26 22:07:09 +01:00
showoff Clean up macros (#14959) 2020-07-14 16:44:56 +02:00
specialops make megatest consistent with unjoined tests wrt newlines, honor newlines in output spec (#16151) 2020-11-28 09:09:31 +01:00
statictypes make megatest consistent with unjoined tests wrt newlines, honor newlines in output spec (#16151) 2020-11-28 09:09:31 +01:00
stdlib improve tstrutils: test c, cpp, js, vm; cleanups (#16357) 2020-12-15 14:55:41 +01:00
stmt fix #15972 (#15994) 2020-11-18 00:14:14 +00:00
system testament: error instead of silently ignore invalid targets; remove pointless alias target vs targets; document matrix; DRY (#16343) 2020-12-14 10:58:29 +01:00
template make megatest consistent with unjoined tests wrt newlines, honor newlines in output spec (#16151) 2020-11-28 09:09:31 +01:00
testament fix #16330 tshould_not_work (#16342) 2020-12-14 11:37:27 +01:00
testdata
threads faster CIs (#13803) 2020-03-30 13:18:12 +02:00
tools new feature: --staticBoundChecks:on to enforce static array index checking (#10965) 2020-03-18 14:25:10 +01:00
trmacros Reenable a few tests 2020-07-14 19:50:42 +02:00
tuples cleanup old codes (#16173) 2020-11-30 09:41:50 +08:00
typerel Reenable a few tests 2020-07-14 19:50:42 +02:00
types Fix 14127 js from int to int casting (#15918) 2020-11-11 17:41:49 +00:00
untestable Deprecate and/or remove ospaths (#14767) 2020-06-23 10:51:33 +02:00
usingstmt Clean up macros (#14959) 2020-07-14 16:44:56 +02:00
valgrind fix #15631 (#15632) 2020-10-19 22:25:43 +02:00
varres testament spec: remove errmsg alias of errormsg (#16188) 2020-11-29 17:32:34 -08:00
varstmt
views ensure the Nim compiler works with --experimental:strictFuncs --experimental:views [backport:1.4] (#15737) 2020-10-26 21:08:57 +01:00
vm fixes #16069; [backport:1.2] [backport:1.4] (#16115) 2020-11-24 16:09:00 +01:00
ast_pattern_matching.nim add tastspec (and ast_pattern_matching) (#10863) 2019-03-19 11:45:29 +01:00
config.nims unittest: use defines instead of env vars (#16165) 2020-12-10 00:57:52 +01:00
dummy.txt
js.html
js.nim
m14634.nim fix #13166 tioselectors flaky test on freebsd+OSX (#14634) 2020-06-12 21:19:23 -07:00
mmaptest.nim Fix spellings (#12277) [backport] 2019-09-27 07:02:54 +02:00
readme.md Update link to parseSpec proc 2020-06-28 00:13:54 +02:00
rectest.nim
stckovfl.nim
test_nimscript.nims doAssertRaises improvements; nimscript supports except Exception as e (#15765) 2020-11-12 09:25:41 +01:00

This directory contains the test cases.

Each test must have a filename of the form: t*.nim

Note: Testament is only aware of tests under a directory (eg tests/foo/) and will ignore top-level tests like tests/tbar.nim.

Specs

Each test can contain a spec in a discard """ ... """ block.

Check out the parseSpec procedure in the specs module for a full and reliable reference

action

Specifies what action this test should take.

Default: run

Options:

  • compile - compiles the module and fails the test if compilations fails.
  • run - compiles and runs the module, fails the test if compilation or execution of test code fails.
  • reject - compiles the module and fails the test if compilation succeeds.

There are certain spec keys that imply run, including output and outputsub.

cmd

Specifies the Nim command to use for compiling the test.

There are a number of variables that are replaced in this spec option:

  • $target - the compilation target, e.g. c.
  • $options - the options for the compiler.
  • $file - the filename of the test.
  • $filedir - the directory of the test file.

Example:

discard """
  cmd: "nim $target --nimblePath:./nimbleDir/simplePkgs $options $file"
"""

Categories

Each folder under this directory represents a test category, which can be tested by running koch tests pcat <category> (or cat to avoid parallel testing, which is slower).

The folder dll contains simple DLL tests.

The folder realtimeGC contains a test for validating that the realtime GC can run properly without linking against the nimrtl.dll/so. It includes a C client and platform specific build files for manual compilation.