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.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/assert.gemspec +10 -7
  3. data/lib/assert.rb +18 -6
  4. data/lib/assert/actual_value.rb +8 -6
  5. data/lib/assert/assert_runner.rb +36 -17
  6. data/lib/assert/assertions.rb +83 -50
  7. data/lib/assert/cli.rb +30 -70
  8. data/lib/assert/clirb.rb +55 -0
  9. data/lib/assert/config.rb +20 -8
  10. data/lib/assert/config_helpers.rb +55 -22
  11. data/lib/assert/context.rb +14 -18
  12. data/lib/assert/context/let_dsl.rb +5 -2
  13. data/lib/assert/context/setup_dsl.rb +21 -16
  14. data/lib/assert/context/subject_dsl.rb +6 -7
  15. data/lib/assert/context/suite_dsl.rb +2 -1
  16. data/lib/assert/context/test_dsl.rb +55 -19
  17. data/lib/assert/default_suite.rb +25 -15
  18. data/lib/assert/default_view.rb +47 -30
  19. data/lib/assert/file_line.rb +6 -6
  20. data/lib/assert/macro.rb +1 -1
  21. data/lib/assert/macros/methods.rb +71 -45
  22. data/lib/assert/result.rb +111 -62
  23. data/lib/assert/runner.rb +68 -51
  24. data/lib/assert/stub.rb +42 -3
  25. data/lib/assert/suite.rb +67 -28
  26. data/lib/assert/test.rb +40 -35
  27. data/lib/assert/utils.rb +19 -10
  28. data/lib/assert/version.rb +1 -1
  29. data/lib/assert/view.rb +44 -18
  30. data/lib/assert/view_helpers.rb +100 -92
  31. data/test/helper.rb +3 -1
  32. data/test/support/factory.rb +38 -21
  33. data/test/system/stub_tests.rb +180 -144
  34. data/test/system/test_tests.rb +86 -60
  35. data/test/unit/actual_value_tests.rb +69 -50
  36. data/test/unit/assert_tests.rb +39 -22
  37. data/test/unit/assertions/assert_block_tests.rb +10 -10
  38. data/test/unit/assertions/assert_changes_tests.rb +25 -21
  39. data/test/unit/assertions/assert_empty_tests.rb +14 -12
  40. data/test/unit/assertions/assert_equal_tests.rb +26 -26
  41. data/test/unit/assertions/assert_file_exists_tests.rb +15 -13
  42. data/test/unit/assertions/assert_includes_tests.rb +10 -10
  43. data/test/unit/assertions/assert_instance_of_tests.rb +14 -14
  44. data/test/unit/assertions/assert_is_a_tests.rb +128 -0
  45. data/test/unit/assertions/assert_match_tests.rb +10 -10
  46. data/test/unit/assertions/assert_nil_tests.rb +16 -12
  47. data/test/unit/assertions/assert_raises_tests.rb +27 -20
  48. data/test/unit/assertions/assert_respond_to_tests.rb +10 -10
  49. data/test/unit/assertions/assert_same_tests.rb +24 -24
  50. data/test/unit/assertions/assert_true_false_tests.rb +32 -24
  51. data/test/unit/assertions_tests.rb +14 -9
  52. data/test/unit/config_helpers_tests.rb +15 -10
  53. data/test/unit/config_tests.rb +34 -9
  54. data/test/unit/context/setup_dsl_tests.rb +24 -14
  55. data/test/unit/context/subject_dsl_tests.rb +3 -3
  56. data/test/unit/context/suite_dsl_tests.rb +4 -4
  57. data/test/unit/context/test_dsl_tests.rb +37 -17
  58. data/test/unit/context_info_tests.rb +4 -4
  59. data/test/unit/context_tests.rb +110 -54
  60. data/test/unit/default_suite_tests.rb +10 -6
  61. data/test/unit/factory_tests.rb +2 -2
  62. data/test/unit/file_line_tests.rb +7 -7
  63. data/test/unit/macro_tests.rb +11 -11
  64. data/test/unit/result_tests.rb +47 -41
  65. data/test/unit/runner_tests.rb +29 -16
  66. data/test/unit/suite_tests.rb +37 -15
  67. data/test/unit/test_tests.rb +63 -50
  68. data/test/unit/utils_tests.rb +48 -35
  69. data/test/unit/view_helpers_tests.rb +21 -14
  70. data/test/unit/view_tests.rb +5 -5
  71. metadata +26 -11
  72. data/test/unit/assertions/assert_kind_of_tests.rb +0 -68
