GUnit 0.3.2 → 0.3.3

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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.2
1
+ 0.3.3
data/gunit.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{GUnit}
8
- s.version = "0.3.2"
8
+ s.version = "0.3.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Greg Sterndale"]
12
- s.date = %q{2010-01-30}
12
+ s.date = %q{2010-02-03}
13
13
  s.description = %q{GUnit is a fresh new XUnit Test implementation, poppin' a cap in the ass of TestUnit. Just playin'. TestUnit is the shizzle.}
14
14
  s.email = %q{gsterndale@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -57,10 +57,9 @@ module GUnit
57
57
  false
58
58
  else
59
59
  case expected
60
- when String then actual.to_s == expected
61
60
  when Class then actual.is_a?(expected)
62
61
  when nil then !actual.nil?
63
- else; actual == expected
62
+ else; actual.to_s == expected
64
63
  end
65
64
  end
66
65
 
@@ -38,8 +38,8 @@ module GUnit
38
38
  at_exit { subclass.autorun }
39
39
  end
40
40
 
41
- def self.autorun=(a)
42
- @@autorun = !a.nil? && a
41
+ def self.autorun=(bool)
42
+ @@autorun = !bool.nil? && bool
43
43
  end
44
44
 
45
45
  def self.autorun?
@@ -65,7 +65,7 @@ module GUnit
65
65
 
66
66
  def self.test_methods(prefix=TEST_METHOD_PREFIX)
67
67
  method_names = instance_methods.find_all{|method| method =~ /\A#{prefix}/ && ! GUnit::TestCase.instance_methods.include?(method) }
68
- method_names.map!{|m| m.to_sym }
68
+ method_names.map!{|method_name| method_name.to_sym }
69
69
  end
70
70
 
71
71
  def self.context_for_method(method_name)
@@ -73,11 +73,7 @@ module GUnit
73
73
  end
74
74
 
75
75
  def self.context(*args, &blk)
76
- new_context = if blk
77
- GUnit::Context.new(args.first, &blk)
78
- else
79
- GUnit::Context.new(args.first)
80
- end
76
+ new_context = GUnit::Context.new(args.first, &blk)
81
77
  new_context.parent = current_context
82
78
  @@context_stack << new_context
83
79
  current_context.run(self)
@@ -85,41 +81,26 @@ module GUnit
85
81
  end
86
82
 
87
83
  def self.setup(*args, &blk)
88
- setup = if blk
89
- GUnit::Setup.new(args.first, &blk)
90
- else
91
- GUnit::Setup.new(args.first)
92
- end
84
+ setup = GUnit::Setup.new(args.first, &blk)
93
85
  current_context.setups << setup
94
86
  end
95
87
 
96
88
  def self.exercise(*args, &blk)
97
- exercise = if blk
98
- GUnit::Exercise.new(args.first, &blk)
99
- else
100
- GUnit::Exercise.new(args.first)
101
- end
89
+ exercise = GUnit::Exercise.new(args.first, &blk)
102
90
  current_context.exercise = exercise
103
91
  end
104
92
 
105
93
  def self.teardown(*args, &blk)
106
- teardown = if blk
107
- GUnit::Teardown.new(args.first, &blk)
108
- else
109
- GUnit::Teardown.new(args.first)
110
- end
94
+ teardown = GUnit::Teardown.new(args.first, &blk)
111
95
  current_context.teardowns << teardown
112
96
  end
113
97
 
114
98
  def self.verify(*args, &blk)
115
99
  test_method_name = message_to_unique_test_method_name(args.first)
116
100
  define_method(test_method_name) do
117
- verification = if blk
118
- GUnit::Verification.new(args.first, &blk)
119
- else
120
- GUnit::Verification.new(args.first)
121
- end
101
+ verification = GUnit::Verification.new(args.first, &blk)
122
102
  verification.run(self)
103
+ GUnit::PassResponse.new(verification.message)
123
104
  end
124
105
  @@method_count += 1
125
106
  @@test_method_contexts[test_method_name] = current_context
@@ -143,13 +124,20 @@ module GUnit
143
124
  self.run_excercise
144
125
  response = self.send(self.method_name.to_sym)
145
126
  self.run_teardowns
146
- response
127
+ rescue GUnit::NothingToDo => e
128
+ response = ToDoResponse.new(e.message, e.backtrace)
129
+ rescue GUnit::AssertionFailure => e
130
+ response = FailResponse.new(e.message, e.backtrace)
131
+ rescue ::Exception => e
132
+ response = ExceptionResponse.new(e.message, e.backtrace)
133
+ ensure
134
+ return response
147
135
  end
148
136
 
149
137
  protected
150
138
 
151
139
  def run_setups
152
- self.context.all_setups.each {|s| s.run(self) }
140
+ self.context.all_setups.each {|setup| setup.run(self) }
153
141
  end
154
142
 
155
143
  def run_excercise
@@ -157,7 +145,7 @@ module GUnit
157
145
  end
158
146
 
159
147
  def run_teardowns
160
- self.context.all_teardowns.reverse.each {|t| t.run(self) } if self.context
148
+ self.context.all_teardowns.reverse.each {|teardown| teardown.run(self) } if self.context
161
149
  end
162
150
 
163
151
  def self.current_context
@@ -9,12 +9,12 @@ module GUnit
9
9
 
10
10
  # FailResponse.new("my message")
11
11
  def initialize(*args)
12
- self.message = args.find{|a| a.is_a?(String) } || self.class::DEFAULT_MESSAGE
13
- self.backtrace = args.find{|a| a.is_a?(Array) } || []
12
+ self.message = args.find{|arg| arg.is_a?(String) } || self.class::DEFAULT_MESSAGE
13
+ self.backtrace = args.find{|arg| arg.is_a?(Array) } || []
14
14
  end
15
15
 
16
- def backtrace=(a=[])
17
- @backtrace = a
16
+ def backtrace=(traces=[])
17
+ @backtrace = traces
18
18
  discover_file_name
19
19
  discover_line_number
20
20
  @backtrace
@@ -80,19 +80,19 @@ module GUnit
80
80
  end
81
81
 
82
82
  def passes
83
- @responses.find_all{|r| r.is_a? PassResponse }
83
+ @responses.find_all{|response| response.is_a? PassResponse }
84
84
  end
85
85
 
86
86
  def fails
87
- @responses.find_all{|r| r.is_a? FailResponse }
87
+ @responses.find_all{|response| response.is_a? FailResponse }
88
88
  end
89
89
 
90
90
  def exceptions
91
- @responses.find_all{|r| r.is_a? ExceptionResponse }
91
+ @responses.find_all{|response| response.is_a? ExceptionResponse }
92
92
  end
93
93
 
94
94
  def to_dos
95
- @responses.find_all{|r| r.is_a? ToDoResponse }
95
+ @responses.find_all{|response| response.is_a? ToDoResponse }
96
96
  end
97
97
 
98
98
  protected
@@ -109,7 +109,7 @@ module GUnit
109
109
 
110
110
  def print_responses_summary
111
111
  @io.puts ""
112
- @responses.select{|r| !r.is_a?(GUnit::PassResponse) }.each do |response|
112
+ @responses.select{|response| !response.is_a?(GUnit::PassResponse) }.each do |response|
113
113
  @io.print self.class.response_color(response)
114
114
  @io.print "#{response.message} (#{response.file_name}:#{response.line_number})\n"
115
115
  @io.print DEFAULT_COLOR
@@ -118,8 +118,8 @@ module GUnit
118
118
  end
119
119
 
120
120
  # Flatten array of TestSuites and TestCases into a single dimensional array of TestCases
121
- def test_cases(a=self.tests)
122
- a.map do |test|
121
+ def test_cases(test_suites_cases=self.tests)
122
+ test_suites_cases.map do |test|
123
123
  case test
124
124
  when GUnit::TestSuite
125
125
  test_cases(test.tests)
@@ -1,5 +1,8 @@
1
1
  module GUnit
2
-
2
+
3
+ class NothingToDo < StandardError
4
+ end
5
+
3
6
  class Verification
4
7
  attr_writer :message
5
8
  attr_accessor :task
@@ -13,19 +16,9 @@ module GUnit
13
16
  end
14
17
 
15
18
  def run(binding=self)
16
- begin
17
- if @task.is_a?(Proc)
18
- bound_task = @task.bind(binding)
19
- bound_task.call
20
- PassResponse.new
21
- else
22
- ToDoResponse.new(self.message, Kernel.caller)
23
- end
24
- rescue GUnit::AssertionFailure => e
25
- FailResponse.new(e.message, e.backtrace)
26
- rescue ::Exception => e
27
- ExceptionResponse.new(e.message, e.backtrace)
28
- end
19
+ raise GUnit::NothingToDo.new(self.message) unless @task.is_a?(Proc) # Kernel.caller
20
+ bound_task = @task.bind(binding)
21
+ bound_task.call
29
22
  end
30
23
 
31
24
  def message
@@ -98,7 +98,7 @@ class FooTest < Test::Unit::TestCase
98
98
  end
99
99
  end
100
100
 
101
- def test_assert_raises_two_args_one_block
101
+ def test_assert_raises_string_message_block
102
102
  block = Proc.new { raise "boom" }
103
103
  expected = "boom"
104
104
  message = "my message here"
@@ -106,7 +106,7 @@ class FooTest < Test::Unit::TestCase
106
106
  assert result === true
107
107
  end
108
108
 
109
- def test_assert_raises_two_args_with_class_one_block
109
+ def test_assert_raises_class_message_block
110
110
  block = Proc.new { raise StandardError }
111
111
  expected = StandardError
112
112
  message = "my message here"
@@ -114,14 +114,14 @@ class FooTest < Test::Unit::TestCase
114
114
  assert result === true
115
115
  end
116
116
 
117
- def test_assert_raises_one_arg_one_block
117
+ def test_assert_raises_string_block
118
118
  block = Proc.new { raise "boom" }
119
119
  expected = "boom"
120
120
  result = @foo1.assert_raises expected, &block
121
121
  assert result === true
122
122
  end
123
123
 
124
- def test_assert_raises_one_block
124
+ def test_assert_raises_block_only
125
125
  block = Proc.new { raise "boom" }
126
126
  result = @foo1.assert_raises &block
127
127
  assert result === true
@@ -82,11 +82,13 @@ class GUnit::TestCaseTest < Test::Unit::TestCase
82
82
  assert_equal method_count + 1, MyClassTest.instance_methods.length
83
83
  assert dynamic_method_name.to_s =~ /#{MyClassTest::TEST_METHOD_PREFIX}/
84
84
  assert MyClassTest.instance_methods.include?(dynamic_method_name.to_s)
85
- verification = GUnit::Verification.new
86
- todo = GUnit::ToDoResponse.new
87
- verification.expects(:run).returns(todo)
85
+ message = 'The truth'
86
+ verification = mock(:message => message, :run => true)
88
87
  GUnit::Verification.expects(:new).with(args).returns(verification)
89
- assert_equal todo, MyClassTest.new.send(dynamic_method_name)
88
+ response = MyClassTest.new.send(dynamic_method_name)
89
+ assert response.is_a?(GUnit::TestResponse)
90
+ assert response.is_a?(GUnit::PassResponse)
91
+ assert_equal message, response.message
90
92
  end
91
93
 
92
94
  def test_verify_with_block_creates_instance_method
@@ -97,12 +99,14 @@ class GUnit::TestCaseTest < Test::Unit::TestCase
97
99
  assert_equal method_count + 1, MyClassTest.instance_methods.length
98
100
  assert dynamic_method_name.to_s =~ /#{MyClassTest::TEST_METHOD_PREFIX}/
99
101
  assert MyClassTest.new.respond_to?(dynamic_method_name)
100
- verification = GUnit::Verification.new
101
- pass = GUnit::PassResponse.new
102
- verification.expects(:run).returns(pass)
102
+ message = 'The truth'
103
+ verification = mock(:message => message, :run => true)
103
104
  # TODO how to set expectation that blk is passed to new() ???
104
- GUnit::Verification.expects(:new).with(args).returns(verification)
105
- assert_equal pass, MyClassTest.new.send(dynamic_method_name)
105
+ GUnit::Verification.expects(:new).returns(verification)
106
+ response = MyClassTest.new.send(dynamic_method_name)
107
+ assert response.is_a?(GUnit::TestResponse)
108
+ assert response.is_a?(GUnit::PassResponse)
109
+ assert_equal message, response.message
106
110
  end
107
111
 
108
112
  def test_run_runs_setups
@@ -142,7 +146,52 @@ class GUnit::TestCaseTest < Test::Unit::TestCase
142
146
  @my_test_case3.run
143
147
  assert_equal "zip", @my_test_case3.instance_variable_get("@foo")
144
148
  end
145
-
149
+
150
+ def test_run_with_test_method_raising_assertion_failure
151
+ exception_message = 'Whoops'
152
+ exception = GUnit::AssertionFailure.new(exception_message)
153
+ verify_message = "The truth"
154
+ verification = mock
155
+ verification.expects(:run).raises(exception)
156
+ dynamic_method_name = MyClassTest.verify(verify_message)
157
+ GUnit::Verification.expects(:new).with(verify_message).returns(verification)
158
+ @my_test_case4 = MyClassTest.new(dynamic_method_name)
159
+ response = @my_test_case4.run
160
+ assert response.is_a?(GUnit::TestResponse)
161
+ assert response.is_a?(GUnit::FailResponse)
162
+ assert_equal exception_message, response.message
163
+ end
164
+
165
+ def test_run_with_test_method_raising_nothing_to_do_exception
166
+ exception_message = 'Nothin here'
167
+ exception = GUnit::NothingToDo.new(exception_message)
168
+ verify_message = "The truth"
169
+ verification = mock
170
+ verification.expects(:run).raises(exception)
171
+ dynamic_method_name = MyClassTest.verify(verify_message)
172
+ GUnit::Verification.expects(:new).with(verify_message).returns(verification)
173
+ @my_test_case5 = MyClassTest.new(dynamic_method_name)
174
+ response = @my_test_case5.run
175
+ assert response.is_a?(GUnit::TestResponse)
176
+ assert response.is_a?(GUnit::ToDoResponse)
177
+ assert_equal exception_message, response.message
178
+ end
179
+
180
+ def test_run_with_test_method_raising_random_exception
181
+ exception_message = 'Whoops'
182
+ exception = ::StandardError.new(exception_message)
183
+ verify_message = "The truth"
184
+ verification = mock
185
+ verification.expects(:run).raises(exception)
186
+ dynamic_method_name = MyClassTest.verify(verify_message)
187
+ GUnit::Verification.expects(:new).with(verify_message).returns(verification)
188
+ @my_test_case5 = MyClassTest.new(dynamic_method_name)
189
+ response = @my_test_case5.run
190
+ assert response.is_a?(GUnit::TestResponse)
191
+ assert response.is_a?(GUnit::ExceptionResponse)
192
+ assert_equal exception_message, response.message
193
+ end
194
+
146
195
  def test_test_methods
147
196
  assert MyClassTest.test_methods.include?(:test_one)
148
197
  assert MyClassTest.test_methods.include?(:test_two)
@@ -52,46 +52,34 @@ class GUnit::VerificationTest < Test::Unit::TestCase
52
52
  def test_run_with_task_called_returns_true
53
53
  @verification1.task = lambda { true }
54
54
  response = @verification1.run
55
- assert response.is_a?(GUnit::TestResponse)
56
- assert response.is_a?(GUnit::PassResponse)
55
+ assert response === true
57
56
  end
58
57
 
59
58
  def test_run_with_task_called_returns_false
60
59
  @verification1.task = lambda { false }
61
60
  response = @verification1.run
62
- assert response.is_a?(GUnit::TestResponse)
63
- assert response.is_a?(GUnit::PassResponse)
61
+ assert response === false
64
62
  end
65
63
 
66
64
  def test_run_with_task_is_false
67
65
  @verification1.task = false
68
- response = @verification1.run
69
- assert response.is_a?(GUnit::TestResponse)
70
- assert response.is_a?(GUnit::ToDoResponse)
66
+ assert_raise GUnit::NothingToDo do
67
+ @verification1.run
68
+ end
71
69
  end
72
70
 
73
71
  def test_run_with_task_is_nil
74
72
  message = 'Not dun yet'
75
- stack = ["./samples/../lib/gunit/verification.rb:25:in `test_not_dun_yet'",
76
- "./samples/../lib/gunit/verification.rb:25:in `test_not_dun_yet'",
77
- "./samples/../lib/gunit/test_case.rb:38:in `send'",
78
- "./samples/../lib/gunit/test_case.rb:38:in `run'",
79
- "./samples/../lib/gunit/test_suite.rb:21:in `run'",
80
- "./samples/../lib/gunit/test_suite.rb:16:in `each'",
81
- "./samples/../lib/gunit/test_suite.rb:16:in `run'",
82
- "./samples/../lib/gunit/test_runner.rb:44:in `run'",
83
- "./samples/../lib/gunit/test_runner.rb:41:in `each'",
84
- "./samples/../lib/gunit/test_runner.rb:41:in `run'",
85
- "samples/foo_sample.rb:177"]
86
- to_do_response = GUnit::ToDoResponse.new(message, stack)
87
73
  @verification1.message = message
88
74
  @verification1.task = nil
89
- GUnit::ToDoResponse.expects(:new).with{|m,b| m == message && b.is_a?(Array) }.once.returns(to_do_response)
90
- response = @verification1.run
91
- assert response.is_a?(GUnit::TestResponse)
92
- assert response.is_a?(GUnit::ToDoResponse)
93
- assert_equal message, response.message
94
- assert_equal stack, response.backtrace
75
+ assert_raise GUnit::NothingToDo do
76
+ @verification1.run
77
+ end
78
+ begin
79
+ @verification1.run
80
+ rescue GUnit::NothingToDo => exception
81
+ assert_equal message, exception.message
82
+ end
95
83
  end
96
84
 
97
85
  def test_run_with_binding
@@ -103,31 +91,5 @@ class GUnit::VerificationTest < Test::Unit::TestCase
103
91
  @verification1.run(obj)
104
92
  assert_equal "zip", obj.instance_variable_get("@foo")
105
93
  end
106
-
107
- def test_run_with_assertion_failure_exception
108
- message = "boooooooom"
109
- backtrace = ['ohnoes']
110
- assertion_failure = GUnit::AssertionFailure.new(message)
111
- assertion_failure.expects(:backtrace).at_least_once.returns(backtrace)
112
- @verification1.task = lambda { raise assertion_failure }
113
- response = @verification1.run
114
- assert response.is_a?(GUnit::TestResponse)
115
- assert response.is_a?(GUnit::FailResponse)
116
- assert_equal message, response.message
117
- assert_equal backtrace, response.backtrace
118
- end
119
-
120
- def test_run_with_random_exception
121
- message = "boooooooom"
122
- backtrace = ['ohnoes']
123
- exception = Exception.new(message)
124
- exception.set_backtrace(backtrace)
125
- @verification1.task = lambda { raise exception }
126
- response = @verification1.run
127
- assert response.is_a?(GUnit::TestResponse)
128
- assert response.is_a?(GUnit::ExceptionResponse)
129
- assert_equal message, response.message
130
- assert_equal backtrace, response.backtrace
131
- end
132
-
94
+
133
95
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: GUnit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Greg Sterndale
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-01-30 00:00:00 -05:00
12
+ date: 2010-02-03 00:00:00 -05:00
13
13
  default_executable:
14
14
  dependencies: []
15
15