assert 2.19.1 → 2.19.6
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 +30 -70
- data/lib/assert/clirb.rb +55 -0
- data/lib/assert/config.rb +20 -8
- 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 +42 -3
- 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 +34 -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,10 +3,14 @@
|
|
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
|
9
10
|
class CLI
|
11
|
+
SUCCESS_EXIT_STATUS = 0
|
12
|
+
ERROR_EXIT_STATUS = 1
|
13
|
+
|
10
14
|
def self.debug?(args)
|
11
15
|
args.include?("-d") || args.include?("--debug")
|
12
16
|
end
|
@@ -24,13 +28,17 @@ module Assert
|
|
24
28
|
end
|
25
29
|
|
26
30
|
def self.bench(start_msg, &block)
|
27
|
-
|
28
|
-
block.call
|
31
|
+
unless Assert.config.debug
|
32
|
+
block.call
|
33
|
+
return
|
29
34
|
end
|
35
|
+
|
30
36
|
print debug_start_msg(start_msg)
|
31
|
-
RoundedMillisecondTime
|
32
|
-
|
33
|
-
|
37
|
+
RoundedMillisecondTime
|
38
|
+
.new(Benchmark.measure(&block).real)
|
39
|
+
.tap do |time_in_ms|
|
40
|
+
puts debug_finish_msg(time_in_ms)
|
41
|
+
end
|
34
42
|
end
|
35
43
|
|
36
44
|
def initialize(*args)
|
@@ -63,25 +71,31 @@ module Assert
|
|
63
71
|
end
|
64
72
|
|
65
73
|
def run
|
74
|
+
fails_plus_errors_count = 0
|
66
75
|
begin
|
67
76
|
@cli.parse!(@args)
|
68
77
|
catch(:halt) do
|
69
|
-
|
78
|
+
fails_plus_errors_count =
|
79
|
+
Assert::AssertRunner.new(Assert.config, @cli.args, @cli.opts).run
|
70
80
|
end
|
71
81
|
rescue CLIRB::HelpExit
|
72
82
|
puts help
|
83
|
+
exit(SUCCESS_EXIT_STATUS)
|
73
84
|
rescue CLIRB::VersionExit
|
74
85
|
puts Assert::VERSION
|
75
|
-
|
76
|
-
|
77
|
-
puts
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
puts
|
82
|
-
|
86
|
+
exit(SUCCESS_EXIT_STATUS)
|
87
|
+
rescue CLIRB::Error => ex
|
88
|
+
puts "#{ex.message}\n\n"
|
89
|
+
puts Assert.config.debug ? ex.backtrace.join("\n") : help
|
90
|
+
exit(ERROR_EXIT_STATUS)
|
91
|
+
rescue => ex
|
92
|
+
puts "#{ex.class}: #{ex.message}"
|
93
|
+
puts ex.backtrace.join("\n")
|
94
|
+
exit(ERROR_EXIT_STATUS)
|
83
95
|
end
|
84
|
-
exit(
|
96
|
+
exit(
|
97
|
+
fails_plus_errors_count == 0 ? SUCCESS_EXIT_STATUS : ERROR_EXIT_STATUS,
|
98
|
+
)
|
85
99
|
end
|
86
100
|
|
87
101
|
def help
|
@@ -93,63 +107,9 @@ module Assert
|
|
93
107
|
|
94
108
|
module RoundedMillisecondTime
|
95
109
|
ROUND_PRECISION = 3
|
96
|
-
ROUND_MODIFIER = 10
|
110
|
+
ROUND_MODIFIER = 10**ROUND_PRECISION
|
97
111
|
def self.new(time_in_seconds)
|
98
112
|
(time_in_seconds * 1000 * ROUND_MODIFIER).to_i / ROUND_MODIFIER.to_f
|
99
113
|
end
|
100
114
|
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
115
|
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}")
|
@@ -41,7 +41,7 @@ module Assert
|
|
41
41
|
@run_diff_proc = Assert::U.syscmd_diff_proc
|
42
42
|
|
43
43
|
# option settings
|
44
|
-
@runner_seed =
|
44
|
+
@runner_seed = (env_runner_seed || random_runner_seed).to_i
|
45
45
|
@changed_only = false
|
46
46
|
@changed_ref = ""
|
47
47
|
@single_test = ""
|
@@ -53,30 +53,42 @@ 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
|
+
end
|
81
|
+
|
82
|
+
def env_runner_seed
|
83
|
+
ENV["SEED"]
|
84
|
+
end
|
85
|
+
|
86
|
+
def random_runner_seed
|
87
|
+
@random_runner_seed ||=
|
88
|
+
begin
|
89
|
+
srand
|
90
|
+
srand % 0xFFFF
|
91
|
+
end
|
80
92
|
end
|
81
93
|
end
|
82
94
|
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
|