[25] | 1 | README -- Tcl test suite design document. |
---|
| 2 | |
---|
| 3 | RCS: @(#) $Id: README,v 1.12 2003/04/01 19:17:21 dgp Exp $ |
---|
| 4 | |
---|
| 5 | Contents: |
---|
| 6 | --------- |
---|
| 7 | |
---|
| 8 | 1. Introduction |
---|
| 9 | 2. Running tests |
---|
| 10 | 3. Adding tests |
---|
| 11 | 4. Incompatibilities with prior Tcl versions |
---|
| 12 | |
---|
| 13 | 1. Introduction: |
---|
| 14 | ---------------- |
---|
| 15 | |
---|
| 16 | This directory contains a set of validation tests for the Tcl commands |
---|
| 17 | and C Library procedures for Tcl. Each of the files whose name ends |
---|
| 18 | in ".test" is intended to fully exercise the functions in the C source |
---|
| 19 | file that corresponds to the file prefix. The C functions and/or Tcl |
---|
| 20 | commands tested by a given file are listed in the first line of the |
---|
| 21 | file. |
---|
| 22 | |
---|
| 23 | 2. Running tests: |
---|
| 24 | ----------------- |
---|
| 25 | |
---|
| 26 | We recommend that you use the "test" target of Tcl's Makefile to run |
---|
| 27 | the test suite. From the directory in which you build Tcl, simply |
---|
| 28 | type "make test". This will create a special executable named |
---|
| 29 | tcltest in which the testing scripts will be evaluated. To create |
---|
| 30 | the tcltest executable without running the test suite, simple type |
---|
| 31 | "make tcltest". |
---|
| 32 | |
---|
| 33 | All the configuration options of the tcltest package are available |
---|
| 34 | during a "make test" by defining the TESTFLAGS environment variable. |
---|
| 35 | For example,if you wish to run only those tests in the file append.test, |
---|
| 36 | you can type: |
---|
| 37 | |
---|
| 38 | make test TESTFLAGS="-file append.test" |
---|
| 39 | |
---|
| 40 | For interactive testing, the Tcl Makefile provides the "runtest" target. |
---|
| 41 | Type "make runtest" in your build directory, and the tcltest executable |
---|
| 42 | will be created, if necessary, then it will run interactively. At the |
---|
| 43 | command prompt, you may type any Tcl commands. If you type |
---|
| 44 | "source ../tests/all.tcl", the test suite will run. You may use the |
---|
| 45 | tcltest::configure command to configure the test suite run as an |
---|
| 46 | alternative to command line options via TESTFLAGS. You might also |
---|
| 47 | wish to use the tcltest::testConstraint command to select the constraints |
---|
| 48 | that govern which tests are run. See the documentation for the tcltest |
---|
| 49 | package for details. |
---|
| 50 | |
---|
| 51 | 3. Adding tests: |
---|
| 52 | ---------------- |
---|
| 53 | |
---|
| 54 | Please see the tcltest man page for more information regarding how to |
---|
| 55 | write and run tests. |
---|
| 56 | |
---|
| 57 | Please note that the all.tcl file will source your new test file if |
---|
| 58 | the filename matches the tests/*.test pattern (as it should). The |
---|
| 59 | names of test files that contain regression (or glass-box) tests |
---|
| 60 | should correspond to the Tcl or C code file that they are testing. |
---|
| 61 | For example, the test file for the C file "tclCmdAH.c" is |
---|
| 62 | "cmdAH.test". Test files that contain black-box tests may not |
---|
| 63 | correspond to any Tcl or C code file so they should match the pattern |
---|
| 64 | "*_bb.test". |
---|
| 65 | |
---|
| 66 | Be sure your new test file can be run from any working directory. |
---|
| 67 | |
---|
| 68 | Be sure no temporary files are left behind by your test file. |
---|
| 69 | Use [tcltest::makeFile], [tcltest::removeFile], and [tcltest::cleanupTests] |
---|
| 70 | properly to be sure of this. |
---|
| 71 | |
---|
| 72 | Be sure your tests can run cross-platform in both a build environment |
---|
| 73 | as well as an installation environment. If your test file contains |
---|
| 74 | tests that should not be run in one or more of those cases, please use |
---|
| 75 | the constraints mechanism to skip those tests. |
---|
| 76 | |
---|
| 77 | 4. Incompatibilities of package tcltest 2.1 with |
---|
| 78 | testing machinery of very old versions of Tcl: |
---|
| 79 | ------------------------------------------------ |
---|
| 80 | |
---|
| 81 | 1) Global variables such as VERBOSE, TESTS, and testConfig of the |
---|
| 82 | old machinery correspond to the [configure -verbose], |
---|
| 83 | [configure -match], and [testConstraint] commands of tcltest 2.1, |
---|
| 84 | respectively. |
---|
| 85 | |
---|
| 86 | 2) VERBOSE values were longer numeric. [configure -verbose] values |
---|
| 87 | are lists of keywords. |
---|
| 88 | |
---|
| 89 | 3) When you run "make test", the working dir for the test suite is now |
---|
| 90 | the one from which you called "make test", rather than the "tests" |
---|
| 91 | directory. This change allows for both unix and windows test |
---|
| 92 | suites to be run simultaneously without interference with each |
---|
| 93 | other or with existing files. All tests must now run independently |
---|
| 94 | of their working directory. |
---|
| 95 | |
---|
| 96 | 4) The "all" file is now called "all.tcl" |
---|
| 97 | |
---|
| 98 | 5) The "defs" and "defs.tcl" files no longer exist. |
---|
| 99 | |
---|
| 100 | 6) Instead of creating a doAllTests file in the tests directory, to |
---|
| 101 | run all nonPortable tests, just use the "-constraints nonPortable" |
---|
| 102 | command line flag. If you are running interactively, you can run |
---|
| 103 | [tcltest::testConstraint nonPortable 1] (after loading the tcltest |
---|
| 104 | package). |
---|
| 105 | |
---|
| 106 | 7) Direct evaluation of the *.test files by the "source" command is no |
---|
| 107 | longer recommended. Instead, "source all.tcl" and use the "-file" and |
---|
| 108 | "-notfile" options of tcltest::configure to control which *.test files |
---|
| 109 | are evaluated. |
---|