test/README

Code
Comments
Other
Rev Date Author Line
952 06 Dec 09 peter 1 $Id$
952 06 Dec 09 peter 2
952 06 Dec 09 peter 3     The svndigest test suite
952 06 Dec 09 peter 4
952 06 Dec 09 peter 5
952 06 Dec 09 peter 6 Usage:
952 06 Dec 09 peter 7 ========
952 06 Dec 09 peter 8
1050 05 Apr 10 peter 9 Running the tests
952 06 Dec 09 peter 10 -----------------
952 06 Dec 09 peter 11
1050 05 Apr 10 peter 12   To run all tests:
952 06 Dec 09 peter 13
1050 05 Apr 10 peter 14     make check
952 06 Dec 09 peter 15
1050 05 Apr 10 peter 16   To rerun only failed tests:
1050 05 Apr 10 peter 17
1050 05 Apr 10 peter 18     make recheck
1050 05 Apr 10 peter 19
1050 05 Apr 10 peter 20   To rerun only those tests for there are newer sources
1050 05 Apr 10 peter 21
1050 05 Apr 10 peter 22     make lazycheck
1050 05 Apr 10 peter 23
1050 05 Apr 10 peter 24   To run only a subset of tests, use TESTS variable:
1050 05 Apr 10 peter 25
1050 05 Apr 10 peter 26     make check TESTS="first_test second_test"
1050 05 Apr 10 peter 27
1050 05 Apr 10 peter 28   To enable test output you can use the VERBOSE variable
1050 05 Apr 10 peter 29
1050 05 Apr 10 peter 30     make check VERBOSE=1
1050 05 Apr 10 peter 31
952 06 Dec 09 peter 32 Interpretation
952 06 Dec 09 peter 33 --------------
952 06 Dec 09 peter 34
952 06 Dec 09 peter 35   Successes:
952 06 Dec 09 peter 36     PASS  - success
952 06 Dec 09 peter 37     XFAIL - expected failure
952 06 Dec 09 peter 38
952 06 Dec 09 peter 39   Failures:
952 06 Dec 09 peter 40     FAIL  - failure
952 06 Dec 09 peter 41     XPASS - unexpected success
952 06 Dec 09 peter 42
952 06 Dec 09 peter 43   Other:
952 06 Dec 09 peter 44     SKIP  - skipped test
952 06 Dec 09 peter 45
952 06 Dec 09 peter 46
952 06 Dec 09 peter 47 Getting details from failures
952 06 Dec 09 peter 48 -----------------------------
952 06 Dec 09 peter 49
1050 05 Apr 10 peter 50   You can run the test directly, `./foo_test'; it will be verbose. The
1050 05 Apr 10 peter 51   verbose output is also available in `foo_test.log'. A summary log is
1050 05 Apr 10 peter 52   created in the file `test-suite.log'.
952 06 Dec 09 peter 53
952 06 Dec 09 peter 54
952 06 Dec 09 peter 55 Reporting failures
952 06 Dec 09 peter 56 ------------------
952 06 Dec 09 peter 57
952 06 Dec 09 peter 58   Open a 'New Ticket' in the issue tracking system
952 06 Dec 09 peter 59   (http://dev.thep.lu.se/svndigest) with verbose output of failing
952 06 Dec 09 peter 60   tests along with which version of svndigest and which operating
952 06 Dec 09 peter 61   system etc. Alternatively, you can send a bug report to the address
952 06 Dec 09 peter 62   given in the failed `make check' or in `configure --help'.
952 06 Dec 09 peter 63
952 06 Dec 09 peter 64
952 06 Dec 09 peter 65
952 06 Dec 09 peter 66 Writing tests
952 06 Dec 09 peter 67 =============
952 06 Dec 09 peter 68
952 06 Dec 09 peter 69   If you plan to fix a bug, write the test first. This way you will
952 06 Dec 09 peter 70   make sure the test catches the bug, and that it succeeds once you
952 06 Dec 09 peter 71   have fixed the bug.
952 06 Dec 09 peter 72
974 11 Dec 09 peter 73   Add a copyright and license followed by one or two lines describing
974 11 Dec 09 peter 74   what the test does.
974 11 Dec 09 peter 75
974 11 Dec 09 peter 76   Tests shall returns 0 at success, 77 if it should be skipped, and
974 11 Dec 09 peter 77   something else at failure. Tests should be silent also at failure
974 11 Dec 09 peter 78   unless option `-v` is passed or env variable VERBOSE is set.
974 11 Dec 09 peter 79
974 11 Dec 09 peter 80   Add the test to XFAIL_TESTS in Makefile.am, if it tests a bug still
974 11 Dec 09 peter 81   present, i.e., the test is expected to fail.
974 11 Dec 09 peter 82
1092 12 Jun 10 peter 83   Note that that if tests are initialized correctly using either Suite
1092 12 Jun 10 peter 84   class (see section C++ tests) or via init.sh (see shell tests) a
1092 12 Jun 10 peter 85   sub-dir testSubDir/foo is created from which the test is run.
1092 12 Jun 10 peter 86
974 11 Dec 09 peter 87 C++ tests
974 11 Dec 09 peter 88 ---------
974 11 Dec 09 peter 89
1164 13 Aug 10 peter 90   Tests written in C++ have suffix `.test', for example, `foo.test'
1164 13 Aug 10 peter 91   and corresponding source is called `foo.cc'. To add a new test
1164 13 Aug 10 peter 92   append `foo.test' to variable EXTRA_PROGRAMS in `Makefile.am' and
1164 13 Aug 10 peter 93   edit `foo.cc'.
1164 13 Aug 10 peter 94
952 06 Dec 09 peter 95   Use the test::Suite class liberally. See other tests for examples of
952 06 Dec 09 peter 96   typical usage.
952 06 Dec 09 peter 97
1050 05 Apr 10 peter 98   Set `need_test_repo` to true in Suite constructor if the test uses
974 11 Dec 09 peter 99   the test repository. That will result in the test being skipped if
974 11 Dec 09 peter 100   test repo is not available, or if it is available the wc will
974 11 Dec 09 peter 101   checked out (if needed) and updated.
952 06 Dec 09 peter 102
952 06 Dec 09 peter 103   If a test needs a data file, place the data in directory
952 06 Dec 09 peter 104   'test/data'. However, you should feel free to re-use the data files
952 06 Dec 09 peter 105   already there. It should be possible to run the test suite also in a
952 06 Dec 09 peter 106   VPATH build in which builddir and srcdir are not the same. To avoid
952 06 Dec 09 peter 107   problems with files not found in VPATH builds, use the function
974 11 Dec 09 peter 108   test::src_filename() which gives you the absolute path to the
974 11 Dec 09 peter 109   file. If the data file is generated during build, e.g., checked out
974 11 Dec 09 peter 110   in a wc and residing in builddir, use test:filename instead.
952 06 Dec 09 peter 111
974 11 Dec 09 peter 112 Shell tests
974 11 Dec 09 peter 113 -----------
974 11 Dec 09 peter 114
974 11 Dec 09 peter 115   Use `required=...` for setting a space delimited list of required
974 11 Dec 09 peter 116   tools (see other tests and init.sh). If `repo` is included in
974 11 Dec 09 peter 117   `required`, a toy_project wc will be checked out and updated if test
974 11 Dec 09 peter 118   repo is available, otherwise test is skipped.
974 11 Dec 09 peter 119
974 11 Dec 09 peter 120   Include init.sh, with `. ./init.sh`.
974 11 Dec 09 peter 121
1092 12 Jun 10 peter 122   Use variables set in init.sh such as $srcdir and $abs_top_builddir, and $SVN.
974 11 Dec 09 peter 123
1092 12 Jun 10 peter 124   Do not run svndigest and svncopyright directly, but use functions
1092 12 Jun 10 peter 125   SVNDIGEST_run and SVNCOPYRIGHT_run.
1092 12 Jun 10 peter 126
974 11 Dec 09 peter 127   Do not use `exit`, but use functions `exit_fail()`, `exit_skip()`,
974 11 Dec 09 peter 128   or `exit_success()`.
974 11 Dec 09 peter 129
974 11 Dec 09 peter 130   Make sure to set svn property `svn:executable` on test.
974 11 Dec 09 peter 131
1050 05 Apr 10 peter 132   Add test to `distributed_TESTS` in Makefile.am. In order to get the
1050 05 Apr 10 peter 133   lazycheck to behave as expected, declare accurate dependencies. If
1050 05 Apr 10 peter 134   test 'foo.sh', for example, depends on file 'bar.txt', create a make
1050 05 Apr 10 peter 135   rule: 'foo.log: bar.txt'.
974 11 Dec 09 peter 136
952 06 Dec 09 peter 137 ======================================================================
1050 05 Apr 10 peter 138 Copyright (C) 2009, 2010 Peter Johansson
952 06 Dec 09 peter 139
952 06 Dec 09 peter 140 This file is part of svndigest, http://dev.thep.lu.se/svndigest
952 06 Dec 09 peter 141
952 06 Dec 09 peter 142 The svndigest is free software; you can redistribute it and/or modify
952 06 Dec 09 peter 143 it under the terms of the GNU General Public License as published by
952 06 Dec 09 peter 144 the Free Software Foundation; either version 3 of the License, or (at
952 06 Dec 09 peter 145 your option) any later version.
952 06 Dec 09 peter 146
952 06 Dec 09 peter 147 The svndigest is distributed in the hope that it will be useful, but
952 06 Dec 09 peter 148 WITHOUT ANY WARRANTY; without even the implied warranty of
952 06 Dec 09 peter 149 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
952 06 Dec 09 peter 150 General Public License for more details.
952 06 Dec 09 peter 151
952 06 Dec 09 peter 152 You should have received a copy of the GNU General Public License
952 06 Dec 09 peter 153 along with svndigest. If not, see <http://www.gnu.org/licenses/>.
952 06 Dec 09 peter 154 ======================================================================
952 06 Dec 09 peter 155
952 06 Dec 09 peter 156