mcmire-protest 0.2.5 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/lib/protest/runner.rb +10 -5
- data/lib/protest/test_case.rb +10 -5
- data/lib/protest.rb +8 -2
- data/mcmire-protest.gemspec +1 -1
- metadata +1 -1
data/.gitignore
CHANGED
data/lib/protest/runner.rb
CHANGED
@@ -11,13 +11,18 @@ module Protest
|
|
11
11
|
# and before and after each test case (+enter+ and +exit+.)
|
12
12
|
def run(*test_cases)
|
13
13
|
@report.on_start if @report.respond_to?(:on_start)
|
14
|
-
test_cases.each
|
15
|
-
@report.on_enter(test_case) if @report.respond_to?(:on_enter)
|
16
|
-
test_case.run(self)
|
17
|
-
@report.on_exit(test_case) if @report.respond_to?(:on_exit)
|
18
|
-
end
|
14
|
+
test_cases.each {|test_case| run_test_case(test_case) }
|
19
15
|
@report.on_end if @report.respond_to?(:on_end)
|
20
16
|
end
|
17
|
+
|
18
|
+
# Run a test case, along with any child test cases. This will fire the +enter+
|
19
|
+
# event before running the test case and the +exit+ event afterward.
|
20
|
+
def run_test_case(test_case)
|
21
|
+
@report.on_enter(test_case) if @report.respond_to?(:on_enter)
|
22
|
+
sub_test_cases = Protest.send(:available_test_cases).select {|tc| tc.superclass == test_case }
|
23
|
+
test_case.run(self, sub_test_cases)
|
24
|
+
@report.on_exit(test_case) if @report.respond_to?(:on_exit)
|
25
|
+
end
|
21
26
|
|
22
27
|
# Run a test and report if it passes, fails, or is pending. Takes the name
|
23
28
|
# of the test as an argument. By passing +true+ as the second argument, you
|
data/lib/protest/test_case.rb
CHANGED
@@ -31,16 +31,21 @@ module Protest
|
|
31
31
|
rescue LoadError
|
32
32
|
end
|
33
33
|
|
34
|
-
# Run all tests in this context
|
35
|
-
# provide output.
|
36
|
-
|
34
|
+
# Run all tests in this context, then run any test cases under this test case.
|
35
|
+
# Takes a Report instance in order to provide output. <tt>global_setup</tt>
|
36
|
+
# will be run before the first test is run; <tt>global_teardown</tt> will
|
37
|
+
# be run after the final test is run (including any tests in child test cases).
|
38
|
+
def self.run(runner, sub_test_cases)
|
37
39
|
runner.report(TestWrapper.new(:setup, self), true)
|
38
40
|
tests.each {|test| runner.report(test, false) }
|
41
|
+
sub_test_cases.each {|test_case| runner.run_test_case(test_case) }
|
39
42
|
runner.report(TestWrapper.new(:teardown, self), true)
|
40
43
|
rescue Exception => e
|
41
44
|
# If any exception bubbles up here, then it means it was during the
|
42
45
|
# global setup/teardown blocks, so let's just skip the rest of this
|
43
46
|
# context.
|
47
|
+
#warn "#{e.class}: #{e.message}"
|
48
|
+
#warn e.backtrace.join("\n")
|
44
49
|
return
|
45
50
|
end
|
46
51
|
|
@@ -81,7 +86,7 @@ module Protest
|
|
81
86
|
def self.global_setup(&block)
|
82
87
|
(class << self; self; end).class_eval do
|
83
88
|
define_method :do_global_setup do
|
84
|
-
super()
|
89
|
+
#super()
|
85
90
|
instance_eval(&block)
|
86
91
|
end
|
87
92
|
end
|
@@ -110,7 +115,7 @@ module Protest
|
|
110
115
|
(class << self; self; end).class_eval do
|
111
116
|
define_method :do_global_teardown do
|
112
117
|
instance_eval(&block)
|
113
|
-
super()
|
118
|
+
#super()
|
114
119
|
end
|
115
120
|
end
|
116
121
|
end
|
data/lib/protest.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
module Protest
|
2
|
-
VERSION = "0.
|
2
|
+
VERSION = "0.3.0"
|
3
3
|
|
4
4
|
# Exception raised when an assertion fails. See TestCase#assert
|
5
5
|
class AssertionFailed < StandardError; end
|
@@ -45,7 +45,7 @@ module Protest
|
|
45
45
|
#
|
46
46
|
# See Protest.add_test_case and Protest.report_with
|
47
47
|
def self.run_all_tests!(*report_args)
|
48
|
-
Runner.new(@report).run(*
|
48
|
+
Runner.new(@report).run(*root_test_cases)
|
49
49
|
end
|
50
50
|
|
51
51
|
# Select the name of the Report to use when running tests. See
|
@@ -76,6 +76,12 @@ module Protest
|
|
76
76
|
@backtrace_filter
|
77
77
|
end
|
78
78
|
|
79
|
+
def self.root_test_cases
|
80
|
+
v = available_test_cases.select {|tc| tc.superclass == Protest::TestCase }
|
81
|
+
#pp :root_test_cases => v
|
82
|
+
v
|
83
|
+
end
|
84
|
+
|
79
85
|
def self.available_test_cases
|
80
86
|
@test_cases ||= []
|
81
87
|
end
|
data/mcmire-protest.gemspec
CHANGED