aruba 1.1.2 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +115 -37
- data/CONTRIBUTING.md +0 -1
- data/README.md +17 -13
- data/lib/aruba/api/commands.rb +0 -2
- data/lib/aruba/api/core.rb +15 -11
- data/lib/aruba/api/filesystem.rb +1 -7
- data/lib/aruba/api/text.rb +0 -12
- data/lib/aruba/console.rb +1 -1
- data/lib/aruba/contracts/enum.rb +1 -0
- data/lib/aruba/cucumber/command.rb +175 -119
- data/lib/aruba/cucumber/file.rb +2 -2
- data/lib/aruba/cucumber/parameter_types.rb +1 -0
- data/lib/aruba/cucumber.rb +1 -0
- data/lib/aruba/event_bus/name_resolver.rb +1 -1
- data/lib/aruba/matchers/command/be_successfully_executed.rb +0 -2
- data/lib/aruba/matchers/command/have_exit_status.rb +7 -13
- data/lib/aruba/matchers/command/have_finished_in_time.rb +0 -2
- data/lib/aruba/matchers/directory/be_an_existing_directory.rb +0 -2
- data/lib/aruba/matchers/directory/have_sub_directory.rb +0 -2
- data/lib/aruba/matchers/file/be_a_command_found_in_path.rb +0 -2
- data/lib/aruba/matchers/file/be_an_existing_executable.rb +0 -1
- data/lib/aruba/matchers/file/be_an_existing_file.rb +0 -2
- data/lib/aruba/matchers/file/have_file_content.rb +0 -2
- data/lib/aruba/matchers/file/have_file_size.rb +0 -2
- data/lib/aruba/matchers/file/have_same_file_content.rb +0 -1
- data/lib/aruba/matchers/path/a_path_matching_pattern.rb +0 -2
- data/lib/aruba/matchers/path/be_an_absolute_path.rb +0 -2
- data/lib/aruba/matchers/path/be_an_existing_path.rb +0 -2
- data/lib/aruba/matchers/path/have_permissions.rb +0 -2
- data/lib/aruba/platform.rb +2 -2
- data/lib/aruba/platforms/announcer.rb +0 -2
- data/lib/aruba/platforms/command_monitor.rb +2 -2
- data/lib/aruba/platforms/unix_environment_variables.rb +0 -2
- data/lib/aruba/platforms/unix_platform.rb +3 -2
- data/lib/aruba/platforms/windows_environment_variables.rb +1 -1
- data/lib/aruba/platforms/windows_platform.rb +1 -3
- data/lib/aruba/platforms/windows_which.rb +1 -1
- data/lib/aruba/processes/basic_process.rb +4 -0
- data/lib/aruba/version.rb +1 -1
- metadata +44 -22
- data/lib/aruba/matchers/base/base_matcher.rb +0 -87
- data/lib/aruba/matchers/base/object_formatter.rb +0 -104
- data/lib/aruba/matchers/collection/all.rb +0 -11
- data/lib/aruba/matchers/collection/include_an_object.rb +0 -120
- 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
|
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
|
32
|
+
def empty?
|
33
33
|
true
|
34
34
|
end
|
35
35
|
|
@@ -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
|
-
!
|
35
|
+
!Gem.win_platform?
|
35
36
|
end
|
36
37
|
|
37
38
|
def environment_variables
|
@@ -99,7 +100,7 @@ module Aruba
|
|
99
100
|
end
|
100
101
|
|
101
102
|
def require_matching_files(pattern, base)
|
102
|
-
::Dir.glob(::File.expand_path(pattern, base)).each { |f| require_relative f }
|
103
|
+
::Dir.glob(::File.expand_path(pattern, base)).sort.each { |f| require_relative f }
|
103
104
|
end
|
104
105
|
|
105
106
|
# Create directory and subdirectories
|
@@ -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
|
-
|
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
|
|
data/lib/aruba/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aruba
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.1.0
|
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:
|
11
|
+
date: 2022-05-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -76,20 +76,20 @@ dependencies:
|
|
76
76
|
requirements:
|
77
77
|
- - ">="
|
78
78
|
- !ruby/object:Gem::Version
|
79
|
-
version: '
|
79
|
+
version: '4.0'
|
80
80
|
- - "<"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
82
|
+
version: '9.0'
|
83
83
|
type: :runtime
|
84
84
|
prerelease: false
|
85
85
|
version_requirements: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
89
|
+
version: '4.0'
|
90
90
|
- - "<"
|
91
91
|
- !ruby/object:Gem::Version
|
92
|
-
version: '
|
92
|
+
version: '9.0'
|
93
93
|
- !ruby/object:Gem::Dependency
|
94
94
|
name: rspec-expectations
|
95
95
|
requirement: !ruby/object:Gem::Requirement
|
@@ -174,6 +174,26 @@ dependencies:
|
|
174
174
|
- - "~>"
|
175
175
|
- !ruby/object:Gem::Version
|
176
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
|
177
197
|
- !ruby/object:Gem::Dependency
|
178
198
|
name: pry-doc
|
179
199
|
requirement: !ruby/object:Gem::Requirement
|
@@ -228,28 +248,34 @@ dependencies:
|
|
228
248
|
requirements:
|
229
249
|
- - "~>"
|
230
250
|
- !ruby/object:Gem::Version
|
231
|
-
version: 3.
|
251
|
+
version: '3.11'
|
232
252
|
type: :development
|
233
253
|
prerelease: false
|
234
254
|
version_requirements: !ruby/object:Gem::Requirement
|
235
255
|
requirements:
|
236
256
|
- - "~>"
|
237
257
|
- !ruby/object:Gem::Version
|
238
|
-
version: 3.
|
258
|
+
version: '3.11'
|
239
259
|
- !ruby/object:Gem::Dependency
|
240
260
|
name: rubocop
|
241
261
|
requirement: !ruby/object:Gem::Requirement
|
242
262
|
requirements:
|
243
263
|
- - "~>"
|
244
264
|
- !ruby/object:Gem::Version
|
245
|
-
version: 1.
|
265
|
+
version: '1.28'
|
266
|
+
- - "!="
|
267
|
+
- !ruby/object:Gem::Version
|
268
|
+
version: 1.29.0
|
246
269
|
type: :development
|
247
270
|
prerelease: false
|
248
271
|
version_requirements: !ruby/object:Gem::Requirement
|
249
272
|
requirements:
|
250
273
|
- - "~>"
|
251
274
|
- !ruby/object:Gem::Version
|
252
|
-
version: 1.
|
275
|
+
version: '1.28'
|
276
|
+
- - "!="
|
277
|
+
- !ruby/object:Gem::Version
|
278
|
+
version: 1.29.0
|
253
279
|
- !ruby/object:Gem::Dependency
|
254
280
|
name: rubocop-packaging
|
255
281
|
requirement: !ruby/object:Gem::Requirement
|
@@ -270,28 +296,28 @@ dependencies:
|
|
270
296
|
requirements:
|
271
297
|
- - "~>"
|
272
298
|
- !ruby/object:Gem::Version
|
273
|
-
version: 1.
|
299
|
+
version: '1.13'
|
274
300
|
type: :development
|
275
301
|
prerelease: false
|
276
302
|
version_requirements: !ruby/object:Gem::Requirement
|
277
303
|
requirements:
|
278
304
|
- - "~>"
|
279
305
|
- !ruby/object:Gem::Version
|
280
|
-
version: 1.
|
306
|
+
version: '1.13'
|
281
307
|
- !ruby/object:Gem::Dependency
|
282
308
|
name: rubocop-rspec
|
283
309
|
requirement: !ruby/object:Gem::Requirement
|
284
310
|
requirements:
|
285
311
|
- - "~>"
|
286
312
|
- !ruby/object:Gem::Version
|
287
|
-
version: 2.
|
313
|
+
version: '2.8'
|
288
314
|
type: :development
|
289
315
|
prerelease: false
|
290
316
|
version_requirements: !ruby/object:Gem::Requirement
|
291
317
|
requirements:
|
292
318
|
- - "~>"
|
293
319
|
- !ruby/object:Gem::Version
|
294
|
-
version: 2.
|
320
|
+
version: '2.8'
|
295
321
|
- !ruby/object:Gem::Dependency
|
296
322
|
name: simplecov
|
297
323
|
requirement: !ruby/object:Gem::Requirement
|
@@ -372,6 +398,7 @@ files:
|
|
372
398
|
- lib/aruba/cucumber/environment.rb
|
373
399
|
- lib/aruba/cucumber/file.rb
|
374
400
|
- lib/aruba/cucumber/hooks.rb
|
401
|
+
- lib/aruba/cucumber/parameter_types.rb
|
375
402
|
- lib/aruba/cucumber/testing_frameworks.rb
|
376
403
|
- lib/aruba/errors.rb
|
377
404
|
- lib/aruba/event_bus.rb
|
@@ -382,12 +409,7 @@ files:
|
|
382
409
|
- lib/aruba/hooks.rb
|
383
410
|
- lib/aruba/in_config_wrapper.rb
|
384
411
|
- lib/aruba/initializer.rb
|
385
|
-
- lib/aruba/matchers/base/base_matcher.rb
|
386
412
|
- lib/aruba/matchers/base/message_indenter.rb
|
387
|
-
- lib/aruba/matchers/base/object_formatter.rb
|
388
|
-
- lib/aruba/matchers/collection.rb
|
389
|
-
- lib/aruba/matchers/collection/all.rb
|
390
|
-
- lib/aruba/matchers/collection/include_an_object.rb
|
391
413
|
- lib/aruba/matchers/command.rb
|
392
414
|
- lib/aruba/matchers/command/be_successfully_executed.rb
|
393
415
|
- lib/aruba/matchers/command/have_exit_status.rb
|
@@ -464,15 +486,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
464
486
|
requirements:
|
465
487
|
- - ">="
|
466
488
|
- !ruby/object:Gem::Version
|
467
|
-
version: '2.
|
489
|
+
version: '2.5'
|
468
490
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
469
491
|
requirements:
|
470
492
|
- - ">="
|
471
493
|
- !ruby/object:Gem::Version
|
472
494
|
version: '0'
|
473
495
|
requirements: []
|
474
|
-
rubygems_version: 3.
|
496
|
+
rubygems_version: 3.3.7
|
475
497
|
signing_key:
|
476
498
|
specification_version: 4
|
477
|
-
summary: aruba-
|
499
|
+
summary: aruba-2.1.0
|
478
500
|
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,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__)
|