aruba 0.5.0 → 0.5.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/.travis.yml +2 -1
- data/History.md +4 -0
- data/README.md +3 -3
- data/Rakefile +5 -4
- data/aruba.gemspec +2 -3
- data/cucumber.yml +9 -2
- data/features/exit_statuses.feature +14 -26
- data/features/file_system_commands.feature +20 -30
- data/features/flushing.feature +3 -3
- data/features/interactive.feature +6 -5
- data/features/output.feature +75 -91
- data/features/step_definitions/aruba_dev_steps.rb +1 -1
- data/features/support/jruby.rb +5 -0
- data/lib/aruba/api.rb +12 -5
- data/lib/aruba/cucumber.rb +61 -30
- data/lib/aruba/errors.rb +4 -0
- data/lib/aruba/process.rb +22 -14
- data/spec/aruba/api_spec.rb +36 -10
- data/spec/aruba/process_spec.rb +11 -1
- metadata +15 -25
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
data/History.md
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
## [v0.5.1](https://github.com/cucumber/aruba/compare/v0.5..v0.5.1)
|
2
|
+
* Individual timeout settings when running commands (#124 Jarl Friis)
|
3
|
+
* Varous fixes for JRuby tests, should now work on more versions of JRuby
|
4
|
+
|
1
5
|
## [v0.5](https://github.com/cucumber/aruba/compare/v0.4.10..v0.5)
|
2
6
|
* Add #with_file_content to the DSL (#110 Pavel Argentov)
|
3
7
|
* Make JRuby performance tweaks optional (#102 Taylor Carpenter, #125 Andy Lindeman)
|
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)
|
1
|
+
[![Build Status](https://secure.travis-ci.org/cucumber/aruba.png)](http://travis-ci.org/cucumber/aruba) [![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/cucumber/aruba)
|
2
2
|
|
3
3
|
Aruba is Cucumber extension for Command line applications written in any programming language. Features at a glance:
|
4
4
|
|
@@ -71,7 +71,7 @@ Aruba defines several tags that you can put on on individual scenarios, or on a
|
|
71
71
|
|
72
72
|
To get more information on what Aruba is doing, use these tags:
|
73
73
|
|
74
|
-
* `@announce-cmd` - See what command is
|
74
|
+
* `@announce-cmd` - See what command is run
|
75
75
|
* `@announce-stdout` - See the stdout
|
76
76
|
* `@announce-stderr` - See the stderr
|
77
77
|
* `@announce-dir` - See the current directory
|
@@ -119,7 +119,7 @@ or setting a hook like this example:
|
|
119
119
|
```
|
120
120
|
|
121
121
|
*Note* - no conflict resolution on the JAVA/JRuby environment options is
|
122
|
-
done; only merging.
|
122
|
+
done; only merging. For more complex settings please manually set the
|
123
123
|
environment variables in the hook or externally.
|
124
124
|
|
125
125
|
A larger process timeout for java may be needed
|
data/Rakefile
CHANGED
@@ -7,9 +7,10 @@ Bundler::GemHelper.install_tasks
|
|
7
7
|
require 'cucumber/rake/task'
|
8
8
|
|
9
9
|
Cucumber::Rake::Task.new do |t|
|
10
|
-
|
11
|
-
|
12
|
-
|
10
|
+
end
|
11
|
+
|
12
|
+
Cucumber::Rake::Task.new(:cucumber_wip) do |t|
|
13
|
+
t.cucumber_opts = "-p wip"
|
13
14
|
end
|
14
15
|
|
15
16
|
require 'rspec/core/rake_task'
|
@@ -20,6 +21,6 @@ RSpec::Core::RakeTask.new do |spec|
|
|
20
21
|
end
|
21
22
|
|
22
23
|
desc "Run tests, both RSpec and Cucumber"
|
23
|
-
task :test => [:spec, :cucumber]
|
24
|
+
task :test => [:spec, :cucumber, :cucumber_wip]
|
24
25
|
|
25
26
|
task :default => :test
|
data/aruba.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = 'aruba'
|
5
|
-
s.version = '0.5.
|
5
|
+
s.version = '0.5.1'
|
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}"
|
@@ -10,8 +10,7 @@ Gem::Specification.new do |s|
|
|
10
10
|
s.homepage = 'http://github.com/cucumber/aruba'
|
11
11
|
|
12
12
|
s.add_runtime_dependency 'cucumber', '>= 1.1.1'
|
13
|
-
s.add_runtime_dependency 'childprocess', '
|
14
|
-
s.add_runtime_dependency 'ffi', '>= 1.0.11'
|
13
|
+
s.add_runtime_dependency 'childprocess', '~> 0.3.6'
|
15
14
|
s.add_runtime_dependency 'rspec-expectations', '>= 2.7.0'
|
16
15
|
s.add_development_dependency 'bcat', '>= 0.6.1'
|
17
16
|
s.add_development_dependency 'rdiscount', '>= 1.6.8'
|
data/cucumber.yml
CHANGED
@@ -1,2 +1,9 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
<%
|
2
|
+
std_opts = "--color --tags ~@wip"
|
3
|
+
std_opts << " --tags ~@wip-jruby" if defined?(JRUBY_VERSION)
|
4
|
+
|
5
|
+
wip_opts = "--color --tags @wip:3"
|
6
|
+
wip_opts = "--color --tags @wip:3,@wip-jruby:3" if defined?(JRUBY_VERSION)
|
7
|
+
%>
|
8
|
+
default: <%= std_opts %>
|
9
|
+
wip: --wip <%= wip_opts %>
|
@@ -5,38 +5,26 @@ Feature: exit statuses
|
|
5
5
|
I want to use the "the exit status should be" step
|
6
6
|
|
7
7
|
Scenario: exit status of 0
|
8
|
-
When I run `
|
8
|
+
When I run `true`
|
9
9
|
Then the exit status should be 0
|
10
10
|
|
11
|
-
Scenario: exit status of 0 with `
|
12
|
-
When I run `ruby -h`
|
13
|
-
Then the exit status should be 0
|
14
|
-
|
15
|
-
Scenario: Not explicitly exiting at all
|
16
|
-
When I run `ruby -e '42'`
|
17
|
-
Then the exit status should be 0
|
18
|
-
|
19
11
|
Scenario: non-zero exit status
|
20
|
-
When I run `
|
21
|
-
Then the exit status should be
|
12
|
+
When I run `false`
|
13
|
+
Then the exit status should be 1
|
22
14
|
And the exit status should not be 0
|
23
15
|
|
24
16
|
Scenario: Successfully run something
|
25
|
-
When I successfully run `
|
17
|
+
When I successfully run `true`
|
26
18
|
|
27
|
-
Scenario: Successfully run something
|
28
|
-
|
19
|
+
Scenario: Successfully run something for a long time
|
20
|
+
Given The default aruba timeout is 0 seconds
|
21
|
+
When I successfully run `ruby -e 'sleep 1'` for up to 2 seconds
|
29
22
|
|
30
|
-
Scenario: Unsuccessfully run something
|
31
|
-
|
32
|
-
|
23
|
+
Scenario: Unsuccessfully run something that takes too long
|
24
|
+
Given The default aruba timeout is 0 seconds
|
25
|
+
When I do aruba I successfully run `ruby -e 'sleep 1'`
|
26
|
+
Then aruba should fail with "process still alive after 0 seconds"
|
33
27
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
Then the exit status should be 1
|
38
|
-
|
39
|
-
@posix
|
40
|
-
Scenario: Try to run something that doesn't exist with `
|
41
|
-
When I run `does_not_exist`
|
42
|
-
Then the exit status should be 1
|
28
|
+
Scenario: Unsuccessfully run something
|
29
|
+
When I do aruba I successfully run `false`
|
30
|
+
Then aruba should fail with ""
|
@@ -6,16 +6,16 @@ Feature: file system commands
|
|
6
6
|
|
7
7
|
Scenario: create a dir
|
8
8
|
Given a directory named "foo/bar"
|
9
|
-
When I run `
|
10
|
-
Then the stdout should contain "
|
9
|
+
When I run `file foo/bar`
|
10
|
+
Then the stdout should contain "foo/bar: directory"
|
11
11
|
|
12
12
|
Scenario: create a file
|
13
|
-
Given a file named "foo/bar/example.
|
13
|
+
Given a file named "foo/bar/example.txt" with:
|
14
14
|
"""
|
15
|
-
|
15
|
+
hello world
|
16
16
|
"""
|
17
|
-
When I run `
|
18
|
-
Then the output should contain "hello world"
|
17
|
+
When I run `cat foo/bar/example.txt`
|
18
|
+
Then the output should contain exactly "hello world"
|
19
19
|
|
20
20
|
Scenario: create a fixed sized file
|
21
21
|
Given a 1048576 byte file named "test.txt"
|
@@ -30,22 +30,17 @@ Feature: file system commands
|
|
30
30
|
- One
|
31
31
|
- Two
|
32
32
|
|
33
|
-
Given a file named "foo/bar/example.
|
34
|
-
"""
|
35
|
-
Feature: Example
|
36
|
-
Hello World
|
33
|
+
Given a file named "foo/bar/example.txt" with:
|
37
34
|
"""
|
38
|
-
|
39
|
-
|
40
|
-
puts "\e[31mhello world\e[0m"
|
41
|
-
|
35
|
+
hello world
|
36
|
+
|
42
37
|
"""
|
43
|
-
When I append to "foo/bar/example.
|
38
|
+
When I append to "foo/bar/example.txt" with:
|
44
39
|
"""
|
45
|
-
|
46
|
-
|
40
|
+
this was appended
|
41
|
+
|
47
42
|
"""
|
48
|
-
When I run `
|
43
|
+
When I run `cat foo/bar/example.txt`
|
49
44
|
Then the stdout should contain "hello world"
|
50
45
|
And the stdout should contain "this was appended"
|
51
46
|
|
@@ -55,28 +50,23 @@ Feature: file system commands
|
|
55
50
|
Then the file "thedir/thefile" should contain "xy"
|
56
51
|
|
57
52
|
Scenario: clean up files generated in previous scenario
|
58
|
-
|
59
|
-
Then the exit status should be 1
|
60
|
-
And the output should contain "No such file or directory -- foo/bar/example.rb"
|
53
|
+
Then the file "foo/bar/example.txt" should not exist
|
61
54
|
|
62
55
|
Scenario: change to a subdir
|
63
|
-
Given a file named "foo/bar/example.
|
56
|
+
Given a file named "foo/bar/example.txt" with:
|
64
57
|
"""
|
65
|
-
|
58
|
+
hello world
|
59
|
+
|
66
60
|
"""
|
67
61
|
When I cd to "foo/bar"
|
68
|
-
And I run `
|
62
|
+
And I run `cat example.txt`
|
69
63
|
Then the output should contain "hello world"
|
70
64
|
|
71
65
|
Scenario: Reset current directory from previous scenario
|
72
|
-
When I run `
|
73
|
-
Then the
|
66
|
+
When I run `pwd`
|
67
|
+
Then the output should match /\057tmp\057aruba$/
|
74
68
|
|
75
69
|
Scenario: Holler if cd to bad dir
|
76
|
-
Given a file named "foo/bar/example.rb" with:
|
77
|
-
"""
|
78
|
-
puts "hello world"
|
79
|
-
"""
|
80
70
|
When I do aruba I cd to "foo/nonexistant"
|
81
71
|
Then aruba should fail with "tmp/aruba/foo/nonexistant is not a directory"
|
82
72
|
|
data/features/flushing.feature
CHANGED
@@ -5,19 +5,19 @@ Feature: Flushing output
|
|
5
5
|
I want to make sure that large amounts of output aren't buffered
|
6
6
|
|
7
7
|
Scenario: A little output
|
8
|
-
When I run `
|
8
|
+
When I run `bash -c 'for ((c=0; c<256; c = c+1)); do echo -n "a"; done'`
|
9
9
|
Then the output should contain "a"
|
10
10
|
And the output should be 256 bytes long
|
11
11
|
And the exit status should be 0
|
12
12
|
|
13
13
|
Scenario: Tons of output
|
14
|
-
When I run `
|
14
|
+
When I run `bash -c 'for ((c=0; c<65536; c = c+1)); do echo -n "a"; done'`
|
15
15
|
Then the output should contain "a"
|
16
16
|
And the output should be 65536 bytes long
|
17
17
|
And the exit status should be 0
|
18
18
|
|
19
19
|
Scenario: Tons of interactive output
|
20
|
-
When I run `
|
20
|
+
When I run `bash -c 'read size; for ((c=0; c<$size; c = c+1)); do echo -n "a"; done'` interactively
|
21
21
|
And I type "65536"
|
22
22
|
Then the output should contain "a"
|
23
23
|
And the output should be 65536 bytes long
|
@@ -4,6 +4,7 @@ Feature: Interactive process control
|
|
4
4
|
As a developer using Cucumber
|
5
5
|
I want to use the interactive session steps
|
6
6
|
|
7
|
+
@wip-jruby
|
7
8
|
Scenario: Running ruby interactively
|
8
9
|
Given a file named "echo.rb" with:
|
9
10
|
"""
|
@@ -20,14 +21,14 @@ Feature: Interactive process control
|
|
20
21
|
dlrow ,olleh
|
21
22
|
"""
|
22
23
|
|
23
|
-
@posix
|
24
|
+
@posix
|
24
25
|
Scenario: Running a native binary interactively
|
25
|
-
When I run `
|
26
|
-
And I type "
|
27
|
-
And I type "
|
26
|
+
When I run `cat` interactively
|
27
|
+
And I type "Hello, world"
|
28
|
+
And I type ""
|
28
29
|
Then the output should contain:
|
29
30
|
"""
|
30
|
-
|
31
|
+
Hello, world
|
31
32
|
"""
|
32
33
|
|
33
34
|
@posix
|
data/features/output.feature
CHANGED
@@ -4,37 +4,24 @@ Feature: Output
|
|
4
4
|
As a developer using Cucumber
|
5
5
|
I want to use the "the output should contain" step
|
6
6
|
|
7
|
-
@posix
|
8
|
-
Scenario: Run unknown command
|
9
|
-
When I run `neverever gonna work`
|
10
|
-
Then the output should contain:
|
11
|
-
"""
|
12
|
-
No such file or directory - neverever
|
13
|
-
"""
|
14
|
-
|
15
7
|
@posix
|
16
8
|
Scenario: Detect subset of one-line output
|
17
|
-
When I run `
|
18
|
-
Then the output should contain "hello world"
|
19
|
-
|
20
|
-
@posix
|
21
|
-
Scenario: Detect subset of one-line output
|
22
|
-
When I run `echo 'hello world'`
|
9
|
+
When I run `printf 'hello world'`
|
23
10
|
Then the output should contain "hello world"
|
24
11
|
|
25
12
|
Scenario: Detect absence of one-line output
|
26
|
-
When I run `
|
13
|
+
When I run `printf "hello world"`
|
27
14
|
Then the output should not contain "good-bye"
|
28
15
|
|
29
16
|
Scenario: Detect subset of multiline output
|
30
|
-
When I run `
|
17
|
+
When I run `printf "hello\nworld"`
|
31
18
|
Then the output should contain:
|
32
19
|
"""
|
33
20
|
hello
|
34
21
|
"""
|
35
22
|
|
36
|
-
Scenario: Detect
|
37
|
-
When I run `
|
23
|
+
Scenario: Detect absence of multiline output
|
24
|
+
When I run `printf "hello\nworld"`
|
38
25
|
Then the output should not contain:
|
39
26
|
"""
|
40
27
|
good-bye
|
@@ -42,51 +29,48 @@ Feature: Output
|
|
42
29
|
|
43
30
|
@posix
|
44
31
|
Scenario: Detect exact one-line output
|
45
|
-
When I run `
|
32
|
+
When I run `printf "hello world"`
|
46
33
|
Then the output should contain exactly:
|
47
34
|
"""
|
48
35
|
hello world
|
49
|
-
|
50
36
|
"""
|
51
37
|
|
52
38
|
@ansi
|
53
39
|
@posix
|
54
40
|
Scenario: Detect exact one-line output with ANSI output
|
55
|
-
When I run `
|
41
|
+
When I run `printf "\e[36mhello world\e[0m"`
|
56
42
|
Then the output should contain exactly:
|
57
43
|
"""
|
58
44
|
\e[36mhello world\e[0m
|
59
|
-
|
60
45
|
"""
|
61
46
|
|
62
47
|
@posix
|
63
48
|
Scenario: Detect exact one-line output with ANSI output stripped by default
|
64
|
-
When I run `
|
49
|
+
When I run `printf "\e[36mhello world\e[0m"`
|
65
50
|
Then the output should contain exactly:
|
66
51
|
"""
|
67
52
|
hello world
|
68
|
-
|
69
53
|
"""
|
54
|
+
|
70
55
|
@posix
|
71
56
|
Scenario: Detect exact multiline output
|
72
|
-
When I run `
|
57
|
+
When I run `printf "hello\nworld"`
|
73
58
|
Then the output should contain exactly:
|
74
59
|
"""
|
75
60
|
hello
|
76
61
|
world
|
77
|
-
|
78
62
|
"""
|
79
63
|
|
80
64
|
@announce
|
81
65
|
Scenario: Detect subset of one-line output with regex
|
82
|
-
When I run `ruby
|
66
|
+
When I run `printf "hello, ruby"`
|
83
67
|
Then the output should contain "ruby"
|
84
|
-
And the output should match
|
68
|
+
And the output should match /^hello(, world)?/
|
85
69
|
|
86
70
|
@announce
|
87
71
|
@posix
|
88
72
|
Scenario: Detect subset of multiline output with regex
|
89
|
-
When I run `
|
73
|
+
When I run `printf "hello\nworld\nextra line1\nextra line2\nimportant line"`
|
90
74
|
Then the output should match:
|
91
75
|
"""
|
92
76
|
he..o
|
@@ -97,14 +81,14 @@ Feature: Output
|
|
97
81
|
|
98
82
|
@announce
|
99
83
|
Scenario: Negative matching of one-line output with regex
|
100
|
-
When I run `ruby
|
84
|
+
When I run `printf "hello, ruby"`
|
101
85
|
Then the output should contain "ruby"
|
102
86
|
And the output should not match /ruby is a better perl$/
|
103
87
|
|
104
88
|
@announce
|
105
89
|
@posix
|
106
90
|
Scenario: Negative matching of multiline output with regex
|
107
|
-
When I run `
|
91
|
+
When I run `printf "hello\nworld\nextra line1\nextra line2\nimportant line"`
|
108
92
|
Then the output should not match:
|
109
93
|
"""
|
110
94
|
ruby
|
@@ -117,7 +101,7 @@ Feature: Output
|
|
117
101
|
@announce
|
118
102
|
@posix
|
119
103
|
Scenario: Match passing exit status and partial output
|
120
|
-
When I run `
|
104
|
+
When I run `printf "hello\nworld"`
|
121
105
|
Then it should pass with:
|
122
106
|
"""
|
123
107
|
hello
|
@@ -125,17 +109,16 @@ Feature: Output
|
|
125
109
|
|
126
110
|
@posix
|
127
111
|
Scenario: Match passing exit status and exact output
|
128
|
-
When I run `
|
112
|
+
When I run `printf "hello\nworld"`
|
129
113
|
Then it should pass with exactly:
|
130
114
|
"""
|
131
115
|
hello
|
132
116
|
world
|
133
|
-
|
134
117
|
"""
|
135
118
|
|
136
119
|
@announce-stdout
|
137
120
|
Scenario: Match failing exit status and partial output
|
138
|
-
When I run `
|
121
|
+
When I run `bash -c '(printf "hello\nworld";exit 99)'`
|
139
122
|
Then it should fail with:
|
140
123
|
"""
|
141
124
|
hello
|
@@ -143,18 +126,17 @@ Feature: Output
|
|
143
126
|
|
144
127
|
@posix
|
145
128
|
Scenario: Match failing exit status and exact output
|
146
|
-
When I run `
|
129
|
+
When I run `bash -c '(printf "hello\nworld";exit 99)'`
|
147
130
|
Then it should fail with exactly:
|
148
131
|
"""
|
149
132
|
hello
|
150
133
|
world
|
151
|
-
|
152
134
|
"""
|
153
135
|
|
154
136
|
@announce-stdout
|
155
137
|
@posix
|
156
138
|
Scenario: Match failing exit status and output with regex
|
157
|
-
When I run `
|
139
|
+
When I run `bash -c '(printf "hello\nworld";exit 99)'`
|
158
140
|
Then it should fail with regex:
|
159
141
|
"""
|
160
142
|
hello\s*world
|
@@ -163,13 +145,13 @@ Feature: Output
|
|
163
145
|
@announce-cmd
|
164
146
|
@posix
|
165
147
|
Scenario: Match output in stdout
|
166
|
-
When I run `
|
148
|
+
When I run `printf "hello\nworld"`
|
167
149
|
Then the stdout should contain "hello"
|
168
150
|
Then the stderr should not contain "hello"
|
169
151
|
|
170
152
|
@announce
|
171
153
|
Scenario: Match output on several lines
|
172
|
-
When I run `
|
154
|
+
When I run `printf 'GET /'`
|
173
155
|
Then the stdout should contain:
|
174
156
|
"""
|
175
157
|
GET /
|
@@ -177,91 +159,93 @@ Feature: Output
|
|
177
159
|
|
178
160
|
@posix
|
179
161
|
Scenario: Match output on several lines using quotes
|
180
|
-
When I run `
|
162
|
+
When I run `printf 'GET "/"'`
|
181
163
|
Then the stdout should contain:
|
182
164
|
"""
|
183
165
|
GET "/"
|
184
166
|
"""
|
185
167
|
|
186
|
-
@posix
|
187
|
-
Scenario: Match output in stdout
|
188
|
-
When I run `ruby -e 'puts \"hello\\nworld\"'`
|
189
|
-
Then the stdout should contain "hello"
|
190
|
-
Then the stderr should not contain "hello"
|
191
|
-
|
192
|
-
|
193
168
|
@posix
|
194
169
|
Scenario: Detect output from all processes
|
195
|
-
When I run `
|
196
|
-
And I run `
|
197
|
-
And I type "
|
170
|
+
When I run `printf "hello world!\n"`
|
171
|
+
And I run `cat` interactively
|
172
|
+
And I type "hola"
|
173
|
+
And I type ""
|
198
174
|
Then the output should contain exactly:
|
199
175
|
"""
|
200
176
|
hello world!
|
201
|
-
|
177
|
+
hola
|
202
178
|
|
203
179
|
"""
|
204
180
|
|
205
181
|
@posix
|
206
182
|
Scenario: Detect stdout from all processes
|
207
|
-
When I run `
|
208
|
-
And I run `
|
209
|
-
And I type "
|
183
|
+
When I run `printf "hello world!\n"`
|
184
|
+
And I run `cat` interactively
|
185
|
+
And I type "hola"
|
186
|
+
And I type ""
|
210
187
|
Then the stdout should contain:
|
211
188
|
"""
|
212
189
|
hello world!
|
213
|
-
|
214
|
-
|
215
|
-
And the stderr should not contain:
|
216
|
-
"""
|
217
|
-
hello world!
|
218
|
-
olleh
|
190
|
+
hola
|
191
|
+
|
219
192
|
"""
|
193
|
+
And the stderr should not contain anything
|
220
194
|
|
221
195
|
@posix
|
222
196
|
Scenario: Detect stderr from all processes
|
223
|
-
When I run `
|
224
|
-
And I run `
|
225
|
-
And I type "
|
197
|
+
When I run `bash -c 'printf "hello world!\n" >&2'`
|
198
|
+
And I run `bash -c 'cat >&2 '` interactively
|
199
|
+
And I type "hola"
|
200
|
+
And I type ""
|
226
201
|
Then the stderr should contain:
|
227
202
|
"""
|
228
203
|
hello world!
|
229
|
-
|
230
|
-
"""
|
231
|
-
And the stdout should not contain:
|
232
|
-
"""
|
233
|
-
hello world!
|
234
|
-
olleh
|
204
|
+
hola
|
235
205
|
"""
|
206
|
+
And the stdout should not contain anything
|
236
207
|
|
237
208
|
Scenario: Detect output from named source
|
238
|
-
When I run `
|
239
|
-
And I run `
|
209
|
+
When I run `printf 'simple'`
|
210
|
+
And I run `cat` interactively
|
240
211
|
And I type "interactive"
|
241
|
-
|
242
|
-
|
212
|
+
And I type ""
|
213
|
+
Then the output from "printf 'simple'" should contain "simple"
|
214
|
+
And the output from "printf 'simple'" should contain exactly "simple"
|
215
|
+
And the output from "printf 'simple'" should contain exactly:
|
216
|
+
"""
|
217
|
+
simple
|
218
|
+
"""
|
219
|
+
And the output from "cat" should not contain "simple"
|
243
220
|
|
244
221
|
Scenario: Detect stdout from named source
|
245
|
-
When I run `
|
246
|
-
And I run `
|
247
|
-
Then the stdout from "
|
248
|
-
And the
|
249
|
-
And the stdout from "
|
222
|
+
When I run `printf 'hello'`
|
223
|
+
And I run `printf 'goodbye'`
|
224
|
+
Then the stdout from "printf 'hello'" should contain "hello"
|
225
|
+
And the stdout from "printf 'hello'" should contain exactly "hello"
|
226
|
+
And the stdout from "printf 'hello'" should contain exactly:
|
227
|
+
"""
|
228
|
+
hello
|
229
|
+
"""
|
230
|
+
And the stderr from "printf 'hello'" should not contain "hello"
|
231
|
+
And the stdout from "printf 'goodbye'" should not contain "hello"
|
250
232
|
|
251
233
|
Scenario: Detect stderr from named source
|
252
|
-
When I run `
|
253
|
-
And I run `
|
254
|
-
Then the stderr from "
|
255
|
-
And the
|
256
|
-
And the stderr from "
|
257
|
-
|
258
|
-
|
259
|
-
|
234
|
+
When I run `bash -c 'printf hello >&2'`
|
235
|
+
And I run `printf goodbye`
|
236
|
+
Then the stderr from "bash -c 'printf hello >&2'" should contain "hello"
|
237
|
+
And the stderr from "bash -c 'printf hello >&2'" should contain exactly "hello"
|
238
|
+
And the stderr from "bash -c 'printf hello >&2'" should contain exactly:
|
239
|
+
"""
|
240
|
+
hello
|
241
|
+
"""
|
242
|
+
And the stdout from "bash -c 'printf hello >&2'" should not contain "hello"
|
243
|
+
And the stderr from "printf goodbye" should not contain "hello"
|
260
244
|
|
261
245
|
Scenario: Detect second output from named source with custom name
|
262
246
|
When I set env variable "ARUBA_TEST_VAR" to "first"
|
263
|
-
And I run `
|
264
|
-
Then the output from "
|
247
|
+
And I run `bash -c 'printf $ARUBA_TEST_VAR'`
|
248
|
+
Then the output from "bash -c 'printf $ARUBA_TEST_VAR'" should contain "first"
|
265
249
|
When I set env variable "ARUBA_TEST_VAR" to "second"
|
266
|
-
And I run `
|
267
|
-
Then the output from "
|
250
|
+
And I run `bash -c 'printf $ARUBA_TEST_VAR'`
|
251
|
+
Then the output from "bash -c 'printf $ARUBA_TEST_VAR'" should contain "second"
|
data/lib/aruba/api.rb
CHANGED
@@ -23,7 +23,7 @@ module Aruba
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def dirs
|
26
|
-
@dirs ||= ['tmp
|
26
|
+
@dirs ||= ['tmp', 'aruba']
|
27
27
|
end
|
28
28
|
|
29
29
|
def write_file(file_name, file_content)
|
@@ -278,7 +278,8 @@ module Aruba
|
|
278
278
|
processes.collect{ |_, process| process }
|
279
279
|
end
|
280
280
|
|
281
|
-
def run(cmd)
|
281
|
+
def run(cmd, timeout = nil)
|
282
|
+
timeout ||= exit_timeout
|
282
283
|
@commands ||= []
|
283
284
|
@commands << cmd
|
284
285
|
|
@@ -290,7 +291,7 @@ module Aruba
|
|
290
291
|
announcer.dir(Dir.pwd)
|
291
292
|
announcer.cmd(cmd)
|
292
293
|
|
293
|
-
process = Process.new(cmd,
|
294
|
+
process = Process.new(cmd, timeout, io_wait)
|
294
295
|
register_process(cmd, process)
|
295
296
|
process.run!
|
296
297
|
|
@@ -310,8 +311,8 @@ module Aruba
|
|
310
311
|
@aruba_io_wait_seconds || DEFAULT_IO_WAIT_SECONDS
|
311
312
|
end
|
312
313
|
|
313
|
-
def run_simple(cmd, fail_on_error=true)
|
314
|
-
run(cmd) do |process|
|
314
|
+
def run_simple(cmd, fail_on_error=true, timeout = nil)
|
315
|
+
run(cmd, timeout) do |process|
|
315
316
|
stop_process(process)
|
316
317
|
end
|
317
318
|
@timed_out = last_exit_status.nil?
|
@@ -323,11 +324,17 @@ module Aruba
|
|
323
324
|
end
|
324
325
|
|
325
326
|
def type(input)
|
327
|
+
return eot if "" == input ##If on Windows it is actually (26 == 0x1A)
|
326
328
|
_write_interactive(_ensure_newline(input))
|
327
329
|
end
|
328
330
|
|
331
|
+
def eot
|
332
|
+
@interactive.stdin.close
|
333
|
+
end
|
334
|
+
|
329
335
|
def _write_interactive(input)
|
330
336
|
@interactive.stdin.write(input)
|
337
|
+
@interactive.stdin.flush
|
331
338
|
end
|
332
339
|
|
333
340
|
def _read_interactive
|
data/lib/aruba/cucumber.rb
CHANGED
@@ -4,6 +4,10 @@ require 'aruba/reporting'
|
|
4
4
|
|
5
5
|
World(Aruba::Api)
|
6
6
|
|
7
|
+
Given /The default aruba timeout is (\d+) seconds/ do |seconds|
|
8
|
+
@aruba_timeout_seconds = seconds.to_i
|
9
|
+
end
|
10
|
+
|
7
11
|
Given /^I'm using a clean gemset "([^"]*)"$/ do |gemset|
|
8
12
|
use_clean_gemset(gemset)
|
9
13
|
end
|
@@ -62,8 +66,10 @@ When /^I successfully run "(.*)"$/ do |cmd|
|
|
62
66
|
run_simple(unescape(cmd))
|
63
67
|
end
|
64
68
|
|
65
|
-
|
66
|
-
|
69
|
+
## I successfully run `echo -n "Hello"`
|
70
|
+
## I successfully run `sleep 29` for up to 30 seconds
|
71
|
+
When /^I successfully run `(.*?)`(?: for up to (\d+) seconds)?$/ do |cmd, secs|
|
72
|
+
run_simple(unescape(cmd), true, secs && secs.to_i)
|
67
73
|
end
|
68
74
|
|
69
75
|
When /^I run "([^"]*)" interactively$/ do |cmd|
|
@@ -112,12 +118,16 @@ Then /^the output should not contain:$/ do |unexpected|
|
|
112
118
|
assert_no_partial_output(unexpected, all_output)
|
113
119
|
end
|
114
120
|
|
115
|
-
|
116
|
-
|
121
|
+
## the output should contain exactly "output"
|
122
|
+
## the output from `echo -n "Hello"` should contain exactly "Hello"
|
123
|
+
Then /^the output(?: from "(.*?)")? should contain exactly "(.*?)"$/ do |cmd, expected|
|
124
|
+
assert_exact_output(expected, cmd ? output_from(cmd) : all_output)
|
117
125
|
end
|
118
126
|
|
119
|
-
|
120
|
-
|
127
|
+
## the output should contain exactly:
|
128
|
+
## the output from `echo -n "Hello"` should contain exactly:
|
129
|
+
Then /^the output(?: from "(.*?)")? should contain exactly:$/ do |cmd, expected|
|
130
|
+
assert_exact_output(expected, cmd ? output_from(cmd) : all_output)
|
121
131
|
end
|
122
132
|
|
123
133
|
# "the output should match" allows regex in the partial_output, if
|
@@ -162,28 +172,52 @@ Then /^it should (pass|fail) with regexp?:$/ do |pass_fail, expected|
|
|
162
172
|
assert_success(pass_fail == 'pass')
|
163
173
|
end
|
164
174
|
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
Then /^the stderr should contain
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
+
## the stderr should contain "hello"
|
176
|
+
## the stderr from "echo -n 'Hello'" should contain "hello"
|
177
|
+
## the stderr should contain exactly:
|
178
|
+
## the stderr from "echo -n 'Hello'" should contain exactly:
|
179
|
+
Then /^the stderr(?: from "(.*?)")? should contain( exactly)? "(.*?)"$/ do |cmd, exact, expected|
|
180
|
+
if exact
|
181
|
+
assert_exact_output(expected, cmd ? stderr_from(cmd) : all_stderr)
|
182
|
+
else
|
183
|
+
assert_partial_output(expected, cmd ? stderr_from(cmd) : all_stderr)
|
184
|
+
end
|
175
185
|
end
|
176
186
|
|
177
|
-
|
178
|
-
|
187
|
+
## the stderr should contain:
|
188
|
+
## the stderr from "echo -n 'Hello'" should contain:
|
189
|
+
## the stderr should contain exactly:
|
190
|
+
## the stderr from "echo -n 'Hello'" should contain exactly:
|
191
|
+
Then /^the stderr(?: from "(.*?)")? should contain( exactly)?:$/ do |cmd, exact, expected|
|
192
|
+
if exact
|
193
|
+
assert_exact_output(expected, cmd ? stderr_from(cmd) : all_stderr)
|
194
|
+
else
|
195
|
+
assert_partial_output(expected, cmd ? stderr_from(cmd) : all_stderr)
|
196
|
+
end
|
179
197
|
end
|
180
198
|
|
181
|
-
|
182
|
-
|
199
|
+
## the stdout should contain "hello"
|
200
|
+
## the stdout from "echo -n 'Hello'" should contain "hello"
|
201
|
+
## the stdout should contain exactly:
|
202
|
+
## the stdout from "echo -n 'Hello'" should contain exactly:
|
203
|
+
Then /^the stdout(?: from "(.*?)")? should contain( exactly)? "(.*?)"$/ do |cmd, exact, expected|
|
204
|
+
if exact
|
205
|
+
assert_exact_output(expected, cmd ? stdout_from(cmd) : all_stdout)
|
206
|
+
else
|
207
|
+
assert_partial_output(expected, cmd ? stdout_from(cmd) : all_stdout)
|
208
|
+
end
|
183
209
|
end
|
184
210
|
|
185
|
-
|
186
|
-
|
211
|
+
## the stdout should contain:
|
212
|
+
## the stdout from "echo -n 'Hello'" should contain:
|
213
|
+
## the stdout should contain exactly:
|
214
|
+
## the stdout from "echo -n 'Hello'" should contain exactly:
|
215
|
+
Then /^the stdout(?: from "(.*?)")? should contain( exactly)?:$/ do |cmd, exact, expected|
|
216
|
+
if exact
|
217
|
+
assert_exact_output(expected, cmd ? stdout_from(cmd) : all_stdout)
|
218
|
+
else
|
219
|
+
assert_partial_output(expected, cmd ? stdout_from(cmd) : all_stdout)
|
220
|
+
end
|
187
221
|
end
|
188
222
|
|
189
223
|
Then /^the stderr should not contain "([^"]*)"$/ do |unexpected|
|
@@ -194,6 +228,11 @@ Then /^the stderr should not contain:$/ do |unexpected|
|
|
194
228
|
assert_no_partial_output(unexpected, all_stderr)
|
195
229
|
end
|
196
230
|
|
231
|
+
Then /^the (stderr|stdout) should not contain anything$/ do |stream_name|
|
232
|
+
stream = self.send("all_#{stream_name}")
|
233
|
+
stream.should be_empty
|
234
|
+
end
|
235
|
+
|
197
236
|
Then /^the stdout should not contain "([^"]*)"$/ do |unexpected|
|
198
237
|
assert_no_partial_output(unexpected, all_stdout)
|
199
238
|
end
|
@@ -202,18 +241,10 @@ Then /^the stdout should not contain:$/ do |unexpected|
|
|
202
241
|
assert_no_partial_output(unexpected, all_stdout)
|
203
242
|
end
|
204
243
|
|
205
|
-
Then /^the stdout from "([^"]*)" should contain "([^"]*)"$/ do |cmd, expected|
|
206
|
-
assert_partial_output(expected, stdout_from(cmd))
|
207
|
-
end
|
208
|
-
|
209
244
|
Then /^the stdout from "([^"]*)" should not contain "([^"]*)"$/ do |cmd, unexpected|
|
210
245
|
assert_no_partial_output(unexpected, stdout_from(cmd))
|
211
246
|
end
|
212
247
|
|
213
|
-
Then /^the stderr from "([^"]*)" should contain "([^"]*)"$/ do |cmd, expected|
|
214
|
-
assert_partial_output(expected, stderr_from(cmd))
|
215
|
-
end
|
216
|
-
|
217
248
|
Then /^the stderr from "([^"]*)" should not contain "([^"]*)"$/ do |cmd, unexpected|
|
218
249
|
assert_no_partial_output(unexpected, stderr_from(cmd))
|
219
250
|
end
|
data/lib/aruba/errors.rb
ADDED
data/lib/aruba/process.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'childprocess'
|
2
2
|
require 'tempfile'
|
3
3
|
require 'shellwords'
|
4
|
+
require 'aruba/errors'
|
4
5
|
|
5
6
|
module Aruba
|
6
7
|
class Process
|
@@ -10,24 +11,29 @@ module Aruba
|
|
10
11
|
@exit_timeout = exit_timeout
|
11
12
|
@io_wait = io_wait
|
12
13
|
|
14
|
+
@cmd = cmd
|
15
|
+
@process = nil
|
16
|
+
@exit_code = nil
|
17
|
+
end
|
18
|
+
|
19
|
+
def run!(&block)
|
20
|
+
@process = ChildProcess.build(*shellwords(@cmd))
|
13
21
|
@out = Tempfile.new("aruba-out")
|
14
22
|
@err = Tempfile.new("aruba-err")
|
15
|
-
@process = ChildProcess.build(*shellwords(cmd))
|
16
23
|
@process.io.stdout = @out
|
17
24
|
@process.io.stderr = @err
|
18
25
|
@process.duplex = true
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
26
|
+
@exit_code = nil
|
27
|
+
begin
|
28
|
+
@process.start
|
29
|
+
rescue ChildProcess::LaunchError => e
|
30
|
+
raise LaunchError.new(e.message)
|
31
|
+
end
|
23
32
|
yield self if block_given?
|
24
33
|
end
|
25
34
|
|
26
35
|
def stdin
|
27
|
-
|
28
|
-
@process.io.stdin.sync = true
|
29
|
-
@process.io.stdin
|
30
|
-
end
|
36
|
+
@process.io.stdin
|
31
37
|
end
|
32
38
|
|
33
39
|
def output(keep_ansi)
|
@@ -56,13 +62,15 @@ module Aruba
|
|
56
62
|
end
|
57
63
|
|
58
64
|
def stop(reader, keep_ansi)
|
59
|
-
return unless @process
|
65
|
+
return @exit_code unless @process
|
60
66
|
unless @process.exited?
|
61
|
-
reader.stdout stdout(keep_ansi)
|
62
|
-
reader.stderr stderr(keep_ansi)
|
63
67
|
@process.poll_for_exit(@exit_timeout)
|
64
68
|
end
|
65
|
-
|
69
|
+
reader.stdout stdout(keep_ansi)
|
70
|
+
reader.stderr stderr(keep_ansi)
|
71
|
+
@exit_code = @process.exit_code
|
72
|
+
@process = nil
|
73
|
+
@exit_code
|
66
74
|
end
|
67
75
|
|
68
76
|
def terminate(keep_ansi)
|
@@ -76,7 +84,7 @@ module Aruba
|
|
76
84
|
private
|
77
85
|
|
78
86
|
def wait_for_io(&block)
|
79
|
-
sleep @io_wait if @process
|
87
|
+
sleep @io_wait if @process
|
80
88
|
yield
|
81
89
|
end
|
82
90
|
|
data/spec/aruba/api_spec.rb
CHANGED
@@ -19,10 +19,14 @@ describe Aruba::Api do
|
|
19
19
|
@file_name = "test.txt"
|
20
20
|
@file_size = 256
|
21
21
|
@file_path = File.join(@aruba.current_dir, @file_name)
|
22
|
-
@directory_name = 'test_dir'
|
23
|
-
@directory_path = File.join(@aruba.current_dir, @directory_name)
|
24
22
|
|
25
|
-
|
23
|
+
(@aruba.dirs.length-1).times do |depth| #Ensure all parent dirs exists
|
24
|
+
dir = File.join(*@aruba.dirs[0..depth])
|
25
|
+
Dir.mkdir(dir) unless File.exist?(dir)
|
26
|
+
end
|
27
|
+
raise "We must work with relative paths, everything else is dangerous" if ?/ == @aruba.current_dir[0]
|
28
|
+
FileUtils.rm_rf(@aruba.current_dir)
|
29
|
+
Dir.mkdir(@aruba.current_dir)
|
26
30
|
end
|
27
31
|
|
28
32
|
describe 'current_dir' do
|
@@ -33,6 +37,11 @@ describe Aruba::Api do
|
|
33
37
|
|
34
38
|
describe 'directories' do
|
35
39
|
context 'delete directory' do
|
40
|
+
before(:each) do
|
41
|
+
@directory_name = 'test_dir'
|
42
|
+
@directory_path = File.join(@aruba.current_dir, @directory_name)
|
43
|
+
Dir.mkdir(@directory_path)
|
44
|
+
end
|
36
45
|
it 'should delete directory' do
|
37
46
|
@aruba.remove_dir(@directory_name)
|
38
47
|
File.exist?(@directory_path).should == false
|
@@ -57,7 +66,9 @@ describe Aruba::Api do
|
|
57
66
|
@aruba.write_fixed_size_file(@file_name, @file_size)
|
58
67
|
lambda { @aruba.check_file_size([[@file_name, @file_size + 1]]) }.should raise_error
|
59
68
|
end
|
60
|
-
|
69
|
+
end
|
70
|
+
context 'existing' do
|
71
|
+
before(:each) { File.open(@file_path, 'w') { |f| f << "" } }
|
61
72
|
it "should delete file" do
|
62
73
|
@aruba.remove_file(@file_name)
|
63
74
|
File.exist?(@file_path).should == false
|
@@ -67,12 +78,12 @@ describe Aruba::Api do
|
|
67
78
|
|
68
79
|
describe 'tags' do
|
69
80
|
describe '@announce_stdout' do
|
70
|
-
|
81
|
+
after(:each){@aruba.stop_processes!}
|
71
82
|
context 'enabled' do
|
72
83
|
it "should announce to stdout exactly once" do
|
73
84
|
@aruba.should_receive(:announce_or_puts).once
|
74
85
|
@aruba.set_tag(:announce_stdout, true)
|
75
|
-
@aruba.run_simple(
|
86
|
+
@aruba.run_simple('echo "hello world"', false)
|
76
87
|
@aruba.all_output.should match(/hello world/)
|
77
88
|
end
|
78
89
|
end
|
@@ -81,7 +92,7 @@ describe Aruba::Api do
|
|
81
92
|
it "should not announce to stdout" do
|
82
93
|
@aruba.should_not_receive(:announce_or_puts)
|
83
94
|
@aruba.set_tag(:announce_stdout, false)
|
84
|
-
@aruba.run_simple(
|
95
|
+
@aruba.run_simple('echo "hello world"', false)
|
85
96
|
@aruba.all_output.should match(/hello world/)
|
86
97
|
end
|
87
98
|
end
|
@@ -122,9 +133,8 @@ describe Aruba::Api do
|
|
122
133
|
end #with_file_content
|
123
134
|
|
124
135
|
describe "#assert_not_matching_output" do
|
125
|
-
before
|
126
|
-
|
127
|
-
end
|
136
|
+
before(:each){ @aruba.run_simple("echo foo", false) }
|
137
|
+
after(:each){ @aruba.stop_processes! }
|
128
138
|
|
129
139
|
it "passes when the output doesn't match a regexp" do
|
130
140
|
@aruba.assert_not_matching_output "bar", @aruba.all_output
|
@@ -136,4 +146,20 @@ describe Aruba::Api do
|
|
136
146
|
end
|
137
147
|
end
|
138
148
|
|
149
|
+
describe "#run_interactive" do
|
150
|
+
before(:each){@aruba.run_interactive "cat"}
|
151
|
+
after(:each){@aruba.stop_processes!}
|
152
|
+
it "respond to input" do
|
153
|
+
@aruba.type "Hello"
|
154
|
+
@aruba.type ""
|
155
|
+
@aruba.all_output.should == "Hello\n"
|
156
|
+
end
|
157
|
+
|
158
|
+
it "respond to eot" do
|
159
|
+
@aruba.type "Hello"
|
160
|
+
@aruba.eot
|
161
|
+
@aruba.all_output.should == "Hello\n"
|
162
|
+
end
|
163
|
+
end
|
164
|
+
|
139
165
|
end # Aruba::Api
|
data/spec/aruba/process_spec.rb
CHANGED
@@ -3,7 +3,7 @@ require 'aruba/process'
|
|
3
3
|
module Aruba
|
4
4
|
describe Process do
|
5
5
|
|
6
|
-
let(:process) { Process.new('echo "yo"', 0, 0.1) }
|
6
|
+
let(:process) { Process.new('echo "yo"', 0.1, 0.1) }
|
7
7
|
|
8
8
|
describe "#stdout" do
|
9
9
|
before { process.run! }
|
@@ -29,5 +29,15 @@ module Aruba
|
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
32
|
+
describe "#run!" do
|
33
|
+
context "upon process launch error" do
|
34
|
+
let(:process_failure) { Process.new('does_not_exists', 1, 1) }
|
35
|
+
|
36
|
+
it "raises a Aruba::LaunchError" do
|
37
|
+
lambda{process_failure.run!}.should raise_error(::Aruba::LaunchError)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
32
42
|
end
|
33
43
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aruba
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2012-
|
15
|
+
date: 2012-11-20 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: cucumber
|
@@ -35,33 +35,17 @@ dependencies:
|
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
none: false
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ~>
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.
|
40
|
+
version: 0.3.6
|
41
41
|
type: :runtime
|
42
42
|
prerelease: false
|
43
43
|
version_requirements: !ruby/object:Gem::Requirement
|
44
44
|
none: false
|
45
45
|
requirements:
|
46
|
-
- -
|
46
|
+
- - ~>
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
version: 0.
|
49
|
-
- !ruby/object:Gem::Dependency
|
50
|
-
name: ffi
|
51
|
-
requirement: !ruby/object:Gem::Requirement
|
52
|
-
none: false
|
53
|
-
requirements:
|
54
|
-
- - ! '>='
|
55
|
-
- !ruby/object:Gem::Version
|
56
|
-
version: 1.0.11
|
57
|
-
type: :runtime
|
58
|
-
prerelease: false
|
59
|
-
version_requirements: !ruby/object:Gem::Requirement
|
60
|
-
none: false
|
61
|
-
requirements:
|
62
|
-
- - ! '>='
|
63
|
-
- !ruby/object:Gem::Version
|
64
|
-
version: 1.0.11
|
48
|
+
version: 0.3.6
|
65
49
|
- !ruby/object:Gem::Dependency
|
66
50
|
name: rspec-expectations
|
67
51
|
requirement: !ruby/object:Gem::Requirement
|
@@ -192,6 +176,8 @@ files:
|
|
192
176
|
ZmVhdHVyZXMvc3RlcF9kZWZpbml0aW9ucy9hcnViYV9kZXZfc3RlcHMucmI=
|
193
177
|
- !binary |-
|
194
178
|
ZmVhdHVyZXMvc3VwcG9ydC9lbnYucmI=
|
179
|
+
- !binary |-
|
180
|
+
ZmVhdHVyZXMvc3VwcG9ydC9qcnVieS5yYg==
|
195
181
|
- !binary |-
|
196
182
|
bGliL2FydWJhLnJi
|
197
183
|
- !binary |-
|
@@ -202,6 +188,8 @@ files:
|
|
202
188
|
bGliL2FydWJhL2N1Y3VtYmVyLnJi
|
203
189
|
- !binary |-
|
204
190
|
bGliL2FydWJhL2N1Y3VtYmVyL2hvb2tzLnJi
|
191
|
+
- !binary |-
|
192
|
+
bGliL2FydWJhL2Vycm9ycy5yYg==
|
205
193
|
- !binary |-
|
206
194
|
bGliL2FydWJhL2pydWJ5LnJi
|
207
195
|
- !binary |-
|
@@ -259,7 +247,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
259
247
|
version: '0'
|
260
248
|
segments:
|
261
249
|
- 0
|
262
|
-
hash:
|
250
|
+
hash: 1656561211491698914
|
263
251
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
264
252
|
none: false
|
265
253
|
requirements:
|
@@ -268,13 +256,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
268
256
|
version: '0'
|
269
257
|
segments:
|
270
258
|
- 0
|
271
|
-
hash:
|
259
|
+
hash: 1656561211491698914
|
272
260
|
requirements: []
|
273
261
|
rubyforge_project:
|
274
262
|
rubygems_version: 1.8.24
|
275
263
|
signing_key:
|
276
264
|
specification_version: 3
|
277
|
-
summary: aruba-0.5.
|
265
|
+
summary: aruba-0.5.1
|
278
266
|
test_files:
|
279
267
|
- !binary |-
|
280
268
|
ZmVhdHVyZXMvYmVmb3JlX2NtZF9ob29rcy5mZWF0dXJl
|
@@ -294,6 +282,8 @@ test_files:
|
|
294
282
|
ZmVhdHVyZXMvc3RlcF9kZWZpbml0aW9ucy9hcnViYV9kZXZfc3RlcHMucmI=
|
295
283
|
- !binary |-
|
296
284
|
ZmVhdHVyZXMvc3VwcG9ydC9lbnYucmI=
|
285
|
+
- !binary |-
|
286
|
+
ZmVhdHVyZXMvc3VwcG9ydC9qcnVieS5yYg==
|
297
287
|
- !binary |-
|
298
288
|
c3BlYy9hcnViYS9hcGlfc3BlYy5yYg==
|
299
289
|
- !binary |-
|