aruba 1.1.1 → 2.0.1

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 (47) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +61 -3
  3. data/CONTRIBUTING.md +9 -2
  4. data/README.md +21 -18
  5. data/lib/aruba/api/bundler.rb +1 -0
  6. data/lib/aruba/api/commands.rb +0 -2
  7. data/lib/aruba/api/core.rb +15 -11
  8. data/lib/aruba/api/filesystem.rb +1 -7
  9. data/lib/aruba/api/text.rb +0 -12
  10. data/lib/aruba/console.rb +1 -1
  11. data/lib/aruba/contracts/enum.rb +1 -0
  12. data/lib/aruba/cucumber/command.rb +175 -119
  13. data/lib/aruba/cucumber/file.rb +2 -2
  14. data/lib/aruba/cucumber/parameter_types.rb +1 -0
  15. data/lib/aruba/cucumber.rb +1 -0
  16. data/lib/aruba/event_bus/name_resolver.rb +1 -1
  17. data/lib/aruba/matchers/command/be_successfully_executed.rb +0 -2
  18. data/lib/aruba/matchers/command/have_exit_status.rb +7 -13
  19. data/lib/aruba/matchers/command/have_finished_in_time.rb +0 -2
  20. data/lib/aruba/matchers/directory/be_an_existing_directory.rb +0 -2
  21. data/lib/aruba/matchers/directory/have_sub_directory.rb +0 -2
  22. data/lib/aruba/matchers/file/be_a_command_found_in_path.rb +0 -2
  23. data/lib/aruba/matchers/file/be_an_existing_executable.rb +0 -1
  24. data/lib/aruba/matchers/file/be_an_existing_file.rb +0 -2
  25. data/lib/aruba/matchers/file/have_file_content.rb +0 -2
  26. data/lib/aruba/matchers/file/have_file_size.rb +0 -2
  27. data/lib/aruba/matchers/file/have_same_file_content.rb +0 -1
  28. data/lib/aruba/matchers/path/a_path_matching_pattern.rb +0 -2
  29. data/lib/aruba/matchers/path/be_an_absolute_path.rb +0 -2
  30. data/lib/aruba/matchers/path/be_an_existing_path.rb +0 -2
  31. data/lib/aruba/matchers/path/have_permissions.rb +0 -2
  32. data/lib/aruba/platform.rb +2 -2
  33. data/lib/aruba/platforms/announcer.rb +0 -2
  34. data/lib/aruba/platforms/command_monitor.rb +2 -2
  35. data/lib/aruba/platforms/unix_environment_variables.rb +0 -2
  36. data/lib/aruba/platforms/unix_platform.rb +2 -1
  37. data/lib/aruba/platforms/windows_environment_variables.rb +1 -1
  38. data/lib/aruba/platforms/windows_platform.rb +1 -3
  39. data/lib/aruba/platforms/windows_which.rb +1 -1
  40. data/lib/aruba/processes/basic_process.rb +4 -0
  41. data/lib/aruba/version.rb +1 -1
  42. metadata +82 -26
  43. data/lib/aruba/matchers/base/base_matcher.rb +0 -87
  44. data/lib/aruba/matchers/base/object_formatter.rb +0 -104
  45. data/lib/aruba/matchers/collection/all.rb +0 -11
  46. data/lib/aruba/matchers/collection/include_an_object.rb +0 -120
  47. data/lib/aruba/matchers/collection.rb +0 -1
@@ -15,7 +15,7 @@ module Aruba
15
15
  attr_reader :registered_commands, :last_command_started, :last_command_stopped
16
16
 
17
17
  class DefaultLastCommandStopped
18
- def nil?
18
+ def empty?
19
19
  true
20
20
  end
21
21
 
@@ -29,7 +29,7 @@ module Aruba
29
29
  end
30
30
 
31
31
  class DefaultLastCommandStarted
32
- def nil?
32
+ def empty?
33
33
  true
34
34
  end
35
35
 
@@ -108,8 +108,6 @@ module Aruba
108
108
  value = value.to_s
109
109
 
110
110
  actions << UpdateAction.new(name.to_s => value)
111
-
112
- value
113
111
  end
114
112
 
115
113
  # Append value to variable
