assert-view 0.3.0 → 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/Gemfile.lock +2 -2
- data/lib/assert/view/base.rb +88 -13
- data/lib/assert/view/default_view.rb +27 -63
- data/lib/assert/view/helpers/capture_output.rb +16 -0
- data/lib/assert/view/helpers/leftright_columns.rb +48 -0
- data/lib/assert/view/leftright_view.rb +115 -0
- data/lib/assert/view/redgreen_view.rb +63 -0
- data/lib/assert/view/test_unit_view.rb +66 -0
- data/lib/assert/view/version.rb +1 -1
- data/test/base_test.rb +12 -7
- data/test/default_view_test.rb +2 -4
- data/test/leftright_view_test.rb +19 -0
- data/test/test_unit_test.rb +19 -0
- metadata +13 -4
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
assert-view (0.
|
4
|
+
assert-view (0.4.0)
|
5
5
|
ansi (~> 1.3)
|
6
6
|
undies (~> 1.1)
|
7
7
|
|
@@ -12,7 +12,7 @@ GEM
|
|
12
12
|
assert (0.6.0)
|
13
13
|
assert-view (~> 0.3)
|
14
14
|
rake (0.9.2)
|
15
|
-
undies (1.
|
15
|
+
undies (1.2.0)
|
16
16
|
|
17
17
|
PLATFORMS
|
18
18
|
ruby
|
data/lib/assert/view/base.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'assert/result'
|
1
2
|
require 'assert/options'
|
2
3
|
|
3
4
|
module Assert::View
|
@@ -50,11 +51,11 @@ module Assert::View
|
|
50
51
|
|
51
52
|
include Assert::Options
|
52
53
|
options do
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
54
|
+
default_pass_abbrev '.'
|
55
|
+
default_fail_abbrev 'F'
|
56
|
+
default_ignore_abbrev 'I'
|
57
|
+
default_skip_abbrev 'S'
|
58
|
+
default_error_abbrev 'E'
|
58
59
|
end
|
59
60
|
|
60
61
|
# the Renderer defines the hooks and callbacks needed for the runner to
|
@@ -114,34 +115,108 @@ module Assert::View
|
|
114
115
|
self.count(:tests) > 0
|
115
116
|
end
|
116
117
|
|
117
|
-
def
|
118
|
-
self.count(:
|
118
|
+
def all_pass?
|
119
|
+
self.count(:pass) == self.count(:results)
|
120
|
+
end
|
121
|
+
|
122
|
+
# get a uniq list of contexts for the test suite
|
123
|
+
def suite_contexts
|
124
|
+
@suite_contexts ||= self.suite.tests.inject([]) do |contexts, test|
|
125
|
+
contexts << test.context_info.klass
|
126
|
+
end.uniq
|
127
|
+
end
|
128
|
+
|
129
|
+
def ordered_suite_contexts
|
130
|
+
self.suite_contexts.sort{|a,b| a.to_s <=> b.to_s}
|
131
|
+
end
|
132
|
+
|
133
|
+
# get a uniq list of files containing contexts for the test suite
|
134
|
+
def suite_files
|
135
|
+
@suite_files ||= self.suite.tests.inject([]) do |files, test|
|
136
|
+
files << test.context_info.file
|
137
|
+
end.uniq
|
138
|
+
end
|
139
|
+
|
140
|
+
def ordered_suite_files
|
141
|
+
self.suite_files.sort{|a,b| a.to_s <=> b.to_s}
|
142
|
+
end
|
143
|
+
|
144
|
+
# get all the results that have details to show
|
145
|
+
# in addition, if a block is given...
|
146
|
+
# yield each result with its index, test, and any captured output
|
147
|
+
def detailed_results(test=nil)
|
148
|
+
tests = test.nil? ? self.suite.ordered_tests.reverse : [test]
|
149
|
+
result_index = 0
|
150
|
+
tests.collect do |test|
|
151
|
+
result_index += 1
|
152
|
+
test.results.
|
153
|
+
select { |result| self.show_result_details?(result) }.
|
154
|
+
each {|r| yield r, result_index, test, test.output if block_given?}
|
155
|
+
end.compact.flatten
|
156
|
+
end
|
157
|
+
|
158
|
+
# get all the results for a klass or other
|
159
|
+
def all_results_for(what=nil)
|
160
|
+
tests = if what.kind_of?(Class) && what.ancestors.include?(Assert::Context)
|
161
|
+
# test results for the given context
|
162
|
+
self.suite.ordered_tests.select do |test|
|
163
|
+
test.context_info.klass == what
|
164
|
+
end
|
165
|
+
elsif what.kind_of?(String)
|
166
|
+
# test results for the given test file
|
167
|
+
self.suite.ordered_tests.select do |test|
|
168
|
+
test.context_info.file == what
|
169
|
+
end
|
170
|
+
else
|
171
|
+
selt.suite.ordered_tests
|
172
|
+
end
|
173
|
+
|
174
|
+
result_index = 0
|
175
|
+
tests.collect do |test|
|
176
|
+
result_index += 1
|
177
|
+
test.results.
|
178
|
+
each {|r| yield r, result_index, test, test.output if block_given?}
|
179
|
+
end.compact.flatten
|
180
|
+
end
|
181
|
+
|
182
|
+
# only show result details for failed or errored results
|
183
|
+
# show result details if a skip or passed result was issues w/ a message
|
184
|
+
def show_result_details?(result)
|
185
|
+
([:fail, :error].include?(result.to_sym)) ||
|
186
|
+
([:skip, :ignore].include?(result.to_sym) && result.message)
|
187
|
+
end
|
188
|
+
|
189
|
+
def capture_output_start_msg
|
190
|
+
"--- stdout ---"
|
191
|
+
end
|
192
|
+
def capture_output_end_msg
|
193
|
+
"--------------"
|
119
194
|
end
|
120
195
|
|
121
196
|
# return a list of result symbols that have actually occurred
|
122
197
|
def ocurring_result_types
|
123
198
|
@result_types ||= [
|
124
|
-
:
|
199
|
+
:pass, :fail, :ignore, :skip, :error
|
125
200
|
].select { |result_sym| self.count(result_sym) > 0 }
|
126
201
|
end
|
127
202
|
|
128
203
|
# print a result summary message for a given result type
|
129
204
|
def result_summary_msg(result_type)
|
130
|
-
if result_type == :
|
131
|
-
self.
|
205
|
+
if result_type == :pass && self.all_pass?
|
206
|
+
self.all_pass_result_summary_msg
|
132
207
|
else
|
133
208
|
"#{self.count(result_type)} #{result_type.to_s}"
|
134
209
|
end
|
135
210
|
end
|
136
211
|
|
137
212
|
# generate an appropriate result summary msg for all tests passing
|
138
|
-
def
|
213
|
+
def all_pass_result_summary_msg
|
139
214
|
if self.count(:results) < 1
|
140
215
|
"uhh..."
|
141
216
|
elsif self.count(:results) == 1
|
142
|
-
"
|
217
|
+
"pass"
|
143
218
|
else
|
144
|
-
"all
|
219
|
+
"all pass"
|
145
220
|
end
|
146
221
|
end
|
147
222
|
|
@@ -1,8 +1,6 @@
|
|
1
|
-
require 'assert/result'
|
2
|
-
require 'assert/options'
|
3
|
-
|
4
1
|
require 'assert/view/base'
|
5
2
|
require 'assert/view/helpers/ansi'
|
3
|
+
require 'assert/view/helpers/capture_output'
|
6
4
|
|
7
5
|
module Assert::View
|
8
6
|
|
@@ -10,104 +8,70 @@ module Assert::View
|
|
10
8
|
# designed for terminal viewing.
|
11
9
|
|
12
10
|
class DefaultView < Base
|
11
|
+
helper Helpers::CaptureOutput
|
13
12
|
helper Helpers::AnsiStyles
|
13
|
+
|
14
14
|
options do
|
15
|
-
styled
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
15
|
+
styled true
|
16
|
+
pass_styles :green
|
17
|
+
fail_styles :red, :bold
|
18
|
+
error_styles :yellow, :bold
|
19
|
+
skip_styles :cyan
|
20
|
+
ignore_styles :magenta
|
21
21
|
end
|
22
22
|
|
23
23
|
template do
|
24
|
-
__
|
25
24
|
__ view.loaded_tests_statement
|
26
25
|
|
27
26
|
if view.tests?
|
28
27
|
|
29
28
|
__ view.running_tests_statement
|
30
29
|
|
31
|
-
view.run_tests(runner) do |
|
32
|
-
|
33
|
-
result_abbrev
|
34
|
-
__ ansi_styled_msg(result_abbrev, result_ansi_styles(result_sym)), false
|
30
|
+
view.run_tests(runner) do |result|
|
31
|
+
result_abbrev = view.options.send("#{result.to_sym}_abbrev")
|
32
|
+
__ ansi_styled_msg(result_abbrev, result_ansi_styles(result)), false
|
35
33
|
end
|
36
34
|
__ "\n" # add a newline after streamed runner output
|
37
35
|
|
38
|
-
view.detailed_results do |result, output|
|
36
|
+
view.detailed_results do |result, index, test, output|
|
39
37
|
__ ansi_styled_msg(result.to_s, result_ansi_styles(result))
|
40
|
-
|
41
|
-
if !output.empty?
|
42
|
-
__ view.result_output_start_msg
|
43
|
-
__ output, false
|
44
|
-
__ view.result_output_end_msg
|
45
|
-
end
|
46
|
-
|
38
|
+
__ captured_output(output) if output && !output.empty?
|
47
39
|
__
|
48
40
|
end
|
49
41
|
|
50
42
|
end
|
51
43
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
__ [ view.result_count_statement, ": ", styled_results_breakdown_statement ].join('')
|
44
|
+
__ [ view.result_count_statement, ": ",
|
45
|
+
(view.results_breakdown_statement do |msg, result_sym|
|
46
|
+
ansi_styled_msg(msg, result_ansi_styles(result_sym))
|
47
|
+
end)
|
48
|
+
].join('')
|
58
49
|
__
|
59
50
|
__ view.run_time_statement
|
60
51
|
end
|
61
52
|
|
62
53
|
def loaded_tests_statement
|
63
|
-
"Loaded suite (#{
|
64
|
-
end
|
65
|
-
|
66
|
-
def running_tests_statement
|
67
|
-
"Running tests in random order, seeded with: \"#{self.runner_seed}\""
|
68
|
-
end
|
69
|
-
|
70
|
-
# show test details in reverse order from how they were collected (FILO)
|
71
|
-
def detailed_tests
|
72
|
-
self.suite.ordered_tests.reverse
|
54
|
+
"Loaded suite (#{self.test_count_statement})"
|
73
55
|
end
|
74
56
|
|
75
|
-
|
76
|
-
|
77
|
-
# yield each result with its test output
|
78
|
-
def detailed_results(test=nil)
|
79
|
-
tests = test.nil? ? self.detailed_tests : [test]
|
80
|
-
tests.collect do |test|
|
81
|
-
test.results.
|
82
|
-
select { |result| self.show_result_details?(result) }.
|
83
|
-
each {|r| yield r, test.output if block_given?}
|
84
|
-
end.compact.flatten
|
57
|
+
def test_count_statement
|
58
|
+
"#{self.count(:tests)} test#{'s' if self.count(:tests) != 1}"
|
85
59
|
end
|
86
60
|
|
87
|
-
|
88
|
-
|
89
|
-
def show_result_details?(result)
|
90
|
-
([:failed, :errored].include?(result.to_sym)) ||
|
91
|
-
([:skipped, :ignored].include?(result.to_sym) && result.message)
|
92
|
-
end
|
93
|
-
|
94
|
-
def result_output_start_msg
|
95
|
-
"--- stdout ---"
|
96
|
-
end
|
97
|
-
def result_output_end_msg
|
98
|
-
"--------------"
|
61
|
+
def running_tests_statement
|
62
|
+
"Running tests in random order, seeded with \"#{self.runner_seed}\""
|
99
63
|
end
|
100
64
|
|
101
65
|
# generate a sentence fragment describing the breakdown of test results
|
102
66
|
# if a block is given, yield each msg in the breakdown for custom template formatting
|
103
67
|
def results_breakdown_statement
|
104
|
-
self.to_sentence(self.ocurring_result_types.collect do |
|
105
|
-
yield(self.result_summary_msg(
|
68
|
+
self.to_sentence(self.ocurring_result_types.collect do |result_sym|
|
69
|
+
yield(self.result_summary_msg(result_sym), result_sym) if block_given?
|
106
70
|
end)
|
107
71
|
end
|
108
72
|
|
109
73
|
def result_count_statement
|
110
|
-
"#{self.count(:results)}
|
74
|
+
"#{self.count(:results)} result#{'s' if self.count(:results) != 1}"
|
111
75
|
end
|
112
76
|
|
113
77
|
def run_time_statement
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Assert::View::Helpers
|
2
|
+
|
3
|
+
module CaptureOutput
|
4
|
+
|
5
|
+
def captured_output(output)
|
6
|
+
if !output.empty?
|
7
|
+
# TODO: move to the base view
|
8
|
+
[ view.capture_output_start_msg,
|
9
|
+
output + view.capture_output_end_msg
|
10
|
+
].join("\n")
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
module Assert::View::Helpers
|
2
|
+
|
3
|
+
module LeftrightColumns
|
4
|
+
|
5
|
+
def left_column(text, opts={})
|
6
|
+
col_width = opts[:width] || self.view.left_column_width
|
7
|
+
__ case view.options.left_column_justify
|
8
|
+
when :left
|
9
|
+
text.to_s+" "*(col_width-(text.to_s.size))
|
10
|
+
else
|
11
|
+
" "*(col_width-(text.to_s.size))+text.to_s+" "
|
12
|
+
end, false
|
13
|
+
end
|
14
|
+
|
15
|
+
def right_column(text, opts={})
|
16
|
+
lines = text.split("\n")
|
17
|
+
right_columnize(lines.first, opts)
|
18
|
+
lines[1..-1].each do |line|
|
19
|
+
self.left_column("")
|
20
|
+
right_columnize(line, opts)
|
21
|
+
end
|
22
|
+
__ if opts[:endline]
|
23
|
+
end
|
24
|
+
|
25
|
+
def right_columnize(text, opts={})
|
26
|
+
col_width = opts[:width] || self.view.right_column_width
|
27
|
+
# split text into array of limit sizes
|
28
|
+
|
29
|
+
n,r = text.size.divmod(col_width)
|
30
|
+
grps = (0..(n-1)).collect do |i|
|
31
|
+
i == 0 ? text[i*col_width,col_width] : " "+text[i*col_width,col_width]
|
32
|
+
end
|
33
|
+
if r > 0
|
34
|
+
grps << (n > 0 ? " "+text[-r,r] : text[-r,r])
|
35
|
+
end
|
36
|
+
|
37
|
+
__ grps.first
|
38
|
+
if grps.size > 1
|
39
|
+
grps[1..-1].each do |g|
|
40
|
+
self.left_column("")
|
41
|
+
__ g
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
@@ -0,0 +1,115 @@
|
|
1
|
+
require 'assert/view/default_view'
|
2
|
+
require 'assert/view/helpers/leftright_columns'
|
3
|
+
|
4
|
+
module Assert::View
|
5
|
+
|
6
|
+
# This is the default view used by assert. It renders ansi test output
|
7
|
+
# designed for terminal viewing.
|
8
|
+
|
9
|
+
class LeftrightView < DefaultView
|
10
|
+
helper Helpers::LeftrightColumns
|
11
|
+
|
12
|
+
options do
|
13
|
+
default_right_column_width 80
|
14
|
+
default_left_column_groupby :context
|
15
|
+
default_left_column_justify :right
|
16
|
+
end
|
17
|
+
|
18
|
+
template do
|
19
|
+
__ view.loaded_suite_statement
|
20
|
+
__ view.started_statement
|
21
|
+
|
22
|
+
if view.tests?
|
23
|
+
__
|
24
|
+
|
25
|
+
view.run_tests(runner)
|
26
|
+
|
27
|
+
view.leftright_groups.each do |grouping|
|
28
|
+
result_abbrevs = ""
|
29
|
+
view.all_results_for(grouping) do |result, index, test, output|
|
30
|
+
result_abbrev = view.options.send("#{result.to_sym}_abbrev")
|
31
|
+
result_abbrevs << ansi_styled_msg(result_abbrev, result_ansi_styles(result))
|
32
|
+
end
|
33
|
+
left_column(view.left_column_display(grouping))
|
34
|
+
right_column(result_abbrevs, {
|
35
|
+
:width => (view.options.styled ? 10 : 1)*view.right_column_width
|
36
|
+
})
|
37
|
+
|
38
|
+
result_details = []
|
39
|
+
view.all_results_for(grouping) do |result, index, test, output|
|
40
|
+
if view.show_result_details?(result)
|
41
|
+
result_details << [
|
42
|
+
ansi_styled_msg(result.to_s, result_ansi_styles(result)),
|
43
|
+
captured_output(output),
|
44
|
+
"\n"
|
45
|
+
].compact.join("\n")
|
46
|
+
end
|
47
|
+
end
|
48
|
+
if result_details.size > 0
|
49
|
+
left_column("")
|
50
|
+
right_column(result_details.join, {:endline => true})
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
|
56
|
+
__
|
57
|
+
__ [ view.result_count_statement, ": ",
|
58
|
+
(view.results_breakdown_statement do |msg, result_sym|
|
59
|
+
ansi_styled_msg(msg, result_ansi_styles(result_sym))
|
60
|
+
end)
|
61
|
+
].join('')
|
62
|
+
__
|
63
|
+
__ view.run_time_statement
|
64
|
+
end
|
65
|
+
|
66
|
+
def loaded_suite_statement
|
67
|
+
"Loaded suite #{$0.to_s}"
|
68
|
+
end
|
69
|
+
|
70
|
+
def started_statement
|
71
|
+
"Started"
|
72
|
+
end
|
73
|
+
|
74
|
+
def leftright_groups
|
75
|
+
case self.options.left_column_groupby
|
76
|
+
when :context
|
77
|
+
self.ordered_suite_contexts
|
78
|
+
when :file
|
79
|
+
self.ordered_suite_files
|
80
|
+
else
|
81
|
+
[]
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
def left_column_display(leftcol_value)
|
86
|
+
case self.options.left_column_groupby
|
87
|
+
when :context
|
88
|
+
leftcol_value.to_s.gsub(/Test$/, '')
|
89
|
+
when :file
|
90
|
+
leftcol_value.to_s.gsub(File.expand_path(".", Dir.pwd), '').gsub(/^\/+test\//, '')
|
91
|
+
else
|
92
|
+
leftcol_value.to_s
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
def left_column_width
|
97
|
+
@left_col_width ||= case self.options.left_column_groupby
|
98
|
+
when :context
|
99
|
+
self.suite_contexts.collect{|f| f.to_s.gsub(/Test$/, '')}
|
100
|
+
when :file
|
101
|
+
self.suite_files.collect{|f| f.to_s.gsub(File.expand_path(".", Dir.pwd), '').gsub(/^\/+test\//, '')}
|
102
|
+
else
|
103
|
+
[]
|
104
|
+
end.inject(0) do |max_size, klass|
|
105
|
+
klass.to_s.size > max_size ? klass.to_s.size : max_size
|
106
|
+
end + 1
|
107
|
+
end
|
108
|
+
|
109
|
+
def right_column_width
|
110
|
+
self.options.right_column_width
|
111
|
+
end
|
112
|
+
|
113
|
+
end
|
114
|
+
|
115
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require 'assert/view/test_unit_view'
|
2
|
+
require 'assert/view/helpers/ansi'
|
3
|
+
|
4
|
+
module Assert::View
|
5
|
+
|
6
|
+
# this view add simple color ansi output to the TestUnitView
|
7
|
+
|
8
|
+
class RedgreenView < TestUnitView
|
9
|
+
helper Helpers::CaptureOutput
|
10
|
+
helper Helpers::AnsiStyles
|
11
|
+
|
12
|
+
options do
|
13
|
+
styled true
|
14
|
+
passed_styles :green
|
15
|
+
failed_styles :red
|
16
|
+
errored_styles :yellow
|
17
|
+
skipped_styles :yellow
|
18
|
+
ignored_styles :yellow
|
19
|
+
end
|
20
|
+
|
21
|
+
# this template is identical to the TestUnitView template, except:
|
22
|
+
# - the run_tests result handler block shows ansi styled output
|
23
|
+
# - each detailed result renders its name styled
|
24
|
+
# - the results_breakdown_statement renders ansi styled
|
25
|
+
template do
|
26
|
+
__ view.loaded_suite_statement
|
27
|
+
__ view.started_statement
|
28
|
+
|
29
|
+
if view.tests?
|
30
|
+
|
31
|
+
view.run_tests(runner) do |each_result|
|
32
|
+
# the run_tests result handler from DefaultView
|
33
|
+
result_sym = each_result.to_sym
|
34
|
+
result_abbrev = view.options.send("#{result_sym}_abbrev")
|
35
|
+
__ ansi_styled_msg(result_abbrev, result_ansi_styles(result_sym)), false
|
36
|
+
end
|
37
|
+
__
|
38
|
+
__ view.finished_statement
|
39
|
+
__
|
40
|
+
|
41
|
+
# same as the test/unit template except styling result name
|
42
|
+
view.detailed_results do |result, index, test, output|
|
43
|
+
# TODO: remove and call directly once result name is in assert
|
44
|
+
result_name = result.respond_to?(:name) ? result.name : ""
|
45
|
+
__ " #{index}) #{ansi_styled_msg(result_name, result_ansi_styles(result.to_sym))}:"
|
46
|
+
__ "#{result.test_name}(#{test.context_class.name}):"
|
47
|
+
__ result.message
|
48
|
+
__ " #{result.backtrace.filtered.first.to_s}"
|
49
|
+
|
50
|
+
__ captured_output(output) if output && !output.empty?
|
51
|
+
__
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
|
56
|
+
# smae as test/unit, except styled
|
57
|
+
__ ansi_styled_msg(view.results_breakdown_statement, view.all_pass? ? :green : :red)
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
63
|
+
|
@@ -0,0 +1,66 @@
|
|
1
|
+
require 'assert/view/base'
|
2
|
+
require 'assert/view/helpers/capture_output'
|
3
|
+
|
4
|
+
module Assert::View
|
5
|
+
|
6
|
+
# this view renders in test/unit style
|
7
|
+
|
8
|
+
class TestUnitView < Base
|
9
|
+
helper Helpers::CaptureOutput
|
10
|
+
|
11
|
+
template do
|
12
|
+
__ view.loaded_suite_statement
|
13
|
+
__ view.started_statement
|
14
|
+
|
15
|
+
if view.tests?
|
16
|
+
|
17
|
+
view.run_tests(runner) do |each_result|
|
18
|
+
__ view.options.send("#{each_result.to_sym}_abbrev"), false
|
19
|
+
end
|
20
|
+
__
|
21
|
+
__ view.finished_statement
|
22
|
+
__
|
23
|
+
|
24
|
+
view.detailed_results do |result, index, test, output|
|
25
|
+
# TODO: remove and call directly once result name is in assert
|
26
|
+
result_name = result.respond_to?(:name) ? result.name : ""
|
27
|
+
__ " #{index}) #{result_name}:"
|
28
|
+
__ "#{result.test_name}(#{test.context_class.name}):"
|
29
|
+
__ result.message
|
30
|
+
__ " #{result.backtrace.filtered.first.to_s}"
|
31
|
+
|
32
|
+
__ captured_output(output) if output && !output.empty?
|
33
|
+
__
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
|
38
|
+
__ view.results_breakdown_statement
|
39
|
+
end
|
40
|
+
|
41
|
+
def loaded_suite_statement
|
42
|
+
"Loaded suite #{$0.to_s}"
|
43
|
+
end
|
44
|
+
|
45
|
+
def started_statement
|
46
|
+
"Started"
|
47
|
+
end
|
48
|
+
|
49
|
+
def finished_statement
|
50
|
+
"Finished in #{self.run_time} seconds."
|
51
|
+
end
|
52
|
+
|
53
|
+
# generate a sentence fragment describing the breakdown of test results
|
54
|
+
# if a block is given, yield each msg in the breakdown for custom template formatting
|
55
|
+
def results_breakdown_statement
|
56
|
+
[ "#{self.count(:tests)} tests, #{self.count(:results)} assertions",
|
57
|
+
self.to_sentence(self.ocurring_result_types.collect do |result_type|
|
58
|
+
self.result_summary_msg(result_type)
|
59
|
+
end)
|
60
|
+
].join(", ")
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
66
|
+
|
data/lib/assert/view/version.rb
CHANGED
data/test/base_test.rb
CHANGED
@@ -16,9 +16,14 @@ module Assert::View
|
|
16
16
|
should have_accessors :suite, :output_io, :runtime_result_callback
|
17
17
|
should have_class_method :template
|
18
18
|
should have_instance_methods :run_tests, :handle_runtime_result
|
19
|
-
should have_instance_methods :run_time, :runner_seed, :count, :tests
|
19
|
+
should have_instance_methods :run_time, :runner_seed, :count, :tests?
|
20
|
+
should have_instance_methods :suite_contexts, :ordered_suite_contexts
|
21
|
+
should have_instance_methods :suite_files, :ordered_suite_files
|
22
|
+
should have_instance_methods :show_result_details?, :detailed_results, :all_results_for
|
20
23
|
should have_instance_methods :ocurring_result_types, :result_summary_msg
|
21
|
-
should have_instance_methods :
|
24
|
+
should have_instance_methods :all_pass?, :all_pass_result_summary_msg, :to_sentence
|
25
|
+
should have_instance_methods :capture_output_start_msg, :capture_output_end_msg
|
26
|
+
|
22
27
|
|
23
28
|
# options stuff
|
24
29
|
should have_instance_method :options
|
@@ -41,11 +46,11 @@ module Assert::View
|
|
41
46
|
end
|
42
47
|
|
43
48
|
should "default its result abbreviations" do
|
44
|
-
assert_equal '.', subject.
|
45
|
-
assert_equal 'F', subject.
|
46
|
-
assert_equal 'I', subject.
|
47
|
-
assert_equal 'S', subject.
|
48
|
-
assert_equal 'E', subject.
|
49
|
+
assert_equal '.', subject.default_pass_abbrev
|
50
|
+
assert_equal 'F', subject.default_fail_abbrev
|
51
|
+
assert_equal 'I', subject.default_ignore_abbrev
|
52
|
+
assert_equal 'S', subject.default_skip_abbrev
|
53
|
+
assert_equal 'E', subject.default_error_abbrev
|
49
54
|
end
|
50
55
|
|
51
56
|
end
|
data/test/default_view_test.rb
CHANGED
@@ -5,16 +5,14 @@ require 'stringio'
|
|
5
5
|
|
6
6
|
module Assert::View
|
7
7
|
|
8
|
-
class
|
9
|
-
desc "the
|
8
|
+
class DefaultViewTest < Assert::Context
|
9
|
+
desc "the default view"
|
10
10
|
setup do
|
11
11
|
@view = Assert::View::DefaultView.new(Assert::Suite.new, StringIO.new("", "w+"))
|
12
12
|
end
|
13
13
|
subject{ @view }
|
14
14
|
|
15
15
|
should have_instance_methods :loaded_tests_statement, :running_tests_statement
|
16
|
-
should have_instance_methods :detailed_tests, :detailed_results, :show_result_details?
|
17
|
-
should have_instance_methods :result_output_start_msg, :result_output_end_msg
|
18
16
|
should have_instance_methods :results_breakdown_statement, :result_count_statement
|
19
17
|
should have_instance_methods :run_time_statement
|
20
18
|
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'assert'
|
2
|
+
|
3
|
+
require 'assert/view/leftright_view'
|
4
|
+
require 'stringio'
|
5
|
+
|
6
|
+
module Assert::View
|
7
|
+
|
8
|
+
class LeftrightViewTest < Assert::Context
|
9
|
+
desc "the leftright view"
|
10
|
+
setup do
|
11
|
+
@view = Assert::View::LeftrightView.new(Assert::Suite.new, StringIO.new("", "w+"))
|
12
|
+
end
|
13
|
+
subject{ @view }
|
14
|
+
|
15
|
+
should have_instance_methods :loaded_suite_statement, :started_statement
|
16
|
+
should have_instance_methods :leftright_groups, :left_column_display, :left_column_width
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'assert'
|
2
|
+
|
3
|
+
require 'assert/view/test_unit_view'
|
4
|
+
require 'stringio'
|
5
|
+
|
6
|
+
module Assert::View
|
7
|
+
|
8
|
+
class TestUnitViewTest < Assert::Context
|
9
|
+
desc "the test/unit view"
|
10
|
+
setup do
|
11
|
+
@view = Assert::View::TestUnitView.new(Assert::Suite.new, StringIO.new("", "w+"))
|
12
|
+
end
|
13
|
+
subject{ @view }
|
14
|
+
|
15
|
+
should have_instance_methods :loaded_suite_statement, :started_statement
|
16
|
+
should have_instance_methods :finished_statement, :results_breakdown_statement
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: assert-view
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 15
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
8
|
+
- 4
|
9
9
|
- 0
|
10
|
-
version: 0.
|
10
|
+
version: 0.4.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Kelly Redding
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-10-11 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
type: :development
|
@@ -96,11 +96,18 @@ files:
|
|
96
96
|
- lib/assert/view/base.rb
|
97
97
|
- lib/assert/view/default_view.rb
|
98
98
|
- lib/assert/view/helpers/ansi.rb
|
99
|
+
- lib/assert/view/helpers/capture_output.rb
|
100
|
+
- lib/assert/view/helpers/leftright_columns.rb
|
101
|
+
- lib/assert/view/leftright_view.rb
|
102
|
+
- lib/assert/view/redgreen_view.rb
|
103
|
+
- lib/assert/view/test_unit_view.rb
|
99
104
|
- lib/assert/view/version.rb
|
100
105
|
- test/base_test.rb
|
101
106
|
- test/default_view_test.rb
|
102
107
|
- test/helper.rb
|
103
108
|
- test/irb.rb
|
109
|
+
- test/leftright_view_test.rb
|
110
|
+
- test/test_unit_test.rb
|
104
111
|
homepage: http://github.com/teaminsight/assert-view
|
105
112
|
licenses: []
|
106
113
|
|
@@ -139,3 +146,5 @@ test_files:
|
|
139
146
|
- test/default_view_test.rb
|
140
147
|
- test/helper.rb
|
141
148
|
- test/irb.rb
|
149
|
+
- test/leftright_view_test.rb
|
150
|
+
- test/test_unit_test.rb
|