aruba 2.1.0 → 2.2.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 +23 -2
- data/README.md +3 -3
- data/lib/aruba/api/core.rb +4 -4
- data/lib/aruba/api/filesystem.rb +1 -5
- data/lib/aruba/cucumber/command.rb +1 -1
- data/lib/aruba/event_bus/name_resolver.rb +1 -1
- data/lib/aruba/matchers/file/be_a_command_found_in_path.rb +5 -5
- data/lib/aruba/platforms/simple_table.rb +1 -1
- data/lib/aruba/platforms/unix_platform.rb +4 -0
- data/lib/aruba/platforms/windows_command_string.rb +1 -18
- data/lib/aruba/platforms/windows_platform.rb +4 -0
- data/lib/aruba/processes/basic_process.rb +1 -1
- data/lib/aruba/processes/spawn_process.rb +94 -23
- data/lib/aruba/version.rb +1 -1
- metadata +11 -59
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5ecd6da4e86f63a073bffd882d13902780ca69946de8867aa81cba5a8c6ad118
|
4
|
+
data.tar.gz: f588ff00344ee379a877dbbed442d411769516d8f2f53a164b6a219660e0c38a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d35cd2c9c3d89085f0a04ad2bf2e7b8b83b1cd10cebb87ed39111d0d3feb39b18ad905c5a02e9773881687574abc4b57c5c1d281d7432b746b8f685bd6862f7a
|
7
|
+
data.tar.gz: cd8bbb1369f18078e3d27a56fb43bef2fc3d25c9b17d81921d30ad759d4c8b16ac5c3a49e7e26e5d19a041df7fcb67da6e978b3c2f79198e22f05b585caa90db
|
data/CHANGELOG.md
CHANGED
@@ -6,6 +6,17 @@ This project adheres to [Semantic Versioning][1].
|
|
6
6
|
|
7
7
|
This document is formatted according to the principles of [Keep A CHANGELOG][2].
|
8
8
|
|
9
|
+
## [2.2.0] / 2023-09-02
|
10
|
+
|
11
|
+
* Drop support for Ruby 2.5 ([#836] by [mvz])
|
12
|
+
* Add support for JRuby 9.4 ([#882] by [mvz])
|
13
|
+
* Support CRuby 3.2 ([#883] by [mvz])
|
14
|
+
* Improve `be_a_command_found_in_path matcher` and its tests ([#895] by [mvz])
|
15
|
+
* Replace ChildProcess with Process.spawn ([#891] and [#892] by [mvz])
|
16
|
+
* Support Cucumber version 9.0 ([#904] by [mvz])
|
17
|
+
* Drop support for Cucumber 4 through 7 ([#906] by [mvz])
|
18
|
+
* Drop support for Ruby 2.6 ([#907] by [mvz])
|
19
|
+
|
9
20
|
## [2.1.0] / 2022-05-20
|
10
21
|
|
11
22
|
* Support Cucumber 8 ([#870] by [mvz] with [dependabot])
|
@@ -1017,17 +1028,26 @@ Note: These are changes w.r.t. Aruba version 0.14.1.
|
|
1017
1028
|
[scottj97]: https://github.com/scottj97
|
1018
1029
|
[stamhankar999]: https://github.com/stamhankar999
|
1019
1030
|
[taylor]: https://github.com/taylor
|
1020
|
-
[utkarsh2102]: https://github.com/utkarsh2102
|
1021
1031
|
[tdreyno]: https://github.com/tdreyno
|
1032
|
+
[utkarsh2102]: https://github.com/utkarsh2102
|
1022
1033
|
[xtrasimplicity]: https://github.com/xtrasimplicity
|
1023
1034
|
[y-higuchi]: https://github.com/y-higuchi
|
1024
1035
|
|
1025
1036
|
<!-- bots -->
|
1026
1037
|
|
1038
|
+
[renovate]: https://github.com/apps/renovate
|
1027
1039
|
[dependabot]: https://github.com/apps/dependabot
|
1028
1040
|
|
1029
1041
|
<!-- issues & pull requests -->
|
1030
1042
|
|
1043
|
+
[#904]: https://github.com/cucumber/aruba/pull/904
|
1044
|
+
[#895]: https://github.com/cucumber/aruba/pull/895
|
1045
|
+
[#892]: https://github.com/cucumber/aruba/pull/892
|
1046
|
+
[#891]: https://github.com/cucumber/aruba/pull/891
|
1047
|
+
[#883]: https://github.com/cucumber/aruba/pull/883
|
1048
|
+
[#882]: https://github.com/cucumber/aruba/pull/882
|
1049
|
+
[#836]: https://github.com/cucumber/aruba/pull/836
|
1050
|
+
|
1031
1051
|
[#870]: https://github.com/cucumber/aruba/pull/870
|
1032
1052
|
[#867]: https://github.com/cucumber/aruba/pull/867
|
1033
1053
|
[#858]: https://github.com/cucumber/aruba/pull/858
|
@@ -1337,7 +1357,8 @@ Note: These are changes w.r.t. Aruba version 0.14.1.
|
|
1337
1357
|
|
1338
1358
|
<!-- Releases -->
|
1339
1359
|
|
1340
|
-
[Unreleased]: https://github.com/cucumber/aruba/compare/v2.
|
1360
|
+
[Unreleased]: https://github.com/cucumber/aruba/compare/v2.2.0...main
|
1361
|
+
[2.2.0]: https://github.com/cucumber/aruba/compare/v2.1.0...v2.2.0
|
1341
1362
|
[2.1.0]: https://github.com/cucumber/aruba/compare/v2.0.1...v2.1.0
|
1342
1363
|
[2.0.1]: https://github.com/cucumber/aruba/compare/v2.0.0...v2.0.1
|
1343
1364
|
[2.0.0]: https://github.com/cucumber/aruba/compare/v1.1.2...v2.0.0
|
data/README.md
CHANGED
@@ -77,12 +77,12 @@ bump.
|
|
77
77
|
|
78
78
|
## Supported Ruby versions
|
79
79
|
|
80
|
-
Aruba is supported on Ruby 2.
|
81
|
-
3.
|
80
|
+
Aruba is supported on Ruby 2.7 and up, and tested against CRuby 2.7, 3.0,
|
81
|
+
3.1 and 3.2, and JRuby 9.4.
|
82
82
|
|
83
83
|
## Supported Cucumber versions
|
84
84
|
|
85
|
-
Aruba is supported on and tested with Cucumber versions
|
85
|
+
Aruba is supported on and tested with Cucumber versions 8 and 9.
|
86
86
|
|
87
87
|
## Supported operating systems
|
88
88
|
|
data/lib/aruba/api/core.rb
CHANGED
@@ -144,7 +144,7 @@ module Aruba
|
|
144
144
|
def expand_path(file_name, dir_string = nil)
|
145
145
|
unless file_name.is_a?(String) && !file_name.empty?
|
146
146
|
message = "Filename #{file_name} needs to be a string." \
|
147
|
-
" It cannot be nil or empty either."\
|
147
|
+
" It cannot be nil or empty either." \
|
148
148
|
" Please use `expand_path('.')` if you want" \
|
149
149
|
" the current directory to be expanded."
|
150
150
|
|
@@ -160,7 +160,7 @@ module Aruba
|
|
160
160
|
prefix = file_name[0]
|
161
161
|
|
162
162
|
if prefix == aruba.config.fixtures_path_prefix
|
163
|
-
rest = file_name[2
|
163
|
+
rest = file_name[2..]
|
164
164
|
path = File.join(*[aruba.fixtures_directory, rest].compact)
|
165
165
|
unless Aruba.platform.exist? path
|
166
166
|
aruba_fixture_candidates = aruba.config.fixtures_directories
|
@@ -195,8 +195,8 @@ module Aruba
|
|
195
195
|
"Aruba's `expand_path` method was called with an absolute path" \
|
196
196
|
" at #{caller_file_line}, which is not recommended." \
|
197
197
|
" The path passed was '#{file_name}'." \
|
198
|
-
" Change the call to pass a relative path or set
|
199
|
-
"`config.allow_absolute_paths = true` to silence this warning"
|
198
|
+
" Change the call to pass a relative path or set" \
|
199
|
+
" `config.allow_absolute_paths = true` to silence this warning"
|
200
200
|
raise UserError, message
|
201
201
|
end
|
202
202
|
file_name
|
data/lib/aruba/api/filesystem.rb
CHANGED
@@ -302,11 +302,7 @@ module Aruba
|
|
302
302
|
end
|
303
303
|
|
304
304
|
mode = args.shift
|
305
|
-
mode = if mode.is_a? String
|
306
|
-
mode.to_i(8)
|
307
|
-
else
|
308
|
-
mode
|
309
|
-
end
|
305
|
+
mode = mode.to_i(8) if mode.is_a? String
|
310
306
|
|
311
307
|
args.each { |path| raise "Expected #{path} to be present" unless exist?(path) }
|
312
308
|
paths = args.map { |path| expand_path(path) }
|
@@ -10,7 +10,7 @@ module Aruba
|
|
10
10
|
# Helpers for Resolvers
|
11
11
|
module ResolveHelpers
|
12
12
|
def camel_case(underscored_name)
|
13
|
-
underscored_name.to_s.split("_").map { |word| word.upcase[0] + word[1
|
13
|
+
underscored_name.to_s.split("_").map { |word| word.upcase[0] + word[1..] }.join
|
14
14
|
end
|
15
15
|
|
16
16
|
# Thanks ActiveSupport
|
@@ -15,17 +15,17 @@
|
|
15
15
|
# end
|
16
16
|
RSpec::Matchers.define :be_a_command_found_in_path do
|
17
17
|
match do |actual|
|
18
|
-
|
19
|
-
|
20
|
-
!which(@actual).nil?
|
18
|
+
!which(actual).nil?
|
21
19
|
end
|
22
20
|
|
23
21
|
failure_message do |actual|
|
24
|
-
format(%(expected that command "%s" can be found in PATH "
|
22
|
+
format(%(expected that command "%s" can be found in PATH "%s".),
|
23
|
+
actual, aruba.environment["PATH"])
|
25
24
|
end
|
26
25
|
|
27
26
|
failure_message_when_negated do |actual|
|
28
|
-
format(%(expected that command "%s" cannot be found in PATH "
|
27
|
+
format(%(expected that command "%s" cannot be found in PATH "%s".),
|
28
|
+
actual, aruba.environment["PATH"])
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
@@ -4,8 +4,6 @@ module Aruba
|
|
4
4
|
module Platforms
|
5
5
|
# This is a command which should be run
|
6
6
|
#
|
7
|
-
# This adds `cmd.exec` in front of commmand
|
8
|
-
#
|
9
7
|
# @private
|
10
8
|
class WindowsCommandString
|
11
9
|
def initialize(command, *arguments)
|
@@ -15,22 +13,7 @@ module Aruba
|
|
15
13
|
|
16
14
|
# Convert to array
|
17
15
|
def to_a
|
18
|
-
[
|
19
|
-
end
|
20
|
-
|
21
|
-
private
|
22
|
-
|
23
|
-
def escaped_arguments
|
24
|
-
@arguments.map { |arg| arg.gsub(/"/, '"""') }
|
25
|
-
.map { |arg| / /.match?(arg) ? "\"#{arg}\"" : arg }
|
26
|
-
end
|
27
|
-
|
28
|
-
def escaped_command
|
29
|
-
@command.gsub(/ /, '""" """')
|
30
|
-
end
|
31
|
-
|
32
|
-
def cmd_path
|
33
|
-
Aruba.platform.which("cmd.exe")
|
16
|
+
[@command, *@arguments]
|
34
17
|
end
|
35
18
|
end
|
36
19
|
end
|
@@ -1,4 +1,3 @@
|
|
1
|
-
require "childprocess"
|
2
1
|
require "tempfile"
|
3
2
|
require "shellwords"
|
4
3
|
|
@@ -10,6 +9,85 @@ require "aruba/platform"
|
|
10
9
|
module Aruba
|
11
10
|
# Platforms
|
12
11
|
module Processes
|
12
|
+
# Wrapper around Process.spawn that broadly follows the ChildProcess interface
|
13
|
+
# @private
|
14
|
+
class ProcessRunner
|
15
|
+
def initialize(command_array)
|
16
|
+
@command_array = command_array
|
17
|
+
@exit_status = nil
|
18
|
+
end
|
19
|
+
|
20
|
+
attr_accessor :stdout, :stderr, :cwd, :environment
|
21
|
+
attr_reader :command_array, :pid
|
22
|
+
|
23
|
+
def start
|
24
|
+
@stdin_r, @stdin_w = IO.pipe
|
25
|
+
@pid = Process.spawn(environment, *command_array,
|
26
|
+
unsetenv_others: true,
|
27
|
+
in: @stdin_r,
|
28
|
+
out: stdout.fileno,
|
29
|
+
err: stderr.fileno,
|
30
|
+
close_others: true,
|
31
|
+
chdir: cwd)
|
32
|
+
end
|
33
|
+
|
34
|
+
def stdin
|
35
|
+
@stdin_w
|
36
|
+
end
|
37
|
+
|
38
|
+
def stop
|
39
|
+
return if @exit_status
|
40
|
+
|
41
|
+
if Aruba.platform.term_signal_supported?
|
42
|
+
send_signal "TERM"
|
43
|
+
return if poll_for_exit(3)
|
44
|
+
end
|
45
|
+
|
46
|
+
send_signal "KILL"
|
47
|
+
wait
|
48
|
+
end
|
49
|
+
|
50
|
+
def wait
|
51
|
+
_, status = Process.waitpid2 @pid
|
52
|
+
@exit_status = status
|
53
|
+
end
|
54
|
+
|
55
|
+
def exited?
|
56
|
+
return true if @exit_status
|
57
|
+
|
58
|
+
pid, status = Process.waitpid2 @pid, Process::WNOHANG | Process::WUNTRACED
|
59
|
+
|
60
|
+
if pid
|
61
|
+
@exit_status = status
|
62
|
+
return true
|
63
|
+
end
|
64
|
+
|
65
|
+
false
|
66
|
+
end
|
67
|
+
|
68
|
+
def poll_for_exit(exit_timeout)
|
69
|
+
start = Time.now
|
70
|
+
wait_until = start + exit_timeout
|
71
|
+
loop do
|
72
|
+
return true if exited?
|
73
|
+
break if Time.now >= wait_until
|
74
|
+
|
75
|
+
sleep 0.1
|
76
|
+
end
|
77
|
+
false
|
78
|
+
end
|
79
|
+
|
80
|
+
def exit_code
|
81
|
+
@exit_status&.exitstatus
|
82
|
+
end
|
83
|
+
|
84
|
+
private
|
85
|
+
|
86
|
+
def send_signal(signal)
|
87
|
+
Process.kill signal, @pid
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
13
91
|
# Spawn a process for command
|
14
92
|
#
|
15
93
|
# `SpawnProcess` is not meant for direct use - `SpawnProcess.new` - by
|
@@ -74,7 +152,8 @@ module Aruba
|
|
74
152
|
|
75
153
|
@started = true
|
76
154
|
|
77
|
-
@process =
|
155
|
+
@process = ProcessRunner.new(command_string.to_a)
|
156
|
+
|
78
157
|
@stdout_file = Tempfile.new("aruba-stdout-")
|
79
158
|
@stderr_file = Tempfile.new("aruba-stderr-")
|
80
159
|
|
@@ -85,23 +164,19 @@ module Aruba
|
|
85
164
|
@stderr_file.set_encoding("ASCII-8BIT")
|
86
165
|
|
87
166
|
@exit_status = nil
|
88
|
-
@duplex = true
|
89
167
|
|
90
168
|
before_run
|
91
169
|
|
92
|
-
@process.
|
93
|
-
@process.
|
94
|
-
@process.
|
95
|
-
@process.cwd = @working_directory
|
170
|
+
@process.stdout = @stdout_file
|
171
|
+
@process.stderr = @stderr_file
|
172
|
+
@process.cwd = @working_directory
|
96
173
|
|
97
|
-
@process.environment
|
174
|
+
@process.environment = environment
|
98
175
|
|
99
176
|
begin
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
end
|
104
|
-
rescue ChildProcess::LaunchError => e
|
177
|
+
@process.start
|
178
|
+
sleep startup_wait_time
|
179
|
+
rescue SystemCallError => e
|
105
180
|
raise LaunchError, "It tried to start #{commandline}. " + e.message
|
106
181
|
end
|
107
182
|
|
@@ -131,7 +206,7 @@ module Aruba
|
|
131
206
|
return @stdout_cache if stopped?
|
132
207
|
|
133
208
|
wait_for_io opts.fetch(:wait_for_io, io_wait_timeout) do
|
134
|
-
@process.
|
209
|
+
@process.stdout.flush
|
135
210
|
open(@stdout_file.path).read
|
136
211
|
end
|
137
212
|
end
|
@@ -150,7 +225,7 @@ module Aruba
|
|
150
225
|
return @stderr_cache if stopped?
|
151
226
|
|
152
227
|
wait_for_io opts.fetch(:wait_for_io, io_wait_timeout) do
|
153
|
-
@process.
|
228
|
+
@process.stderr.flush
|
154
229
|
open(@stderr_file.path).read
|
155
230
|
end
|
156
231
|
end
|
@@ -158,8 +233,8 @@ module Aruba
|
|
158
233
|
def write(input)
|
159
234
|
return if stopped?
|
160
235
|
|
161
|
-
@process.
|
162
|
-
@process.
|
236
|
+
@process.stdin.write(input)
|
237
|
+
@process.stdin.flush
|
163
238
|
|
164
239
|
self
|
165
240
|
end
|
@@ -168,18 +243,14 @@ module Aruba
|
|
168
243
|
def close_io(name)
|
169
244
|
return if stopped?
|
170
245
|
|
171
|
-
@process.
|
246
|
+
@process.public_send(name.to_sym).close
|
172
247
|
end
|
173
248
|
|
174
249
|
# Stop command
|
175
250
|
def stop(*)
|
176
251
|
return @exit_status if stopped?
|
177
252
|
|
178
|
-
|
179
|
-
@process.poll_for_exit(@exit_timeout)
|
180
|
-
rescue ChildProcess::TimeoutError
|
181
|
-
@timed_out = true
|
182
|
-
end
|
253
|
+
@process.poll_for_exit(@exit_timeout) or @timed_out = true
|
183
254
|
|
184
255
|
terminate
|
185
256
|
end
|
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: 2.
|
4
|
+
version: 2.2.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: 2023-09-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -30,26 +30,6 @@ dependencies:
|
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: '3.0'
|
33
|
-
- !ruby/object:Gem::Dependency
|
34
|
-
name: childprocess
|
35
|
-
requirement: !ruby/object:Gem::Requirement
|
36
|
-
requirements:
|
37
|
-
- - ">="
|
38
|
-
- !ruby/object:Gem::Version
|
39
|
-
version: '2.0'
|
40
|
-
- - "<"
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
version: '5.0'
|
43
|
-
type: :runtime
|
44
|
-
prerelease: false
|
45
|
-
version_requirements: !ruby/object:Gem::Requirement
|
46
|
-
requirements:
|
47
|
-
- - ">="
|
48
|
-
- !ruby/object:Gem::Version
|
49
|
-
version: '2.0'
|
50
|
-
- - "<"
|
51
|
-
- !ruby/object:Gem::Version
|
52
|
-
version: '5.0'
|
53
33
|
- !ruby/object:Gem::Dependency
|
54
34
|
name: contracts
|
55
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -76,20 +56,20 @@ dependencies:
|
|
76
56
|
requirements:
|
77
57
|
- - ">="
|
78
58
|
- !ruby/object:Gem::Version
|
79
|
-
version: '
|
59
|
+
version: '8.0'
|
80
60
|
- - "<"
|
81
61
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
62
|
+
version: '10.0'
|
83
63
|
type: :runtime
|
84
64
|
prerelease: false
|
85
65
|
version_requirements: !ruby/object:Gem::Requirement
|
86
66
|
requirements:
|
87
67
|
- - ">="
|
88
68
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
69
|
+
version: '8.0'
|
90
70
|
- - "<"
|
91
71
|
- !ruby/object:Gem::Version
|
92
|
-
version: '
|
72
|
+
version: '10.0'
|
93
73
|
- !ruby/object:Gem::Dependency
|
94
74
|
name: rspec-expectations
|
95
75
|
requirement: !ruby/object:Gem::Requirement
|
@@ -194,20 +174,6 @@ dependencies:
|
|
194
174
|
- - "<"
|
195
175
|
- !ruby/object:Gem::Version
|
196
176
|
version: 0.15.0
|
197
|
-
- !ruby/object:Gem::Dependency
|
198
|
-
name: pry-doc
|
199
|
-
requirement: !ruby/object:Gem::Requirement
|
200
|
-
requirements:
|
201
|
-
- - "~>"
|
202
|
-
- !ruby/object:Gem::Version
|
203
|
-
version: '1.0'
|
204
|
-
type: :development
|
205
|
-
prerelease: false
|
206
|
-
version_requirements: !ruby/object:Gem::Requirement
|
207
|
-
requirements:
|
208
|
-
- - "~>"
|
209
|
-
- !ruby/object:Gem::Version
|
210
|
-
version: '1.0'
|
211
177
|
- !ruby/object:Gem::Dependency
|
212
178
|
name: rake
|
213
179
|
requirement: !ruby/object:Gem::Requirement
|
@@ -327,7 +293,7 @@ dependencies:
|
|
327
293
|
version: 0.18.0
|
328
294
|
- - "<"
|
329
295
|
- !ruby/object:Gem::Version
|
330
|
-
version: 0.
|
296
|
+
version: 0.23.0
|
331
297
|
type: :development
|
332
298
|
prerelease: false
|
333
299
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -337,21 +303,7 @@ dependencies:
|
|
337
303
|
version: 0.18.0
|
338
304
|
- - "<"
|
339
305
|
- !ruby/object:Gem::Version
|
340
|
-
version: 0.
|
341
|
-
- !ruby/object:Gem::Dependency
|
342
|
-
name: yard-junk
|
343
|
-
requirement: !ruby/object:Gem::Requirement
|
344
|
-
requirements:
|
345
|
-
- - "~>"
|
346
|
-
- !ruby/object:Gem::Version
|
347
|
-
version: 0.0.7
|
348
|
-
type: :development
|
349
|
-
prerelease: false
|
350
|
-
version_requirements: !ruby/object:Gem::Requirement
|
351
|
-
requirements:
|
352
|
-
- - "~>"
|
353
|
-
- !ruby/object:Gem::Version
|
354
|
-
version: 0.0.7
|
306
|
+
version: 0.23.0
|
355
307
|
description: |
|
356
308
|
Extension for popular TDD and BDD frameworks like "Cucumber", "RSpec" and "Minitest",
|
357
309
|
to make testing command line applications meaningful, easy and fun.
|
@@ -486,15 +438,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
486
438
|
requirements:
|
487
439
|
- - ">="
|
488
440
|
- !ruby/object:Gem::Version
|
489
|
-
version: '2.
|
441
|
+
version: '2.7'
|
490
442
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
491
443
|
requirements:
|
492
444
|
- - ">="
|
493
445
|
- !ruby/object:Gem::Version
|
494
446
|
version: '0'
|
495
447
|
requirements: []
|
496
|
-
rubygems_version: 3.
|
448
|
+
rubygems_version: 3.4.18
|
497
449
|
signing_key:
|
498
450
|
specification_version: 4
|
499
|
-
summary: aruba-2.
|
451
|
+
summary: aruba-2.2.0
|
500
452
|
test_files: []
|