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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +61 -3
- data/CONTRIBUTING.md +9 -2
- data/README.md +21 -18
- data/lib/aruba/api/bundler.rb +1 -0
- 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 +2 -1
- 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 +82 -26
- 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
|
@@ -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,15 +1,35 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aruba
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
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:
|
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: '
|
79
|
+
version: '4.0'
|
60
80
|
- - "<"
|
61
81
|
- !ruby/object:Gem::Version
|
62
|
-
version: '
|
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: '
|
89
|
+
version: '4.0'
|
70
90
|
- - "<"
|
71
91
|
- !ruby/object:Gem::Version
|
72
|
-
version: '
|
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: '
|
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: '
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
490
|
+
rubygems_version: 3.3.7
|
435
491
|
signing_key:
|
436
492
|
specification_version: 4
|
437
|
-
summary: aruba-
|
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,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__)
|