@@ -1,4 +1,5 @@
1
1
  require "rbconfig"
2
+ require "rubygems"
2
3
  require "pathname"
3
4
 
4
5
  require "aruba/aruba_path"
@@ -31,7 +32,7 @@ module Aruba
31
32
  # @private
32
33
  class UnixPlatform
33
34
  def self.match?
34
- !Cucumber::WINDOWS
35
+ !Gem.win_platform?
35
36
  end
36
37
 
37
38
  def environment_variables
@@ -76,7 +76,7 @@ module Aruba
76
76
  end
77
77
 
78
78
  def self.upcase_env(env)
79
- env.each_with_object({}) { |(k, v), a| a[k.to_s.upcase] = v }
79
+ env.to_h.transform_keys { |k| k.to_s.upcase }
80
80
  end
81
81
 
82
82
  private
@@ -1,5 +1,3 @@
1
- require "cucumber/platform"
2
-
3
1
  require "aruba/platforms/unix_platform"
4
2
  require "aruba/platforms/windows_command_string"
5
3
  require "aruba/platforms/windows_environment_variables"
@@ -20,7 +18,7 @@ module Aruba
20
18
  # @private
21
19
  class WindowsPlatform < UnixPlatform
22
20
  def self.match?
23
- Cucumber::WINDOWS
21
+ Gem.win_platform?
24
22
  end
25
23
 
26
24
  # @see UnixPlatform#command_string
@@ -49,7 +49,7 @@ module Aruba
49
49
  file = File.join(dir, program)
50
50
  # Dir[] doesn't handle backslashes properly, so convert them. Also, if
51
51
  # the program name doesn't have an extension, try them all.
52
- file = file.tr('\\', "/")
52
+ file = file.tr("\\", "/")
53
53
 
54
54
  found = Dir[file].first
55
55
 
@@ -130,6 +130,10 @@ module Aruba
130
130
  []
131
131
  end
132
132
 
133
+ def empty?
134
+ false
135
+ end
136
+
133
137
  private
134
138
 
135
139
  def truncate(string, max_length)
data/lib/aruba/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Aruba
2
- VERSION = "1.1.1".freeze
2
+ VERSION = "2.0.1".freeze
3
3
  end
metadata CHANGED
@@ -1,15 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aruba
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 2.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aslak Hellesøy, Matt Wynne and other Aruba Contributors
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-05-14 00:00:00.000000000 Z
11
+ date: 2022-04-23 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '1.17'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '3.0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '1.17'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '3.0'
13
33
  - !ruby/object:Gem::Dependency
14
34
  name: childprocess
15
35
  requirement: !ruby/object:Gem::Requirement
@@ -56,20 +76,20 @@ dependencies:
56
76
  requirements:
57
77
  - - ">="
58
78
  - !ruby/object:Gem::Version
59
- version: '2.4'
79
+ version: '4.0'
60
80
  - - "<"
61
81
  - !ruby/object:Gem::Version
62
- version: '7.0'
82
+ version: '8.0'
63
83
  type: :runtime
64
84
  prerelease: false
65
85
  version_requirements: !ruby/object:Gem::Requirement
66
86
  requirements:
67
87
  - - ">="
68
88
  - !ruby/object:Gem::Version
69
- version: '2.4'
89
+ version: '4.0'
70
90
  - - "<"
71
91
  - !ruby/object:Gem::Version
72
- version: '7.0'
92
+ version: '8.0'
73
93
  - !ruby/object:Gem::Dependency
74
94
  name: rspec-expectations
75
95
  requirement: !ruby/object:Gem::Requirement
@@ -98,6 +118,20 @@ dependencies:
98
118
  - - "~>"
99
119
  - !ruby/object:Gem::Version
100
120
  version: '1.0'
121
+ - !ruby/object:Gem::Dependency
122
+ name: appraisal
123
+ requirement: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - "~>"
126
+ - !ruby/object:Gem::Version
127
+ version: '2.4'
128
+ type: :development
129
+ prerelease: false
130
+ version_requirements: !ruby/object:Gem::Requirement
131
+ requirements:
132
+ - - "~>"
133
+ - !ruby/object:Gem::Version
134
+ version: '2.4'
101
135
  - !ruby/object:Gem::Dependency
