diff options
Diffstat (limited to 'tests')
28 files changed, 70 insertions, 55 deletions
diff --git a/tests/assign/tobjasgn.nim b/tests/assign/tobjasgn.nim index 5f411063f..23a31252d 100644 --- a/tests/assign/tobjasgn.nim +++ b/tests/assign/tobjasgn.nim @@ -1,16 +1,21 @@ discard """ - output: '''0 + output: '''8 5 0 0 pre test a:test b:1 c:2 haha:3 assignment test a:test b:1 c:2 haha:3 ''' """ -type TSomeObj = object of TObject - Variable: int - -var a = TSomeObj() +# bug #1005 + +type + TSomeObj = object of TObject + a, b: int + PSomeObj = ref object + a, b: int -echo a.Variable.`$` +var a = TSomeObj(a: 8) +var b = PSomeObj(a: 5) +echo a.a, " ", b.a, " ", a.b, " ", b.b # bug #575 diff --git a/tests/async/tasyncawait.nim b/tests/async/tasyncawait.nim index bd722842f..ffceeaee6 100644 --- a/tests/async/tasyncawait.nim +++ b/tests/async/tasyncawait.nim @@ -1,6 +1,5 @@ discard """ file: "tasyncawait.nim" - cmd: "nimrod cc --hints:on $# $#" output: "5000" """ import asyncdispatch, rawsockets, net, strutils, os diff --git a/tests/async/tasynciossl.nim b/tests/async/tasynciossl.nim index fbed46efb..26c4c587c 100644 --- a/tests/async/tasynciossl.nim +++ b/tests/async/tasynciossl.nim @@ -1,6 +1,6 @@ discard """ file: "tasynciossl.nim" - cmd: "nimrod cc --hints:on --define:ssl $# $#" + cmd: "nimrod $target --hints:on --define:ssl $options $file" output: "20000" """ import sockets, asyncio, strutils, times @@ -88,4 +88,4 @@ while true: break assert msgCount == (swarmSize * messagesToSend) * serverCount -echo(msgCount) \ No newline at end of file +echo(msgCount) diff --git a/tests/concurrency/tnodeadlocks.nim b/tests/concurrency/tnodeadlocks.nim index 3f27e24f6..d44196039 100644 --- a/tests/concurrency/tnodeadlocks.nim +++ b/tests/concurrency/tnodeadlocks.nim @@ -1,6 +1,6 @@ discard """ outputsub: "101" - cmd: "nimrod cc --hints:on --threads:on $# $#" + cmd: "nimrod $target --hints:on --threads:on $options $file" """ import os, locks diff --git a/tests/dll/client.nim b/tests/dll/client.nim index a78cef1d4..45fa8f639 100644 --- a/tests/dll/client.nim +++ b/tests/dll/client.nim @@ -1,6 +1,6 @@ discard """ output: "Done" - cmd: "nimrod cc --debuginfo --hints:on --define:useNimRtl $# $#" + cmd: "nimrod $target --debuginfo --hints:on --define:useNimRtl $options $file" """ type diff --git a/tests/dll/server.nim b/tests/dll/server.nim index ae2acc893..b2fac9ecc 100644 --- a/tests/dll/server.nim +++ b/tests/dll/server.nim @@ -1,5 +1,5 @@ discard """ - cmd: "nimrod cc --debuginfo --hints:on --define:useNimRtl --app:lib $# $#" + cmd: "nimrod $target --debuginfo --hints:on --define:useNimRtl --app:lib $options $file" """ type diff --git a/tests/generics/tmetafield.nim b/tests/generics/tmetafield.nim index f2fac8fdd..e1bc43ce3 100644 --- a/tests/generics/tmetafield.nim +++ b/tests/generics/tmetafield.nim @@ -1,5 +1,5 @@ discard """ - cmd: "nimrod check $# $#" + cmd: "nimrod check $options $file" errormsg: "'proc' is not a concrete type" errormsg: "'Foo' is not a concrete type." errormsg: "invalid type: 'TBaseMed'" diff --git a/tests/generics/tthread_generic.nim b/tests/generics/tthread_generic.nim index beae4b652..7109bba18 100644 --- a/tests/generics/tthread_generic.nim +++ b/tests/generics/tthread_generic.nim @@ -1,5 +1,5 @@ discard """ - cmd: "nimrod cc --hints:on --threads:on $# $#" + cmd: "nimrod $target --hints:on --threads:on $options $file" """ type diff --git a/tests/iter/titer2.nim b/tests/iter/titer2.nim index f8967109e..71c7327a7 100644 --- a/tests/iter/titer2.nim +++ b/tests/iter/titer2.nim @@ -1,6 +1,6 @@ discard """ output: '''true''' - cmd: "nimrod cc --gc:none --hints:on --warnings:off $# $#" + cmd: "nimrod $target --gc:none --hints:on --warnings:off $options $file" """ import hashes diff --git a/tests/js.nim b/tests/js.nim index f31bb10d9..becc17834 100644 --- a/tests/js.nim +++ b/tests/js.nim @@ -1,5 +1,5 @@ discard """ - cmd: "nimrod js --hints:on $# $#" + cmd: "nimrod js --hints:on $options $file" """ # This file tests the JavaScript generator diff --git a/tests/js/test1.nim b/tests/js/test1.nim index 3f3d5f02c..09ba30676 100644 --- a/tests/js/test1.nim +++ b/tests/js/test1.nim @@ -1,5 +1,4 @@ discard """ - cmd: "nimrod js --hints:on $# $#" output: "1261129" """ diff --git a/tests/js/test2.nim b/tests/js/test2.nim index 1342ed15d..5a734358c 100644 --- a/tests/js/test2.nim +++ b/tests/js/test2.nim @@ -1,5 +1,4 @@ discard """ - cmd: "nimrod js --hints:on -r $# $#" output: '''foo js 3.14''' """ diff --git a/tests/js/testmagic.nim b/tests/js/testmagic.nim index 2c02d24be..5f793ae05 100644 --- a/tests/js/testmagic.nim +++ b/tests/js/testmagic.nim @@ -1,5 +1,4 @@ discard """ - cmd: "nimrod js --hints:on -r $# $#" output: '''true''' """ diff --git a/tests/misc/tgtk.nim b/tests/misc/tgtk.nim index 7febb0ab8..82227689d 100644 --- a/tests/misc/tgtk.nim +++ b/tests/misc/tgtk.nim @@ -1,4 +1,6 @@ - +discard """ + disabled: true +""" import gtk2, glib2, atk, gdk2, gdk2pixbuf, libglade2, pango, pangoutils diff --git a/tests/misc/tmandelbrot.nim b/tests/misc/tmandelbrot.nim index 1e39c8756..bb1b46d89 100644 --- a/tests/misc/tmandelbrot.nim +++ b/tests/misc/tmandelbrot.nim @@ -1,5 +1,5 @@ discard """ - cmd: "nimrod cc --hints:on -d:release $# $#" + cmd: "nimrod $target --hints:on -d:release $options $file" """ # -*- nimrod -*- diff --git a/tests/sets/tsets2.nim b/tests/sets/tsets2.nim index ac977096b..7f313e14f 100644 --- a/tests/sets/tsets2.nim +++ b/tests/sets/tsets2.nim @@ -1,6 +1,5 @@ discard """ output: '''true''' - cmd: "nimrod cc --hints:on $# $#" """ import hashes, sets diff --git a/tests/stdlib/tsockets.nim b/tests/stdlib/tsockets.nim index 6078504f5..ff566df74 100644 --- a/tests/stdlib/tsockets.nim +++ b/tests/stdlib/tsockets.nim @@ -1,6 +1,7 @@ -import sockets +import sockets, os var s: TSocket s = socket() +if s == InvalidSocket: osError(osLastError()) s.connect("www.google.com", TPort(80)) diff --git a/tests/stdlib/tunidecode.nim b/tests/stdlib/tunidecode.nim index cb6589d60..647858825 100644 --- a/tests/stdlib/tunidecode.nim +++ b/tests/stdlib/tunidecode.nim @@ -1,5 +1,5 @@ discard """ - cmd: "nimrod cc --hints:on -d:embedUnidecodeTable $# $#" + cmd: "nimrod $target --hints:on -d:embedUnidecodeTable $options $file" output: "Ausserst" """ diff --git a/tests/table/ttables.nim b/tests/table/ttables.nim index 681ff5424..60446b5a3 100644 --- a/tests/table/ttables.nim +++ b/tests/table/ttables.nim @@ -1,6 +1,5 @@ discard """ output: '''true''' - cmd: "nimrod cc --hints:on $# $#" """ import hashes, tables diff --git a/tests/table/ttables2.nim b/tests/table/ttables2.nim index b88c8dfbf..611f3f8ec 100644 --- a/tests/table/ttables2.nim +++ b/tests/table/ttables2.nim @@ -1,6 +1,5 @@ discard """ output: '''true''' - cmd: "nimrod cc --hints:on $# $#" """ import tables diff --git a/tests/testament/categories.nim b/tests/testament/categories.nim index 9bb4838e0..faccfed57 100644 --- a/tests/testament/categories.nim +++ b/tests/testament/categories.nim @@ -179,10 +179,12 @@ proc jsTests(r: var TResults, cat: Category, options: string) = for t in os.walkFiles("tests/js/t*.nim"): test(t) - for testfile in ["texceptions", "texcpt1", "texcsub", "tfinally", - "tfinally2", "tfinally3", "tactiontable", "tmultim1", - "tmultim3", "tmultim4"]: - test "tests/run/" & testfile & ".nim" + for testfile in ["exception/texceptions", "exception/texcpt1", + "exception/texcsub", "exception/tfinally", + "exception/tfinally2", "exception/tfinally3", + "actiontable/tactiontable", "method/tmultim1", + "method/tmultim3", "method/tmultim4"]: + test "tests/" & testfile & ".nim" # ------------------------- manyloc ------------------------------------------- #proc runSpecialTests(r: var TResults, options: string) = diff --git a/tests/testament/specs.nim b/tests/testament/specs.nim index 65e17a453..225ea1891 100644 --- a/tests/testament/specs.nim +++ b/tests/testament/specs.nim @@ -10,7 +10,7 @@ import parseutils, strutils, os, osproc, streams, parsecfg const - cmdTemplate* = r"nimrod cc --hints:on $# $#" + cmdTemplate* = r"nimrod $target --hints:on $options $file" type TTestAction* = enum @@ -51,6 +51,7 @@ type const targetToExt*: array[TTarget, string] = ["c", "cpp", "m", "js"] + targetToCmd*: array[TTarget, string] = ["c", "cpp", "objc", "js"] when not defined(parseCfgBool): # candidate for the stdlib: diff --git a/tests/testament/tester.nim b/tests/testament/tester.nim index 6655b1b79..757e54889 100644 --- a/tests/testament/tester.nim +++ b/tests/testament/tester.nim @@ -53,8 +53,10 @@ let pegSuccess = peg"'Hint: operation successful'.*" pegOfInterest = pegLineError / pegOtherError -proc callCompiler(cmdTemplate, filename, options: string): TSpec = - let c = parseCmdLine(cmdTemplate % [options, filename]) +proc callCompiler(cmdTemplate, filename, options: string, + target: TTarget): TSpec = + let c = parseCmdLine(cmdTemplate % ["target", targetToCmd[target], + "options", options, "file", filename]) var p = startProcess(command=c[0], args=c[1.. -1], options={poStdErrToStdOut, poUseShell}) let outp = p.outputStream @@ -111,10 +113,10 @@ proc addResult(r: var TResults, test: TTest, r.data.addf("$#\t$#\t$#\t$#", name, expected, given, $success) if success notin {reSuccess, reIgnored}: styledEcho styleBright, name, fgRed, " [", $success, "]" - styledEcho styleDim, "EXPECTED:" - echo expected - styledEcho styleDim, "GIVEN:" - echo given + echo"Expected:" + styledEcho styleBright, expected + echo"Given:" + styledEcho styleBright, given proc cmpMsgs(r: var TResults, expected, given: TSpec, test: TTest) = if strip(expected.msg) notin strip(given.msg): @@ -152,7 +154,7 @@ proc testSpec(r: var TResults, test: TTest) = # major entry point for a single test let tname = test.name.addFileExt(".nim") inc(r.total) - echo extractFilename(tname) + styledEcho "Processing ", fgCyan, extractFilename(tname) var expected = parseSpec(tname) if expected.err == reIgnored: r.addResult(test, "", "", reIgnored) @@ -160,13 +162,15 @@ proc testSpec(r: var TResults, test: TTest) = else: case expected.action of actionCompile: - var given = callCompiler(expected.cmd, test.name, test.options) + var given = callCompiler(expected.cmd, test.name, test.options, + test.target) if given.err == reSuccess: codegenCheck(test, expected.ccodeCheck, given) r.addResult(test, "", given.msg, given.err) if given.err == reSuccess: inc(r.passed) of actionRun: - var given = callCompiler(expected.cmd, test.name, test.options) + var given = callCompiler(expected.cmd, test.name, test.options, + test.target) if given.err != reSuccess: r.addResult(test, "", given.msg, given.err) else: @@ -176,10 +180,13 @@ proc testSpec(r: var TResults, test: TTest) = exeFile = dir / "nimcache" / file & ".js" else: exeFile = changeFileExt(tname, ExeExt) - if existsFile(exeFile): + if test.target == targetJS and findExe("nodejs") == "": + r.addResult(test, expected.outp, "nodejs binary not in PATH", + reExeNotFound) + return var (buf, exitCode) = execCmdEx( - (if test.target==targetJS: "node " else: "") & exeFile) + (if test.target == targetJS: "nodejs " else: "") & exeFile) if exitCode != expected.ExitCode: r.addResult(test, "exitcode: " & $expected.exitCode, "exitcode: " & $exitCode, reExitCodesDiffer) @@ -194,7 +201,8 @@ proc testSpec(r: var TResults, test: TTest) = else: r.addResult(test, expected.outp, "executable not found", reExeNotFound) of actionReject: - var given = callCompiler(expected.cmd, test.name, test.options) + var given = callCompiler(expected.cmd, test.name, test.options, + test.target) cmpMsgs(r, expected, given, test) proc testNoSpec(r: var TResults, test: TTest) = @@ -202,7 +210,7 @@ proc testNoSpec(r: var TResults, test: TTest) = let tname = test.name.addFileExt(".nim") inc(r.total) echo extractFilename(tname) - let given = callCompiler(cmdTemplate, test.name, test.options) + let given = callCompiler(cmdTemplate, test.name, test.options, test.target) r.addResult(test, "", given.msg, given.err) if given.err == reSuccess: inc(r.passed) @@ -223,7 +231,7 @@ proc main() = os.putenv "NIMTEST_NO_COLOR", "1" os.putenv "NIMTEST_OUTPUT_LVL", "PRINT_FAILURES" - backend.open() + backend.open() var optPrintResults = false var p = initOptParser() p.next() @@ -238,9 +246,12 @@ proc main() = var r = initResults() case action of "all": - for kind, dir in walkDir("tests"): - if kind == pcDir and dir notin ["testament", "testdata", "nimcache"]: - processCategory(r, Category(dir), p.cmdLineRest.string) + let testsDir = "tests" & dirSep + for kind, dir in walkDir(testsDir): + assert testsDir.startsWith(testsDir) + let cat = dir[testsDir.len .. -1] + if kind == pcDir and cat notin ["testament", "testdata", "nimcache"]: + processCategory(r, Category(cat), p.cmdLineRest.string) for a in AdditionalCategories: processCategory(r, Category(a), p.cmdLineRest.string) of "c", "cat", "category": @@ -255,11 +266,11 @@ proc main() = else: quit usage - if optPrintResults: + if optPrintResults: if action == "html": openDefaultBrowser(resultsFile) else: echo r, r.data backend.close() - + if paramCount() == 0: quit usage main() diff --git a/tests/threads/tthreadanalysis.nim b/tests/threads/tthreadanalysis.nim index 3a46cd185..383680d81 100644 --- a/tests/threads/tthreadanalysis.nim +++ b/tests/threads/tthreadanalysis.nim @@ -2,7 +2,7 @@ discard """ outputsub: "101" msg: "Warning: write to foreign heap" line: 37 - cmd: "nimrod cc --hints:on --threads:on $# $#" + cmd: "nimrod $target --hints:on --threads:on $options $file" """ import os diff --git a/tests/threads/tthreadanalysis2.nim b/tests/threads/tthreadanalysis2.nim index 07f0e61fd..697e2cb22 100644 --- a/tests/threads/tthreadanalysis2.nim +++ b/tests/threads/tthreadanalysis2.nim @@ -2,7 +2,7 @@ discard """ file: "tthreadanalysis2.nim" line: 42 errormsg: "write to foreign heap" - cmd: "nimrod cc --hints:on --threads:on $# $#" + cmd: "nimrod $target --hints:on --threads:on $options $file" """ import os diff --git a/tests/threads/tthreadanalysis3.nim b/tests/threads/tthreadanalysis3.nim index d7a838fec..3c17fe7e2 100644 --- a/tests/threads/tthreadanalysis3.nim +++ b/tests/threads/tthreadanalysis3.nim @@ -2,7 +2,7 @@ discard """ file: "tthreadanalysis3.nim" line: 35 errormsg: "write to foreign heap" - cmd: "nimrod cc --hints:on --threads:on $# $#" + cmd: "nimrod $target --hints:on --threads:on $options $file" """ import os diff --git a/tests/threads/tthreadheapviolation1.nim b/tests/threads/tthreadheapviolation1.nim index 7ca6f7928..f3a36e036 100644 --- a/tests/threads/tthreadheapviolation1.nim +++ b/tests/threads/tthreadheapviolation1.nim @@ -1,7 +1,7 @@ discard """ line: 12 errormsg: "write to foreign heap" - cmd: "nimrod cc --hints:on --threads:on $# $#" + cmd: "nimrod $target --hints:on --threads:on $options $file" """ var diff --git a/tests/types/tillegaltyperecursion.nim b/tests/types/tillegaltyperecursion.nim index 711f458bf..114e4d08e 100644 --- a/tests/types/tillegaltyperecursion.nim +++ b/tests/types/tillegaltyperecursion.nim @@ -1,5 +1,5 @@ discard """ - cmd: "nimrod c --threads:on $# $#" + cmd: "nimrod $target --threads:on $options $file" errormsg: "illegal recursion in type 'TIRC'" line: 16 """ |