starting_blocks 0.1.1 → 0.2.1
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/lib/starting_blocks/result_parser.rb +22 -18
- data/lib/starting_blocks/result_text_parser.rb +31 -0
- data/lib/starting_blocks/version.rb +1 -1
- data/lib/starting_blocks.rb +1 -0
- data/spec/starting_blocks/result_parser_spec.rb +56 -98
- data/spec/starting_blocks/result_text_parser_spec.rb +115 -0
- metadata +44 -19
- checksums.yaml +0 -7
@@ -1,31 +1,35 @@
|
|
1
1
|
module StartingBlocks
|
2
2
|
class ResultParser
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
failures: failures,
|
9
|
-
errors: errors,
|
10
|
-
skips: skips
|
11
|
-
}
|
3
|
+
|
4
|
+
def parse text
|
5
|
+
output = load_the_output_from text
|
6
|
+
output[:color] = color
|
7
|
+
output
|
12
8
|
end
|
13
9
|
|
14
10
|
private
|
15
11
|
|
16
|
-
def
|
17
|
-
|
12
|
+
def color
|
13
|
+
return :red unless tests_exist?
|
14
|
+
return :red if problems_exist?
|
15
|
+
return :yellow if skips_exist?
|
16
|
+
:green
|
17
|
+
end
|
18
|
+
|
19
|
+
def load_the_output_from text
|
20
|
+
@output = StartingBlocks::ResultTextParser.new.parse text
|
18
21
|
end
|
19
22
|
|
20
|
-
def
|
21
|
-
@
|
22
|
-
rescue
|
23
|
-
0
|
23
|
+
def tests_exist?
|
24
|
+
(@output[:tests] || 0) > 0
|
24
25
|
end
|
25
26
|
|
26
|
-
def
|
27
|
-
|
27
|
+
def problems_exist?
|
28
|
+
((@output[:errors] || 0) > 0) or ((@output[:failures] || 0) > 0)
|
29
|
+
end
|
30
|
+
|
31
|
+
def skips_exist?
|
32
|
+
(@output[:skips] || 0) > 0
|
28
33
|
end
|
29
34
|
end
|
30
35
|
end
|
31
|
-
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module StartingBlocks
|
2
|
+
class ResultTextParser
|
3
|
+
def parse(text)
|
4
|
+
@text = text
|
5
|
+
{
|
6
|
+
tests: greater_of([tests, runs]),
|
7
|
+
assertions: assertions,
|
8
|
+
failures: failures,
|
9
|
+
errors: errors,
|
10
|
+
skips: skips
|
11
|
+
}
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def method_missing(meth, *args, &blk)
|
17
|
+
get_count_of meth.to_s
|
18
|
+
end
|
19
|
+
|
20
|
+
def get_count_of name
|
21
|
+
@text.scan(/(\d+ #{name})/)[-1][0].split(' ')[0].to_i
|
22
|
+
rescue
|
23
|
+
0
|
24
|
+
end
|
25
|
+
|
26
|
+
def greater_of values
|
27
|
+
values.sort_by { |x| x }.last
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
data/lib/starting_blocks.rb
CHANGED
@@ -3,6 +3,7 @@ require_relative 'starting_blocks/displayable'
|
|
3
3
|
require_relative 'starting_blocks/runner'
|
4
4
|
require_relative 'starting_blocks/watcher'
|
5
5
|
require_relative 'starting_blocks/result_parser'
|
6
|
+
require_relative 'starting_blocks/result_text_parser'
|
6
7
|
require_relative 'starting_blocks/publisher'
|
7
8
|
#require_relative 'extensions/blinky'
|
8
9
|
|
@@ -1,115 +1,73 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
2
|
|
3
3
|
describe StartingBlocks::ResultParser do
|
4
|
-
describe "simple case" do
|
5
|
-
let(:text) do <<EOF
|
6
|
-
Fabulous tests in 0.000372s, 2688.1720 tests/s, 2688.1720 assertions/s.
|
7
4
|
|
8
|
-
|
5
|
+
let(:parsed_output) { {} }
|
9
6
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
let(:expected_results) do
|
15
|
-
{
|
16
|
-
tests: 2,
|
17
|
-
assertions: 3,
|
18
|
-
failures: 4,
|
19
|
-
errors: 5,
|
20
|
-
skips: 6
|
21
|
-
}
|
22
|
-
end
|
7
|
+
let(:output) do
|
8
|
+
text = Object.new
|
9
|
+
text_parser = Object.new
|
23
10
|
|
24
|
-
|
25
|
-
|
26
|
-
end
|
11
|
+
StartingBlocks::ResultTextParser.stubs(:new).returns text_parser
|
12
|
+
text_parser.stubs(:parse).with(text).returns parsed_output
|
27
13
|
|
28
|
-
|
29
|
-
subject.parse(text).contrast_with! expected_results
|
30
|
-
end
|
14
|
+
StartingBlocks::ResultParser.new.parse text
|
31
15
|
end
|
32
16
|
|
33
|
-
|
34
|
-
|
35
|
-
aaaaa
|
36
|
-
801 tests, 30014 assertions, 432 failures, 234 errors, 2141 skips
|
37
|
-
bbbbbb
|
38
|
-
EOF
|
39
|
-
end
|
40
|
-
|
41
|
-
let(:expected_results) do
|
42
|
-
{
|
43
|
-
tests: 801,
|
44
|
-
assertions: 30014,
|
45
|
-
failures: 432,
|
46
|
-
errors: 234,
|
47
|
-
skips: 2141
|
48
|
-
}
|
49
|
-
end
|
50
|
-
|
51
|
-
def subject
|
52
|
-
StartingBlocks::ResultParser.new
|
53
|
-
end
|
54
|
-
|
55
|
-
it "should return the counts" do
|
56
|
-
subject.parse(text).contrast_with! expected_results
|
57
|
-
end
|
17
|
+
it "should return the result from the text parser" do
|
18
|
+
output.must_be_same_as parsed_output
|
58
19
|
end
|
59
20
|
|
60
|
-
describe "
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
21
|
+
describe "different output scenarios" do
|
22
|
+
|
23
|
+
[:tests, :skips].to_objects {[
|
24
|
+
[9, 1], [10, 2], [10, 3]
|
25
|
+
]}.each do |test|
|
26
|
+
describe "yellow" do
|
27
|
+
it "should have tests and skips" do
|
28
|
+
parsed_output[:tests] = test.tests
|
29
|
+
parsed_output[:skips] = test.skips
|
30
|
+
output[:color].must_equal :yellow
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
[:tests, :failures, :errors, :skips].to_objects {[
|
36
|
+
[1, 1, nil, nil],
|
37
|
+
[2, nil, 1, nil],
|
38
|
+
[3, nil, 2, 0],
|
39
|
+
[4, 3, nil, 0],
|
40
|
+
]}.each do |test|
|
41
|
+
describe "red" do
|
42
|
+
it "should return red" do
|
43
|
+
parsed_output[:tests] = test.tests
|
44
|
+
parsed_output[:failures] = test.failures
|
45
|
+
parsed_output[:errors] = test.errors
|
46
|
+
parsed_output[:skips] = test.skips
|
47
|
+
output[:color].must_equal :red
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
[:tests, :failures, :errors, :skips].to_objects {[
|
53
|
+
[1, nil, nil, nil],
|
54
|
+
[2, 0, nil, nil],
|
55
|
+
[3, nil, 0, nil],
|
56
|
+
[4, nil, nil, 0],
|
57
|
+
]}.each do |test|
|
58
|
+
|
59
|
+
describe "green" do
|
60
|
+
it "should set the color to red if there are tests and failures" do
|
61
|
+
parsed_output[:tests] = test.tests
|
62
|
+
parsed_output[:failures] = test.failures
|
63
|
+
parsed_output[:errors] = test.errors
|
64
|
+
parsed_output[:skips] = test.skips
|
65
|
+
output[:color].must_equal :green
|
66
|
+
end
|
67
|
+
end
|
77
68
|
|
78
|
-
def subject
|
79
|
-
StartingBlocks::ResultParser.new
|
80
69
|
end
|
81
70
|
|
82
|
-
it "should return the counts" do
|
83
|
-
subject.parse(text).contrast_with! expected_results
|
84
|
-
end
|
85
71
|
end
|
86
72
|
|
87
|
-
describe "simple case, minitest 5.0" do
|
88
|
-
let(:text) do <<EOF
|
89
|
-
Fabulous run in 0.000372s, 2688.1720 runs/s, 2688.1720 assertions/s.
|
90
|
-
|
91
|
-
2 runs, 3 assertions, 4 failures, 5 errors, 6 skips
|
92
|
-
|
93
|
-
asldkjflaskjflsakj
|
94
|
-
EOF
|
95
|
-
end
|
96
|
-
|
97
|
-
let(:expected_results) do
|
98
|
-
{
|
99
|
-
tests: 2,
|
100
|
-
assertions: 3,
|
101
|
-
failures: 4,
|
102
|
-
errors: 5,
|
103
|
-
skips: 6
|
104
|
-
}
|
105
|
-
end
|
106
|
-
|
107
|
-
def subject
|
108
|
-
StartingBlocks::ResultParser.new
|
109
|
-
end
|
110
|
-
|
111
|
-
it "should return the counts" do
|
112
|
-
subject.parse(text).contrast_with! expected_results
|
113
|
-
end
|
114
|
-
end
|
115
73
|
end
|
@@ -0,0 +1,115 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe StartingBlocks::ResultTextParser do
|
4
|
+
describe "simple case" do
|
5
|
+
let(:text) do <<EOF
|
6
|
+
Fabulous tests in 0.000372s, 2688.1720 tests/s, 2688.1720 assertions/s.
|
7
|
+
|
8
|
+
2 tests, 3 assertions, 4 failures, 5 errors, 6 skips
|
9
|
+
|
10
|
+
asldkjflaskjflsakj
|
11
|
+
EOF
|
12
|
+
end
|
13
|
+
|
14
|
+
let(:expected_results) do
|
15
|
+
{
|
16
|
+
tests: 2,
|
17
|
+
assertions: 3,
|
18
|
+
failures: 4,
|
19
|
+
errors: 5,
|
20
|
+
skips: 6
|
21
|
+
}
|
22
|
+
end
|
23
|
+
|
24
|
+
def subject
|
25
|
+
StartingBlocks::ResultTextParser.new
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should return the counts" do
|
29
|
+
subject.parse(text).contrast_with! expected_results
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe "another case" do
|
34
|
+
let(:text) do <<EOF
|
35
|
+
aaaaa
|
36
|
+
801 tests, 30014 assertions, 432 failures, 234 errors, 2141 skips
|
37
|
+
bbbbbb
|
38
|
+
EOF
|
39
|
+
end
|
40
|
+
|
41
|
+
let(:expected_results) do
|
42
|
+
{
|
43
|
+
tests: 801,
|
44
|
+
assertions: 30014,
|
45
|
+
failures: 432,
|
46
|
+
errors: 234,
|
47
|
+
skips: 2141
|
48
|
+
}
|
49
|
+
end
|
50
|
+
|
51
|
+
def subject
|
52
|
+
StartingBlocks::ResultTextParser.new
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should return the counts" do
|
56
|
+
subject.parse(text).contrast_with! expected_results
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
describe "unparsable text" do
|
61
|
+
let(:text) do <<EOF
|
62
|
+
aaaaa
|
63
|
+
lkjsdlfkjslkjslkjalskjfsalkjfd
|
64
|
+
bbbbbb
|
65
|
+
EOF
|
66
|
+
end
|
67
|
+
|
68
|
+
let(:expected_results) do
|
69
|
+
{
|
70
|
+
tests: 0,
|
71
|
+
assertions: 0,
|
72
|
+
failures: 0,
|
73
|
+
errors: 0,
|
74
|
+
skips: 0
|
75
|
+
}
|
76
|
+
end
|
77
|
+
|
78
|
+
def subject
|
79
|
+
StartingBlocks::ResultTextParser.new
|
80
|
+
end
|
81
|
+
|
82
|
+
it "should return the counts" do
|
83
|
+
subject.parse(text).contrast_with! expected_results
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
describe "simple case, minitest 5.0" do
|
88
|
+
let(:text) do <<EOF
|
89
|
+
Fabulous run in 0.000372s, 2688.1720 runs/s, 2688.1720 assertions/s.
|
90
|
+
|
91
|
+
2 runs, 3 assertions, 4 failures, 5 errors, 6 skips
|
92
|
+
|
93
|
+
asldkjflaskjflsakj
|
94
|
+
EOF
|
95
|
+
end
|
96
|
+
|
97
|
+
let(:expected_results) do
|
98
|
+
{
|
99
|
+
tests: 2,
|
100
|
+
assertions: 3,
|
101
|
+
failures: 4,
|
102
|
+
errors: 5,
|
103
|
+
skips: 6
|
104
|
+
}
|
105
|
+
end
|
106
|
+
|
107
|
+
def subject
|
108
|
+
StartingBlocks::ResultTextParser.new
|
109
|
+
end
|
110
|
+
|
111
|
+
it "should return the counts" do
|
112
|
+
subject.parse(text).contrast_with! expected_results
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
metadata
CHANGED
@@ -1,18 +1,20 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: starting_blocks
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.1
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Darren Cauthon
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date: 2014-02-
|
12
|
+
date: 2014-02-28 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: bundler
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
16
18
|
requirements:
|
17
19
|
- - ~>
|
18
20
|
- !ruby/object:Gem::Version
|
@@ -20,6 +22,7 @@ dependencies:
|
|
20
22
|
type: :development
|
21
23
|
prerelease: false
|
22
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
23
26
|
requirements:
|
24
27
|
- - ~>
|
25
28
|
- !ruby/object:Gem::Version
|
@@ -27,81 +30,92 @@ dependencies:
|
|
27
30
|
- !ruby/object:Gem::Dependency
|
28
31
|
name: rake
|
29
32
|
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
30
34
|
requirements:
|
31
|
-
- - '>='
|
35
|
+
- - ! '>='
|
32
36
|
- !ruby/object:Gem::Version
|
33
37
|
version: '0'
|
34
38
|
type: :development
|
35
39
|
prerelease: false
|
36
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
37
42
|
requirements:
|
38
|
-
- - '>='
|
43
|
+
- - ! '>='
|
39
44
|
- !ruby/object:Gem::Version
|
40
45
|
version: '0'
|
41
46
|
- !ruby/object:Gem::Dependency
|
42
47
|
name: contrast
|
43
48
|
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
44
50
|
requirements:
|
45
|
-
- - '>='
|
51
|
+
- - ! '>='
|
46
52
|
- !ruby/object:Gem::Version
|
47
53
|
version: '0'
|
48
54
|
type: :development
|
49
55
|
prerelease: false
|
50
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
51
58
|
requirements:
|
52
|
-
- - '>='
|
59
|
+
- - ! '>='
|
53
60
|
- !ruby/object:Gem::Version
|
54
61
|
version: '0'
|
55
62
|
- !ruby/object:Gem::Dependency
|
56
63
|
name: subtle
|
57
64
|
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
58
66
|
requirements:
|
59
|
-
- - '>='
|
67
|
+
- - ! '>='
|
60
68
|
- !ruby/object:Gem::Version
|
61
69
|
version: '0'
|
62
70
|
type: :development
|
63
71
|
prerelease: false
|
64
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
65
74
|
requirements:
|
66
|
-
- - '>='
|
75
|
+
- - ! '>='
|
67
76
|
- !ruby/object:Gem::Version
|
68
77
|
version: '0'
|
69
78
|
- !ruby/object:Gem::Dependency
|
70
79
|
name: mocha
|
71
80
|
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
72
82
|
requirements:
|
73
|
-
- - '>='
|
83
|
+
- - ! '>='
|
74
84
|
- !ruby/object:Gem::Version
|
75
85
|
version: '0'
|
76
86
|
type: :development
|
77
87
|
prerelease: false
|
78
88
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
79
90
|
requirements:
|
80
|
-
- - '>='
|
91
|
+
- - ! '>='
|
81
92
|
- !ruby/object:Gem::Version
|
82
93
|
version: '0'
|
83
94
|
- !ruby/object:Gem::Dependency
|
84
95
|
name: coveralls
|
85
96
|
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
86
98
|
requirements:
|
87
|
-
- - '>='
|
99
|
+
- - ! '>='
|
88
100
|
- !ruby/object:Gem::Version
|
89
101
|
version: '0'
|
90
102
|
type: :development
|
91
103
|
prerelease: false
|
92
104
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
93
106
|
requirements:
|
94
|
-
- - '>='
|
107
|
+
- - ! '>='
|
95
108
|
- !ruby/object:Gem::Version
|
96
109
|
version: '0'
|
97
110
|
- !ruby/object:Gem::Dependency
|
98
111
|
name: listen
|
99
112
|
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
100
114
|
requirements:
|
101
115
|
- - ~>
|
102
116
|
- !ruby/object:Gem::Version
|
103
117
|
version: 1.3.1
|
104
|
-
- - '>='
|
118
|
+
- - ! '>='
|
105
119
|
- !ruby/object:Gem::Version
|
106
120
|
version: '1.0'
|
107
121
|
- - <
|
@@ -110,11 +124,12 @@ dependencies:
|
|
110
124
|
type: :runtime
|
111
125
|
prerelease: false
|
112
126
|
version_requirements: !ruby/object:Gem::Requirement
|
127
|
+
none: false
|
113
128
|
requirements:
|
114
129
|
- - ~>
|
115
130
|
- !ruby/object:Gem::Version
|
116
131
|
version: 1.3.1
|
117
|
-
- - '>='
|
132
|
+
- - ! '>='
|
118
133
|
- !ruby/object:Gem::Version
|
119
134
|
version: '1.0'
|
120
135
|
- - <
|
@@ -139,40 +154,50 @@ files:
|
|
139
154
|
- lib/starting_blocks/displayable.rb
|
140
155
|
- lib/starting_blocks/publisher.rb
|
141
156
|
- lib/starting_blocks/result_parser.rb
|
157
|
+
- lib/starting_blocks/result_text_parser.rb
|
142
158
|
- lib/starting_blocks/runner.rb
|
143
159
|
- lib/starting_blocks/version.rb
|
144
160
|
- lib/starting_blocks/watcher.rb
|
145
161
|
- spec/spec_helper.rb
|
146
162
|
- spec/starting_blocks/publisher_spec.rb
|
147
163
|
- spec/starting_blocks/result_parser_spec.rb
|
164
|
+
- spec/starting_blocks/result_text_parser_spec.rb
|
148
165
|
- spec/starting_blocks/runner_spec.rb
|
149
166
|
- starting_blocks.gemspec
|
150
167
|
homepage: http://www.github.com/darrencauthon/starting_blocks
|
151
168
|
licenses:
|
152
169
|
- MIT
|
153
|
-
metadata: {}
|
154
170
|
post_install_message:
|
155
171
|
rdoc_options: []
|
156
172
|
require_paths:
|
157
173
|
- lib
|
158
174
|
required_ruby_version: !ruby/object:Gem::Requirement
|
175
|
+
none: false
|
159
176
|
requirements:
|
160
|
-
- - '>='
|
177
|
+
- - ! '>='
|
161
178
|
- !ruby/object:Gem::Version
|
162
179
|
version: '0'
|
180
|
+
segments:
|
181
|
+
- 0
|
182
|
+
hash: 4386760652791413549
|
163
183
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
184
|
+
none: false
|
164
185
|
requirements:
|
165
|
-
- - '>='
|
186
|
+
- - ! '>='
|
166
187
|
- !ruby/object:Gem::Version
|
167
188
|
version: '0'
|
189
|
+
segments:
|
190
|
+
- 0
|
191
|
+
hash: 4386760652791413549
|
168
192
|
requirements: []
|
169
193
|
rubyforge_project:
|
170
|
-
rubygems_version:
|
194
|
+
rubygems_version: 1.8.25
|
171
195
|
signing_key:
|
172
|
-
specification_version:
|
196
|
+
specification_version: 3
|
173
197
|
summary: One command to run all tests, test watcher, etc.
|
174
198
|
test_files:
|
175
199
|
- spec/spec_helper.rb
|
176
200
|
- spec/starting_blocks/publisher_spec.rb
|
177
201
|
- spec/starting_blocks/result_parser_spec.rb
|
202
|
+
- spec/starting_blocks/result_text_parser_spec.rb
|
178
203
|
- spec/starting_blocks/runner_spec.rb
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: 0092771c3a1d485458ee8630785cec97d8c38562
|
4
|
-
data.tar.gz: cb8947d7f7289a9c6556914b6f36fb1a11c8b3d7
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: d9d602d1547d3069d00be55727001d6ab5379664516bd9f5403858254982fddfad2b9214c6f9032ea422c61c127b0d12e955907cb2e776a42cbce22dcdf0ff26
|
7
|
-
data.tar.gz: 2e85f93c2f4089e740bf86d258ee9772f46da343105c43a693bece4b06638b448c508da262eff72d51e0029e1d96e0cd7e48fd37b7eaf522fa54f435bba16676
|