@@ -3,7 +3,7 @@
3
3
  module Assert
4
4
  class FileLine
5
5
  def self.parse(file_line_path)
6
- self.new(*(file_line_path.to_s.match(/(^[^\:]*)\:*(\d*).*$/) || [])[1..2])
6
+ new(*(file_line_path.to_s.match(/(^[^\:]*)\:*(\d*).*$/) || [])[1..2])
7
7
  end
8
8
 
9
9
  attr_reader :file, :line
@@ -13,13 +13,13 @@ module Assert
13
13
  end
14
14
 
15
15
  def to_s
16
- "#{self.file}:#{self.line}"
16
+ "#{file}:#{line}"
17
17
  end
18
18
 
19
- def ==(other_file_line)
20
- if other_file_line.kind_of?(FileLine)
21
- self.file == other_file_line.file &&
22
- self.line == other_file_line.line
19
+ def ==(other)
20
+ if other.is_a?(FileLine)
21
+ file == other.file &&
22
+ line == other.line
23
23
  else
24
24
  super
25
25
  end
data/lib/assert/macro.rb CHANGED
@@ -7,7 +7,7 @@ module Assert
7
7
  # will be instance_eval'd in that Assert::Context.
8
8
  attr_accessor :name
9
9
 
10
- def initialize(name = nil, *args, &block)
10
+ def initialize(name = nil, *_args)
11
11
  raise ArgumentError unless block_given?
12
12
  @name = name || "run this macro"
13
13
  super()
@@ -10,9 +10,12 @@ module Assert::Macros
10
10
 
11
11
  module ClassMethods
12
12
  def have_instance_method(*methods)
13
- called_from = (methods.last.kind_of?(Array) ? methods.pop : caller_locations).first
13
+ called_from =
14
+ (methods.last.is_a?(Array) ? methods.pop : caller_locations).first
14
15
  Assert::Macro.new do
15
- methods.each{ |m| _methods_macro_instance_methods << [m, called_from] }
16
+ methods.each do |m|
17
+ _methods_macro_instance_methods << [m, called_from]
18
+ end
16
19
  _methods_macro_test called_from
17
20
  end
18
21
  end
@@ -21,9 +24,12 @@ module Assert::Macros
21
24
  alias_method :have_imeths, :have_instance_method
22
25
 
23
26
  def not_have_instance_method(*methods)
24
- called_from = (methods.last.kind_of?(Array) ? methods.pop : caller_locations).first
27
+ called_from =
28
+ (methods.last.is_a?(Array) ? methods.pop : caller_locations).first
25
29
  Assert::Macro.new do
26
- methods.each{ |m| _methods_macro_not_instance_methods << [m, called_from] }
30
+ methods.each do |m|
31
+ _methods_macro_not_instance_methods << [m, called_from]
32
+ end
27
33
  _methods_macro_test called_from
28
34
  end
29
35
  end
@@ -32,7 +38,8 @@ module Assert::Macros
32
38
  alias_method :not_have_imeths, :not_have_instance_method
33
39
 
34
40
  def have_class_method(*methods)
35
- called_from = (methods.last.kind_of?(Array) ? methods.pop : caller_locations).first
41
+ called_from =
42
+ (methods.last.is_a?(Array) ? methods.pop : caller_locations).first
36
43
  Assert::Macro.new do
37
44
  methods.each{ |m| _methods_macro_class_methods << [m, called_from] }
38
45
  _methods_macro_test called_from
@@ -43,9 +50,12 @@ module Assert::Macros
43
50
  alias_method :have_cmeths, :have_class_method
44
51
 
45
52
  def not_have_class_method(*methods)
46
- called_from = (methods.last.kind_of?(Array) ? methods.pop : caller_locations).first
53
+ called_from =
54
+ (methods.last.is_a?(Array) ? methods.pop : caller_locations).first
47
55
  Assert::Macro.new do
48
- methods.each{ |m| _methods_macro_not_class_methods << [m, called_from] }
56
+ methods.each do |m|
57
+ _methods_macro_not_class_methods << [m, called_from]
58
+ end
49
59
  _methods_macro_test called_from
