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 CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- assert-view (0.3.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.1.0)
15
+ undies (1.2.0)
16
16
 
17
17
  PLATFORMS
18
18
  ruby
@@ -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
- default_passed_abbrev '.'
54
- default_failed_abbrev 'F'
55
- default_ignored_abbrev 'I'
56
- default_skipped_abbrev 'S'
57
- default_errored_abbrev 'E'
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 all_passed?
118
- self.count(:passed) == self.count(:results)
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
- :passed, :failed, :ignored, :skipped, :errored
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 == :passed && self.all_passed?
131
- self.all_passed_result_summary_msg
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 all_passed_result_summary_msg
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
- "it passed"
217
+ "pass"
143
218
  else
144
- "all passed"
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 true
16
- passed_styles :green
17
- failed_styles :red, :bold
18
- errored_styles :yellow, :bold
19
- skipped_styles :cyan
20
- ignored_styles :magenta
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 |each_result|
32
- result_sym = each_result.to_sym
33
- result_abbrev = view.options.send("#{result_sym}_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
- # build a summary sentence w/ styled results breakdown
53
- styled_results_breakdown_statement = view.results_breakdown_statement do |msg, result_type|
54
- ansi_styled_msg(msg, result_ansi_styles(result_type))
55
- end
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 (#{view.count(:tests)} test#{'s' if view.count(:tests) != 1})"
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
- # get all the results that have details to show
76
- # in addition, if a block is given...
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
- # only show result details for failed or errored results
88
- # show result details if a skip or passed result was issues w/ a message
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 |result_type|
105
- yield(self.result_summary_msg(result_type), result_type) if block_given?
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)} test result#{'s' if self.count(:results) != 1}"
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
+
@@ -1,5 +1,5 @@
1
1
  module Assert; end
2
2
 
3
3
  module Assert::View
4
- VERSION = "0.3.0"
4
+ VERSION = "0.4.0"
5
5
  end
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?, :all_passed?
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 :all_passed_result_summary_msg, :to_sentence
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.default_passed_abbrev
45
- assert_equal 'F', subject.default_failed_abbrev
46
- assert_equal 'I', subject.default_ignored_abbrev
47
- assert_equal 'S', subject.default_skipped_abbrev
48
- assert_equal 'E', subject.default_errored_abbrev
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
@@ -5,16 +5,14 @@ require 'stringio'
5
5
 
6
6
  module Assert::View
7
7
 
8
- class TerminalTest < Assert::Context
9
- desc "the terminal view"
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: 19
4
+ hash: 15
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 3
8
+ - 4
9
9
  - 0
10
- version: 0.3.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-09-09 00:00:00 Z
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