addTest now mirrors unittest api
[third_party/subunit] / README
1     
2   subunit: extensions to python unittest to get test results from subprocesses.
3   Copyright (C) 2005  Robert Collins <robertc@robertcollins.net>
4
5   This program is free software; you can redistribute it and/or modify
6   it under the terms of the GNU General Public License as published by
7   the Free Software Foundation; either version 2 of the License, or
8   (at your option) any later version.
9
10   This program is distributed in the hope that it will be useful,
11   but WITHOUT ANY WARRANTY; without even the implied warranty of
12   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13   GNU General Public License for more details.
14
15   You should have received a copy of the GNU General Public License
16   along with this program; if not, write to the Free Software
17   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18
19
20
21 Subunit is attempting to extend unittest with a clean and simple api to
22 run arbitrary external test suites and return the results to standard 
23 python unittest.
24
25 Some requirements:
26   The shape of the external unittest should not need to be known a-priori.
27   After the test has run, tests should still exist as discrete objects, so that
28   anything taking a reference to them doesn't get 50 copies of the same object.
29
30
31 TEST: test foo works
32 SUCCESS: test foo works.
33 TEST: tar a file.
34 FAILURE: tar a file. [
35 ..
36  ]..  space is eaten.
37 foo.c:34 WARNING foo is not defined.
38 ]
39 a writeln to stdout
40
41 ===========
42 .F
43 a writeln to stdout
44
45 ========================
46 FAILURE: tar a file.
47 -------------------
48 ..
49 ]..  space is eatern.
50 foo.c:34 WARNING foo is not defined.
51 ========================
52
53 control protocol: 
54 test|testing|test:|testing: test label
55 success|success:|successful|successful: test label
56 failure test label
57 failure: test label
58 failure test label [
59 ...
60 ]
61 failure: test label [
62 ...
63 ]
64 error: test label
65 error: test label [
66 ]
67 unexpected output on stdout -> stdout.
68 exit w/0 or last test -> error
69
70 rough structure of the server:
71 SubprocessTestCase(unittest.TestCase):
72
73 def run:
74     do a fork,
75       this process runs server
76       child runs client and calls self.run() with a SubprocessTestResult 
77
78 developing - write a server and feed it chosen strings DONE. a mock child process etc.
79 write a client and check the right things come back for the various permutations
80 check that stdout output in the client is passed to the real stdout.
81
82