summary refs log tree commit diff stats
path: root/tests
diff options
context:
space:
mode:
authorDominik Picheta <dominikpicheta@gmail.com>2017-09-02 15:03:39 +0100
committerDominik Picheta <dominikpicheta@gmail.com>2017-09-02 15:03:39 +0100
commit9b465a236159423c344395194b2e4963e5d8adba (patch)
tree88956c00089c98c6e154df9cd223b6b6fb4206ae /tests
parentc9e093d61d07fb7c4301baf53d10c64edbe3baa4 (diff)
downloadNim-9b465a236159423c344395194b2e4963e5d8adba.tar.gz
Add readme to tests. Add fileDir option to testament & create nimble test.
Diffstat (limited to 'tests')
-rw-r--r--tests/nimble/nimbleDir/simplePkgs/pkgA-0.1.0/pkgA.nimble0
-rw-r--r--tests/nimble/nimbleDir/simplePkgs/pkgA-0.1.0/pkgA/module.nim1
-rw-r--r--tests/nimble/nimbleDir/simplePkgs/pkgB-#head/pkgB.nimble0
-rw-r--r--tests/nimble/nimbleDir/simplePkgs/pkgB-#head/pkgB/module.nim1
-rw-r--r--tests/nimble/nimbleDir/simplePkgs/pkgB-0.1.0/pkgB.nimble0
-rw-r--r--tests/nimble/nimbleDir/simplePkgs/pkgB-0.1.0/pkgB/module.nim1
-rw-r--r--tests/nimble/nimbleDir/simplePkgs/pkgC-#aa11/pkgC.nimble0
-rw-r--r--tests/nimble/nimbleDir/simplePkgs/pkgC-#aa11/pkgC/module.nim1
-rw-r--r--tests/nimble/nimbleDir/simplePkgs/pkgC-#head/pkgC.nimble0
-rw-r--r--tests/nimble/nimbleDir/simplePkgs/pkgC-#head/pkgC/module.nim1
-rw-r--r--tests/nimble/readme.md2
-rw-r--r--tests/nimble/tnimblepath.nim11
-rw-r--r--tests/readme.md62
-rw-r--r--tests/readme.txt13
-rw-r--r--tests/testament/tester.nim12
-rw-r--r--tests/untestable/readme.markdown2
16 files changed, 92 insertions, 15 deletions
diff --git a/tests/nimble/nimbleDir/simplePkgs/pkgA-0.1.0/pkgA.nimble b/tests/nimble/nimbleDir/simplePkgs/pkgA-0.1.0/pkgA.nimble
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/tests/nimble/nimbleDir/simplePkgs/pkgA-0.1.0/pkgA.nimble
diff --git a/tests/nimble/nimbleDir/simplePkgs/pkgA-0.1.0/pkgA/module.nim b/tests/nimble/nimbleDir/simplePkgs/pkgA-0.1.0/pkgA/module.nim
new file mode 100644
index 000000000..6cb3b77d9
--- /dev/null
+++ b/tests/nimble/nimbleDir/simplePkgs/pkgA-0.1.0/pkgA/module.nim
@@ -0,0 +1 @@
+proc pkgATest*(): int = 1
\ No newline at end of file
diff --git a/tests/nimble/nimbleDir/simplePkgs/pkgB-#head/pkgB.nimble b/tests/nimble/nimbleDir/simplePkgs/pkgB-#head/pkgB.nimble
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/tests/nimble/nimbleDir/simplePkgs/pkgB-#head/pkgB.nimble
diff --git a/tests/nimble/nimbleDir/simplePkgs/pkgB-#head/pkgB/module.nim b/tests/nimble/nimbleDir/simplePkgs/pkgB-#head/pkgB/module.nim
new file mode 100644
index 000000000..03d2298a2
--- /dev/null
+++ b/tests/nimble/nimbleDir/simplePkgs/pkgB-#head/pkgB/module.nim
@@ -0,0 +1 @@
+proc pkgBTest*(): int64 = 0xDEADBEEF
\ No newline at end of file
diff --git a/tests/nimble/nimbleDir/simplePkgs/pkgB-0.1.0/pkgB.nimble b/tests/nimble/nimbleDir/simplePkgs/pkgB-0.1.0/pkgB.nimble
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/tests/nimble/nimbleDir/simplePkgs/pkgB-0.1.0/pkgB.nimble
diff --git a/tests/nimble/nimbleDir/simplePkgs/pkgB-0.1.0/pkgB/module.nim b/tests/nimble/nimbleDir/simplePkgs/pkgB-0.1.0/pkgB/module.nim
new file mode 100644
index 000000000..56ff64197
--- /dev/null
+++ b/tests/nimble/nimbleDir/simplePkgs/pkgB-0.1.0/pkgB/module.nim
@@ -0,0 +1 @@
+proc pkgBTest*(): int64 = 0
\ No newline at end of file
diff --git a/tests/nimble/nimbleDir/simplePkgs/pkgC-#aa11/pkgC.nimble b/tests/nimble/nimbleDir/simplePkgs/pkgC-#aa11/pkgC.nimble
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/tests/nimble/nimbleDir/simplePkgs/pkgC-#aa11/pkgC.nimble
diff --git a/tests/nimble/nimbleDir/simplePkgs/pkgC-#aa11/pkgC/module.nim b/tests/nimble/nimbleDir/simplePkgs/pkgC-#aa11/pkgC/module.nim
new file mode 100644
index 000000000..24a67bbe2
--- /dev/null
+++ b/tests/nimble/nimbleDir/simplePkgs/pkgC-#aa11/pkgC/module.nim
@@ -0,0 +1 @@
+proc pkgCTest*(): int64 = 1
\ No newline at end of file
diff --git a/tests/nimble/nimbleDir/simplePkgs/pkgC-#head/pkgC.nimble b/tests/nimble/nimbleDir/simplePkgs/pkgC-#head/pkgC.nimble
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/tests/nimble/nimbleDir/simplePkgs/pkgC-#head/pkgC.nimble
diff --git a/tests/nimble/nimbleDir/simplePkgs/pkgC-#head/pkgC/module.nim b/tests/nimble/nimbleDir/simplePkgs/pkgC-#head/pkgC/module.nim
new file mode 100644
index 000000000..2f243ad82
--- /dev/null
+++ b/tests/nimble/nimbleDir/simplePkgs/pkgC-#head/pkgC/module.nim
@@ -0,0 +1 @@
+proc pkgCTest*(): int64 = 0xDEADBEEF
\ No newline at end of file
diff --git a/tests/nimble/readme.md b/tests/nimble/readme.md
new file mode 100644
index 000000000..10fd21a83
--- /dev/null
+++ b/tests/nimble/readme.md
@@ -0,0 +1,2 @@
+This directory contains tests for the --nimblePath feature.
+
diff --git a/tests/nimble/tnimblepath.nim b/tests/nimble/tnimblepath.nim
new file mode 100644
index 000000000..6ba1be1d1
--- /dev/null
+++ b/tests/nimble/tnimblepath.nim
@@ -0,0 +1,11 @@
+discard """
+  action: run
+  cmd: "nim $target --nimblePath:$fileDir/nimbleDir/simplePkgs $options $file"
+"""
+import pkgA/module as A
+import pkgB/module as B
+import pkgC/module as C
+
+doAssert pkgATest() == 1, "Simple pkgA-0.1.0 wasn't added to path correctly."
+doAssert pkgBTest() == 0xDEADBEEF, "pkgB-#head wasn't picked over pkgB-0.1.0"
+doAssert pkgCTest() == 0xDEADBEEF, "pkgC-#head wasn't picked over pkgC-#aa11"
\ No newline at end of file
diff --git a/tests/readme.md b/tests/readme.md
new file mode 100644
index 000000000..34a2c4bfb
--- /dev/null
+++ b/tests/readme.md
@@ -0,0 +1,62 @@
+This directory contains the test cases.
+
+Each test must have a filename of the form: ``t*.nim``
+
+**Note:** Tests are only compiled by default. In order to get the tester to
+execute the compiled binary, you need to specify a spec with an ``action`` key
+(see below for details).
+
+# Specs
+
+Each test can contain a spec in a ``discard """ ... """`` block.
+
+**Check out the [``parseSpec`` procedure](https://github.com/nim-lang/Nim/blob/devel/tests/testament/specs.nim#L124) in the ``specs`` module for a full and reliable reference**
+
+## action
+
+Specifies what action this test should take.
+
+**Default: compile**
+
+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:
+
+```nim
+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 cat <category>`.
+
+The folder ``rodfiles`` contains special tests that test incremental
+compilation via symbol files.
+
+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.
diff --git a/tests/readme.txt b/tests/readme.txt
deleted file mode 100644
index 0ff9e11c6..000000000
--- a/tests/readme.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-This directory contains the test cases.
-Each test must have a filename of the form: ``t*.nim``
-
-Each test can contain a spec in a ``discard """"""`` block.
-
-The folder ``rodfiles`` contains special tests that test incremental
-compilation via symbol files.
-
-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.
diff --git a/tests/testament/tester.nim b/tests/testament/tester.nim
index b65814534..06fd4acec 100644
--- a/tests/testament/tester.nim
+++ b/tests/testament/tester.nim
@@ -70,10 +70,17 @@ proc normalizeMsg(s: string): string =
     if result.len > 0: result.add '\L'
     result.add x.strip
 
+proc getFileDir(filename: string): string =
+  result = filename.splitFile().dir
+  if not result.isAbsolute():
+    result = getCurrentDir() / result
+
 proc callCompiler(cmdTemplate, filename, options: string,
                   target: TTarget): TSpec =
   let c = parseCmdLine(cmdTemplate % ["target", targetToCmd[target],
-                       "options", options, "file", filename.quoteShell])
+                       "options", options, "file", filename.quoteShell,
+                       "filedir", filename.getFileDir()])
+  echo(c)
   var p = startProcess(command=c[0], args=c[1.. ^1],
                        options={poStdErrToStdOut, poUsePath})
   let outp = p.outputStream
@@ -118,7 +125,8 @@ proc callCompiler(cmdTemplate, filename, options: string,
 proc callCCompiler(cmdTemplate, filename, options: string,
                   target: TTarget): TSpec =
   let c = parseCmdLine(cmdTemplate % ["target", targetToCmd[target],
-                       "options", options, "file", filename.quoteShell])
+                       "options", options, "file", filename.quoteShell,
+                       "filedir", filename.getFileDir()])
   var p = startProcess(command="gcc", args=c[5.. ^1],
                        options={poStdErrToStdOut, poUsePath})
   let outp = p.outputStream
diff --git a/tests/untestable/readme.markdown b/tests/untestable/readme.markdown
new file mode 100644
index 000000000..fcb7f4f28
--- /dev/null
+++ b/tests/untestable/readme.markdown
@@ -0,0 +1,2 @@
+This directory contains tests which are not automatically executed
+for various reasons. Mainly due to dependencies on external services.
\ No newline at end of file