tapout 0.3.2 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.ruby +12 -3
- data/.yardopts +6 -5
- data/HISTORY.rdoc +16 -0
- data/README.rdoc +18 -16
- data/TAP-YJ.md +15 -15
- data/bin/tapout +1 -1
- data/demo/applique/ae.rb +1 -0
- data/{spec → demo}/applique/env.rb +0 -0
- data/{spec → demo}/issues/applique/env.rb +0 -0
- data/{spec → demo}/issues/default_reporter.rdoc +2 -2
- data/{spec → demo}/perl_adapter.rdoc +3 -3
- data/{spec → demo}/reporters/applique/cli.rb +1 -1
- data/{spec → demo}/reporters/fixtures/tapy.yml +0 -0
- data/{spec → demo}/reporters/reporters.rdoc +0 -0
- data/lib/tapout.rb +5 -101
- data/lib/tapout.yml +12 -3
- data/lib/tapout/adapters/perl.rb +1 -1
- data/lib/tapout/cli.rb +98 -0
- data/lib/tapout/config.rb +103 -0
- data/lib/tapout/parsers/json.rb +2 -2
- data/lib/tapout/parsers/perl.rb +1 -1
- data/lib/tapout/parsers/yaml.rb +3 -2
- data/lib/tapout/reporters.rb +2 -1
- data/lib/tapout/reporters/abstract.rb +223 -31
- data/lib/tapout/reporters/breakdown_reporter.rb +49 -57
- data/lib/tapout/reporters/dot_reporter.rb +52 -33
- data/lib/tapout/reporters/html_reporter.rb +3 -1
- data/lib/tapout/reporters/markdown_reporter.rb +101 -0
- data/lib/tapout/reporters/outline_reporter.rb +68 -25
- data/lib/tapout/reporters/pretty_reporter.rb +65 -86
- data/lib/tapout/reporters/progress_reporter.rb +47 -22
- data/lib/tapout/reporters/runtime_reporter.rb +223 -0
- data/lib/tapout/reporters/tap_reporter.rb +1 -1
- data/lib/tapout/reporters/turn_reporter.rb +26 -65
- data/lib/tapout/version.rb +2 -2
- metadata +34 -19
- data/test/unit/test-progressbar.rb +0 -5
data/.ruby
CHANGED
@@ -21,6 +21,10 @@ requirements:
|
|
21
21
|
groups:
|
22
22
|
- test
|
23
23
|
development: true
|
24
|
+
- name: ae
|
25
|
+
groups:
|
26
|
+
- test
|
27
|
+
development: true
|
24
28
|
dependencies: []
|
25
29
|
conflicts: []
|
26
30
|
repositories:
|
@@ -29,17 +33,22 @@ repositories:
|
|
29
33
|
name: upstream
|
30
34
|
resources:
|
31
35
|
home: http://rubyworks.github.com/tapout
|
36
|
+
wiki: http://github.com/rubyworks/tapout/wiki
|
37
|
+
docs: http://rubydoc.info/gems/tapout/frames
|
32
38
|
code: http://github.com/rubyworks/tapout
|
39
|
+
bugs: http://github.com/rubyworks/tapout/issues
|
40
|
+
mail: http://groups.google.com/rubyworks-mailinglist
|
41
|
+
chat: irc://chat.us.freenode.net#rubyworks
|
33
42
|
extra: {}
|
34
43
|
load_path:
|
35
44
|
- lib
|
36
45
|
revision: 0
|
37
46
|
created: '2010-12-23'
|
38
47
|
summary: Progressive TAP Harness
|
39
|
-
title:
|
40
|
-
version: 0.
|
48
|
+
title: TAPOUT
|
49
|
+
version: 0.4.0
|
41
50
|
name: tapout
|
42
51
|
description: Tapout is a TAP consumer that can take any TAP, TAP-Y or TAP-J stream
|
43
52
|
and output it in a variety of useful formats.
|
44
53
|
organization: RubyWorks
|
45
|
-
date: '
|
54
|
+
date: '2012-02-01'
|
data/.yardopts
CHANGED
data/HISTORY.rdoc
CHANGED
@@ -1,5 +1,21 @@
|
|
1
1
|
= RELEASE HISTORY
|
2
2
|
|
3
|
+
== 0.4.0 / 2012-02-01
|
4
|
+
|
5
|
+
TAP-Y/J spec now supports `stdout` and `stderr` fields. This allows test
|
6
|
+
frameworks to capture stdout and stderr while running tests and pipe them
|
7
|
+
through with the TAP stream, which tapout can then include in the test
|
8
|
+
report output. This release also brings a great deal of improvement to test
|
9
|
+
reports in general, from better time stats to much improved backtrace output.
|
10
|
+
|
11
|
+
Changes:
|
12
|
+
|
13
|
+
* Rename namespace to Tapout, instead of TapOut.
|
14
|
+
* Add support for `stdout` and `stderr` fields to spec.
|
15
|
+
* Add common config for all reporters.
|
16
|
+
* Add common code snippet functionality to all reporters.
|
17
|
+
* Add markdown reporter.
|
18
|
+
|
3
19
|
|
4
20
|
== 0.3.2 / 2011-11-08
|
5
21
|
|
data/README.rdoc
CHANGED
@@ -1,6 +1,7 @@
|
|
1
|
-
=
|
1
|
+
= TAPOUT
|
2
2
|
|
3
3
|
{Website}[http://rubyworks.github.com/tapout] |
|
4
|
+
{User Guide}[http://github.com/rubyworks/tapout/wiki] |
|
4
5
|
{Development}[http://github.com/rubyworks/tapout] |
|
5
6
|
{Report Issue}[http://github.com/rubyworks/tapout/issues]
|
6
7
|
|
@@ -9,15 +10,16 @@
|
|
9
10
|
|
10
11
|
== DESCRIPTION
|
11
12
|
|
12
|
-
|
13
|
-
|
13
|
+
*TAPOUT* is a TAP handler which supports TAP-Y/J as well as traditional TAP streams.
|
14
14
|
TAP-Y/J is a modernization of TAP using pure YAML/JSON streams.
|
15
|
+
|
15
16
|
Traditional TAP has less detail than TAP-Y/J, but it can still be translated
|
16
|
-
with fairly good results.
|
17
|
-
translation transparently. Currently
|
18
|
-
|
17
|
+
with fairly good results. TAPOUT includes a TAP adapter to handle the
|
18
|
+
translation transparently. Currently TAPOUT supports TAP v12 with some minor
|
19
|
+
limitations.
|
19
20
|
|
20
|
-
To learn about the TAP-Y/J specification, see the {TAP-
|
21
|
+
To learn about the TAP-Y/J specification, see the {TAP-Y/J Specification}[https://github.com/rubyworks/tapout/wiki/Specification]
|
22
|
+
document.
|
21
23
|
|
22
24
|
For information about TAP, see http://testanything.org/wiki/index.php/Main_Page.
|
23
25
|
|
@@ -27,17 +29,17 @@ For information about TAP, see http://testanything.org/wiki/index.php/Main_Page.
|
|
27
29
|
Using a test framework that produces a TAP-Y output stream, simply pipe
|
28
30
|
the stream into `tapout`.
|
29
31
|
|
30
|
-
$
|
32
|
+
$ rubytest -y -Ilib test/foo.rb | tapout
|
31
33
|
|
32
|
-
|
34
|
+
TAPOUT supports a variety of output formats. These are selectable via the
|
33
35
|
first argument. The default if not given, as in the example above, is `dotprogress`.
|
34
36
|
|
35
|
-
$
|
37
|
+
$ rubytest -y -Ilib test/foo.rb | tapout progessbar
|
36
38
|
|
37
|
-
|
39
|
+
TAPOUT is smart enough to match the closest matching format name. So, for
|
38
40
|
example, the above could be written as:
|
39
41
|
|
40
|
-
$
|
42
|
+
$ rubytest -y -Ilib test/foo.rb | tapout pro
|
41
43
|
|
42
44
|
And tapout will know to use the `progressbar` format.
|
43
45
|
|
@@ -46,16 +48,16 @@ To see a list of supported formats use the list subcommand:
|
|
46
48
|
$ tapout --help
|
47
49
|
|
48
50
|
If your test framework does not support TAP-Y, but does support traditional
|
49
|
-
TAP,
|
51
|
+
TAP, TAPOUT will automatically recognize the difference by TAP's `1..N` header.
|
50
52
|
|
51
|
-
$
|
53
|
+
$ rubytest -ftap -Ilib test/foo.rb | tapout progressbar
|
52
54
|
|
53
55
|
|
54
56
|
== COPYRIGHTS
|
55
57
|
|
56
|
-
|
58
|
+
TAPOUT - Copyright (c) 2010 Rubyworks
|
57
59
|
|
58
|
-
|
60
|
+
TAPOUT is distributable in accordance with the *BSD-2-Clause* license.
|
59
61
|
|
60
62
|
See COPYING.rdoc for details.
|
61
63
|
|
data/TAP-YJ.md
CHANGED
@@ -214,10 +214,10 @@ The `note` type is used to interject a message between tests that
|
|
214
214
|
is not tied to a specific unit or case. It has only a few fields.
|
215
215
|
|
216
216
|
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
217
|
+
---
|
218
|
+
type: note
|
219
|
+
text:
|
220
|
+
This is an example note.
|
221
221
|
|
222
222
|
|
223
223
|
The note document is simply used to interject any information the
|
@@ -233,17 +233,17 @@ stream. The `final` entry on the other hand incidates the end of a test suite,
|
|
233
233
|
which will be followed by an end-document-marker (`...`).
|
234
234
|
|
235
235
|
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
236
|
+
---
|
237
|
+
type : final
|
238
|
+
time : 0.03
|
239
|
+
counts:
|
240
|
+
total: 2
|
241
|
+
pass : 1
|
242
|
+
fail : 1
|
243
|
+
error: 0
|
244
|
+
omit : 0
|
245
|
+
todo : 0
|
246
|
+
...
|
247
247
|
|
248
248
|
|
249
249
|
A tally/final document MUST provide a counts mapping with the `total` number of
|
data/bin/tapout
CHANGED
data/demo/applique/ae.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'ae'
|
File without changes
|
File without changes
|
@@ -30,7 +30,7 @@ Instead of having each parser worry about setting the default
|
|
30
30
|
we can let the factory method do it when `nil` is passed as an
|
31
31
|
argument.
|
32
32
|
|
33
|
-
reporter =
|
33
|
+
reporter = Tapout::Reporters.factory(nil)
|
34
34
|
|
35
|
-
reporter #=>
|
35
|
+
reporter #=> Tapout::Reporters::DotReporter
|
36
36
|
|
@@ -23,7 +23,7 @@ The PerlAdapter can convert the stream into TAP-Y.
|
|
23
23
|
|
24
24
|
stream = StringIO.new(@tap)
|
25
25
|
|
26
|
-
adapter =
|
26
|
+
adapter = Tapout::PerlAdapter.new(stream)
|
27
27
|
|
28
28
|
entries = adapter.to_a
|
29
29
|
|
@@ -36,7 +36,7 @@ Or pipe the converted stream directly to another stream.
|
|
36
36
|
|
37
37
|
stream = StringIO.new(@tap)
|
38
38
|
|
39
|
-
adapter =
|
39
|
+
adapter = Tapout::PerlAdapter.new(stream)
|
40
40
|
|
41
41
|
output = ""
|
42
42
|
|
@@ -57,7 +57,7 @@ Let's see if this works.
|
|
57
57
|
|
58
58
|
stream = StringIO.new(@tap)
|
59
59
|
|
60
|
-
adapter =
|
60
|
+
adapter = Tapout::PerlAdapter.new(stream)
|
61
61
|
|
62
62
|
entries = adapter.to_a
|
63
63
|
|
File without changes
|
File without changes
|
data/lib/tapout.rb
CHANGED
@@ -1,104 +1,8 @@
|
|
1
|
-
require 'optparse'
|
2
|
-
require 'tapout/parsers'
|
3
|
-
|
4
|
-
module TapOut
|
5
|
-
|
6
|
-
# Default trace depth.
|
7
|
-
@trace = nil
|
8
|
-
|
9
|
-
#
|
10
|
-
def self.trace
|
11
|
-
@trace
|
12
|
-
end
|
13
|
-
|
14
|
-
#
|
15
|
-
def self.trace=(depth)
|
16
|
-
@trace = depth.to_i
|
17
|
-
end
|
18
|
-
|
19
|
-
# Command line interface.
|
20
|
-
#
|
21
|
-
def self.cli(*argv)
|
22
|
-
options = {}
|
23
|
-
type = :modern
|
24
|
-
|
25
|
-
parser = OptionParser.new do |opt|
|
26
|
-
opt.banner = "tapout [options] [reporter]"
|
27
|
-
|
28
|
-
opt.separator("\nOPTIONS:")
|
29
|
-
|
30
|
-
#opt.on('-t', '--tap', 'Consume legacy TAP input') do |fmt|
|
31
|
-
# type = :legacy
|
32
|
-
#end
|
33
|
-
|
34
|
-
opt.on('--trace', '-t DEPTH', 'set backtrace depth') do |depth|
|
35
|
-
self.trace = depth
|
36
|
-
end
|
37
|
-
|
38
|
-
opt.on('--no-color', 'Supress ANSI color codes') do
|
39
|
-
$ansi = false # TODO: Is this correct?
|
40
|
-
end
|
41
1
|
|
42
|
-
|
43
|
-
|
44
|
-
end
|
45
|
-
|
46
|
-
opt.separator("\nREPORTERS:\n " + Reporters.index.keys.join("\n "))
|
47
|
-
end
|
48
|
-
|
49
|
-
parser.parse!(argv)
|
50
|
-
|
51
|
-
options[:format] = argv.first
|
52
|
-
|
53
|
-
# TODO: would be nice if it could automatically determine which
|
54
|
-
#c = $stdin.getc
|
55
|
-
# $stdin.pos = 0
|
56
|
-
#type = :legacy if c =~ /\d/
|
57
|
-
#type = :modern if c == '-'
|
58
|
-
|
59
|
-
stdin = Curmudgeon.new($stdin)
|
60
|
-
|
61
|
-
case stdin.line1
|
62
|
-
when /^\d/
|
63
|
-
type = :perl
|
64
|
-
when /^\-/
|
65
|
-
type = :yaml
|
66
|
-
when /^\{/
|
67
|
-
type = :json
|
68
|
-
else
|
69
|
-
raise "Not a recognized TAP stream!"
|
70
|
-
end
|
71
|
-
|
72
|
-
case type
|
73
|
-
when :perl
|
74
|
-
stream_parser = PerlParser.new(options)
|
75
|
-
exit_code = stream_parser.consume(stdin)
|
76
|
-
when :yaml
|
77
|
-
stream_parser = YamlParser.new(options)
|
78
|
-
exit_code = stream_parser.consume(stdin)
|
79
|
-
when :json
|
80
|
-
stream_parser = JsonParser.new(options)
|
81
|
-
exit_code = stream_parser.consume(stdin)
|
82
|
-
end
|
83
|
-
|
84
|
-
exit(exit_code || 0)
|
85
|
-
end
|
2
|
+
module Tapout
|
3
|
+
end
|
86
4
|
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
@input = input
|
91
|
-
@line1 = input.gets
|
92
|
-
end
|
93
|
-
def line1
|
94
|
-
@line1
|
95
|
-
end
|
96
|
-
def gets
|
97
|
-
(class << self; self; end).class_eval %{
|
98
|
-
def gets; @input.gets; end
|
99
|
-
}
|
100
|
-
return @line1
|
101
|
-
end
|
102
|
-
end
|
5
|
+
require 'tapout/config'
|
6
|
+
require 'tapout/cli'
|
7
|
+
require 'tapout/parsers'
|
103
8
|
|
104
|
-
end
|
data/lib/tapout.yml
CHANGED
@@ -21,6 +21,10 @@ requirements:
|
|
21
21
|
groups:
|
22
22
|
- test
|
23
23
|
development: true
|
24
|
+
- name: ae
|
25
|
+
groups:
|
26
|
+
- test
|
27
|
+
development: true
|
24
28
|
dependencies: []
|
25
29
|
conflicts: []
|
26
30
|
repositories:
|
@@ -29,17 +33,22 @@ repositories:
|
|
29
33
|
name: upstream
|
30
34
|
resources:
|
31
35
|
home: http://rubyworks.github.com/tapout
|
36
|
+
wiki: http://github.com/rubyworks/tapout/wiki
|
37
|
+
docs: http://rubydoc.info/gems/tapout/frames
|
32
38
|
code: http://github.com/rubyworks/tapout
|
39
|
+
bugs: http://github.com/rubyworks/tapout/issues
|
40
|
+
mail: http://groups.google.com/rubyworks-mailinglist
|
41
|
+
chat: irc://chat.us.freenode.net#rubyworks
|
33
42
|
extra: {}
|
34
43
|
load_path:
|
35
44
|
- lib
|
36
45
|
revision: 0
|
37
46
|
created: '2010-12-23'
|
38
47
|
summary: Progressive TAP Harness
|
39
|
-
title:
|
40
|
-
version: 0.
|
48
|
+
title: TAPOUT
|
49
|
+
version: 0.4.0
|
41
50
|
name: tapout
|
42
51
|
description: Tapout is a TAP consumer that can take any TAP, TAP-Y or TAP-J stream
|
43
52
|
and output it in a variety of useful formats.
|
44
53
|
organization: RubyWorks
|
45
|
-
date: '
|
54
|
+
date: '2012-02-01'
|
data/lib/tapout/adapters/perl.rb
CHANGED
data/lib/tapout/cli.rb
ADDED
@@ -0,0 +1,98 @@
|
|
1
|
+
module Tapout
|
2
|
+
|
3
|
+
require 'optparse'
|
4
|
+
|
5
|
+
# Command line interface.
|
6
|
+
#
|
7
|
+
def self.cli(*argv)
|
8
|
+
options = {}
|
9
|
+
type = :modern
|
10
|
+
|
11
|
+
parser = OptionParser.new do |opt|
|
12
|
+
opt.banner = "tapout [options] [reporter]"
|
13
|
+
|
14
|
+
opt.separator("\nOPTIONS:")
|
15
|
+
|
16
|
+
#opt.on('-t', '--tap', 'Consume legacy TAP input') do |fmt|
|
17
|
+
# type = :legacy
|
18
|
+
#end
|
19
|
+
|
20
|
+
opt.on('--trace', '-t DEPTH', 'set backtrace depth') do |depth|
|
21
|
+
self.config.trace = depth
|
22
|
+
end
|
23
|
+
|
24
|
+
opt.on('--lines', '-l LINES', 'number of surrounding source code lines') do |lines|
|
25
|
+
self.config.lines = lines.to_i
|
26
|
+
end
|
27
|
+
|
28
|
+
opt.on('--minimal', '-m', 'show only errors, failures and pending tests') do |val|
|
29
|
+
self.config.minimal = val
|
30
|
+
end
|
31
|
+
|
32
|
+
opt.on('--no-color', 'Supress ANSI color codes') do
|
33
|
+
$ansi = false
|
34
|
+
end
|
35
|
+
|
36
|
+
opt.on('--debug', 'Run with $DEBUG flag on') do |fmt|
|
37
|
+
$DEBUG = true
|
38
|
+
end
|
39
|
+
|
40
|
+
opt.separator("\nREPORTERS:\n " + Reporters.index.keys.join("\n "))
|
41
|
+
end
|
42
|
+
|
43
|
+
parser.parse!(argv)
|
44
|
+
|
45
|
+
options[:format] = argv.first
|
46
|
+
|
47
|
+
# TODO: would be nice if it could automatically determine which
|
48
|
+
#c = $stdin.getc
|
49
|
+
# $stdin.pos = 0
|
50
|
+
#type = :legacy if c =~ /\d/
|
51
|
+
#type = :modern if c == '-'
|
52
|
+
|
53
|
+
stdin = Curmudgeon.new($stdin)
|
54
|
+
|
55
|
+
case stdin.line1
|
56
|
+
when /^\d/
|
57
|
+
type = :perl
|
58
|
+
when /^\-/
|
59
|
+
type = :yaml
|
60
|
+
when /^\{/
|
61
|
+
type = :json
|
62
|
+
else
|
63
|
+
raise "Not a recognized TAP stream!"
|
64
|
+
end
|
65
|
+
|
66
|
+
case type
|
67
|
+
when :perl
|
68
|
+
stream_parser = PerlParser.new(options)
|
69
|
+
exit_code = stream_parser.consume(stdin)
|
70
|
+
when :yaml
|
71
|
+
stream_parser = YamlParser.new(options)
|
72
|
+
exit_code = stream_parser.consume(stdin)
|
73
|
+
when :json
|
74
|
+
stream_parser = JsonParser.new(options)
|
75
|
+
exit_code = stream_parser.consume(stdin)
|
76
|
+
end
|
77
|
+
|
78
|
+
exit(exit_code || 0)
|
79
|
+
end
|
80
|
+
|
81
|
+
#
|
82
|
+
class Curmudgeon #< IO
|
83
|
+
def initialize(input)
|
84
|
+
@input = input
|
85
|
+
@line1 = input.gets
|
86
|
+
end
|
87
|
+
def line1
|
88
|
+
@line1
|
89
|
+
end
|
90
|
+
def gets
|
91
|
+
(class << self; self; end).class_eval %{
|
92
|
+
def gets; @input.gets; end
|
93
|
+
}
|
94
|
+
return @line1
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
end
|