50
60
  end
51
61
  end
@@ -54,44 +64,44 @@ module Assert::Macros
54
64
  alias_method :not_have_cmeths, :not_have_class_method
55
65
 
56
66
  def have_reader(*methods)
57
- methods << caller_locations if !methods.last.kind_of?(Array)
67
+ methods << caller_locations unless methods.last.is_a?(Array)
58
68
  have_instance_methods(*methods)
59
69
  end
60
70
  alias_method :have_readers, :have_reader
61
71
 
62
72
  def not_have_reader(*methods)
63
- methods << caller_locations if !methods.last.kind_of?(Array)
73
+ methods << caller_locations unless methods.last.is_a?(Array)
64
74
  not_have_instance_methods(*methods)
65
75
  end
66
76
  alias_method :not_have_readers, :not_have_reader
67
77
 
68
78
  def have_writer(*methods)
69
- called = methods.last.kind_of?(Array) ? methods.pop : caller_locations
70
- writer_meths = methods.collect{|m| "#{m}="}
79
+ called = methods.last.is_a?(Array) ? methods.pop : caller_locations
80
+ writer_meths = methods.collect{ |m| "#{m}=" }
71
81
  writer_meths << called
72
82
  have_instance_methods(*writer_meths)
73
83
  end
74
84
  alias_method :have_writers, :have_writer
75
85
 
76
86
  def not_have_writer(*methods)
77
- called = methods.last.kind_of?(Array) ? methods.pop : caller_locations
78
- writer_meths = methods.collect{|m| "#{m}="}
87
+ called = methods.last.is_a?(Array) ? methods.pop : caller_locations
88
+ writer_meths = methods.collect{ |m| "#{m}=" }
79
89
  writer_meths << called
80
90
  not_have_instance_methods(*writer_meths)
81
91
  end
82
92
  alias_method :not_have_writers, :not_have_writer
83
93
 
84
94
  def have_accessor(*methods)
85
- called = methods.last.kind_of?(Array) ? methods.pop : caller_locations
86
- accessor_meths = methods.collect{|m| [m, "#{m}="]}.flatten
95
+ called = methods.last.is_a?(Array) ? methods.pop : caller_locations
96
+ accessor_meths = methods.collect{ |m| [m, "#{m}="] }.flatten
87
97
  accessor_meths << called
88
98
  have_instance_methods(*accessor_meths)
89
99
  end
90
100
  alias_method :have_accessors, :have_accessor
91
101
 
92
102
  def not_have_accessor(*methods)
93
- called = methods.last.kind_of?(Array) ? methods.pop : caller_locations
94
- accessor_meths = methods.collect{|m| [m, "#{m}="]}.flatten
103
+ called = methods.last.is_a?(Array) ? methods.pop : caller_locations
104
+ accessor_meths = methods.collect{ |m| [m, "#{m}="] }.flatten
95
105
  accessor_meths << called
96
106
  not_have_instance_methods(*accessor_meths)
97
107
  end
@@ -100,35 +110,51 @@ module Assert::Macros
100
110
  # private
101
111
 
102
112
  def _methods_macro_test(called_from)
103
- @_methods_macro_test ||= test "should respond to methods", called_from do
104
- self.class._methods_macro_instance_methods.each do |(method, called_from)|
105
- msg = "#{subject.class.name} does not have instance method ##{method}"
106
- with_backtrace([called_from]) do
107
- assert_that(subject).responds_to(method, msg)
108
- end
109
- end
110
-
111
- self.class._methods_macro_class_methods.each do |(method, called_from)|
112
- msg = "#{subject.class.name} does not have class method ##{method}"
113
- with_backtrace([called_from]) do
114
- assert_that(subject.class).responds_to(method, msg)
115
- end
113
+ @_methods_macro_test ||=
114
+ test "should respond to methods", called_from do
115
+ self
116
+ .class
117
+ ._methods_macro_instance_methods
118
+ .each do |(method, called_from)|
119
+ msg =
120
+ "#{subject.class.name} does not have "\
121
+ "instance method ##{method}"
122
+ with_backtrace([called_from]) do
123
+ assert_that(subject).responds_to(method, msg)
124
+ end
125
+ end
126
+
127
+ self
128
+ .class
129
+ ._methods_macro_class_methods
130
+ .each do |(method, called_from)|
131
+ msg =
132
+ "#{subject.class.name} does not have class method ##{method}"
133
+ with_backtrace([called_from]) do
134
+ assert_that(subject.class).responds_to(method, msg)
135
+ end
136
+ end
137
+
138
+ self
139
+ .class
140
+ ._methods_macro_not_instance_methods
141
+ .each do |(method, called_from)|
142
+ msg = "#{subject.class.name} has instance method ##{method}"
143
+ with_backtrace([called_from]) do
144
+ assert_that(subject).does_not_respond_to(method, msg)
145
+ end
146
+ end
147
+
148
+ self
149
+ .class
150
+ ._methods_macro_not_class_methods
151
+ .each do |(method, called_from)|
152
+ msg = "#{subject.class.name} has class method ##{method}"
153
+ with_backtrace([called_from]) do
154
+ assert_that(subject.class).does_not_respond_to(method, msg)
155
+ end
156
+ end
116
157
  end
