selftest: Use external processes for filtering known failures and pretty
[sfrench/samba-autobuild/.git] / selftest / README
1 # vim: ft=rst
2
3 This directory contains test scripts that are useful for running a
4 bunch of tests all at once. 
5
6 Available testsuites
7 ====================
8 The available testsuites are obtained from a script, usually 
9 selftest/samba{3,4}_tests.sh. This script should for each testsuite output 
10 the name of the test, the command to run and the environment that should be 
11 provided. Use the included "plantest" function to generate the required output.
12
13 Testsuite behaviour
14 ===================
15
16 Exit code
17 ------------
18 The testsuites should exit with a non-zero exit code if at least one 
19 test failed. Skipped tests should not influence the exit code.
20
21 Output format
22 -------------
23 Testsuites can simply use the exit code to indicate whether all of their 
24 tests have succeeded or one or more have failed. It is also possible to 
25 provide more granular information using the Subunit protocol. 
26
27 This protocol works by writing simple messages to standard output. Any 
28 messages that can not be interpreted by this protocol are considered comments 
29 for the last announced test.
30
31 Accepted commands are:
32
33 test
34 ~~~~
35 test: <NAME>
36
37 Announce that a new test with the specified name is starting
38
39 success
40 ~~~~~~~
41 success: <NAME> 
42
43 Announce that the test with the specified name is done and ran successfully.
44
45 failure
46 ~~~~~~~
47 failure: <NAME> 
48 failure: <NAME> [ REASON ]
49
50 Announce that the test with the specified name failed. Optionally, it is 
51 possible to specify a reason it failed.
52
53 xfail
54 ~~~~~
55 xfail: <NAME>
56 xfail: <NAME> [ REASON ]
57
58 Announce that the test with the specified name failed but that the failure
59 was expected, e.g. it's a test for a known bug that hasn't been fixed yet.
60
61 skip
62 ~~~~
63 skip: <NAME>
64 skip: <NAME> [ REASON ]
65
66 Announce that the test with the specified name was skipped. Optionally a 
67 reason can be specified.
68
69 knownfail
70 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
71 knownfail: <NAME>
72 knownfail: <NAME> [ REASON ]
73
74 Announce that the test with the specified name was run and failed as expected.
75 Alternatively it is also possible to simply return "failure:" here but 
76 specify in the samba4-knownfailures file that it is failing.
77
78 Environments
79 ============
80 Tests often need to run against a server with particular things set up, 
81 a "environment". This environment is provided by the test "target": Samba 3, 
82 Samba 4 or Windows.
83
84 The following environments are currently available:
85
86  - none: No server set up, no variables set.
87  - dc: Domain controller set up. The following environment variables will 
88    be set:
89
90      * USERNAME: Administrator user name
91          * PASSWORD: Administrator password
92          * DOMAIN: Domain name
93          * REALM: Realm name
94          * SERVER: DC host name 
95          * SERVER_IP: DC IPv4 address
96          * NETBIOSNAME: DC NetBIOS name
97          * NETIOSALIAS: DC NetBIOS alias
98
99  - member: Domain controller and member server that is joined to it set up. The
100    following environment variables will be set:
101
102      * USERNAME: Domain administrator user name
103          * PASSWORD: Domain administrator password
104          * DOMAIN: Domain name
105          * REALM: Realm name
106          * SERVER: Name of the member server
107
108
109 Running tests
110 =============
111
112 To run all the tests use::
113
114    make test
115
116 To run a quick subset (aiming for about 1 minute of testing) run::
117
118    make quicktest
119
120 To run a specific test, use this syntax::
121
122    make test TESTS=testname
123
124 for example::
125
126    make test TESTS=samba4.BASE-DELETE
127