diff options
author | Grzegorz Adam Hankiewicz <gradha@imap.cc> | 2013-07-06 18:51:37 +0200 |
---|---|---|
committer | Grzegorz Adam Hankiewicz <gradha@imap.cc> | 2013-07-06 18:51:37 +0200 |
commit | 4ed44fc6348cc09a8c809a76b6f21a456fa0d0c7 (patch) | |
tree | 64f3ea85798cafb1340ffae809059d043f1c10c3 | |
parent | 9e649ffdf288d09e80ca727c8f444be548b1a571 (diff) | |
download | Nim-4ed44fc6348cc09a8c809a76b6f21a456fa0d0c7.tar.gz |
Moves caasdriver comments into idetools document.
-rw-r--r-- | doc/idetools.txt | 97 | ||||
-rw-r--r-- | tests/caasdriver.nim | 40 |
2 files changed, 96 insertions, 41 deletions
diff --git a/doc/idetools.txt b/doc/idetools.txt index ce6062e63..59e2ee49e 100644 --- a/doc/idetools.txt +++ b/doc/idetools.txt @@ -17,7 +17,7 @@ definition of symbols or suggestions for completion. This document will guide you through the available options. If you want to look at practical examples of idetools support you can look -at the test files found in ``tests/caas/*.txt`` or `various editor +at the test files found in the `Test suite`_ or `various editor integrations <https://github.com/Araq/Nimrod/wiki/Editor-Support>`_ already available. @@ -190,7 +190,7 @@ of text it thinks necessary plus an empty line to indicate the end of the answer. You can find examples of client/server communication in the idetools -tests found in ``tests/caas/*.txt``. +tests found in the `Test suite`_. Parsing idetools output @@ -467,3 +467,96 @@ skVar --> col 2: $MODULE.writeTempFile.output col 3: TFile col 7: "" + + +Test suite +========== + +To verify that idetools is working properly there are files in the +``tests/caas/`` directory which provide unit testing. If you find +odd idetools behaviour and are able to reproduce it, you are welcome +to report it as a bug and add a test to the suite to avoid future +regressions. + + +Running the test suite +---------------------- + +At the moment idetools support is still in development so the test +suite is not integrated with the main test suite and you have to +run it manually. First you have to compile the tester:: + + $ cd my/nimrod/checkout + $ nimrod c tests/tester.nim + +Running the tester without parameters will display some options. +To run the caas test suite (and other special tests) you need to +use the `special` command. You need to run this command from the +root of the checkout or it won't be able to open the required files:: + + $ ./tests/tester special + +However this is a roundabout way of running the test suite. You can +also compile and run ``tests/caasdriver.nim`` manually. In fact, +running it manually will allow you to specify special parameters +too. Example:: + + $ cd my/nimrod/checkout/tests + $ nimrod c caasdriver.nim + +Running the ``caasdriver`` without parameters will attempt to process +all the test cases in all three operation modes. If a test succeeds +nothing will be printed and the process will exit with zero. If any +test fails, the specific line of the test preceeding the failure +and the failure itself will be dumped to stdout, along with a final +indicator of the success state and operation mode. You can pass the +parameter ``verbose`` to force all output even on successfull tests. + +The normal operation mode is called ``ProcRun`` and it involves +starting a process for each command or query, similar to running +manually the Nimrod compiler from the commandline. The ``CaasRun`` +mode starts a server process to answer all queries. The ``SymbolProcRun`` +mode is used by compiler developers. This means that running all +tests involves processing all ``*.txt`` files three times, which +can be quite time consuming. + +If you don't want to run all the test case files you can pass any +substring as a parameter to ``caasdriver``. Only files matching the +passed substring will be run. The filtering doesn't use any globbing +metacharacters, it's a plain match. For example, to run only +``*-compile*.txt`` tests in verbose mode:: + + ./caasdriver verbose -compile + + +Test case file format +--------------------- + +All the ``tests/caas/*.txt`` files encode a session with the compiler: + +* The first line indicates the main project file. + +* Lines starting with ``>`` indicate a command to be sent to the + compiler and the lines following a command include checks for + expected or forbidden output (``!`` for forbidden). + +* If a line starts with ``#`` it will be ignored completely, so you + can use that for comments. + +* Since some cases are specific to either ``ProcRun`` or ``CaasRun`` + modes, you can prefix a line with the mode and the line will be + processed only in that mode. + +* The rest of the line is treated as a `regular expression <re.html>`_, + so be careful escaping metacharacters like parenthesis. + +Before the line is processed as a regular expression, some basic +variables are searched for and replaced in the tests. The variables +which will be replaced are: + +* **$TESTNIM**: filename specified in the first line of the script. +* **$MODULE**: like $TESTNIM but without extension, useful for + expected output. + +When adding a test case to the suite it is a good idea to write a +few comments about what the test is meant to verify. diff --git a/tests/caasdriver.nim b/tests/caasdriver.nim index 2ec4c888d..28f0bae9b 100644 --- a/tests/caasdriver.nim +++ b/tests/caasdriver.nim @@ -2,45 +2,7 @@ import osproc, streams, os, strutils, re ## Compiler as a service tester. ## -## This test cases uses the txt files in the caas/ subdirectory. -## -## Each of the text files inside encodes a session with the compiler: -## -## The first line indicates the main project file. -## -## Lines starting with '>' indicate a command to be sent to the compiler and -## the lines following a command include checks for expected or forbidden -## output (! for forbidden). -## -## If a line starts with '#' it will be ignored completely, so you can use that -## for comments. -## -## All the tests are run both in ProcRun (each command creates a separate -## process) and CaasRun (first command starts up a server and it is reused for -## the rest) modes. Since some cases are specific to either ProcRun or CaasRun -## modes, you can prefix a line with the mode and the line will be processed -## only in that mode. -## -## The rest of the line is treated as a regular expression, so be careful -## escaping metacharacters like parenthesis. Before the line is processed as a -## regular expression, some basic variables are searched for and replaced in -## the tests. The variables which will be replaced are: -## -## - $TESTNIM: filename specified in the first line of the script. -## - $MODULE: like $TESTNIM but without extension, useful for expected output. -## -## You can optionally pass parameters at the command line to modify the -## behaviour of the test suite. By default only tests which fail will be echoed -## to stdout. If you want to see all the output pass the word "verbose" as a -## parameter. -## -## If you don't want to run all the test case files, you can pass any substring -## as a parameter. Only files matching the passed substring will be run. The -## filtering doesn't use any globbing metacharacters, it's a plain match. -## -## Example to run only "*-compile*.txt" tests in verbose mode: -## -## ./caasdriver verbose -compile +## Please read docs/idetools.txt for information about this. type |