aruba 0.5.3 → 0.5.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/History.md +8 -1
- data/README.md +1 -1
- data/aruba.gemspec +4 -3
- data/features/command_environment_variables.feature +15 -0
- data/features/file_system_commands.feature +26 -0
- data/features/flushing.feature +2 -0
- data/features/interactive.feature +25 -0
- data/lib/aruba.rb +1 -1
- data/lib/aruba/api.rb +75 -24
- data/lib/aruba/cucumber.rb +46 -0
- data/lib/aruba/cucumber/hooks.rb +1 -1
- data/lib/aruba/in_process.rb +1 -1
- data/lib/aruba/matchers/rspec_matcher_include_regexp.rb +5 -0
- data/spec/aruba/api_spec.rb +123 -20
- data/spec/aruba/hooks_spec.rb +2 -2
- data/spec/aruba/jruby_spec.rb +5 -5
- data/spec/aruba/spawn_process_spec.rb +8 -6
- data/spec/spec_helper.rb +7 -0
- metadata +42 -47
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: fb86636b75dbff7127e814b3e4ddc8d0dbfc17aa
|
4
|
+
data.tar.gz: 062abfc4550ad7a49265cc2a1bf1db54f46e1025
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 66422110e4192b2e11fa3cd08f6df00cd862312d9bb2a2cb86fda2b4911ef7d10ee8ab85d2199511cb6b0791fbd8720afedbfd02f23a7c5f8294cd69ae31c792
|
7
|
+
data.tar.gz: 02126e2869de5ba3301f84c61c79afcbc1c60dd48813fec687ba2a930908023038dbbd5256e61cb13d6b19c7406e412323b14710d7edbdc022021bfcb50db0e7
|
data/History.md
CHANGED
@@ -1,4 +1,11 @@
|
|
1
|
-
## [master](https://github.com/cucumber/aruba/compare/v0.5.
|
1
|
+
## [master](https://github.com/cucumber/aruba/compare/v0.5.4...master)
|
2
|
+
|
3
|
+
## [v0.5.4](https://github.com/cucumber/aruba/compare/v0.5.3...v0.5.4)
|
4
|
+
* Added support for piping in files (#154 maxmeyer, dg-vrnetze)
|
5
|
+
* Added cucumber steps for environment variables (#156 dg-vrnetze)
|
6
|
+
* Added support for file mode (#157 maxmeyer, dg-vrnetze)
|
7
|
+
|
8
|
+
## [v0.5.3](https://github.com/cucumber/aruba/compare/v0.5.2...v0.5.3)
|
2
9
|
* Fix for UTF-8 support (#151 Matt Wynne, Jarl Friis)
|
3
10
|
* Fix for open file leakage (#150 @JonRowe)
|
4
11
|
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
[![Build Status](https://secure.travis-ci.org/cucumber/aruba.png)](http://travis-ci.org/cucumber/aruba) [![Code Climate](https://codeclimate.com/
|
1
|
+
[![Build Status](https://secure.travis-ci.org/cucumber/aruba.png)](http://travis-ci.org/cucumber/aruba) [![Code Climate](https://codeclimate.com/github/cucumber/aruba.png)](https://codeclimate.com/github/cucumber/aruba)
|
2
2
|
|
3
3
|
Aruba is Cucumber extension for testing command line applications written in any programming language. Features at a glance:
|
4
4
|
|
data/aruba.gemspec
CHANGED
@@ -2,10 +2,11 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = 'aruba'
|
5
|
-
s.version = '0.5.
|
5
|
+
s.version = '0.5.4'
|
6
6
|
s.authors = ["Aslak Hellesøy", "David Chelimsky", "Mike Sassak", "Matt Wynne"]
|
7
7
|
s.description = 'CLI Steps for Cucumber, hand-crafted for you in Aruba'
|
8
8
|
s.summary = "aruba-#{s.version}"
|
9
|
+
s.license = 'MIT'
|
9
10
|
s.email = 'cukes@googlegroups.com'
|
10
11
|
s.homepage = 'http://github.com/cucumber/aruba'
|
11
12
|
|
@@ -15,7 +16,8 @@ Gem::Specification.new do |s|
|
|
15
16
|
s.add_development_dependency 'bcat', '>= 0.6.1'
|
16
17
|
s.add_development_dependency 'kramdown', '>= 0.14'
|
17
18
|
s.add_development_dependency 'rake', '>= 0.9.2'
|
18
|
-
s.add_development_dependency 'rspec', '>= 2.
|
19
|
+
s.add_development_dependency 'rspec', '>= 2.11.0'
|
20
|
+
s.add_development_dependency 'fuubar', '>= 1.1.1'
|
19
21
|
|
20
22
|
s.rubygems_version = ">= 1.6.1"
|
21
23
|
s.files = `git ls-files`.split("\n")
|
@@ -24,4 +26,3 @@ Gem::Specification.new do |s|
|
|
24
26
|
s.rdoc_options = ["--charset=UTF-8"]
|
25
27
|
s.require_path = "lib"
|
26
28
|
end
|
27
|
-
|
@@ -0,0 +1,15 @@
|
|
1
|
+
Feature: Command environment variables
|
2
|
+
|
3
|
+
In order to test command line applications which make use of environment variables
|
4
|
+
As a developer using Cucumber
|
5
|
+
I want to use the command environment variable step
|
6
|
+
|
7
|
+
Scenario: Changing the environment
|
8
|
+
Given I set the environment variables to:
|
9
|
+
| variable | value |
|
10
|
+
| LONG_LONG_VARIABLE | long_value |
|
11
|
+
When I run `/usr/bin/env`
|
12
|
+
Then the output should contain:
|
13
|
+
"""
|
14
|
+
long_value
|
15
|
+
"""
|
@@ -89,6 +89,17 @@ Feature: file system commands
|
|
89
89
|
Scenario: Check for absence of a single file
|
90
90
|
Then a file named "lorem/ipsum/dolor" should not exist
|
91
91
|
|
92
|
+
Scenario: Check for absence of a single file using a regex
|
93
|
+
Then a file matching %r<^ipsum> should not exist
|
94
|
+
|
95
|
+
Scenario: Check for presence of a single file using a regex
|
96
|
+
Given an empty file named "lorem/ipsum/dolor"
|
97
|
+
Then a file matching %r<dolor$> should exist
|
98
|
+
|
99
|
+
Scenario: Check for presence of a single file using a more complicated regex
|
100
|
+
Given an empty file named "lorem/ipsum/dolor"
|
101
|
+
Then a file matching %r<ipsum/dolor> should exist
|
102
|
+
|
92
103
|
Scenario: Check for presence of a subset of directories
|
93
104
|
Given a directory named "foo/bar"
|
94
105
|
Given a directory named "foo/bla"
|
@@ -159,3 +170,18 @@ Feature: file system commands
|
|
159
170
|
Given an empty file named "a/b.txt"
|
160
171
|
Given an empty file named "a/b/c.txt"
|
161
172
|
Given an empty file named "a/b/c/d.txt"
|
173
|
+
|
174
|
+
Scenario: Change mode of empty file
|
175
|
+
Given an empty file named "test.txt" with mode "0666"
|
176
|
+
Then the mode of filesystem object "test.txt" should match "0666"
|
177
|
+
|
178
|
+
Scenario: Change mode of a directory
|
179
|
+
Given a directory named "test.d" with mode "0666"
|
180
|
+
Then the mode of filesystem object "test.d" should match "0666"
|
181
|
+
|
182
|
+
Scenario: Change mode of file
|
183
|
+
Given a file named "test.txt" with mode "0666" and with:
|
184
|
+
"""
|
185
|
+
asdf
|
186
|
+
"""
|
187
|
+
Then the mode of filesystem object "test.txt" should match "0666"
|
data/features/flushing.feature
CHANGED
@@ -11,12 +11,14 @@ Feature: Flushing output
|
|
11
11
|
And the exit status should be 0
|
12
12
|
|
13
13
|
Scenario: Tons of output
|
14
|
+
Given The default aruba timeout is 10 seconds
|
14
15
|
When I run `bash -c 'for ((c=0; c<65536; c = c+1)); do echo -n "a"; done'`
|
15
16
|
Then the output should contain "a"
|
16
17
|
And the output should be 65536 bytes long
|
17
18
|
And the exit status should be 0
|
18
19
|
|
19
20
|
Scenario: Tons of interactive output
|
21
|
+
Given The default aruba timeout is 10 seconds
|
20
22
|
When I run `bash -c 'read size; for ((c=0; c<$size; c = c+1)); do echo -n "a"; done'` interactively
|
21
23
|
And I type "65536"
|
22
24
|
Then the output should contain "a"
|
@@ -31,6 +31,31 @@ Feature: Interactive process control
|
|
31
31
|
Hello, world
|
32
32
|
"""
|
33
33
|
|
34
|
+
@posix
|
35
|
+
Scenario: Pipe in a file
|
36
|
+
Given a file named "test.txt" with:
|
37
|
+
"""
|
38
|
+
line1
|
39
|
+
line2
|
40
|
+
"""
|
41
|
+
When I run `cat` interactively
|
42
|
+
And I pipe in the file "test.txt"
|
43
|
+
Then the output should contain:
|
44
|
+
"""
|
45
|
+
line1
|
46
|
+
line2
|
47
|
+
"""
|
48
|
+
|
49
|
+
@posix
|
50
|
+
Scenario: Close stdin stream
|
51
|
+
When I run `cat` interactively
|
52
|
+
And I type "Hello, world"
|
53
|
+
And I close the stdin stream
|
54
|
+
Then the output should contain:
|
55
|
+
"""
|
56
|
+
Hello, world
|
57
|
+
"""
|
58
|
+
|
34
59
|
@posix
|
35
60
|
Scenario: Stop processes before checking for filesystem changes
|
36
61
|
See: http://github.com/aslakhellesoy/aruba/issues#issue/17 for context
|
data/lib/aruba.rb
CHANGED
data/lib/aruba/api.rb
CHANGED
@@ -4,6 +4,8 @@ require 'rspec/expectations'
|
|
4
4
|
require 'aruba'
|
5
5
|
require 'aruba/config'
|
6
6
|
|
7
|
+
Dir.glob( File.join( File.expand_path( '../matchers' , __FILE__ ) , '*.rb' ) ).each { |rb| require rb }
|
8
|
+
|
7
9
|
module Aruba
|
8
10
|
module Api
|
9
11
|
include RSpec::Matchers
|
@@ -13,6 +15,11 @@ module Aruba
|
|
13
15
|
Dir.chdir(current_dir, &block)
|
14
16
|
end
|
15
17
|
|
18
|
+
def clean_current_dir
|
19
|
+
_rm_rf(current_dir)
|
20
|
+
_mkdir(current_dir)
|
21
|
+
end
|
22
|
+
|
16
23
|
def current_dir
|
17
24
|
File.join(*dirs)
|
18
25
|
end
|
@@ -46,6 +53,23 @@ module Aruba
|
|
46
53
|
end
|
47
54
|
end
|
48
55
|
|
56
|
+
def chmod(mode, name)
|
57
|
+
in_current_dir do
|
58
|
+
raise "expected #{name} to be present" unless FileTest.exists?(name)
|
59
|
+
if mode.kind_of? String
|
60
|
+
FileUtils.chmod(mode.to_i(8),name)
|
61
|
+
else
|
62
|
+
FileUtils.chmod(mode,name)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def mod?(mode, name)
|
68
|
+
in_current_dir do
|
69
|
+
mode == sprintf( "%o", File::Stat.new(name).mode )[-4,4].to_i(8)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
49
73
|
def _create_fixed_size_file(file_name, file_size, check_presence)
|
50
74
|
in_current_dir do
|
51
75
|
raise "expected #{file_name} to be present" if check_presence && !File.file?(file_name)
|
@@ -82,25 +106,41 @@ module Aruba
|
|
82
106
|
def check_file_presence(paths, expect_presence)
|
83
107
|
prep_for_fs_check do
|
84
108
|
paths.each do |path|
|
85
|
-
if
|
86
|
-
|
109
|
+
if path.kind_of? Regexp
|
110
|
+
if expect_presence
|
111
|
+
expect(Dir.glob('**/*')).to include_regexp(path)
|
112
|
+
else
|
113
|
+
expect(Dir.glob('**/*')).not_to include_regexp(path)
|
114
|
+
end
|
87
115
|
else
|
88
|
-
|
116
|
+
if expect_presence
|
117
|
+
expect(File).to be_file(path)
|
118
|
+
else
|
119
|
+
expect(File).not_to be_file(path)
|
120
|
+
end
|
89
121
|
end
|
90
122
|
end
|
91
123
|
end
|
92
124
|
end
|
93
125
|
|
126
|
+
def pipe_in_file(file)
|
127
|
+
in_current_dir do
|
128
|
+
File.open(file, 'r').each_line do |line|
|
129
|
+
_write_interactive(line)
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
94
134
|
def check_file_size(paths_and_sizes)
|
95
135
|
prep_for_fs_check do
|
96
136
|
paths_and_sizes.each do |path, size|
|
97
|
-
File.size(path).
|
137
|
+
expect(File.size(path)).to eq size
|
98
138
|
end
|
99
139
|
end
|
100
140
|
end
|
101
141
|
|
102
142
|
def with_file_content(file, &block)
|
103
|
-
prep_for_fs_check do
|
143
|
+
prep_for_fs_check do
|
104
144
|
content = IO.read(file)
|
105
145
|
yield(content)
|
106
146
|
end
|
@@ -108,27 +148,27 @@ module Aruba
|
|
108
148
|
|
109
149
|
def check_file_content(file, partial_content, expect_match)
|
110
150
|
regexp = regexp(partial_content)
|
111
|
-
prep_for_fs_check do
|
151
|
+
prep_for_fs_check do
|
112
152
|
content = IO.read(file)
|
113
153
|
if expect_match
|
114
|
-
content.
|
154
|
+
expect(content).to match regexp
|
115
155
|
else
|
116
|
-
content.
|
156
|
+
expect(content).not_to match regexp
|
117
157
|
end
|
118
158
|
end
|
119
159
|
end
|
120
160
|
|
121
161
|
def check_exact_file_content(file, exact_content)
|
122
|
-
prep_for_fs_check { IO.read(file).
|
162
|
+
prep_for_fs_check { expect(IO.read(file)).to eq exact_content }
|
123
163
|
end
|
124
164
|
|
125
165
|
def check_directory_presence(paths, expect_presence)
|
126
166
|
prep_for_fs_check do
|
127
167
|
paths.each do |path|
|
128
168
|
if expect_presence
|
129
|
-
File.
|
169
|
+
expect(File).to be_directory(path)
|
130
170
|
else
|
131
|
-
File.
|
171
|
+
expect(File).not_to be_directory(path)
|
132
172
|
end
|
133
173
|
end
|
134
174
|
end
|
@@ -143,6 +183,10 @@ module Aruba
|
|
143
183
|
FileUtils.mkdir_p(dir_name) unless File.directory?(dir_name)
|
144
184
|
end
|
145
185
|
|
186
|
+
def _rm_rf(dir_name)
|
187
|
+
FileUtils.rm_rf(dir_name)
|
188
|
+
end
|
189
|
+
|
146
190
|
def unescape(string)
|
147
191
|
string = string.gsub('\n', "\n").gsub('\"', '"').gsub('\e', "\e")
|
148
192
|
string = string.gsub(/\e\[\d+(?>(;\d+)*)m/, '') unless @aruba_keep_ansi
|
@@ -184,30 +228,30 @@ module Aruba
|
|
184
228
|
|
185
229
|
def assert_exact_output(expected, actual)
|
186
230
|
actual.force_encoding(expected.encoding) if RUBY_VERSION >= "1.9"
|
187
|
-
unescape(actual).
|
231
|
+
expect(unescape(actual)).to eq unescape(expected)
|
188
232
|
end
|
189
233
|
|
190
234
|
def assert_partial_output(expected, actual)
|
191
235
|
actual.force_encoding(expected.encoding) if RUBY_VERSION >= "1.9"
|
192
|
-
unescape(actual).
|
236
|
+
expect(unescape(actual)).to include(unescape(expected))
|
193
237
|
end
|
194
238
|
|
195
239
|
def assert_matching_output(expected, actual)
|
196
240
|
actual.force_encoding(expected.encoding) if RUBY_VERSION >= "1.9"
|
197
|
-
unescape(actual).
|
241
|
+
expect(unescape(actual)).to match /#{unescape(expected)}/m
|
198
242
|
end
|
199
243
|
|
200
244
|
def assert_not_matching_output(expected, actual)
|
201
245
|
actual.force_encoding(expected.encoding) if RUBY_VERSION >= "1.9"
|
202
|
-
unescape(actual).
|
246
|
+
expect(unescape(actual)).not_to match /#{unescape(expected)}/m
|
203
247
|
end
|
204
248
|
|
205
249
|
def assert_no_partial_output(unexpected, actual)
|
206
250
|
actual.force_encoding(unexpected.encoding) if RUBY_VERSION >= "1.9"
|
207
251
|
if Regexp === unexpected
|
208
|
-
unescape(actual).
|
252
|
+
expect(unescape(actual)).not_to match unexpected
|
209
253
|
else
|
210
|
-
unescape(actual).
|
254
|
+
expect(unescape(actual)).not_to include(unexpected)
|
211
255
|
end
|
212
256
|
end
|
213
257
|
|
@@ -243,12 +287,12 @@ module Aruba
|
|
243
287
|
end
|
244
288
|
|
245
289
|
def assert_exit_status(status)
|
246
|
-
last_exit_status.
|
290
|
+
expect(last_exit_status).to eq(status),
|
247
291
|
append_output_to("Exit status was #{last_exit_status} but expected it to be #{status}.")
|
248
292
|
end
|
249
293
|
|
250
294
|
def assert_not_exit_status(status)
|
251
|
-
last_exit_status.
|
295
|
+
expect(last_exit_status).not_to eq(status),
|
252
296
|
append_output_to("Exit status was #{last_exit_status} which was not expected.")
|
253
297
|
end
|
254
298
|
|
@@ -278,7 +322,9 @@ module Aruba
|
|
278
322
|
end
|
279
323
|
|
280
324
|
def get_process(wanted)
|
281
|
-
processes.reverse.find{ |name, _| name == wanted }
|
325
|
+
matching_processes = processes.reverse.find{ |name, _| name == wanted }
|
326
|
+
raise ArgumentError.new("No process named '#{wanted}' has been started") unless matching_processes
|
327
|
+
matching_processes.last
|
282
328
|
end
|
283
329
|
|
284
330
|
def only_processes
|
@@ -331,14 +377,19 @@ module Aruba
|
|
331
377
|
end
|
332
378
|
|
333
379
|
def type(input)
|
334
|
-
return
|
380
|
+
return close_input if "" == input
|
335
381
|
_write_interactive(_ensure_newline(input))
|
336
382
|
end
|
337
383
|
|
338
|
-
def
|
384
|
+
def close_input
|
339
385
|
@interactive.stdin.close
|
340
386
|
end
|
341
387
|
|
388
|
+
def eot
|
389
|
+
warn(%{\e[35m The \"#eot\"-method is deprecated. It will be deleted with the next major version. Please use \"#close_input\"-method instead.\e[0m})
|
390
|
+
close_input
|
391
|
+
end
|
392
|
+
|
342
393
|
def _write_interactive(input)
|
343
394
|
@interactive.stdin.write(input)
|
344
395
|
@interactive.stdin.flush
|
@@ -430,8 +481,8 @@ module Aruba
|
|
430
481
|
end
|
431
482
|
|
432
483
|
def announcer
|
433
|
-
Announcer.new(self,
|
434
|
-
:stdout => @announce_stdout,
|
484
|
+
Announcer.new(self,
|
485
|
+
:stdout => @announce_stdout,
|
435
486
|
:stderr => @announce_stderr,
|
436
487
|
:dir => @announce_dir,
|
437
488
|
:cmd => @announce_cmd,
|
data/lib/aruba/cucumber.rb
CHANGED
@@ -16,10 +16,20 @@ Given /^a directory named "([^"]*)"$/ do |dir_name|
|
|
16
16
|
create_dir(dir_name)
|
17
17
|
end
|
18
18
|
|
19
|
+
Given /^a directory named "([^"]*)" with mode "([^"]*)"$/ do |dir_name, dir_mode|
|
20
|
+
create_dir(dir_name)
|
21
|
+
chmod(dir_mode, dir_name)
|
22
|
+
end
|
23
|
+
|
19
24
|
Given /^a file named "([^"]*)" with:$/ do |file_name, file_content|
|
20
25
|
write_file(file_name, file_content)
|
21
26
|
end
|
22
27
|
|
28
|
+
Given /^a file named "([^"]*)" with mode "([^"]*)" and with:$/ do |file_name, file_mode, file_content|
|
29
|
+
write_file(file_name, file_content)
|
30
|
+
chmod(file_mode, file_name)
|
31
|
+
end
|
32
|
+
|
23
33
|
Given /^a (\d+) byte file named "([^"]*)"$/ do |file_size, file_name|
|
24
34
|
write_fixed_size_file(file_name, file_size.to_i)
|
25
35
|
end
|
@@ -28,6 +38,11 @@ Given /^an empty file named "([^"]*)"$/ do |file_name|
|
|
28
38
|
write_file(file_name, "")
|
29
39
|
end
|
30
40
|
|
41
|
+
Given /^an empty file named "([^"]*)" with mode "([^"]*)"$/ do |file_name, file_mode|
|
42
|
+
write_file(file_name, "")
|
43
|
+
chmod(file_mode, file_name)
|
44
|
+
end
|
45
|
+
|
31
46
|
When /^I write to "([^"]*)" with:$/ do |file_name, file_content|
|
32
47
|
write_file(file_name, file_content)
|
33
48
|
end
|
@@ -52,6 +67,15 @@ When /^I cd to "([^"]*)"$/ do |dir|
|
|
52
67
|
cd(dir)
|
53
68
|
end
|
54
69
|
|
70
|
+
Given /^I set the environment variables to:/ do |table|
|
71
|
+
table.hashes.each do |row|
|
72
|
+
variable = row['variable'].to_s.upcase
|
73
|
+
value = row['value'].to_s
|
74
|
+
|
75
|
+
set_env(variable, value)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
55
79
|
When /^I run "(.*)"$/ do |cmd|
|
56
80
|
warn(%{\e[35m The /^I run "(.*)"$/ step definition is deprecated. Please use the `backticks` version\e[0m})
|
57
81
|
run_simple(unescape(cmd), false)
|
@@ -85,6 +109,16 @@ When /^I type "([^"]*)"$/ do |input|
|
|
85
109
|
type(input)
|
86
110
|
end
|
87
111
|
|
112
|
+
When /^I close the stdin stream$/ do
|
113
|
+
close_input
|
114
|
+
end
|
115
|
+
|
116
|
+
When /^I pipe in the file "([^"]*)"$/ do |file|
|
117
|
+
pipe_in_file(file)
|
118
|
+
|
119
|
+
close_input
|
120
|
+
end
|
121
|
+
|
88
122
|
When /^I wait for (?:output|stdout) to contain "([^"]*)"$/ do |expected|
|
89
123
|
Timeout::timeout(exit_timeout) do
|
90
124
|
loop do
|
@@ -269,6 +303,14 @@ Then /^a file named "([^"]*)" should not exist$/ do |file|
|
|
269
303
|
check_file_presence([file], false)
|
270
304
|
end
|
271
305
|
|
306
|
+
Then /^a file matching %r<(.*?)> should exist$/ do |regex|
|
307
|
+
check_file_presence([ Regexp.new( regex ) ], true )
|
308
|
+
end
|
309
|
+
|
310
|
+
Then /^a file matching %r<(.*?)> should not exist$/ do |regex|
|
311
|
+
check_file_presence([ Regexp.new( regex ) ], false )
|
312
|
+
end
|
313
|
+
|
272
314
|
Then /^a (\d+) byte file named "([^"]*)" should exist$/ do |file_size, file_name|
|
273
315
|
check_file_size([[file_name, file_size.to_i]])
|
274
316
|
end
|
@@ -312,3 +354,7 @@ end
|
|
312
354
|
Then /^the file "([^"]*)" should not match \/([^\/]*)\/$/ do |file, partial_content|
|
313
355
|
check_file_content(file, /#{partial_content}/, false)
|
314
356
|
end
|
357
|
+
|
358
|
+
Then /^the mode of filesystem object "([^"]*)" should match "([^"]*)"$/ do |name, mode|
|
359
|
+
mod?(mode, name)
|
360
|
+
end
|
data/lib/aruba/cucumber/hooks.rb
CHANGED
data/lib/aruba/in_process.rb
CHANGED
@@ -30,7 +30,7 @@ module Aruba
|
|
30
30
|
@kernel = FakeKernel.new
|
31
31
|
end
|
32
32
|
|
33
|
-
def run!
|
33
|
+
def run!
|
34
34
|
raise "You need to call Aruba::InProcess.main_class = YourMainClass" unless @@main_class
|
35
35
|
@@main_class.new(@argv, @stdin, @stdout, @stderr, @kernel).execute!
|
36
36
|
yield self if block_given?
|
data/spec/aruba/api_spec.rb
CHANGED
@@ -31,7 +31,22 @@ describe Aruba::Api do
|
|
31
31
|
|
32
32
|
describe 'current_dir' do
|
33
33
|
it "should return the current dir as 'tmp/aruba'" do
|
34
|
-
@aruba.current_dir.
|
34
|
+
expect(@aruba.current_dir).to match(/^tmp\/aruba$/)
|
35
|
+
end
|
36
|
+
|
37
|
+
it "can be cleared" do
|
38
|
+
write_file( 'test', 'test test test' )
|
39
|
+
|
40
|
+
in_current_dir do
|
41
|
+
expect( File.exist? 'test' ).to be_true
|
42
|
+
end
|
43
|
+
|
44
|
+
clean_current_dir
|
45
|
+
|
46
|
+
in_current_dir do
|
47
|
+
expect( File.exist? 'test' ).to be_false
|
48
|
+
end
|
49
|
+
|
35
50
|
end
|
36
51
|
end
|
37
52
|
|
@@ -44,7 +59,7 @@ describe Aruba::Api do
|
|
44
59
|
end
|
45
60
|
it 'should delete directory' do
|
46
61
|
@aruba.remove_dir(@directory_name)
|
47
|
-
File.exist?(@directory_path).
|
62
|
+
expect(File.exist?(@directory_path)).to eq false
|
48
63
|
end
|
49
64
|
end
|
50
65
|
end
|
@@ -53,8 +68,8 @@ describe Aruba::Api do
|
|
53
68
|
context 'fixed size' do
|
54
69
|
it "should write a fixed sized file" do
|
55
70
|
@aruba.write_fixed_size_file(@file_name, @file_size)
|
56
|
-
File.exist?(@file_path).
|
57
|
-
File.size(@file_path).
|
71
|
+
expect(File.exist?(@file_path)).to eq true
|
72
|
+
expect(File.size(@file_path)).to eq @file_size
|
58
73
|
end
|
59
74
|
|
60
75
|
it "should check an existing file size" do
|
@@ -64,15 +79,70 @@ describe Aruba::Api do
|
|
64
79
|
|
65
80
|
it "should check an existing file size and fail" do
|
66
81
|
@aruba.write_fixed_size_file(@file_name, @file_size)
|
67
|
-
|
82
|
+
expect { @aruba.check_file_size([[@file_name, @file_size + 1]]) }.to raise_error
|
68
83
|
end
|
69
84
|
end
|
70
85
|
context 'existing' do
|
71
86
|
before(:each) { File.open(@file_path, 'w') { |f| f << "" } }
|
72
87
|
it "should delete file" do
|
73
88
|
@aruba.remove_file(@file_name)
|
74
|
-
File.exist?(@file_path).
|
89
|
+
expect(File.exist?(@file_path)).to eq false
|
90
|
+
end
|
91
|
+
|
92
|
+
it "should change a file's mode" do
|
93
|
+
@aruba.chmod(0644, @file_name)
|
94
|
+
result = sprintf( "%o" , File::Stat.new(@file_path).mode )[-4,4]
|
95
|
+
expect(result).to eq('0644')
|
96
|
+
|
97
|
+
@aruba.chmod(0655, @file_name)
|
98
|
+
result = sprintf( "%o" , File::Stat.new(@file_path).mode )[-4,4]
|
99
|
+
expect(result).to eq('0655')
|
100
|
+
|
101
|
+
@aruba.chmod("0655", @file_name)
|
102
|
+
result = sprintf( "%o" , File::Stat.new(@file_path).mode )[-4,4]
|
103
|
+
expect(result).to eq('0655')
|
104
|
+
end
|
105
|
+
|
106
|
+
it "should check the mode of a file" do
|
107
|
+
@aruba.chmod(0666, @file_name)
|
108
|
+
expect(@aruba.mod?(0666, @file_name) ).to eq(true)
|
109
|
+
end
|
110
|
+
|
111
|
+
it "should check existence using plain match" do
|
112
|
+
file_name = 'nested/dir/hello_world.txt'
|
113
|
+
file_path = File.join(@aruba.current_dir, file_name)
|
114
|
+
|
115
|
+
FileUtils.mkdir_p File.dirname( file_path )
|
116
|
+
File.open(file_path, 'w') { |f| f << "" }
|
117
|
+
|
118
|
+
@aruba.check_file_presence( [ file_name ], true )
|
119
|
+
@aruba.check_file_presence( [ 'asdf' ] , false )
|
120
|
+
end
|
121
|
+
|
122
|
+
it "should check existence using regex" do
|
123
|
+
file_name = 'nested/dir/hello_world.txt'
|
124
|
+
file_path = File.join(@aruba.current_dir, file_name)
|
125
|
+
|
126
|
+
FileUtils.mkdir_p File.dirname( file_path )
|
127
|
+
File.open(file_path, 'w') { |f| f << "" }
|
128
|
+
|
129
|
+
@aruba.check_file_presence([ /test123/ ], false )
|
130
|
+
@aruba.check_file_presence([ /hello_world.txt$/ ], true )
|
131
|
+
@aruba.check_file_presence([ /dir/ ], true )
|
132
|
+
@aruba.check_file_presence([ %r{nested/.+/} ], true )
|
133
|
+
end
|
134
|
+
|
135
|
+
it "is no problem to mix both" do
|
136
|
+
file_name = 'nested/dir/hello_world.txt'
|
137
|
+
file_path = File.join(@aruba.current_dir, file_name)
|
138
|
+
|
139
|
+
FileUtils.mkdir_p File.dirname( file_path )
|
140
|
+
File.open(file_path, 'w') { |f| f << "" }
|
141
|
+
|
142
|
+
@aruba.check_file_presence([ file_name, /nested/ ], true )
|
143
|
+
@aruba.check_file_presence([ /test123/, 'asdf' ], false )
|
75
144
|
end
|
145
|
+
|
76
146
|
end
|
77
147
|
end
|
78
148
|
|
@@ -81,19 +151,19 @@ describe Aruba::Api do
|
|
81
151
|
after(:each){@aruba.stop_processes!}
|
82
152
|
context 'enabled' do
|
83
153
|
it "should announce to stdout exactly once" do
|
84
|
-
@aruba.
|
154
|
+
expect(@aruba).to receive(:announce_or_puts).once
|
85
155
|
@aruba.set_tag(:announce_stdout, true)
|
86
156
|
@aruba.run_simple('echo "hello world"', false)
|
87
|
-
@aruba.all_output.
|
157
|
+
expect(@aruba.all_output).to match(/hello world/)
|
88
158
|
end
|
89
159
|
end
|
90
160
|
|
91
161
|
context 'disabled' do
|
92
162
|
it "should not announce to stdout" do
|
93
|
-
@aruba.
|
163
|
+
expect(@aruba).not_to receive(:announce_or_puts)
|
94
164
|
@aruba.set_tag(:announce_stdout, false)
|
95
165
|
@aruba.run_simple('echo "hello world"', false)
|
96
|
-
@aruba.all_output.
|
166
|
+
expect(@aruba.all_output).to match(/hello world/)
|
97
167
|
end
|
98
168
|
end
|
99
169
|
end
|
@@ -106,7 +176,7 @@ describe Aruba::Api do
|
|
106
176
|
|
107
177
|
it "checks the given file's full content against the expectations in the passed block" do
|
108
178
|
@aruba.with_file_content @file_name do |full_content|
|
109
|
-
full_content.
|
179
|
+
expect(full_content).to eq "foo bar baz"
|
110
180
|
end
|
111
181
|
end
|
112
182
|
|
@@ -114,17 +184,17 @@ describe Aruba::Api do
|
|
114
184
|
it "is successful when the inner expectations match" do
|
115
185
|
expect do
|
116
186
|
@aruba.with_file_content @file_name do |full_content|
|
117
|
-
full_content.
|
118
|
-
full_content.
|
187
|
+
expect(full_content).to match /foo/
|
188
|
+
expect(full_content).not_to match /zoo/
|
119
189
|
end
|
120
|
-
end . not_to raise_error
|
190
|
+
end . not_to raise_error
|
121
191
|
end
|
122
192
|
|
123
193
|
it "raises RSpec::Expectations::ExpectationNotMetError when the inner expectations don't match" do
|
124
194
|
expect do
|
125
195
|
@aruba.with_file_content @file_name do |full_content|
|
126
|
-
full_content.
|
127
|
-
full_content.
|
196
|
+
expect(full_content).to match /zoo/
|
197
|
+
expect(full_content).not_to match /foo/
|
128
198
|
end
|
129
199
|
end . to raise_error RSpec::Expectations::ExpectationNotMetError
|
130
200
|
end
|
@@ -152,14 +222,47 @@ describe Aruba::Api do
|
|
152
222
|
it "respond to input" do
|
153
223
|
@aruba.type "Hello"
|
154
224
|
@aruba.type ""
|
155
|
-
@aruba.all_output.
|
225
|
+
expect(@aruba.all_output).to eq "Hello\n"
|
156
226
|
end
|
157
227
|
|
158
|
-
it "respond to
|
228
|
+
it "respond to close_input" do
|
159
229
|
@aruba.type "Hello"
|
160
|
-
@aruba.
|
161
|
-
@aruba.all_output.
|
230
|
+
@aruba.close_input
|
231
|
+
expect(@aruba.all_output).to eq "Hello\n"
|
162
232
|
end
|
233
|
+
|
234
|
+
it "pipes data" do
|
235
|
+
@aruba.write_file(@file_name, "Hello\nWorld!")
|
236
|
+
@aruba.pipe_in_file(@file_name)
|
237
|
+
@aruba.close_input
|
238
|
+
expect(@aruba.all_output).to eq "Hello\nWorld!"
|
239
|
+
end
|
240
|
+
end
|
241
|
+
|
242
|
+
describe "#run_simple" do
|
243
|
+
before(:each){@aruba.run_simple "true"}
|
244
|
+
after(:each){@aruba.stop_processes!}
|
245
|
+
describe "get_process" do
|
246
|
+
it "returns a process" do
|
247
|
+
expect(@aruba.get_process("true")).not_to be(nil)
|
248
|
+
end
|
249
|
+
|
250
|
+
it "raises a descriptive exception" do
|
251
|
+
expect do
|
252
|
+
expect(@aruba.get_process("false")).not_to be(nil)
|
253
|
+
end.to raise_error(ArgumentError, "No process named 'false' has been started")
|
254
|
+
end
|
255
|
+
end
|
256
|
+
end
|
257
|
+
|
258
|
+
describe "#run_simple" do
|
259
|
+
after(:each){@aruba.stop_processes!}
|
260
|
+
it "runs with different env" do
|
261
|
+
@aruba.set_env 'LONG_LONG_ENV_VARIABLE', 'true'
|
262
|
+
@aruba.run "env"
|
263
|
+
expect(@aruba.all_output).to include("LONG_LONG_ENV_VARIABLE")
|
264
|
+
end
|
265
|
+
|
163
266
|
end
|
164
267
|
|
165
268
|
end # Aruba::Api
|
data/spec/aruba/hooks_spec.rb
CHANGED
@@ -5,14 +5,14 @@ describe Aruba::Hooks do
|
|
5
5
|
hook_was_run = false
|
6
6
|
subject.append :hook_label, lambda { hook_was_run = true }
|
7
7
|
subject.execute :hook_label, self
|
8
|
-
hook_was_run.
|
8
|
+
expect(hook_was_run).to be_true
|
9
9
|
end
|
10
10
|
|
11
11
|
it 'executes a stored hook that takes multiple arguments' do
|
12
12
|
hook_values = []
|
13
13
|
subject.append :hook_label, lambda { |a,b,c| hook_values = [a,b,c] }
|
14
14
|
subject.execute :hook_label, self, 1, 2, 3
|
15
|
-
hook_values.
|
15
|
+
expect(hook_values).to eq [1,2,3]
|
16
16
|
end
|
17
17
|
|
18
18
|
end
|
data/spec/aruba/jruby_spec.rb
CHANGED
@@ -17,8 +17,8 @@ describe "Aruba JRuby Startup Helper" do
|
|
17
17
|
with_constants :ENV => @fake_env, :RUBY_PLATFORM => 'x86_64-chocolate' do
|
18
18
|
load 'aruba/jruby.rb'
|
19
19
|
Aruba.config.hooks.execute :before_cmd, self
|
20
|
-
ENV['JRUBY_OPTS'].
|
21
|
-
ENV['JAVA_OPTS'].
|
20
|
+
expect(ENV['JRUBY_OPTS']).to eq "--1.9"
|
21
|
+
expect(ENV['JAVA_OPTS']).to eq "-Xdebug"
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
@@ -27,8 +27,8 @@ describe "Aruba JRuby Startup Helper" do
|
|
27
27
|
RbConfig::CONFIG.stub(:[] => 'solaris')
|
28
28
|
load 'aruba/jruby.rb'
|
29
29
|
Aruba.config.hooks.execute :before_cmd, self
|
30
|
-
ENV['JRUBY_OPTS'].
|
31
|
-
ENV['JAVA_OPTS'].
|
32
|
-
end
|
30
|
+
expect(ENV['JRUBY_OPTS']).to eq "-X-C --1.9"
|
31
|
+
expect(ENV['JAVA_OPTS']).to eq "-d32 -Xdebug"
|
32
|
+
end
|
33
33
|
end
|
34
34
|
end
|
@@ -9,12 +9,12 @@ module Aruba
|
|
9
9
|
before { process.run! }
|
10
10
|
|
11
11
|
it "returns the stdout" do
|
12
|
-
process.stdout.
|
12
|
+
expect(process.stdout).to eq "yo\n"
|
13
13
|
end
|
14
14
|
|
15
15
|
it "returns all the stdout, every time you call it" do
|
16
|
-
process.stdout.
|
17
|
-
process.stdout.
|
16
|
+
expect(process.stdout).to eq "yo\n"
|
17
|
+
expect(process.stdout).to eq "yo\n"
|
18
18
|
end
|
19
19
|
|
20
20
|
end
|
@@ -23,8 +23,10 @@ module Aruba
|
|
23
23
|
before { process.run! }
|
24
24
|
|
25
25
|
it "sends any output to the reader" do
|
26
|
-
reader =
|
27
|
-
reader.
|
26
|
+
reader = double( 'null_object' )
|
27
|
+
allow( reader ).to receive( :stderr )
|
28
|
+
expect( reader ).to receive( :stdout ).with("yo\n")
|
29
|
+
|
28
30
|
process.stop(reader)
|
29
31
|
end
|
30
32
|
end
|
@@ -34,7 +36,7 @@ module Aruba
|
|
34
36
|
let(:process_failure) { SpawnProcess.new('does_not_exists', 1, 1) }
|
35
37
|
|
36
38
|
it "raises a Aruba::LaunchError" do
|
37
|
-
|
39
|
+
expect{process_failure.run!}.to raise_error(::Aruba::LaunchError)
|
38
40
|
end
|
39
41
|
end
|
40
42
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -40,4 +40,11 @@ RSpec.configure do |config|
|
|
40
40
|
config.run_all_when_everything_filtered = true
|
41
41
|
config.treat_symbols_as_metadata_keys_with_true_values = true
|
42
42
|
config.include(ManipulatesConstants)
|
43
|
+
config.expect_with :rspec do |c|
|
44
|
+
c.syntax = :expect
|
45
|
+
end
|
46
|
+
|
47
|
+
config.before( :each ) {
|
48
|
+
clean_current_dir
|
49
|
+
}
|
43
50
|
end
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aruba
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
5
|
-
prerelease:
|
4
|
+
version: 0.5.4
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Aslak Hellesøy
|
@@ -12,120 +11,120 @@ authors:
|
|
12
11
|
autorequire:
|
13
12
|
bindir: bin
|
14
13
|
cert_chain: []
|
15
|
-
date:
|
14
|
+
date: 2014-01-10 00:00:00.000000000 Z
|
16
15
|
dependencies:
|
17
16
|
- !ruby/object:Gem::Dependency
|
18
17
|
name: cucumber
|
19
18
|
requirement: !ruby/object:Gem::Requirement
|
20
|
-
none: false
|
21
19
|
requirements:
|
22
|
-
- -
|
20
|
+
- - '>='
|
23
21
|
- !ruby/object:Gem::Version
|
24
22
|
version: 1.1.1
|
25
23
|
type: :runtime
|
26
24
|
prerelease: false
|
27
25
|
version_requirements: !ruby/object:Gem::Requirement
|
28
|
-
none: false
|
29
26
|
requirements:
|
30
|
-
- -
|
27
|
+
- - '>='
|
31
28
|
- !ruby/object:Gem::Version
|
32
29
|
version: 1.1.1
|
33
30
|
- !ruby/object:Gem::Dependency
|
34
31
|
name: childprocess
|
35
32
|
requirement: !ruby/object:Gem::Requirement
|
36
|
-
none: false
|
37
33
|
requirements:
|
38
|
-
- -
|
34
|
+
- - '>='
|
39
35
|
- !ruby/object:Gem::Version
|
40
36
|
version: 0.3.6
|
41
37
|
type: :runtime
|
42
38
|
prerelease: false
|
43
39
|
version_requirements: !ruby/object:Gem::Requirement
|
44
|
-
none: false
|
45
40
|
requirements:
|
46
|
-
- -
|
41
|
+
- - '>='
|
47
42
|
- !ruby/object:Gem::Version
|
48
43
|
version: 0.3.6
|
49
44
|
- !ruby/object:Gem::Dependency
|
50
45
|
name: rspec-expectations
|
51
46
|
requirement: !ruby/object:Gem::Requirement
|
52
|
-
none: false
|
53
47
|
requirements:
|
54
|
-
- -
|
48
|
+
- - '>='
|
55
49
|
- !ruby/object:Gem::Version
|
56
50
|
version: 2.7.0
|
57
51
|
type: :runtime
|
58
52
|
prerelease: false
|
59
53
|
version_requirements: !ruby/object:Gem::Requirement
|
60
|
-
none: false
|
61
54
|
requirements:
|
62
|
-
- -
|
55
|
+
- - '>='
|
63
56
|
- !ruby/object:Gem::Version
|
64
57
|
version: 2.7.0
|
65
58
|
- !ruby/object:Gem::Dependency
|
66
59
|
name: bcat
|
67
60
|
requirement: !ruby/object:Gem::Requirement
|
68
|
-
none: false
|
69
61
|
requirements:
|
70
|
-
- -
|
62
|
+
- - '>='
|
71
63
|
- !ruby/object:Gem::Version
|
72
64
|
version: 0.6.1
|
73
65
|
type: :development
|
74
66
|
prerelease: false
|
75
67
|
version_requirements: !ruby/object:Gem::Requirement
|
76
|
-
none: false
|
77
68
|
requirements:
|
78
|
-
- -
|
69
|
+
- - '>='
|
79
70
|
- !ruby/object:Gem::Version
|
80
71
|
version: 0.6.1
|
81
72
|
- !ruby/object:Gem::Dependency
|
82
73
|
name: kramdown
|
83
74
|
requirement: !ruby/object:Gem::Requirement
|
84
|
-
none: false
|
85
75
|
requirements:
|
86
|
-
- -
|
76
|
+
- - '>='
|
87
77
|
- !ruby/object:Gem::Version
|
88
78
|
version: '0.14'
|
89
79
|
type: :development
|
90
80
|
prerelease: false
|
91
81
|
version_requirements: !ruby/object:Gem::Requirement
|
92
|
-
none: false
|
93
82
|
requirements:
|
94
|
-
- -
|
83
|
+
- - '>='
|
95
84
|
- !ruby/object:Gem::Version
|
96
85
|
version: '0.14'
|
97
86
|
- !ruby/object:Gem::Dependency
|
98
87
|
name: rake
|
99
88
|
requirement: !ruby/object:Gem::Requirement
|
100
|
-
none: false
|
101
89
|
requirements:
|
102
|
-
- -
|
90
|
+
- - '>='
|
103
91
|
- !ruby/object:Gem::Version
|
104
92
|
version: 0.9.2
|
105
93
|
type: :development
|
106
94
|
prerelease: false
|
107
95
|
version_requirements: !ruby/object:Gem::Requirement
|
108
|
-
none: false
|
109
96
|
requirements:
|
110
|
-
- -
|
97
|
+
- - '>='
|
111
98
|
- !ruby/object:Gem::Version
|
112
99
|
version: 0.9.2
|
113
100
|
- !ruby/object:Gem::Dependency
|
114
101
|
name: rspec
|
115
102
|
requirement: !ruby/object:Gem::Requirement
|
116
|
-
none: false
|
117
103
|
requirements:
|
118
|
-
- -
|
104
|
+
- - '>='
|
119
105
|
- !ruby/object:Gem::Version
|
120
|
-
version: 2.
|
106
|
+
version: 2.11.0
|
121
107
|
type: :development
|
122
108
|
prerelease: false
|
123
109
|
version_requirements: !ruby/object:Gem::Requirement
|
124
|
-
none: false
|
125
110
|
requirements:
|
126
|
-
- -
|
111
|
+
- - '>='
|
127
112
|
- !ruby/object:Gem::Version
|
128
|
-
version: 2.
|
113
|
+
version: 2.11.0
|
114
|
+
- !ruby/object:Gem::Dependency
|
115
|
+
name: fuubar
|
116
|
+
requirement: !ruby/object:Gem::Requirement
|
117
|
+
requirements:
|
118
|
+
- - '>='
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
version: 1.1.1
|
121
|
+
type: :development
|
122
|
+
prerelease: false
|
123
|
+
version_requirements: !ruby/object:Gem::Requirement
|
124
|
+
requirements:
|
125
|
+
- - '>='
|
126
|
+
- !ruby/object:Gem::Version
|
127
|
+
version: 1.1.1
|
129
128
|
description: CLI Steps for Cucumber, hand-crafted for you in Aruba
|
130
129
|
email: cukes@googlegroups.com
|
131
130
|
executables: []
|
@@ -146,6 +145,7 @@ files:
|
|
146
145
|
- config/.gitignore
|
147
146
|
- cucumber.yml
|
148
147
|
- features/before_cmd_hooks.feature
|
148
|
+
- features/command_environment_variables.feature
|
149
149
|
- features/custom_ruby_process.feature
|
150
150
|
- features/exit_statuses.feature
|
151
151
|
- features/file_system_commands.feature
|
@@ -166,6 +166,7 @@ files:
|
|
166
166
|
- lib/aruba/errors.rb
|
167
167
|
- lib/aruba/in_process.rb
|
168
168
|
- lib/aruba/jruby.rb
|
169
|
+
- lib/aruba/matchers/rspec_matcher_include_regexp.rb
|
169
170
|
- lib/aruba/reporting.rb
|
170
171
|
- lib/aruba/spawn_process.rb
|
171
172
|
- spec/aruba/api_spec.rb
|
@@ -187,34 +188,28 @@ files:
|
|
187
188
|
- templates/js/jquery-1.6.1.min.js
|
188
189
|
- templates/main.erb
|
189
190
|
homepage: http://github.com/cucumber/aruba
|
190
|
-
licenses:
|
191
|
+
licenses:
|
192
|
+
- MIT
|
193
|
+
metadata: {}
|
191
194
|
post_install_message:
|
192
195
|
rdoc_options:
|
193
196
|
- --charset=UTF-8
|
194
197
|
require_paths:
|
195
198
|
- lib
|
196
199
|
required_ruby_version: !ruby/object:Gem::Requirement
|
197
|
-
none: false
|
198
200
|
requirements:
|
199
|
-
- -
|
201
|
+
- - '>='
|
200
202
|
- !ruby/object:Gem::Version
|
201
203
|
version: '0'
|
202
|
-
segments:
|
203
|
-
- 0
|
204
|
-
hash: 4547606792464091190
|
205
204
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
206
|
-
none: false
|
207
205
|
requirements:
|
208
|
-
- -
|
206
|
+
- - '>='
|
209
207
|
- !ruby/object:Gem::Version
|
210
208
|
version: '0'
|
211
|
-
segments:
|
212
|
-
- 0
|
213
|
-
hash: 4547606792464091190
|
214
209
|
requirements: []
|
215
210
|
rubyforge_project:
|
216
|
-
rubygems_version:
|
211
|
+
rubygems_version: 2.0.14
|
217
212
|
signing_key:
|
218
|
-
specification_version:
|
219
|
-
summary: aruba-0.5.
|
213
|
+
specification_version: 4
|
214
|
+
summary: aruba-0.5.4
|
220
215
|
test_files: []
|