Make a fakecutable and PBC's which can be more easily dropped into external projects...
[tapir.git] / t / 03-parse_tapstream_error.t
blob149007ddde91aaf63bd0e3e91025ec68363c4425
1 #!/usr/bin/env parrot
4 .sub main :main
5     .include 'test_more.pir'
6     .local pmc tapir, klass
7     load_bytecode 'lib/Tapir/Stream.pir'
8     load_bytecode 'lib/Tapir/Parser.pir'
10     plan(28)
12     # setup test data
13     klass = newclass [ 'Tapir'; 'Parser' ]
14     tapir = klass.'new'()
16     test_parse_death(tapir)
17     test_parse_death_with_passing_tests(tapir)
18     test_plumage_sanity(tapir)
19     test_exit_code(tapir)
20     test_exit_code_pass(tapir)
21 .end
23 .sub test_exit_code_pass
24     .param pmc tapir
25     .local string tap
26     .local pmc stream
27     tap = <<"TAP"
28 1..2
29 ok 1 - Class of Tapir::Parser is of the correct type
30 ok 2 - new returns a Tapir::Parser object isa Tapir;Parser
31 TAP
32     stream = tapir.'parse_tapstream'(tap,0)
33     $I0 = stream.'get_exit_code'()
34     is($I0,0,"parse_tapstream gets passing exit code")
35 .end
38 .sub test_exit_code
39     .param pmc tapir
40     .local string tap_error
41     .local pmc stream
42     tap_error = <<"TAP"
43 1..2
44 ok 1 - Class of Tapir::Parser is of the correct type
45 ok 2 - new returns a Tapir::Parser object isa Tapir;Parser
46 eat it!
47 current instr.: 'parrot;Tapir;Stream;main' pc 554 (t/00-sanity.t:20)
48 TAP
49     stream = tapir.'parse_tapstream'(tap_error,42)
51     $I0 = stream.'get_plan'()
52     is($I0,2,"plan is correct")
54     $I0 = stream.'is_pass'()
55     is($I0,0,"parse_tapstream does not pass something with a non-successful exit code")
57     $I0 = stream.'get_pass'()
58     is($I0,2,"parse_tapstream gets 2 passed tests")
60     $I0 = stream.'get_todo'()
61     is($I0,0,"parse_tapstream gets no todo tests")
63     $I0 = stream.'get_skip'()
64     is($I0,0,"parse_tapstream gets no skip tests")
66     $I0 = stream.'get_fail'()
67     is($I0,0,"parse_tapstream gets no fails")
69     $I0 = stream.'total'()
70     is($I0,2,"parse_tapstream gets correct # of tests in total")
72     $I0 = stream.'get_exit_code'()
73     is($I0,42,"parse_tapstream gets correct exit code")
75 .end
77 .sub test_plumage_sanity
78     .param pmc tapir
79     .local string tap_error
80     .local pmc stream
81     tap_error = <<"TAP"
82 1..18
83 invalidjunkdoesnotexist
84 ok 1 - do_run()ing invalidjunk returns false
85 ./plumage asdfversion
86 I don't know how to 'asdfversion'!
87 ok 2 - plumage returns failure for invalid commands
88 ok 3
89 ok 4
90 ok 5
91 ok 6
92 ok 7
93 ok 8 - no args give usage
94 ok 9 - no args give usage
95 ok 10 - plumage fetch no args
96 ok 11
97 ok 12
98 ./plumage version
99 This is Parrot Plumage, version 0.
101 Copyright (C) 2009, Parrot Foundation.
103 This code is distributed under the terms of the Artistic License 2.0.
104 For more details, see the full text of the license in the LICENSE file
105 included in the Parrot Plumage source tree.
106 ok 13 - plumage version returns success
107 ok 14 - plumage version knows its name
108 ok 15 - version mentions Parrot Foundation
109 ok 16 - version mentions Artistic License
110 ok 17 - info rakudo
111 ok 18 - info rakudo
112 .end
114     stream = tapir.'parse_tapstream'(tap_error)
116     $I0 = stream.'get_plan'()
117     is($I0,18,"plan is correct")
119     $I0 = stream.'is_pass'()
120     is($I0,1,"parse_tapstream passes Plumage's sanity test")
122     $I0 = stream.'get_pass'()
123     is($I0,18,"parse_tapstream gets 18 tests")
125     $I0 = stream.'get_todo'()
126     is($I0,0,"parse_tapstream gets no todo tests")
128     $I0 = stream.'get_skip'()
129     is($I0,0,"parse_tapstream gets no skip tests")
131     $I0 = stream.'get_fail'()
132     is($I0,0,"parse_tapstream gets no fails")
134     $I0 = stream.'total'()
135     is($I0,18,"parse_tapstream gets 18 tests in total")
136 .end
138 .sub test_parse_death
139     .param pmc tapir
140     .local string tap_error
141     .local pmc stream
142     tap_error = <<"TAP"
143 1..2
144 not ok 1 - newclass Tapir::Parser is of the correct type
145 # Have: Class
146 # Want: Tapir;Parser
147 get_bool() not implemented in class 'Tapir;Parser'
148 current instr.: 'parrot;Test;More;ok' pc 39 (runtime/parrot/library/Test/More.pir:108)
149 called from Sub 'parrot;Tapir;Stream;main' pc 505 (t/00-sanity.t:18)
151     stream = tapir.'parse_tapstream'(tap_error)
153     $I0 = stream.'is_pass'()
154     is($I0,0,"parse_tapstream does not pass a TAP stream with a death message")
156     $I0 = stream.'get_pass'()
157     is($I0,0,"parse_tapstream gets no passed tests")
159     $I0 = stream.'get_todo'()
160     is($I0,0,"parse_tapstream gets 0 todo tests")
162     $I0 = stream.'get_skip'()
163     is($I0,0,"parse_tapstream gets 0 skip tests")
165     $I0 = stream.'get_fail'()
166     is($I0,1,"parse_tapstream gets one failed test")
168     $I0 = stream.'total'()
169     is($I0,1,"parse_tapstream gets one test in total")
171 .end
173 .sub test_parse_death_with_passing_tests
174     .param pmc tapir
175     .local string tap_error
176     .local pmc stream
177     tap_error = <<"TAP"
178 1..2
179 ok 1 - new returns a Tapir::Parser object isa Tapir;Parser
180 Class Stream already registered!
182 current instr.: 'parrot;Tapir;Stream;main' pc 495 (t/00-sanity.t:18)
184     stream = tapir.'parse_tapstream'(tap_error)
186     $I0 = stream.'is_pass'()
187     is($I0,0,"parse_tapstream does not pass a TAP stream with a death message")
189     $I0 = stream.'get_pass'()
190     is($I0,1,"parse_tapstream gets 1 passing test")
192     $I0 = stream.'get_todo'()
193     is($I0,0,"parse_tapstream gets 0 todo tests")
195     $I0 = stream.'get_skip'()
196     is($I0,0,"parse_tapstream gets 0 skip tests")
198     $I0 = stream.'get_fail'()
199     is($I0,0,"parse_tapstream gets no failing tests")
201     $I0 = stream.'total'()
202     is($I0,1,"parse_tapstream gets one test in total")
203 .end
205 # Local Variables:
206 #   mode: pir
207 #   fill-column: 100
208 # End:
209 # vim: expandtab shiftwidth=4 ft=pir: