assert 2.19.2 → 2.19.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.
- checksums.yaml +4 -4
- data/assert.gemspec +10 -7
- data/lib/assert.rb +18 -6
- data/lib/assert/actual_value.rb +8 -6
- data/lib/assert/assert_runner.rb +36 -17
- data/lib/assert/assertions.rb +83 -50
- data/lib/assert/cli.rb +17 -66
- data/lib/assert/clirb.rb +55 -0
- data/lib/assert/config.rb +7 -7
- data/lib/assert/config_helpers.rb +55 -22
- data/lib/assert/context.rb +14 -18
- data/lib/assert/context/let_dsl.rb +5 -2
- data/lib/assert/context/setup_dsl.rb +21 -16
- data/lib/assert/context/subject_dsl.rb +6 -7
- data/lib/assert/context/suite_dsl.rb +2 -1
- data/lib/assert/context/test_dsl.rb +55 -19
- data/lib/assert/default_suite.rb +25 -15
- data/lib/assert/default_view.rb +47 -30
- data/lib/assert/file_line.rb +6 -6
- data/lib/assert/macro.rb +1 -1
- data/lib/assert/macros/methods.rb +71 -45
- data/lib/assert/result.rb +111 -62
- data/lib/assert/runner.rb +68 -51
- data/lib/assert/stub.rb +4 -4
- data/lib/assert/suite.rb +67 -28
- data/lib/assert/test.rb +40 -35
- data/lib/assert/utils.rb +19 -10
- data/lib/assert/version.rb +1 -1
- data/lib/assert/view.rb +44 -18
- data/lib/assert/view_helpers.rb +100 -92
- data/test/helper.rb +3 -1
- data/test/support/factory.rb +38 -21
- data/test/system/stub_tests.rb +180 -144
- data/test/system/test_tests.rb +86 -60
- data/test/unit/actual_value_tests.rb +69 -50
- data/test/unit/assert_tests.rb +39 -22
- data/test/unit/assertions/assert_block_tests.rb +10 -10
- data/test/unit/assertions/assert_changes_tests.rb +25 -21
- data/test/unit/assertions/assert_empty_tests.rb +14 -12
- data/test/unit/assertions/assert_equal_tests.rb +26 -26
- data/test/unit/assertions/assert_file_exists_tests.rb +15 -13
- data/test/unit/assertions/assert_includes_tests.rb +10 -10
- data/test/unit/assertions/assert_instance_of_tests.rb +14 -14
- data/test/unit/assertions/assert_is_a_tests.rb +128 -0
- data/test/unit/assertions/assert_match_tests.rb +10 -10
- data/test/unit/assertions/assert_nil_tests.rb +16 -12
- data/test/unit/assertions/assert_raises_tests.rb +27 -20
- data/test/unit/assertions/assert_respond_to_tests.rb +10 -10
- data/test/unit/assertions/assert_same_tests.rb +24 -24
- data/test/unit/assertions/assert_true_false_tests.rb +32 -24
- data/test/unit/assertions_tests.rb +14 -9
- data/test/unit/config_helpers_tests.rb +15 -10
- data/test/unit/config_tests.rb +10 -9
- data/test/unit/context/setup_dsl_tests.rb +24 -14
- data/test/unit/context/subject_dsl_tests.rb +3 -3
- data/test/unit/context/suite_dsl_tests.rb +4 -4
- data/test/unit/context/test_dsl_tests.rb +37 -17
- data/test/unit/context_info_tests.rb +4 -4
- data/test/unit/context_tests.rb +110 -54
- data/test/unit/default_suite_tests.rb +10 -6
- data/test/unit/factory_tests.rb +2 -2
- data/test/unit/file_line_tests.rb +7 -7
- data/test/unit/macro_tests.rb +11 -11
- data/test/unit/result_tests.rb +47 -41
- data/test/unit/runner_tests.rb +29 -16
- data/test/unit/suite_tests.rb +37 -15
- data/test/unit/test_tests.rb +63 -50
- data/test/unit/utils_tests.rb +48 -35
- data/test/unit/view_helpers_tests.rb +21 -14
- data/test/unit/view_tests.rb +5 -5
- metadata +26 -11
- data/test/unit/assertions/assert_kind_of_tests.rb +0 -68
data/lib/assert/cli.rb
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
require "benchmark"
|
4
4
|
require "set"
|
5
5
|
require "assert/assert_runner"
|
6
|
+
require "assert/clirb"
|
6
7
|
require "assert/version"
|
7
8
|
|
8
9
|
module Assert
|
@@ -24,13 +25,17 @@ module Assert
|
|
24
25
|
end
|
25
26
|
|
26
27
|
def self.bench(start_msg, &block)
|
27
|
-
|
28
|
-
block.call
|
28
|
+
unless Assert.config.debug
|
29
|
+
block.call
|
30
|
+
return
|
29
31
|
end
|
32
|
+
|
30
33
|
print debug_start_msg(start_msg)
|
31
|
-
RoundedMillisecondTime
|
32
|
-
|
33
|
-
|
34
|
+
RoundedMillisecondTime
|
35
|
+
.new(Benchmark.measure(&block).real)
|
36
|
+
.tap do |time_in_ms|
|
37
|
+
puts debug_finish_msg(time_in_ms)
|
38
|
+
end
|
34
39
|
end
|
35
40
|
|
36
41
|
def initialize(*args)
|
@@ -72,13 +77,13 @@ module Assert
|
|
72
77
|
puts help
|
73
78
|
rescue CLIRB::VersionExit
|
74
79
|
puts Assert::VERSION
|
75
|
-
rescue CLIRB::Error =>
|
76
|
-
puts "#{
|
77
|
-
puts
|
80
|
+
rescue CLIRB::Error => ex
|
81
|
+
puts "#{ex.message}\n\n"
|
82
|
+
puts Assert.config.debug ? ex.backtrace.join("\n") : help
|
78
83
|
exit(1)
|
79
|
-
rescue
|
80
|
-
puts "#{
|
81
|
-
puts
|
84
|
+
rescue => ex
|
85
|
+
puts "#{ex.class}: #{ex.message}"
|
86
|
+
puts ex.backtrace.join("\n")
|
82
87
|
exit(1)
|
83
88
|
end
|
84
89
|
exit(0)
|
@@ -93,63 +98,9 @@ module Assert
|
|
93
98
|
|
94
99
|
module RoundedMillisecondTime
|
95
100
|
ROUND_PRECISION = 3
|
96
|
-
ROUND_MODIFIER = 10
|
101
|
+
ROUND_MODIFIER = 10**ROUND_PRECISION
|
97
102
|
def self.new(time_in_seconds)
|
98
103
|
(time_in_seconds * 1000 * ROUND_MODIFIER).to_i / ROUND_MODIFIER.to_f
|
99
104
|
end
|
100
105
|
end
|
101
|
-
|
102
|
-
class CLIRB # Version 1.1.0, https://github.com/redding/cli.rb
|
103
|
-
Error = Class.new(RuntimeError);
|
104
|
-
HelpExit = Class.new(RuntimeError); VersionExit = Class.new(RuntimeError)
|
105
|
-
attr_reader :argv, :args, :opts, :data
|
106
|
-
|
107
|
-
def initialize(&block)
|
108
|
-
@options = []; instance_eval(&block) if block
|
109
|
-
require "optparse"
|
110
|
-
@data, @args, @opts = [], [], {}; @parser = OptionParser.new do |p|
|
111
|
-
p.banner = ""; @options.each do |o|
|
112
|
-
@opts[o.name] = o.value; p.on(*o.parser_args){ |v| @opts[o.name] = v }
|
113
|
-
end
|
114
|
-
p.on_tail("--version", ""){ |v| raise VersionExit, v.to_s }
|
115
|
-
p.on_tail("--help", ""){ |v| raise HelpExit, v.to_s }
|
116
|
-
end
|
117
|
-
end
|
118
|
-
|
119
|
-
def option(*args); @options << Option.new(*args); end
|
120
|
-
def parse!(argv)
|
121
|
-
@args = (argv || []).dup.tap do |args_list|
|
122
|
-
begin; @parser.parse!(args_list)
|
123
|
-
rescue OptionParser::ParseError => err; raise Error, err.message; end
|
124
|
-
end; @data = @args + [@opts]
|
125
|
-
end
|
126
|
-
def to_s; @parser.to_s; end
|
127
|
-
def inspect
|
128
|
-
"#<#{self.class}:#{"0x0%x" % (object_id << 1)} @data=#{@data.inspect}>"
|
129
|
-
end
|
130
|
-
|
131
|
-
class Option
|
132
|
-
attr_reader :name, :opt_name, :desc, :abbrev, :value, :klass, :parser_args
|
133
|
-
|
134
|
-
def initialize(name, desc = nil, abbrev: nil, value: nil)
|
135
|
-
@name, @desc = name, desc || ""
|
136
|
-
@opt_name, @abbrev = parse_name_values(name, abbrev)
|
137
|
-
@value, @klass = gvalinfo(value)
|
138
|
-
@parser_args = if [TrueClass, FalseClass, NilClass].include?(@klass)
|
139
|
-
["-#{@abbrev}", "--[no-]#{@opt_name}", @desc]
|
140
|
-
else
|
141
|
-
["-#{@abbrev}", "--#{@opt_name} VALUE", @klass, @desc]
|
142
|
-
end
|
143
|
-
end
|
144
|
-
|
145
|
-
private
|
146
|
-
|
147
|
-
def parse_name_values(name, custom_abbrev)
|
148
|
-
[ (processed_name = name.to_s.strip.downcase).gsub("_", "-"),
|
149
|
-
custom_abbrev || processed_name.gsub(/[^a-z]/, "").chars.first || "a"
|
150
|
-
]
|
151
|
-
end
|
152
|
-
def gvalinfo(v); v.kind_of?(Class) ? [nil,v] : [v,v.class]; end
|
153
|
-
end
|
154
|
-
end
|
155
106
|
end
|
data/lib/assert/clirb.rb
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
module Assert
|
2
|
+
class CLIRB # Version 1.1.0, https://github.com/redding/cli.rb
|
3
|
+
Error = Class.new(RuntimeError);
|
4
|
+
HelpExit = Class.new(RuntimeError); VersionExit = Class.new(RuntimeError)
|
5
|
+
attr_reader :argv, :args, :opts, :data
|
6
|
+
|
7
|
+
def initialize(&block)
|
8
|
+
@options = []; instance_eval(&block) if block
|
9
|
+
require "optparse"
|
10
|
+
@data, @args, @opts = [], [], {}; @parser = OptionParser.new do |p|
|
11
|
+
p.banner = ""; @options.each do |o|
|
12
|
+
@opts[o.name] = o.value; p.on(*o.parser_args){ |v| @opts[o.name] = v }
|
13
|
+
end
|
14
|
+
p.on_tail("--version", ""){ |v| raise VersionExit, v.to_s }
|
15
|
+
p.on_tail("--help", ""){ |v| raise HelpExit, v.to_s }
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def option(*args); @options << Option.new(*args); end
|
20
|
+
def parse!(argv)
|
21
|
+
@args = (argv || []).dup.tap do |args_list|
|
22
|
+
begin; @parser.parse!(args_list)
|
23
|
+
rescue OptionParser::ParseError => err; raise Error, err.message; end
|
24
|
+
end; @data = @args + [@opts]
|
25
|
+
end
|
26
|
+
def to_s; @parser.to_s; end
|
27
|
+
def inspect
|
28
|
+
"#<#{self.class}:#{"0x0%x" % (object_id << 1)} @data=#{@data.inspect}>"
|
29
|
+
end
|
30
|
+
|
31
|
+
class Option
|
32
|
+
attr_reader :name, :opt_name, :desc, :abbrev, :value, :klass, :parser_args
|
33
|
+
|
34
|
+
def initialize(name, desc = nil, abbrev: nil, value: nil)
|
35
|
+
@name, @desc = name, desc || ""
|
36
|
+
@opt_name, @abbrev = parse_name_values(name, abbrev)
|
37
|
+
@value, @klass = gvalinfo(value)
|
38
|
+
@parser_args = if [TrueClass, FalseClass, NilClass].include?(@klass)
|
39
|
+
["-#{@abbrev}", "--[no-]#{@opt_name}", @desc]
|
40
|
+
else
|
41
|
+
["-#{@abbrev}", "--#{@opt_name} VALUE", @klass, @desc]
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
private
|
46
|
+
|
47
|
+
def parse_name_values(name, custom_abbrev)
|
48
|
+
[ (processed_name = name.to_s.strip.downcase).gsub("_", "-"),
|
49
|
+
custom_abbrev || processed_name.gsub(/[^a-z]/, "").chars.first || "a"
|
50
|
+
]
|
51
|
+
end
|
52
|
+
def gvalinfo(v); v.kind_of?(Class) ? [nil,v] : [v,v.class]; end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
data/lib/assert/config.rb
CHANGED
@@ -11,7 +11,7 @@ module Assert
|
|
11
11
|
def self.settings(*items)
|
12
12
|
items.each do |item|
|
13
13
|
define_method(item) do |*args|
|
14
|
-
|
14
|
+
unless (value = args.size > 1 ? args : args.first).nil?
|
15
15
|
instance_variable_set("@#{item}", value)
|
16
16
|
end
|
17
17
|
instance_variable_get("@#{item}")
|
@@ -53,30 +53,30 @@ module Assert
|
|
53
53
|
@list = false
|
54
54
|
@debug = false
|
55
55
|
|
56
|
-
|
56
|
+
apply(settings || {})
|
57
57
|
end
|
58
58
|
|
59
59
|
def apply(settings)
|
60
60
|
settings.keys.each do |name|
|
61
|
-
if !settings[name].nil? &&
|
62
|
-
|
61
|
+
if !settings[name].nil? && respond_to?(name.to_s)
|
62
|
+
send(name.to_s, settings[name])
|
63
63
|
end
|
64
64
|
end
|
65
65
|
@single_test_file_line = nil
|
66
66
|
end
|
67
67
|
|
68
68
|
def single_test?
|
69
|
-
!
|
69
|
+
!single_test.empty?
|
70
70
|
end
|
71
71
|
|
72
72
|
def single_test_file_line
|
73
73
|
@single_test_file_line ||= Assert::FileLine.parse(
|
74
|
-
File.expand_path(
|
74
|
+
File.expand_path(single_test, Dir.pwd),
|
75
75
|
)
|
76
76
|
end
|
77
77
|
|
78
78
|
def single_test_file_path
|
79
|
-
|
79
|
+
single_test_file_line&.file
|
80
80
|
end
|
81
81
|
end
|
82
82
|
end
|
@@ -2,35 +2,68 @@
|
|
2
2
|
|
3
3
|
module Assert
|
4
4
|
module ConfigHelpers
|
5
|
-
def runner
|
6
|
-
|
7
|
-
|
5
|
+
def runner
|
6
|
+
config.runner
|
7
|
+
end
|
8
|
+
|
9
|
+
def suite
|
10
|
+
config.suite
|
11
|
+
end
|
12
|
+
|
13
|
+
def view
|
14
|
+
config.view
|
15
|
+
end
|
8
16
|
|
9
17
|
def runner_seed
|
10
|
-
|
18
|
+
config.runner_seed
|
11
19
|
end
|
12
20
|
|
13
21
|
def single_test?
|
14
|
-
|
22
|
+
config.single_test?
|
15
23
|
end
|
16
24
|
|
17
25
|
def single_test_file_line
|
18
|
-
|
26
|
+
config.single_test_file_line
|
19
27
|
end
|
20
28
|
|
21
|
-
def tests_to_run
|
22
|
-
|
29
|
+
def tests_to_run?
|
30
|
+
config.suite.tests_to_run?
|
31
|
+
end
|
23
32
|
|
24
|
-
def
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
def
|
29
|
-
|
30
|
-
|
33
|
+
def tests_to_run_count
|
34
|
+
config.suite.tests_to_run_count
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_count
|
38
|
+
config.suite.test_count
|
39
|
+
end
|
40
|
+
|
41
|
+
def result_count
|
42
|
+
config.suite.result_count
|
43
|
+
end
|
44
|
+
|
45
|
+
def pass_result_count
|
46
|
+
config.suite.pass_result_count
|
47
|
+
end
|
48
|
+
|
49
|
+
def fail_result_count
|
50
|
+
config.suite.fail_result_count
|
51
|
+
end
|
52
|
+
|
53
|
+
def error_result_count
|
54
|
+
config.suite.error_result_count
|
55
|
+
end
|
56
|
+
|
57
|
+
def skip_result_count
|
58
|
+
config.suite.skip_result_count
|
59
|
+
end
|
60
|
+
|
61
|
+
def ignore_result_count
|
62
|
+
config.suite.ignore_result_count
|
63
|
+
end
|
31
64
|
|
32
65
|
def all_pass?
|
33
|
-
|
66
|
+
pass_result_count == result_count
|
34
67
|
end
|
35
68
|
|
36
69
|
def formatted_run_time(run_time, format = "%.6f")
|
@@ -46,29 +79,29 @@ module Assert
|
|
46
79
|
end
|
47
80
|
|
48
81
|
def formatted_suite_run_time(format = "%.6f")
|
49
|
-
formatted_run_time(
|
82
|
+
formatted_run_time(config.suite.run_time, format)
|
50
83
|
end
|
51
84
|
|
52
85
|
def formatted_suite_test_rate(format = "%.6f")
|
53
|
-
formatted_test_rate(
|
86
|
+
formatted_test_rate(config.suite.test_rate, format)
|
54
87
|
end
|
55
88
|
|
56
89
|
def formatted_suite_result_rate(format = "%.6f")
|
57
|
-
formatted_result_rate(
|
90
|
+
formatted_result_rate(config.suite.result_rate, format)
|
58
91
|
end
|
59
92
|
|
60
93
|
def show_test_profile_info?
|
61
|
-
!!
|
94
|
+
!!config.profile
|
62
95
|
end
|
63
96
|
|
64
97
|
def show_test_verbose_info?
|
65
|
-
!!
|
98
|
+
!!config.verbose
|
66
99
|
end
|
67
100
|
|
68
101
|
# return a list of result type symbols that have actually occurred
|
69
102
|
def ocurring_result_types
|
70
103
|
@result_types ||= [:pass, :fail, :ignore, :skip, :error].select do |sym|
|
71
|
-
|
104
|
+
send("#{sym}_result_count") > 0
|
72
105
|
end
|
73
106
|
end
|
74
107
|
|
data/lib/assert/context.rb
CHANGED
@@ -38,7 +38,7 @@ module Assert
|
|
38
38
|
@__assert_pending__ = 0
|
39
39
|
|
40
40
|
@__assert_result_callback__ = proc do |result|
|
41
|
-
|
41
|
+
unless @__assert_with_bt__.empty?
|
42
42
|
result.set_with_bt(@__assert_with_bt__.dup)
|
43
43
|
end
|
44
44
|
result_callback.call(result)
|
@@ -63,7 +63,8 @@ module Assert
|
|
63
63
|
end
|
64
64
|
|
65
65
|
# The opposite of assert. Check if the result is false. If so, create a new
|
66
|
-
# pass result. Otherwise create a new fail result with the desc and
|
66
|
+
# pass result. Otherwise create a new fail result with the desc and
|
67
|
+
# fail msg.
|
67
68
|
def assert_not(assertion, fail_desc = nil)
|
68
69
|
assert(!assertion, fail_desc) do
|
69
70
|
"Failed assert_not: assertion was "\
|
@@ -74,8 +75,7 @@ module Assert
|
|
74
75
|
|
75
76
|
def assert_that(
|
76
77
|
actual_value = Assert::ActualValue.not_given,
|
77
|
-
&actual_value_block
|
78
|
-
)
|
78
|
+
&actual_value_block)
|
79
79
|
Assert::ActualValue.new(actual_value, context: self, &actual_value_block)
|
80
80
|
end
|
81
81
|
|
@@ -87,7 +87,7 @@ module Assert
|
|
87
87
|
else
|
88
88
|
capture_result(
|
89
89
|
Assert::Result::Fail,
|
90
|
-
"Pending pass (make it not pending)"
|
90
|
+
"Pending pass (make it not pending)",
|
91
91
|
)
|
92
92
|
end
|
93
93
|
end
|
@@ -107,12 +107,10 @@ module Assert
|
|
107
107
|
else
|
108
108
|
capture_result(Assert::Result::Fail, message || "")
|
109
109
|
end
|
110
|
+
elsif halt_on_fail?
|
111
|
+
raise Result::TestSkipped, "Pending fail: #{message || ""}"
|
110
112
|
else
|
111
|
-
|
112
|
-
raise Result::TestSkipped, "Pending fail: #{message || ""}"
|
113
|
-
else
|
114
|
-
capture_result(Assert::Result::Skip, "Pending fail: #{message || ""}")
|
115
|
-
end
|
113
|
+
capture_result(Assert::Result::Skip, "Pending fail: #{message || ""}")
|
116
114
|
end
|
117
115
|
end
|
118
116
|
alias_method :flunk, :fail
|
@@ -139,11 +137,11 @@ module Assert
|
|
139
137
|
begin
|
140
138
|
@__assert_with_bt__.push(bt.first)
|
141
139
|
instance_eval(&block)
|
142
|
-
rescue Result::TestSkipped, Result::TestFailure =>
|
143
|
-
if
|
144
|
-
|
140
|
+
rescue Result::TestSkipped, Result::TestFailure => ex
|
141
|
+
if ex.assert_with_bt.nil? && !@__assert_with_bt__.empty?
|
142
|
+
ex.assert_with_bt = @__assert_with_bt__.dup
|
145
143
|
end
|
146
|
-
raise(
|
144
|
+
raise(ex)
|
147
145
|
ensure
|
148
146
|
@__assert_with_bt__.pop
|
149
147
|
end
|
@@ -178,12 +176,10 @@ module Assert
|
|
178
176
|
|
179
177
|
def capture_result(result_klass, msg)
|
180
178
|
@__assert_result_callback__.call(
|
181
|
-
result_klass.for_test(@__assert_running_test__, msg, caller_locations)
|
179
|
+
result_klass.for_test(@__assert_running_test__, msg, caller_locations),
|
182
180
|
)
|
183
181
|
end
|
184
182
|
|
185
|
-
|
186
|
-
@__assert_config__
|
187
|
-
end
|
183
|
+
attr_reader :__assert_config__
|
188
184
|
end
|
189
185
|
end
|
@@ -5,9 +5,12 @@ class Assert::Context; end
|
|
5
5
|
|
6
6
|
module Assert::Context::LetDSL
|
7
7
|
def let(name, &block)
|
8
|
-
|
8
|
+
send(:define_method, name, &->{
|
9
9
|
unless instance_variable_defined?("@__assert_let_#{name}__")
|
10
|
-
instance_variable_set(
|
10
|
+
instance_variable_set(
|
11
|
+
"@__assert_let_#{name}__",
|
12
|
+
instance_eval(&block),
|
13
|
+
)
|
11
14
|
end
|
12
15
|
|
13
16
|
instance_variable_get("@__assert_let_#{name}__")
|
@@ -5,28 +5,28 @@ module Assert; end
|
|
5
5
|
class Assert::Context
|
6
6
|
module SetupDSL
|
7
7
|
def setup_once(&block)
|
8
|
-
|
8
|
+
suite.setup(&block)
|
9
9
|
end
|
10
10
|
alias_method :before_once, :setup_once
|
11
11
|
alias_method :startup, :setup_once
|
12
12
|
|
13
13
|
def teardown_once(&block)
|
14
|
-
|
14
|
+
suite.teardown(&block)
|
15
15
|
end
|
16
16
|
alias_method :after_once, :teardown_once
|
17
17
|
alias_method :shutdown, :teardown_once
|
18
18
|
|
19
19
|
def around(&block)
|
20
|
-
|
20
|
+
arounds << block
|
21
21
|
end
|
22
22
|
|
23
23
|
def setup(method_name = nil, &block)
|
24
|
-
|
24
|
+
setups << (block || method_name)
|
25
25
|
end
|
26
26
|
alias_method :before, :setup
|
27
27
|
|
28
28
|
def teardown(method_name = nil, &block)
|
29
|
-
|
29
|
+
teardowns << (block || method_name)
|
30
30
|
end
|
31
31
|
alias_method :after, :teardown
|
32
32
|
|
@@ -43,12 +43,13 @@ class Assert::Context
|
|
43
43
|
end
|
44
44
|
|
45
45
|
def run_arounds(scope, &run_block)
|
46
|
-
context_block =
|
47
|
-
|
48
|
-
|
46
|
+
context_block =
|
47
|
+
arounds.compact.reverse.inject(run_block) do |run_b, around_b|
|
48
|
+
Proc.new{ scope.instance_exec(run_b, &around_b) }
|
49
|
+
end
|
49
50
|
|
50
|
-
if
|
51
|
-
|
51
|
+
if superclass.respond_to?(:run_arounds)
|
52
|
+
superclass.run_arounds(scope, &context_block)
|
52
53
|
else
|
53
54
|
context_block.call
|
54
55
|
end
|
@@ -56,20 +57,24 @@ class Assert::Context
|
|
56
57
|
|
57
58
|
def run_setups(scope)
|
58
59
|
# setup the parent...
|
59
|
-
|
60
|
+
superclass.run_setups(scope) if superclass.respond_to?(:run_setups)
|
60
61
|
# ... before you setup the child
|
61
|
-
|
62
|
-
setup.
|
62
|
+
setups.compact.each do |setup|
|
63
|
+
setup.is_a?(::Proc) ? scope.instance_eval(&setup) : scope.send(setup)
|
63
64
|
end
|
64
65
|
end
|
65
66
|
|
66
67
|
def run_teardowns(scope)
|
67
68
|
# teardown the child...
|
68
|
-
|
69
|
-
teardown.
|
69
|
+
teardowns.compact.each do |teardown|
|
70
|
+
if teardown.is_a?(::Proc)
|
71
|
+
scope.instance_eval(&teardown)
|
72
|
+
else
|
73
|
+
scope.send(teardown)
|
74
|
+
end
|
70
75
|
end
|
71
76
|
# ... before the parent
|
72
|
-
|
77
|
+
superclass.run_teardowns(scope) if superclass.respond_to?(:run_teardowns)
|
73
78
|
end
|
74
79
|
end
|
75
80
|
end
|