assert-view 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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