aruba 1.1.2 → 2.1.0
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/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__)
|