117
-
118
- self.class._methods_macro_not_instance_methods.each do |(method, called_from)|
119
- msg = "#{subject.class.name} has instance method ##{method}"
120
- with_backtrace([called_from]) do
121
- assert_that(subject).does_not_respond_to(method, msg)
122
- end
123
- end
124
-
125
- self.class._methods_macro_not_class_methods.each do |(method, called_from)|
126
- msg = "#{subject.class.name} has class method ##{method}"
127
- with_backtrace([called_from]) do
128
- assert_that(subject.class).does_not_respond_to(method, msg)
129
- end
130
- end
131
- end
132
158
  end
133
159
 
134
160
  def _methods_macro_instance_methods
data/lib/assert/result.rb CHANGED
@@ -5,39 +5,44 @@ require "assert/file_line"
5
5
  module Assert; end
6
6
 
7
7
  module Assert::Result
8
- class Base ; end
9
- class Pass < Base ; end
10
- class Ignore < Base ; end
11
- class Fail < Base ; end
12
- class Error < Base ; end
13
- class Skip < Base ; end
8
+ class Base; end
9
+ class Pass < Base; end
10
+ class Ignore < Base; end
11
+ class Fail < Base; end
12
+ class Error < Base; end
13
+ class Skip < Base; end
14
14
 
15
15
  def self.types
16
- @types ||= Hash.new{ |h, k| Base }.tap do |hash|
16
+ @types ||= Hash.new{ |_h, _k| Base }.tap{ |hash|
17
17
  hash[:pass] = Pass
18
18
  hash[:fail] = Fail
19
19
  hash[:ignore] = Ignore
20
20
  hash[:skip] = Skip
21
21
  hash[:error] = Error
22
- end.freeze
22
+ }.freeze
23
23
  end
24
24
 
25
25
  def self.new(data = nil)
26
26
  data ||= {}
27
- self.types[data[:type]].new(data)
27
+ types[data[:type]].new(data)
28
28
  end
29
29
 
30
30
  class Base
31
- def self.type; :unknown; end
32
- def self.name; ""; end
31
+ def self.type
32
+ :unknown
33
+ end
34
+
35
+ def self.name
36
+ ""
37
+ end
33
38
 
34
39
  def self.for_test(test, message, bt)