102
136
  name: json
103
137
  requirement: !ruby/object:Gem::Requirement
@@ -140,6 +174,26 @@ dependencies:
140
174
  - - "~>"
141
175
  - !ruby/object:Gem::Version
142
176
  version: '5.10'
177
+ - !ruby/object:Gem::Dependency
178
+ name: pry
179
+ requirement: !ruby/object:Gem::Requirement
180
+ requirements:
181
+ - - ">="
182
+ - !ruby/object:Gem::Version
183
+ version: 0.13.0
184
+ - - "<"
185
+ - !ruby/object:Gem::Version
186
+ version: 0.15.0
187
+ type: :development
188
+ prerelease: false
189
+ version_requirements: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - ">="
192
+ - !ruby/object:Gem::Version
193
+ version: 0.13.0
194
+ - - "<"
195
+ - !ruby/object:Gem::Version
196
+ version: 0.15.0
143
197
  - !ruby/object:Gem::Dependency
144
198
  name: pry-doc
145
199
  requirement: !ruby/object:Gem::Requirement
@@ -158,16 +212,22 @@ dependencies:
158
212
  name: rake
159
213
  requirement: !ruby/object:Gem::Requirement
160
214
  requirements:
161
- - - "~>"
215
+ - - ">="
162
216
  - !ruby/object:Gem::Version
163
- version: '13.0'
217
+ version: '12.0'
218
+ - - "<"
219
+ - !ruby/object:Gem::Version
220
+ version: '14.0'
164
221
  type: :development
165
222
  prerelease: false
166
223
  version_requirements: !ruby/object:Gem::Requirement
167
224
  requirements:
168
- - - "~>"
225
+ - - ">="
226
+ - !ruby/object:Gem::Version
227
+ version: '12.0'
228
+ - - "<"
169
229
  - !ruby/object:Gem::Version
170
- version: '13.0'
230
+ version: '14.0'
171
231
  - !ruby/object:Gem::Dependency
172
232
  name: rake-manifest
173
233
  requirement: !ruby/object:Gem::Requirement
@@ -188,28 +248,28 @@ dependencies:
188
248
  requirements:
189
249
  - - "~>"
190
250
  - !ruby/object:Gem::Version
191
- version: 3.10.0
251
+ version: '3.11'
192
252
  type: :development
193
253
  prerelease: false
194
254
  version_requirements: !ruby/object:Gem::Requirement
195
255
  requirements:
196
256
  - - "~>"
197
257
  - !ruby/object:Gem::Version
198
- version: 3.10.0
258
+ version: '3.11'
199
259
  - !ruby/object:Gem::Dependency
200
260
  name: rubocop
201
261
  requirement: !ruby/object:Gem::Requirement
202
262
  requirements:
203
263
  - - "~>"
204
264
  - !ruby/object:Gem::Version
205
- version: 1.12.0
265
+ version: '1.28'
206
266
  type: :development
207
267
  prerelease: false
208
268
  version_requirements: !ruby/object:Gem::Requirement
209
269
  requirements:
210
270
  - - "~>"
211
271
  - !ruby/object:Gem::Version
212
- version: 1.12.0
272
+ version: '1.28'
213
273
  - !ruby/object:Gem::Dependency
214
274
  name: rubocop-packaging
215
275
  requirement: !ruby/object:Gem::Requirement
@@ -230,28 +290,28 @@ dependencies:
230
290
  requirements:
231
291
  - - "~>"
232
292
  - !ruby/object:Gem::Version
233
- version: 1.10.1
293
+ version: '1.13'
234
294
  type: :development
235
295
  prerelease: false
236
296
  version_requirements: !ruby/object:Gem::Requirement
237
297
  requirements:
238
298
  - - "~>"
239
299
  - !ruby/object:Gem::Version
240
- version: 1.10.1
300
+ version: '1.13'
241
301
  - !ruby/object:Gem::Dependency
242
302
  name: rubocop-rspec
243
303
  requirement: !ruby/object:Gem::Requirement
244
304
  requirements:
245
305
  - - "~>"
246
306
  - !ruby/object:Gem::Version
