@@ -43,7 +43,7 @@ Options:
43
43
--targets:"c c++ js objc" run tests for specified targets (default: all)
44
44
--nim:path use a particular nim executable (default: $$PATH/nim)
45
45
--directory:dir Change to directory dir before reading the tests or doing anything else.
46
- --colors:on|off Turn messagescoloring on|off.
46
+ --colors:on|off Turn messages coloring on|off.
47
47
--backendLogging:on|off Disable or enable backend logging. By default turned on.
48
48
--megatest:on|off Enable or disable megatest. Default is on.
49
49
--skipFrom:file Read tests to skip from `file` - one test per line, # comments ignored
@@ -134,15 +134,14 @@ proc nimcacheDir(filename, options: string, target: TTarget): string =
134
134
result = " nimcache" / (filename & '_' & hashInput.getMD5)
135
135
136
136
proc prepareTestArgs(cmdTemplate, filename, options, nimcache: string ,
137
- target: TTarget, extraOptions= " " ): seq [string ] =
138
- let options = options & " " & quoteShell(" --nimCache:" & nimcache) & extraOptions
137
+ target: TTarget, extraOptions = " " ): seq [string ] =
138
+ let options = options & " " & quoteShell(" --nimCache:" & nimcache) & " " & extraOptions
139
139
result = parseCmdLine(cmdTemplate % [" target" , targetToCmd[target],
140
140
" options" , options, " file" , filename.quoteShell,
141
141
" filedir" , filename.getFileDir()])
142
142
143
143
proc callCompiler(cmdTemplate, filename, options, nimcache: string ,
144
- target: TTarget,
145
- extraOptions= " " ): TSpec =
144
+ target: TTarget, extraOptions = " " ): TSpec =
146
145
let c = prepareTestArgs(cmdTemplate, filename, options, nimcache, target,
147
146
extraOptions)
148
147
result .cmd = quoteShellCommand(c)
@@ -421,14 +420,16 @@ proc checkDisabled(r: var TResults, test: TTest): bool =
421
420
422
421
var count = 0
423
422
424
- proc testSpecHelper(r: var TResults, test: TTest, expected: TSpec, target: TTarget, nimcache: string ) =
423
+ proc testSpecHelper(r: var TResults, test: TTest, expected: TSpec,
424
+ target: TTarget, nimcache: string , extraOptions = " " ) =
425
425
case expected.action
426
426
of actionCompile:
427
427
var given = callCompiler(expected.getCmd, test.name, test.options, nimcache, target,
428
428
extraOptions = " --stdout --hint[Path]:off --hint[Processing]:off" )
429
429
compilerOutputTests(test, target, given, expected, r)
430
430
of actionRun:
431
- var given = callCompiler(expected.getCmd, test.name, test.options, nimcache, target)
431
+ var given = callCompiler(expected.getCmd, test.name, test.options,
432
+ nimcache, target, extraOptions)
432
433
if given.err != reSuccess:
433
434
r.addResult(test, target, " " , " $ " & given.cmd & " \n " & given.nimout, given.err)
434
435
else :
@@ -484,6 +485,18 @@ proc testSpecHelper(r: var TResults, test: TTest, expected: TSpec, target: TTarg
484
485
nimcache, target)
485
486
cmpMsgs(r, expected, given, test, target)
486
487
488
+ proc targetHelper(r: var TResults, test: TTest, expected: TSpec, extraOptions = " " ) =
489
+ for target in expected.targets:
490
+ inc(r.total)
491
+ if target notin gTargets:
492
+ r.addResult(test, target, " " , " " , reDisabled)
493
+ inc(r.skipped)
494
+ elif simulate:
495
+ inc count
496
+ echo " testSpec count: " , count, " expected: " , expected
497
+ else :
498
+ let nimcache = nimcacheDir(test.name, test.options, target)
499
+ testSpecHelper(r, test, expected, target, nimcache, extraOptions)
487
500
488
501
proc testSpec(r: var TResults, test: TTest, targets: set [TTarget] = {}) =
489
502
var expected = test.spec
@@ -498,17 +511,11 @@ proc testSpec(r: var TResults, test: TTest, targets: set[TTarget] = {}) =
498
511
# still no target specified at all
499
512
if expected.targets == {}:
500
513
expected.targets = {getTestSpecTarget()}
501
- for target in expected.targets:
502
- inc(r.total)
503
- if target notin gTargets:
504
- r.addResult(test, target, " " , " " , reDisabled)
505
- inc(r.skipped)
506
- elif simulate:
507
- inc count
508
- echo " testSpec count: " , count, " expected: " , expected
509
- else :
510
- let nimcache = nimcacheDir(test.name, test.options, target)
511
- testSpecHelper(r, test, expected, target, nimcache)
514
+ if test.spec.matrix.len > 0 :
515
+ for m in test.spec.matrix:
516
+ targetHelper(r, test, expected, m)
517
+ else :
518
+ targetHelper(r, test, expected)
512
519
513
520
proc testSpecWithNimcache(r: var TResults, test: TTest; nimcache: string ) =
514
521
if not checkDisabled(r, test): return
0 commit comments