aruba 0.14.2 → 0.14.3
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/.travis.yml +5 -1
- data/Gemfile +6 -0
- data/History.md +14 -57
- data/Rakefile +2 -3
- data/aruba.gemspec +1 -1
- data/features/getting_started/run_commands.feature +10 -0
- data/features/hooks/after/command.feature +2 -0
- data/features/hooks/before/command.feature +4 -0
- data/features/step_definitions/hooks.rb +60 -0
- data/features/steps/command/output.feature +2 -23
- data/features/steps/command/shell.feature +2 -2
- data/features/steps/overview.feature +1 -36
- data/lib/aruba/api/command.rb +1 -0
- data/lib/aruba/command.rb +2 -0
- data/lib/aruba/cucumber/command.rb +3 -3
- data/lib/aruba/cucumber/hooks.rb +1 -2
- data/lib/aruba/platforms/windows_command_string.rb +2 -1
- data/lib/aruba/processes/spawn_process.rb +9 -2
- data/lib/aruba/rspec.rb +0 -1
- data/lib/aruba/version.rb +1 -1
- data/spec/aruba/api/deprecated_spec.rb +308 -0
- data/spec/aruba/api/environment/restore_env_spec.rb +21 -0
- data/spec/aruba/api/environment/set_env_spec.rb +4 -0
- data/spec/aruba/api/filesystem/file_size_spec.rb +1 -1
- data/spec/aruba/api_spec.rb +16 -286
- data/spec/aruba/matchers/command_spec.rb +3 -3
- data/spec/aruba/matchers/deprecated_spec.rb +39 -0
- data/spec/aruba/matchers/directory_spec.rb +2 -2
- data/spec/aruba/matchers/path_spec.rb +2 -32
- data/spec/support/shared_contexts/aruba.rb +1 -0
- metadata +9 -159
- data/features/development/test.feature +0 -24
@@ -30,7 +30,7 @@ When(/^I successfully run `(.*?)`(?: for up to (\d+) seconds)?$/)do |cmd, secs|
|
|
30
30
|
end
|
31
31
|
|
32
32
|
When(/^I run the following (?:commands|script)(?: (?:with|in) `([^`]+)`)?:$/) do |shell, commands|
|
33
|
-
prepend_environment_variable('PATH', expand_path('bin') +
|
33
|
+
prepend_environment_variable('PATH', expand_path('bin') + File::PATH_SEPARATOR)
|
34
34
|
|
35
35
|
Aruba.platform.mkdir(expand_path('bin'))
|
36
36
|
shell ||= Aruba.platform.default_shell
|
@@ -153,7 +153,7 @@ When(/^I wait for (?:output|stdout) to contain "([^"]*)"$/) do |expected|
|
|
153
153
|
end
|
154
154
|
|
155
155
|
Then(/^the output should be (\d+) bytes long$/) do |size|
|
156
|
-
expect(
|
156
|
+
expect(last_command_started.output).to have_output_size size.to_i
|
157
157
|
end
|
158
158
|
|
159
159
|
Then(/^(?:the )?(output|stderr|stdout)(?: from "([^"]*)")? should( not)? contain( exactly)? "([^"]*)"$/) do |channel, cmd, negated, exactly, expected|
|
@@ -418,5 +418,5 @@ When(/^I send the signal "([^"]*)" to the command (?:"([^"]*)"|(?:started last))
|
|
418
418
|
end
|
419
419
|
|
420
420
|
Given(/^I look for executables in "(.*)" within the current directory$/) do |directory|
|
421
|
-
prepend_environment_variable 'PATH', expand_path(directory) +
|
421
|
+
prepend_environment_variable 'PATH', expand_path(directory) + File::PATH_SEPARATOR
|
422
422
|
end
|
data/lib/aruba/cucumber/hooks.rb
CHANGED
@@ -11,12 +11,11 @@ end
|
|
11
11
|
|
12
12
|
Before do
|
13
13
|
# ... so every change needs to be done later
|
14
|
-
prepend_environment_variable 'PATH', aruba.config.command_search_paths.join(
|
14
|
+
prepend_environment_variable 'PATH', aruba.config.command_search_paths.join(File::PATH_SEPARATOR) + File::PATH_SEPARATOR
|
15
15
|
set_environment_variable 'HOME', aruba.config.home_directory
|
16
16
|
end
|
17
17
|
|
18
18
|
After do
|
19
|
-
restore_env
|
20
19
|
terminate_all_commands
|
21
20
|
aruba.command_monitor.clear
|
22
21
|
end
|
@@ -64,6 +64,9 @@ module Aruba
|
|
64
64
|
@stdout_file.sync = true
|
65
65
|
@stderr_file.sync = true
|
66
66
|
|
67
|
+
@stdout_file.binmode
|
68
|
+
@stderr_file.binmode
|
69
|
+
|
67
70
|
@exit_status = nil
|
68
71
|
@duplex = true
|
69
72
|
|
@@ -92,7 +95,7 @@ module Aruba
|
|
92
95
|
end
|
93
96
|
# rubocop:disable Metrics/MethodLength
|
94
97
|
|
95
|
-
# Access to
|
98
|
+
# Access to stdin of process
|
96
99
|
def stdin
|
97
100
|
return if @process.exited?
|
98
101
|
|
@@ -271,7 +274,11 @@ module Aruba
|
|
271
274
|
data = file.read
|
272
275
|
file.close
|
273
276
|
|
274
|
-
|
277
|
+
if RUBY_VERSION >= '1.9'
|
278
|
+
data.force_encoding('UTF-8')
|
279
|
+
else
|
280
|
+
data
|
281
|
+
end
|
275
282
|
end
|
276
283
|
end
|
277
284
|
end
|
data/lib/aruba/rspec.rb
CHANGED
data/lib/aruba/version.rb
CHANGED
@@ -0,0 +1,308 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe 'Deprecated API' do
|
4
|
+
include_context 'uses aruba API'
|
5
|
+
|
6
|
+
around do |example|
|
7
|
+
Aruba.platform.with_environment do
|
8
|
+
example.run
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
before do
|
13
|
+
allow(Aruba.platform).to receive(:deprecated)
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "#assert_not_matching_output" do
|
17
|
+
before(:each){ @aruba.run_simple("echo foo", false) }
|
18
|
+
after(:each) { @aruba.all_commands.each(&:stop) }
|
19
|
+
|
20
|
+
it "passes when the output doesn't match a regexp" do
|
21
|
+
@aruba.assert_not_matching_output "bar", @aruba.all_output
|
22
|
+
end
|
23
|
+
it "fails when the output does match a regexp" do
|
24
|
+
expect do
|
25
|
+
@aruba.assert_not_matching_output "foo", @aruba.all_output
|
26
|
+
end . to raise_error RSpec::Expectations::ExpectationNotMetError
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe '#filesystem_permissions' do
|
31
|
+
def actual_permissions
|
32
|
+
format( "%o" , File::Stat.new(file_path).mode )[-4,4]
|
33
|
+
end
|
34
|
+
|
35
|
+
let(:file_name) { @file_name }
|
36
|
+
let(:file_path) { @file_path }
|
37
|
+
let(:permissions) { '0655' }
|
38
|
+
|
39
|
+
before :each do
|
40
|
+
@aruba.set_environment_variable 'HOME', File.expand_path(@aruba.aruba.current_directory)
|
41
|
+
end
|
42
|
+
|
43
|
+
before(:each) do
|
44
|
+
File.open(file_path, 'w') { |f| f << "" }
|
45
|
+
end
|
46
|
+
|
47
|
+
before(:each) do
|
48
|
+
@aruba.filesystem_permissions(permissions, file_name)
|
49
|
+
end
|
50
|
+
|
51
|
+
context 'when file exists' do
|
52
|
+
context 'and permissions are given as string' do
|
53
|
+
it { expect(actual_permissions).to eq('0655') }
|
54
|
+
end
|
55
|
+
|
56
|
+
context 'and permissions are given as octal number' do
|
57
|
+
let(:permissions) { 0655 }
|
58
|
+
it { expect(actual_permissions).to eq('0655') }
|
59
|
+
end
|
60
|
+
|
61
|
+
context 'and path has ~ in it' do
|
62
|
+
let(:path) { random_string }
|
63
|
+
let(:file_name) { File.join('~', path) }
|
64
|
+
let(:file_path) { File.join(@aruba.aruba.current_directory, path) }
|
65
|
+
|
66
|
+
it { expect(actual_permissions).to eq('0655') }
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
describe '#check_filesystem_permissions' do
|
72
|
+
let(:file_name) { @file_name }
|
73
|
+
let(:file_path) { @file_path }
|
74
|
+
|
75
|
+
let(:permissions) { '0655' }
|
76
|
+
|
77
|
+
before :each do
|
78
|
+
@aruba.set_environment_variable 'HOME', File.expand_path(@aruba.aruba.current_directory)
|
79
|
+
end
|
80
|
+
|
81
|
+
before(:each) do
|
82
|
+
File.open(file_path, 'w') { |f| f << "" }
|
83
|
+
end
|
84
|
+
|
85
|
+
before(:each) do
|
86
|
+
@aruba.filesystem_permissions(permissions, file_name)
|
87
|
+
end
|
88
|
+
|
89
|
+
context 'when file exists' do
|
90
|
+
context 'and should have permissions' do
|
91
|
+
context 'and permissions are given as string' do
|
92
|
+
it { @aruba.check_filesystem_permissions(permissions, file_name, true) }
|
93
|
+
end
|
94
|
+
|
95
|
+
context 'and permissions are given as octal number' do
|
96
|
+
let(:permissions) { 0666 }
|
97
|
+
|
98
|
+
it { @aruba.check_filesystem_permissions(permissions, file_name, true) }
|
99
|
+
end
|
100
|
+
|
101
|
+
context 'and path includes ~' do
|
102
|
+
let(:string) { random_string }
|
103
|
+
let(:file_name) { File.join('~', string) }
|
104
|
+
let(:file_path) { File.join(@aruba.aruba.current_directory, string) }
|
105
|
+
|
106
|
+
it { @aruba.check_filesystem_permissions(permissions, file_name, true) }
|
107
|
+
end
|
108
|
+
|
109
|
+
context 'but fails because the permissions are different' do
|
110
|
+
let(:expected_permissions) { 0666 }
|
111
|
+
|
112
|
+
it { expect { @aruba.check_filesystem_permissions(expected_permissions, file_name, true) }.to raise_error RSpec::Expectations::ExpectationNotMetError }
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
context 'and should not have permissions' do
|
117
|
+
context 'and succeeds when the difference is expected and permissions are different' do
|
118
|
+
let(:different_permissions) { 0666 }
|
119
|
+
|
120
|
+
it { @aruba.check_filesystem_permissions(different_permissions, file_name, false) }
|
121
|
+
end
|
122
|
+
|
123
|
+
context 'and fails because the permissions are the same although they should be different' do
|
124
|
+
let(:different_permissions) { 0655 }
|
125
|
+
|
126
|
+
it { expect { @aruba.check_filesystem_permissions(different_permissions, file_name, false) }.to raise_error RSpec::Expectations::ExpectationNotMetError }
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
context '#check_file_presence' do
|
133
|
+
before(:each) { File.open(@file_path, 'w') { |f| f << "" } }
|
134
|
+
|
135
|
+
it "should check existence using plain match" do
|
136
|
+
file_name = 'nested/dir/hello_world.txt'
|
137
|
+
file_path = File.join(@aruba.aruba.current_directory, file_name)
|
138
|
+
|
139
|
+
Aruba.platform.mkdir(File.dirname(file_path))
|
140
|
+
File.open(file_path, 'w') { |f| f << "" }
|
141
|
+
|
142
|
+
@aruba.check_file_presence(file_name)
|
143
|
+
@aruba.check_file_presence([file_name])
|
144
|
+
@aruba.check_file_presence([file_name], true)
|
145
|
+
@aruba.check_file_presence(['asdf'], false)
|
146
|
+
end
|
147
|
+
|
148
|
+
it "should check existence using regex" do
|
149
|
+
file_name = 'nested/dir/hello_world.txt'
|
150
|
+
file_path = File.join(@aruba.aruba.current_directory, file_name)
|
151
|
+
|
152
|
+
Aruba.platform.mkdir(File.dirname(file_path))
|
153
|
+
File.open(file_path, 'w') { |f| f << "" }
|
154
|
+
|
155
|
+
@aruba.check_file_presence([ /test123/ ], false )
|
156
|
+
@aruba.check_file_presence([ /hello_world.txt$/ ], true )
|
157
|
+
@aruba.check_file_presence([ /dir/ ], true )
|
158
|
+
@aruba.check_file_presence([ %r{nested/.+/} ], true )
|
159
|
+
end
|
160
|
+
|
161
|
+
it "is no problem to mix both" do
|
162
|
+
file_name = 'nested/dir/hello_world.txt'
|
163
|
+
file_path = File.join(@aruba.aruba.current_directory, file_name)
|
164
|
+
|
165
|
+
Aruba.platform.mkdir(File.dirname(file_path))
|
166
|
+
File.open(file_path, 'w') { |f| f << "" }
|
167
|
+
|
168
|
+
@aruba.check_file_presence([ file_name, /nested/ ], true )
|
169
|
+
@aruba.check_file_presence([ /test123/, 'asdf' ], false )
|
170
|
+
end
|
171
|
+
|
172
|
+
it "works with ~ in path name" do
|
173
|
+
file_path = File.join('~', random_string)
|
174
|
+
|
175
|
+
@aruba.with_environment 'HOME' => File.expand_path(@aruba.aruba.current_directory) do
|
176
|
+
Aruba.platform.mkdir(File.dirname(File.expand_path(file_path)))
|
177
|
+
File.open(File.expand_path(file_path), 'w') { |f| f << "" }
|
178
|
+
|
179
|
+
@aruba.check_file_presence( [ file_path ], true )
|
180
|
+
end
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
184
|
+
context "check file content" do
|
185
|
+
before :example do
|
186
|
+
@aruba.write_file(@file_name, "foo bar baz")
|
187
|
+
end
|
188
|
+
|
189
|
+
describe "#check_binary_file_content" do
|
190
|
+
let(:file_name) { @file_name }
|
191
|
+
let(:file_path) { @file_path }
|
192
|
+
|
193
|
+
let(:reference_file) { 'fixture' }
|
194
|
+
let(:reference_file_content) { 'foo bar baz' }
|
195
|
+
|
196
|
+
before :each do
|
197
|
+
@aruba.write_file(reference_file, reference_file_content)
|
198
|
+
end
|
199
|
+
|
200
|
+
context 'when files are the same' do
|
201
|
+
context 'and this is expected' do
|
202
|
+
it { @aruba.check_binary_file_content(file_name, reference_file) }
|
203
|
+
it { @aruba.check_binary_file_content(file_name, reference_file, true) }
|
204
|
+
end
|
205
|
+
|
206
|
+
context 'and this is not expected' do
|
207
|
+
it { expect { @aruba.check_binary_file_content(file_name, reference_file, false) }.to raise_error RSpec::Expectations::ExpectationNotMetError }
|
208
|
+
end
|
209
|
+
end
|
210
|
+
|
211
|
+
context 'when files are not the same' do
|
212
|
+
let(:reference_file_content) { 'bar' }
|
213
|
+
|
214
|
+
context 'and this is expected' do
|
215
|
+
it { @aruba.check_binary_file_content(file_name, reference_file, false) }
|
216
|
+
end
|
217
|
+
|
218
|
+
context 'and this is not expected' do
|
219
|
+
it { expect { @aruba.check_binary_file_content(file_name, reference_file, true) }.to raise_error RSpec::Expectations::ExpectationNotMetError }
|
220
|
+
end
|
221
|
+
end
|
222
|
+
end
|
223
|
+
|
224
|
+
context "#check_file_content" do
|
225
|
+
context "with regexp" do
|
226
|
+
let(:matching_content){/bar/}
|
227
|
+
let(:non_matching_content){/nothing/}
|
228
|
+
it "succeeds if file content matches" do
|
229
|
+
@aruba.check_file_content(@file_name, matching_content)
|
230
|
+
@aruba.check_file_content(@file_name, matching_content, true)
|
231
|
+
end
|
232
|
+
|
233
|
+
it "succeeds if file content does not match" do
|
234
|
+
@aruba.check_file_content(@file_name, non_matching_content, false)
|
235
|
+
end
|
236
|
+
|
237
|
+
it "works with ~ in path name" do
|
238
|
+
file_path = File.join('~', random_string)
|
239
|
+
|
240
|
+
@aruba.with_environment 'HOME' => File.expand_path(aruba.current_directory) do
|
241
|
+
@aruba.write_file(file_path, "foo bar baz")
|
242
|
+
@aruba.check_file_content(file_path, non_matching_content, false)
|
243
|
+
end
|
244
|
+
end
|
245
|
+
end
|
246
|
+
context "with string" do
|
247
|
+
let(:matching_content){"foo bar baz"}
|
248
|
+
let(:non_matching_content){"bar"}
|
249
|
+
it "succeeds if file content matches" do
|
250
|
+
@aruba.check_file_content(@file_name, matching_content)
|
251
|
+
@aruba.check_file_content(@file_name, matching_content, true)
|
252
|
+
end
|
253
|
+
|
254
|
+
it "succeeds if file content does not match" do
|
255
|
+
@aruba.check_file_content(@file_name, non_matching_content, false)
|
256
|
+
end
|
257
|
+
|
258
|
+
it "works with ~ in path name" do
|
259
|
+
file_path = File.join('~', random_string)
|
260
|
+
|
261
|
+
@aruba.with_environment 'HOME' => File.expand_path(aruba.current_directory) do
|
262
|
+
@aruba.write_file(file_path, "foo bar baz")
|
263
|
+
@aruba.check_file_content(file_path, non_matching_content, false)
|
264
|
+
end
|
265
|
+
end
|
266
|
+
end
|
267
|
+
end
|
268
|
+
end
|
269
|
+
|
270
|
+
context '#check_file_size' do
|
271
|
+
it "should check an existing file size" do
|
272
|
+
@aruba.write_fixed_size_file(@file_name, @file_size)
|
273
|
+
@aruba.check_file_size([[@file_name, @file_size]])
|
274
|
+
end
|
275
|
+
|
276
|
+
it "should check an existing file size and fail" do
|
277
|
+
@aruba.write_fixed_size_file(@file_name, @file_size)
|
278
|
+
expect { @aruba.check_file_size([[@file_name, @file_size + 1]]) }.to raise_error RSpec::Expectations::ExpectationNotMetError
|
279
|
+
end
|
280
|
+
|
281
|
+
it "works with ~ in path name" do
|
282
|
+
file_path = File.join('~', random_string)
|
283
|
+
|
284
|
+
@aruba.with_environment 'HOME' => File.expand_path(aruba.current_directory) do
|
285
|
+
@aruba.write_fixed_size_file(file_path, @file_size)
|
286
|
+
@aruba.check_file_size([[file_path, @file_size]])
|
287
|
+
end
|
288
|
+
end
|
289
|
+
|
290
|
+
it "should check an existing file size and fail" do
|
291
|
+
@aruba.write_fixed_size_file(@file_name, @file_size)
|
292
|
+
expect { @aruba.check_file_size([[@file_name, @file_size + 1]]) }.to raise_error RSpec::Expectations::ExpectationNotMetError
|
293
|
+
end
|
294
|
+
end
|
295
|
+
|
296
|
+
describe "#get_process" do
|
297
|
+
before(:each){@aruba.run_simple "true"}
|
298
|
+
after(:each) { @aruba.all_commands.each(&:stop) }
|
299
|
+
|
300
|
+
it "returns a process" do
|
301
|
+
expect(@aruba.get_process("true")).not_to be(nil)
|
302
|
+
end
|
303
|
+
|
304
|
+
it "raises a descriptive exception" do
|
305
|
+
expect { @aruba.get_process("false") }.to raise_error CommandNotFoundError, "No command named 'false' has been started"
|
306
|
+
end
|
307
|
+
end
|
308
|
+
end
|
@@ -9,6 +9,10 @@ RSpec.describe 'Command Environment' do
|
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
12
|
+
before do
|
13
|
+
allow(Aruba.platform).to receive(:deprecated)
|
14
|
+
end
|
15
|
+
|
12
16
|
describe '#restore_env' do
|
13
17
|
context 'when non-existing variable' do
|
14
18
|
before :each do
|
@@ -62,4 +66,21 @@ RSpec.describe 'Command Environment' do
|
|
62
66
|
end
|
63
67
|
end
|
64
68
|
end
|
69
|
+
|
70
|
+
describe "#restore_env" do
|
71
|
+
after(:each) { @aruba.all_commands.each(&:stop) }
|
72
|
+
it "restores environment variable" do
|
73
|
+
@aruba.set_env 'LONG_LONG_ENV_VARIABLE', 'true'
|
74
|
+
@aruba.restore_env
|
75
|
+
@aruba.run "env"
|
76
|
+
expect(@aruba.all_output).not_to include("LONG_LONG_ENV_VARIABLE")
|
77
|
+
end
|
78
|
+
it "restores environment variable that has been set multiple times" do
|
79
|
+
@aruba.set_env 'LONG_LONG_ENV_VARIABLE', 'true'
|
80
|
+
@aruba.set_env 'LONG_LONG_ENV_VARIABLE', 'false'
|
81
|
+
@aruba.restore_env
|
82
|
+
@aruba.run "env"
|
83
|
+
expect(@aruba.all_output).not_to include("LONG_LONG_ENV_VARIABLE")
|
84
|
+
end
|
85
|
+
end
|
65
86
|
end
|