247
- version: 2.2.0
307
+ version: '2.8'
248
308
  type: :development
249
309
  prerelease: false
250
310
  version_requirements: !ruby/object:Gem::Requirement
251
311
  requirements:
252
312
  - - "~>"
253
313
  - !ruby/object:Gem::Version
254
- version: 2.2.0
314
+ version: '2.8'
255
315
  - !ruby/object:Gem::Dependency
256
316
  name: simplecov
257
317
  requirement: !ruby/object:Gem::Requirement
@@ -332,6 +392,7 @@ files:
332
392
  - lib/aruba/cucumber/environment.rb
333
393
  - lib/aruba/cucumber/file.rb
334
394
  - lib/aruba/cucumber/hooks.rb
395
+ - lib/aruba/cucumber/parameter_types.rb
335
396
  - lib/aruba/cucumber/testing_frameworks.rb
336
397
  - lib/aruba/errors.rb
337
398
  - lib/aruba/event_bus.rb
@@ -342,12 +403,7 @@ files:
342
403
  - lib/aruba/hooks.rb
343
404
  - lib/aruba/in_config_wrapper.rb
344
405
  - lib/aruba/initializer.rb
345
- - lib/aruba/matchers/base/base_matcher.rb
346
406
  - lib/aruba/matchers/base/message_indenter.rb
347
- - lib/aruba/matchers/base/object_formatter.rb
348
- - lib/aruba/matchers/collection.rb
349
- - lib/aruba/matchers/collection/all.rb
350
- - lib/aruba/matchers/collection/include_an_object.rb
351
407
  - lib/aruba/matchers/command.rb
352
408
  - lib/aruba/matchers/command/be_successfully_executed.rb
353
409
  - lib/aruba/matchers/command/have_exit_status.rb
@@ -424,15 +480,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
424
480
  requirements:
425
481
  - - ">="
426
482
  - !ruby/object:Gem::Version
427
- version: '2.4'
483
+ version: '2.5'
428
484
  required_rubygems_version: !ruby/object:Gem::Requirement
429
485
  requirements:
430
486
  - - ">="
431
487
  - !ruby/object:Gem::Version
432
488
  version: '0'
433
489
  requirements: []
434
- rubygems_version: 3.2.15
490
+ rubygems_version: 3.3.7
435
491
  signing_key:
436
492
  specification_version: 4
437
- summary: aruba-1.1.1
493
+ summary: aruba-2.0.1
438
494
  test_files: []