35
- self.new({
36
- :test_name => test.name,
37
- :test_file_line => test.file_line,
38
- :message => message,
39
- :output => test.output,
40
- :backtrace => Backtrace.new(bt)
40
+ new({
41
+ test_name: test.name,
42
+ test_file_line: test.file_line,
43
+ message: message,
44
+ output: test.output,
45
+ backtrace: Backtrace.new(bt),
41
46
  })
42
47
  end
43
48
 
@@ -59,14 +64,20 @@ module Assert::Result
59
64
  end
60
65
 
61
66
  def test_file_line
62
- @test_file_line ||= (@build_data[:test_file_line] || Assert::FileLine.parse(""))
67
+ @test_file_line ||=
68
+ (@build_data[:test_file_line] || Assert::FileLine.parse(""))
63
69
  end
64
70
 
65
- def test_file_name; self.test_file_line.file; end
66
- def test_line_num; self.test_file_line.line.to_i; end
71
+ def test_file_name
72
+ test_file_line.file
73
+ end
74
+
75
+ def test_line_num
76
+ test_file_line.line.to_i
77
+ end
67
78
 
68
79
  def test_id
69
- self.test_file_line.to_s
80
+ test_file_line.to_s
70
81
  end
71
82
 
72
83
  def message
@@ -108,32 +119,38 @@ module Assert::Result
108
119
  end
109
120
 
110
121
  def src_line
111
- @src_line ||= first_filtered_bt_line(self.backtrace)
122
+ @src_line ||= first_filtered_bt_line(backtrace)
112
123
  end
113
124
 
114
125
  def file_line
115
- @file_line ||= Assert::FileLine.parse(self.src_line)
126
+ @file_line ||= Assert::FileLine.parse(src_line)
116
127
  end
117
128
 
118
- def file_name; self.file_line.file; end
119
- def line_num; self.file_line.line.to_i; end
129
+ def file_name
130
+ file_line.file
131
+ end
132
+
133
+ def line_num
134
+ file_line.line.to_i
135
+ end
120
136
 
121
137
  Assert::Result.types.keys.each do |type|
122
138
  define_method("#{type}?"){ self.type == type }
123
139
  end
124
140
 
125
- def to_sym; self.type; end
141
+ def to_sym
142
+ type
143
+ end
126
144
 
127
145
  def to_s
128
- [ "#{self.name.upcase}: #{self.test_name}",
129
- self.message,
130
- self.trace
131
- ].reject(&:empty?).join("\n")
146
+ ["#{name.upcase}: #{test_name}", message, trace]
147
+ .reject(&:empty?)
148
+ .join("\n")
132
149
  end
133
150
 
134
- def ==(other_result)
135
- if other_result.is_a?(self.class)
136
- self.type == other_result.type && self.message == other_result.message
151
+ def ==(other)
152
+ if other.is_a?(self.class)
153
+ type == other.type && message == other.message
137
154
  else
138
155
  super
139
156
  end
@@ -141,9 +158,9 @@ module Assert::Result
141
158
 
142
159
  def inspect
143
160
  "#<#{self.class}:#{"0x0%x" % (object_id << 1)} "\
144
- "@message=#{self.message.inspect} "\
145
- "@file_line=#{self.file_line.to_s.inspect} "\
146
- "@test_file_line=#{self.test_file_line.to_s.inspect}>"
161
+ "@message=#{message.inspect} "\
162
+ "@file_line=#{file_line.to_s.inspect} "\
163
+ "@test_file_line=#{test_file_line.to_s.inspect}>"
147
164
  end
148
165
 
149
166
  private
@@ -153,10 +170,10 @@ module Assert::Result
153
170
  # filtered line of the backtrace). This is overridden for error results
154
171
  # as they always show their full backtrace.
155
172
  def build_trace
156
- if self.with_bt_set?
157
- Backtrace.to_s(@with_bt+[first_filtered_bt_line(self.backtrace)])
173
+ if with_bt_set?
174
+ Backtrace.to_s(@with_bt + [first_filtered_bt_line(backtrace)])
158
175
  else
159
- self.src_line
176
+ src_line
160
177
  end
161
178
  end
162
179
 
@@ -169,13 +186,23 @@ module Assert::Result
169
186
  end
170
187
 
171
188
  class Pass < Base
172
- def self.type; :pass; end
173
- def self.name; "Pass"; end
189
+ def self.type
190
+ :pass
191
+ end
192
+
193
+ def self.name
194
+ "Pass"
195
+ end
174
196
  end
175
197
 
176
198
  class Ignore < Base
177
- def self.type; :ignore; end
178
- def self.name; "Ignore"; end
199
+ def self.type
200
+ :ignore
201
+ end
202
+
203
+ def self.name
204
+ "Ignore"
205
+ end
179
206
  end
180
207
 
181
208
  class HaltingTestResultError < RuntimeError
@@ -186,17 +213,26 @@ module Assert::Result
186
213
  TestFailure = Class.new(HaltingTestResultError)
187
214
 
188
215
  class Fail < Base
189
- def self.type; :fail; end
190
- def self.name; "Fail"; end
216
+ def self.type
217
+ :fail
218
+ end
219
+
220
+ def self.name
221
+ "Fail"
222
+ end
191
223
 
192
- # fail results can be generated manually or by raising Assert::Result::TestFailure
224
+ # fail results can be generated manually or by raising
225
+ # Assert::Result::TestFailure
193
226
  def self.for_test(test, msg_or_err, bt = nil)
194
- if msg_or_err.kind_of?(TestFailure)
227
+ if msg_or_err.is_a?(TestFailure)
195
228
  super(test, msg_or_err.message, msg_or_err.backtrace).tap do |result|
196
229
  result.set_with_bt(msg_or_err.assert_with_bt)
197
230
  end
198
- elsif msg_or_err.kind_of?(Exception)
199
- raise ArgumentError, "generate fail results by raising Assert::Result::TestFailure"
231
+ elsif msg_or_err.is_a?(Exception)
232
+ raise(
233
+ ArgumentError,
234
+ "generate fail results by raising Assert::Result::TestFailure",
235
+ )
200
236
  else
201
237
  super(test, msg_or_err, bt)
202
238
  end
@@ -207,17 +243,25 @@ module Assert::Result
207
243
  TestSkipped = Class.new(HaltingTestResultError)
208
244
 
209
245
  class Skip < Base
210
- def self.type; :skip; end
211
- def self.name; "Skip"; end
246
+ def self.type
247
+ :skip
248
+ end
249
+
250
+ def self.name
251
+ "Skip"
252
+ end
212
253
 
213
254
  # skip results are generated by raising Assert::Result::TestSkipped
214
255
  def self.for_test(test, msg_or_err, bt = nil)
215
- if msg_or_err.kind_of?(TestSkipped)
256
+ if msg_or_err.is_a?(TestSkipped)
216
257
  super(test, msg_or_err.message, msg_or_err.backtrace).tap do |result|
217
258
  result.set_with_bt(msg_or_err.assert_with_bt)
218
259
  end
219
- elsif msg_or_err.kind_of?(Exception)
220
- raise ArgumentError, "generate skip results by raising Assert::Result::TestSkipped"
260
+ elsif msg_or_err.is_a?(Exception)
261
+ raise(
262
+ ArgumentError,
263
+ "generate skip results by raising Assert::Result::TestSkipped",
264
+ )
221
265
  else
222
266
  super(test, msg_or_err, bt)
223
267
  end
@@ -225,12 +269,17 @@ module Assert::Result
225
269
  end
226
270
 
227
271
  class Error < Base
228
- def self.type; :error; end
229
- def self.name; "Error"; end
272
+ def self.type
273
+ :error
274
+ end
275
+
276
+ def self.name
277
+ "Error"
278
+ end
230
279
 
231
280
  # error results are generated by raising exceptions in tests
232
281
  def self.for_test(test, err)
233
- if err.kind_of?(Exception)
282
+ if err.is_a?(Exception)
234
283
  super(test, "#{err.message} (#{err.class.name})", err.backtrace)
235
284
  else
236
285
  raise ArgumentError, "generate error results by raising an exception"
@@ -246,10 +295,10 @@ module Assert::Result
246
295
  end
247
296
 
248
297
  class Backtrace < ::Array
249
- DELIM = "\n".freeze
298
+ DELIM = "\n"
250
299
 
251
300
  def self.parse(bt)
252
- self.new(bt.to_s.split(DELIM))
301
+ new(bt.to_s.split(DELIM))
253
302
  end
254
303
 
255
304
  def self.to_s(bt_array)
@@ -261,7 +310,7 @@ module Assert::Result
261
310
  end
262
311
 
263
312
  def filtered
264
- self.class.new(self.reject { |line| filter_out?(line.to_s) })
313
+ self.class.new(reject{ |line| filter_out?(line.to_s) })
265
314
  end
266
315
 
267
316
  protected
@@ -271,8 +320,8 @@ module Assert::Result
271
320
  # "./lib" in project dir, or "/usr/local/blahblah" if installed
272
321
  assert_lib_path = File.expand_path("../..", __FILE__)
273
322
  assert_macros_path = File.join(assert_lib_path, "assert/macros")
274
- assert_bin_regex = /bin\/assert\:/
275
- ( line.rindex(assert_lib_path, 0) &&
323
+ assert_bin_regex = %r{bin/assert\:}
324
+ (line.rindex(assert_lib_path, 0) &&
276
325
  !line.rindex(assert_macros_path, 0)
277
326
  ) ||
278
327
  line =~ assert_bin_regex