@@ -1,87 +0,0 @@
1
- require "aruba/matchers/base/object_formatter"
2
-
3
- # Aruba
4
- module Aruba
5
- # Matchers
6
- module Matchers
7
- # Base Matcher
8
- class BaseMatcher
9
- # @api private
10
- # Used to detect when no arg is passed to `initialize`.
11
- # `nil` cannot be used because it's a valid value to pass.
12
- UNDEFINED = Object.new.freeze
13
-
14
- # @private
15
- attr_reader :actual, :expected, :rescued_exception
16
-
17
- def initialize(expected = UNDEFINED)
18
- @expected = expected unless UNDEFINED.equal?(expected)
19
- end
20
-
21
- # @api private
22
- # Indicates if the match is successful. Delegates to `match`, which
23
- # should be defined on a subclass. Takes care of consistently
24
- # initializing the `actual` attribute.
25
- def matches?(actual)
26
- @actual = actual
27
- match(expected, actual)
28
- end
29
-
30
- def iterable?
31
- @actual.respond_to?(:each_with_index)
32
- end
33
-
34
- # @private
35
- module HashFormatting
36
- module_function
37
-
38
- # `{ :a => 5, :b => 2 }.inspect` produces:
39
- #
40
- # {:a=>5, :b=>2}
41
- #
42
- # ...but it looks much better as:
43
- #
44
- # {:a => 5, :b => 2}
45
- #
46
- # This is idempotent and safe to run on a string multiple times.
47
- def improve_hash_formatting(inspect_string)
48
- inspect_string.gsub(/(\S)=>(\S)/, '\1 => \2')
49
- end
50
- end
51
-
52
- include HashFormatting
53
-
54
- # @api private
55
- # Provides default implementations of failure messages, based on the `description`.
56
- module DefaultFailureMessages
57
- # @api private
58
- # Provides a good generic failure message. Based on `description`.
59
- # When subclassing, if you are not satisfied with this failure message
60
- # you often only need to override `description`.
61
- # @return [String]
62
- def failure_message
63
- "expected #{description_of @actual} to #{description}"
64
- end
65
-
66
- # @api private
67
- # Provides a good generic negative failure message. Based on `description`.
68
- # When subclassing, if you are not satisfied with this failure message
69
- # you often only need to override `description`.
70
- # @return [String]
71
- def failure_message_when_negated
72
- "expected #{description_of @actual} not to #{description}"
73
- end
74
- end
75
-
76
- include DefaultFailureMessages
77
-
78
- # Returns the description of the given object in a way that is
79
- # aware of composed matchers. If the object is a matcher with
80
- # a `description` method, returns the description; otherwise
81
- # returns `object.inspect`.
82
- def description_of(object)
83
- Aruba::Matchers::ObjectFormatter.format(object)
84
- end
85
- end
86
- end
87
- end
@@ -1,104 +0,0 @@
1
- # Aruba
2
- module Aruba
3
- # Matchers
4
- module Matchers
5
- # Provide additional output details beyond what `inspect` provides when
6
- # printing Time, DateTime, or BigDecimal
7
- #
8
- # @private
9
- module ObjectFormatter
10
- # @api private
11
- def self.format(object)
12
- prepare_for_inspection(object).inspect
13
- end
14
-
15
- # @private
16
- # Prepares the provided object to be formatted by wrapping it as needed
17
- # in something that, when `inspect` is called on it, will produce the
18
- # desired output.
19
- #
20
- # This allows us to apply the desired formatting to hash/array data structures
21
- # at any level of nesting, simply by walking that structure and replacing items
22
- # with custom items that have `inspect` defined to return the desired output
23
- # for that item. Then we can just use `Array#inspect` or `Hash#inspect` to
24
- # format the entire thing.
25
- def self.prepare_for_inspection(object)
26
- case object
27
- when Array
28
- return object.map { |o| prepare_for_inspection(o) }
29
- when Hash
30
- return prepare_hash(object)
31
- when Time
32
- inspection = format_time(object)
33
- else
34
- if defined?(DateTime) && DateTime === object
35
- inspection = format_date_time(object)
36
- elsif defined?(BigDecimal) && BigDecimal === object
37
- inspection = "#{object.to_s 'F'} (#{object.inspect})"
38
- elsif RSpec::Support.is_a_matcher?(object) && object.respond_to?(:description)
39
- inspection = object.description
40
- else
41
- return DelegatingInspector.new(object)
42
- end
43
- end
44
-
45
- InspectableItem.new(inspection)
46
- end
47
-
48
- # @private
49
- def self.prepare_hash(input)
50
- input.each_with_object({}) do |(k, v), hash|
51
- hash[prepare_for_inspection(k)] = prepare_for_inspection(v)
52
- end
53
- end
54
-
55
- TIME_FORMAT = "%Y-%m-%d %H:%M:%S".freeze
56
-
57
- if Time.method_defined?(:nsec)
58
- # @private
59
- def self.format_time(time)
60
- time.strftime("#{TIME_FORMAT}.#{format('%09d', time.nsec)} %z")
61
- end
62
- end
63
-
64
- DATE_TIME_FORMAT = "%a, %d %b %Y %H:%M:%S.%N %z".freeze
65
-
66
- # ActiveSupport sometimes overrides inspect. If `ActiveSupport` is
67
- # defined use a custom format string that includes more time precision.
68
- # @private
69
- def self.format_date_time(date_time)
70
- if defined?(ActiveSupport)
71
- date_time.strftime(DATE_TIME_FORMAT)
72
- else
73
- date_time.inspect
74
- end
75
- end
76
-
77
- # @private
78
- InspectableItem = Struct.new(:inspection) do
79
- def inspect
80
- inspection
81
- end
82
-
83
- def pretty_print(pp)
84
- pp.text inspection
85
- end
86
- end
87
-
88
- # @private
89
- DelegatingInspector = Struct.new(:object) do
90
- def inspect
91
- if defined?(::Delegator) && ::Delegator === object
92
- "#<#{object.class}(#{ObjectFormatter.format(object.__getobj__)})>"
93
- else
94
- object.inspect
95
- end
96
- end
97
-
98
- def pretty_print(pp)
99
- pp.text inspect
100
- end
101
- end
102
- end
103
- end
104
- end
@@ -1,11 +0,0 @@
1
- require "rspec/expectations"
2
-
3
- # Aruba
4
- module Aruba
5
- # Matchers
6
- module Matchers
7
- include ::RSpec::Matchers
8
-
9
- module_function :all
10
- end
11
- end
@@ -1,120 +0,0 @@
1
- require "aruba/matchers/base/base_matcher"
2
- require "aruba/matchers/base/message_indenter"
3
-
4
- # Aruba
5
- module Aruba
6
- # Matchers
7
- module Matchers
8
- # @api private
9
- # Provides the implementation for `include_an_object`.
10
- # Not intended to be instantiated directly.
11
- class IncludeAnObject < BaseMatcher
12
- include Base::MessageIndenter
13
-
14
- protected
15
-
16
- # @private
17
- attr_reader :matcher, :failed_objects
18
- # @private
19
- attr_accessor :any_succeeded_object
20
-
21
- public
22
-
23
- def initialize(matcher)
24
- @matcher = matcher
25
- @failed_objects = []
26
- @any_succeeded_object = false
27
- end
28
-
29
- # @api private
30
- # @return [String]
31
- def failure_message
32
- return "#{improve_hash_formatting(super)}, but was not iterable" unless iterable?
33
-
34
- return failed_objects.first if failed_objects.size == 1
35
-
36
- all_messages = [improve_hash_formatting(super)]
37
- failed_objects.each_with_index do |matcher_failure_message, index|
38
- all_messages << failure_message_for_item(index, matcher_failure_message)
39
- end
40
- all_messages.join("\n\n")
41
- end
42
-
43
- # @api private
44
- # @return [String]
45
- def description
46
- improve_hash_formatting "include an object #{description_of matcher}"
47
- end
48
-
49
- def does_not_match?(actual)
50
- @actual = actual
51
-
52
- return false unless iterable?
53
-
54
- index_objects
55
-
56
- any_succeeded_object == false
57
- end
58
-
59
- private
60
-
61
- def match(expected, actual)
62
- @actual = actual
63
- @expected = expected
64
-
65
- return false unless iterable?
66
-
67
- index_objects
68
-
69
- any_succeeded_object == true
70
- end
71
-
72
- def index_objects
73
- actual.each_with_index do |actual_item, index|
74
- cloned_matcher = matcher.clone
75
- begin
76
- matches = cloned_matcher.matches?(actual_item)
77
- rescue StandardError
78
- matches = nil
79
- end
80
-
81
- if matches
82
- self.any_succeeded_object = true
83
- break
84
- else
85
- failed_objects[index] = cloned_matcher.failure_message
86
- end
87
- end
88
- end
89
-
90
- def failure_message_for_item(index, failure_message)
91
- failure_message = indent_multiline_message(add_new_line_if_needed(failure_message))
92
- indent_multiline_message(
93
- "object at index #{index} failed to match:#{failure_message}"
94
- )
95
- end
96
-
97
- def add_new_line_if_needed(message)
98
- message.start_with?("\n") ? message : "\n#{message}"
99
- end
100
- end
101
- end
102
- end
103
-
104
- module RSpec
105
- module Matchers
106
- # Passes if the provided matcher passes when checked against any
107
- # element of the collection.
108
- #
109
- # @example
110
- # expect([1, 4, 5]).to include_an_object be_odd
111
- #
112
- # @note You can also use this with compound matchers as well.
113
- #
114
- # @example
115
- # expect([1, 4, 'a']).to include_an_object( be_odd.and be_an(Integer) )
116
- def include_an_object(expected)
117
- ::Aruba::Matchers::IncludeAnObject.new(expected)
118
- end
119
- end
120
- end
@@ -1 +0,0 @@
1
- Aruba.platform.require_matching_files("../collection/**/*.rb", __FILE__)