aruba 0.9.0.pre → 0.9.0.pre2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +8 -3
- data/History.md +61 -19
- data/README.md +10 -6
- data/TODO.md +6 -1
- data/cucumber.yml +10 -6
- data/features/.nav +72 -0
- data/features/announce.feature +203 -0
- data/features/api/command/extract_text.feature +10 -0
- data/features/api/command/run.feature +6 -6
- data/features/api/command/stop_all_commands.feature +53 -0
- data/features/api/command/terminate_all_commands.feature +53 -0
- data/features/api/command/unescape_text.feature +12 -0
- data/features/api/command/which.feature +3 -3
- data/features/api/core/expand_path.feature +4 -4
- data/features/api/environment/append_environment_variable.feature +18 -8
- data/features/api/environment/prepend_environment_variable.feature +18 -8
- data/features/api/environment/set_environment_variable.feature +33 -16
- data/features/api/filesystem/cd.feature +23 -13
- data/features/api/filesystem/create_directory.feature +2 -2
- data/features/api/filesystem/disk_usage.feature +7 -6
- data/features/api/filesystem/does_exist.feature +2 -2
- data/features/api/filesystem/is_absolute.feature +2 -2
- data/features/api/filesystem/is_directory.feature +2 -2
- data/features/api/filesystem/is_file.feature +2 -2
- data/features/api/filesystem/is_relative.feature +2 -2
- data/features/api/filesystem/move.feature +119 -0
- data/features/cli/console.feature +3 -3
- data/features/commands/debug_command.feature +93 -0
- data/features/commands/environment_variables.feature +64 -0
- data/features/commands/flushing.feature +74 -0
- data/features/commands/interactive.feature +90 -0
- data/features/commands/output/all_output.feature +445 -0
- data/features/commands/output/stdout.feature +66 -0
- data/features/configuration/exit_timeout.feature +5 -5
- data/features/configuration/fixtures_directories.feature +3 -3
- data/features/configuration/fixtures_path_prefix.feature +1 -1
- data/features/configuration/home_directory.feature +4 -4
- data/features/configuration/io_timeout.feature +2 -2
- data/features/configuration/keep_ansi.feature +2 -2
- data/features/configuration/log_level.feature +3 -3
- data/features/configuration/physical_block_size.feature +3 -3
- data/features/configuration/usage.feature +159 -0
- data/features/core/cleanup_aruba_directory.feature +52 -0
- data/features/development/build.feature +16 -0
- data/features/development/test.feature +24 -0
- data/features/file_system_commands.feature +12 -12
- data/features/getting_started/supported_programming_languages.feature +89 -0
- data/features/hooks/after/command.feature +1 -1
- data/features/hooks/before/command.feature +2 -2
- data/features/matchers/collection/include_an_object.feature +72 -0
- data/features/matchers/timeouts.feature +2 -2
- data/features/output.feature +60 -181
- data/features/step_definitions/aruba_dev_steps.rb +17 -10
- data/features/step_definitions/hooks.rb +11 -0
- data/features/steps/commands/exit_statuses.feature +3 -3
- data/features/steps/commands/run.feature +0 -15
- data/features/steps/filesystem/copy.feature +45 -0
- data/features/steps/filesystem/create_directory.feature +47 -0
- data/features/steps/filesystem/create_file.feature +53 -0
- data/features/steps/filesystem/file_content.feature +1 -1
- data/features/steps/filesystem/move.feature +45 -0
- data/features/steps/filesystem/overwrite_file.feature +72 -0
- data/features/steps/filesystem/use_fixture.feature +77 -0
- data/features/usage/install.feature +8 -0
- data/{features/fixtures → fixtures}/cli-app/.gitignore +0 -0
- data/{features/fixtures → fixtures}/cli-app/.rspec +0 -0
- data/{features/fixtures → fixtures}/cli-app/README.md +0 -0
- data/{features/fixtures → fixtures}/cli-app/Rakefile +0 -0
- data/{features/fixtures → fixtures}/cli-app/bin/cli +0 -0
- data/{features/fixtures → fixtures}/cli-app/cli-app.gemspec +0 -0
- data/{features/fixtures → fixtures}/cli-app/features/support/env.rb +0 -0
- data/{features/fixtures → fixtures}/cli-app/lib/cli/app.rb +0 -0
- data/fixtures/cli-app/lib/cli/app/suppress_simple_cov_output.rb +15 -0
- data/{features/fixtures → fixtures}/cli-app/lib/cli/app/version.rb +0 -0
- data/{features/fixtures/empty-app → fixtures/cli-app}/script/console +3 -3
- data/{features/fixtures → fixtures}/cli-app/spec/spec_helper.rb +0 -0
- data/{features/fixtures → fixtures}/cli-app/spec/support/aruba.rb +0 -0
- data/{features/fixtures → fixtures}/copy/file.txt +0 -0
- data/{features/fixtures → fixtures}/empty-app/.gitignore +0 -0
- data/{features/fixtures → fixtures}/empty-app/.rspec +0 -0
- data/{features/fixtures → fixtures}/empty-app/README.md +0 -0
- data/{features/fixtures → fixtures}/empty-app/Rakefile +0 -0
- data/{features/fixtures → fixtures}/empty-app/bin/cli +0 -0
- data/{features/fixtures → fixtures}/empty-app/cli-app.gemspec +0 -0
- data/{features/fixtures → fixtures}/empty-app/lib/cli/app.rb +0 -0
- data/{features/fixtures → fixtures}/empty-app/lib/cli/app/version.rb +0 -0
- data/{features/fixtures/cli-app → fixtures/empty-app}/script/console +3 -3
- data/{features/fixtures → fixtures}/empty-app/spec/spec_helper.rb +0 -0
- data/{features/fixtures → fixtures}/fixtures-app/test.txt +0 -0
- data/fixtures/getting-started-app/.gitignore +4 -0
- data/fixtures/getting-started-app/Gemfile +4 -0
- data/fixtures/getting-started-app/README.md +3 -0
- data/fixtures/getting-started-app/features/support/env.rb +1 -0
- data/{features/fixtures → fixtures}/spawn_process/stderr.sh +0 -0
- data/lib/aruba/announcer.rb +6 -2
- data/lib/aruba/api.rb +0 -16
- data/lib/aruba/api/command.rb +64 -266
- data/lib/aruba/api/core.rb +24 -26
- data/lib/aruba/api/deprecated.rb +370 -12
- data/lib/aruba/api/filesystem.rb +64 -15
- data/lib/aruba/aruba_path.rb +4 -0
- data/lib/aruba/config.rb +1 -1
- data/lib/aruba/cucumber.rb +5 -449
- data/lib/aruba/cucumber/command.rb +378 -0
- data/lib/aruba/cucumber/core.rb +29 -0
- data/lib/aruba/cucumber/environment.rb +30 -0
- data/lib/aruba/cucumber/file.rb +210 -0
- data/lib/aruba/cucumber/hooks.rb +11 -14
- data/lib/aruba/cucumber/rvm.rb +3 -0
- data/lib/aruba/matchers/base/base_matcher.rb +94 -0
- data/lib/aruba/matchers/collection.rb +1 -0
- data/lib/aruba/matchers/collection/all_objects.rb +2 -0
- data/lib/aruba/matchers/collection/include_an_object.rb +120 -0
- data/lib/aruba/matchers/command/be_successfully_executed.rb +3 -3
- data/lib/aruba/matchers/command/have_exit_status.rb +2 -11
- data/lib/aruba/matchers/command/have_finished_in_time.rb +5 -5
- data/lib/aruba/matchers/command/have_output.rb +46 -0
- data/lib/aruba/matchers/command/have_output_on_stderr.rb +42 -0
- data/lib/aruba/matchers/command/have_output_on_stdout.rb +42 -0
- data/lib/aruba/matchers/command/have_output_size.rb +28 -0
- data/lib/aruba/matchers/directory/be_an_existing_directory.rb +1 -1
- data/lib/aruba/matchers/file/be_an_existing_file.rb +1 -1
- data/lib/aruba/matchers/file/have_file_content.rb +1 -1
- data/lib/aruba/matchers/file/have_file_size.rb +2 -2
- data/lib/aruba/matchers/file/have_same_file_content.rb +1 -1
- data/lib/aruba/matchers/path/have_permissions.rb +1 -1
- data/lib/aruba/platforms/aruba_file_creator.rb +2 -3
- data/lib/aruba/platforms/aruba_fixed_size_file_creator.rb +2 -3
- data/lib/aruba/platforms/determine_disk_usage.rb +23 -0
- data/lib/aruba/platforms/determine_file_size.rb +13 -0
- data/lib/aruba/platforms/disk_usage_calculator.rb +11 -0
- data/lib/aruba/platforms/local_environment.rb +15 -0
- data/lib/aruba/platforms/unix_environment_variables.rb +1 -1
- data/lib/aruba/platforms/unix_platform.rb +35 -14
- data/lib/aruba/process_monitor.rb +53 -7
- data/lib/aruba/processes/basic_process.rb +25 -5
- data/lib/aruba/processes/debug_process.rb +27 -25
- data/lib/aruba/processes/in_process.rb +7 -22
- data/lib/aruba/processes/spawn_process.rb +74 -31
- data/lib/aruba/rspec.rb +1 -6
- data/lib/aruba/version.rb +1 -1
- data/script/console +0 -1
- data/spec/aruba/api/environment/restore_env_spec.rb +65 -0
- data/spec/aruba/api/environment/set_env_spec.rb +42 -0
- data/spec/aruba/api/filesystem/file_size_spec.rb +28 -0
- data/spec/aruba/api_spec.rb +10 -7
- data/spec/aruba/matchers/command/have_output_size_spec.rb +25 -0
- data/spec/aruba/matchers/command_spec.rb +135 -4
- data/spec/aruba/spawn_process_spec.rb +1 -1
- metadata +107 -65
- data/.nav +0 -12
- data/features/debug.feature +0 -15
- data/features/fixtures/cli-app/spec/cli/app_spec.rb +0 -7
- data/features/flushing.feature +0 -26
- data/features/interactive.feature +0 -66
- data/features/no_clobber.feature +0 -25
- data/lib/aruba/disk_usage_calculator.rb +0 -7
data/lib/aruba/api/filesystem.rb
CHANGED
@@ -2,9 +2,6 @@ require 'aruba/platform'
|
|
2
2
|
|
3
3
|
require 'aruba/extensions/string/strip'
|
4
4
|
|
5
|
-
require 'aruba/platforms/aruba_file_creator'
|
6
|
-
require 'aruba/platforms/aruba_fixed_size_file_creator'
|
7
|
-
require 'aruba/disk_usage_calculator'
|
8
5
|
require 'aruba/aruba_path'
|
9
6
|
|
10
7
|
Aruba.platform.require_matching_files('../matchers/file/*.rb', __FILE__)
|
@@ -124,7 +121,7 @@ module Aruba
|
|
124
121
|
# @param [String] file_content
|
125
122
|
# The content which should be written to the file
|
126
123
|
def write_file(name, content)
|
127
|
-
|
124
|
+
Aruba.platform.create_file(expand_path(name), content, false)
|
128
125
|
|
129
126
|
self
|
130
127
|
end
|
@@ -190,6 +187,53 @@ module Aruba
|
|
190
187
|
end
|
191
188
|
# rubocop:enable Metrics/CyclomaticComplexity
|
192
189
|
|
190
|
+
# Move a file and/or directory
|
191
|
+
#
|
192
|
+
# @param [String, Array] source
|
193
|
+
# A single file or directory, multiple files or directories or multiple
|
194
|
+
# files and directories. If multiple sources are given the destination
|
195
|
+
# needs to be a directory
|
196
|
+
#
|
197
|
+
# @param [String] destination
|
198
|
+
# A file or directory name. If multiple sources are given the destination
|
199
|
+
# needs to be a directory
|
200
|
+
#
|
201
|
+
# rubocop:disable Metrics/CyclomaticComplexity
|
202
|
+
# rubocop:disable Metrics/MethodLength
|
203
|
+
def move(*args)
|
204
|
+
args = args.flatten
|
205
|
+
destination = args.pop
|
206
|
+
source = args
|
207
|
+
|
208
|
+
source.each do |s|
|
209
|
+
raise ArgumentError, "Using a fixture as source (#{source}) is not supported" if s.start_with? aruba.config.fixtures_path_prefix
|
210
|
+
end
|
211
|
+
|
212
|
+
raise ArgumentError, "Using a fixture as destination (#{destination}) is not supported" if destination.start_with? aruba.config.fixtures_path_prefix
|
213
|
+
|
214
|
+
source.each do |s|
|
215
|
+
raise ArgumentError, %(The following source "#{s}" does not exist.) unless exist? s
|
216
|
+
end
|
217
|
+
|
218
|
+
raise ArgumentError, "Multiple sources can only be copied to a directory" if source.count > 1 && exist?(destination) && !directory?(destination)
|
219
|
+
|
220
|
+
source_paths = source.map { |f| expand_path(f) }
|
221
|
+
destination_path = expand_path(destination)
|
222
|
+
|
223
|
+
if source_paths.count > 1
|
224
|
+
Aruba.platform.mkdir(destination_path)
|
225
|
+
else
|
226
|
+
Aruba.platform.mkdir(File.dirname(destination_path))
|
227
|
+
source_paths = source_paths.first
|
228
|
+
end
|
229
|
+
|
230
|
+
Aruba.platform.mv source_paths, destination_path
|
231
|
+
|
232
|
+
self
|
233
|
+
end
|
234
|
+
# rubocop:enable Metrics/MethodLength
|
235
|
+
# rubocop:enable Metrics/CyclomaticComplexity
|
236
|
+
|
193
237
|
# Create a file with the given size
|
194
238
|
#
|
195
239
|
# The method does not check if file already exists. If the file name is a
|
@@ -201,7 +245,7 @@ module Aruba
|
|
201
245
|
# @param [Integer] file_size
|
202
246
|
# The size of the file
|
203
247
|
def write_fixed_size_file(name, size)
|
204
|
-
|
248
|
+
Aruba.platform.create_fixed_size_file(expand_path(name), size, false)
|
205
249
|
|
206
250
|
self
|
207
251
|
end
|
@@ -212,7 +256,7 @@ module Aruba
|
|
212
256
|
# missing. If the file name is a path the method will create all neccessary
|
213
257
|
# directories.
|
214
258
|
def overwrite_file(name, content)
|
215
|
-
|
259
|
+
Aruba.platform.create_file(expand_path(name), content, true)
|
216
260
|
|
217
261
|
self
|
218
262
|
end
|
@@ -298,7 +342,7 @@ module Aruba
|
|
298
342
|
# @yield
|
299
343
|
# Pass the content of the given file to this block
|
300
344
|
def with_file_content(file, &block)
|
301
|
-
|
345
|
+
expect(file).to be_an_existing_path
|
302
346
|
|
303
347
|
content = read(file).join("\n")
|
304
348
|
|
@@ -316,14 +360,19 @@ module Aruba
|
|
316
360
|
# @result [FileSize]
|
317
361
|
# Bytes on disk
|
318
362
|
def disk_usage(*paths)
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
363
|
+
expect(paths.flatten).to all_objects be_an_existing_path
|
364
|
+
|
365
|
+
Aruba.platform.determine_disk_usage paths.flatten.map { |p| ArubaPath.new(expand_path(p)) }, aruba.config.physical_block_size
|
366
|
+
end
|
367
|
+
|
368
|
+
# Get size of file
|
369
|
+
#
|
370
|
+
# @return [Numeric]
|
371
|
+
# The size of the file
|
372
|
+
def file_size(name)
|
373
|
+
expect(name).to be_an_existing_file
|
374
|
+
|
375
|
+
Aruba.platform.determine_file_size expand_path(name)
|
327
376
|
end
|
328
377
|
end
|
329
378
|
end
|
data/lib/aruba/aruba_path.rb
CHANGED
data/lib/aruba/config.rb
CHANGED
@@ -30,7 +30,7 @@ module Aruba
|
|
30
30
|
|
31
31
|
option_accessor :exit_timeout, :contract => { Num => Num }, :default => 15
|
32
32
|
option_accessor :io_wait_timeout, :contract => { Num => Num }, :default => 0.1
|
33
|
-
option_accessor :fixtures_directories, :contract => { Array => ArrayOf[String] }, :default => %w(features/fixtures spec/fixtures test/fixtures)
|
33
|
+
option_accessor :fixtures_directories, :contract => { Array => ArrayOf[String] }, :default => %w(features/fixtures spec/fixtures test/fixtures fixtures)
|
34
34
|
option_accessor :command_runtime_environment, :contract => { Hash => Hash }, :default => ENV.to_hash.dup
|
35
35
|
# rubocop:disable Metrics/LineLength
|
36
36
|
option_accessor(:command_search_paths, :contract => { ArrayOf[String] => ArrayOf[String] }) { |config| [File.join(config.root_directory.value, 'bin')] }
|
data/lib/aruba/cucumber.rb
CHANGED
@@ -4,453 +4,9 @@ require 'aruba/api'
|
|
4
4
|
World(Aruba::Api)
|
5
5
|
|
6
6
|
require 'aruba/cucumber/hooks'
|
7
|
+
require 'aruba/cucumber/command'
|
8
|
+
require 'aruba/cucumber/core'
|
9
|
+
require 'aruba/cucumber/environment'
|
10
|
+
require 'aruba/cucumber/file'
|
11
|
+
require 'aruba/cucumber/rvm'
|
7
12
|
require 'aruba/reporting'
|
8
|
-
|
9
|
-
if Aruba::VERSION >= '1.0.0'
|
10
|
-
Aruba.configure do |config|
|
11
|
-
config.working_directory = 'tmp/cucumber'
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
Given /the default aruba timeout is (\d+) seconds/ do |seconds|
|
16
|
-
aruba.config.exit_timeout = seconds.to_i
|
17
|
-
end
|
18
|
-
|
19
|
-
Given /I use (?:a|the) fixture(?: named)? "([^"]*)"/ do |name|
|
20
|
-
copy File.join(aruba.config.fixtures_path_prefix, name), name
|
21
|
-
cd name
|
22
|
-
end
|
23
|
-
|
24
|
-
Given /The default aruba timeout is (\d+) seconds/ do |seconds|
|
25
|
-
warn(%{\e[35m The /^The default aruba timeout is (\d+) seconds/ step definition is deprecated. Please use the one with `the` and not `The` at the beginning.\e[0m})
|
26
|
-
aruba.config.exit_timeout = seconds.to_i
|
27
|
-
end
|
28
|
-
|
29
|
-
Given /^I'm using a clean gemset "([^"]*)"$/ do |gemset|
|
30
|
-
use_clean_gemset(gemset)
|
31
|
-
end
|
32
|
-
|
33
|
-
Given /^(?:a|the) directory(?: named)? "([^"]*)"$/ do |dir_name|
|
34
|
-
create_directory(dir_name)
|
35
|
-
end
|
36
|
-
|
37
|
-
Given /^(?:a|the) directory(?: named)? "([^"]*)" with mode "([^"]*)"$/ do |dir_name, dir_mode|
|
38
|
-
create_directory(dir_name)
|
39
|
-
chmod(dir_mode, dir_name)
|
40
|
-
end
|
41
|
-
|
42
|
-
Given /^(?:a|the) file(?: named)? "([^"]*)" with:$/ do |file_name, file_content|
|
43
|
-
write_file(file_name, file_content)
|
44
|
-
end
|
45
|
-
|
46
|
-
Given /^(?:a|the) file(?: named)? "([^"]*)" with mode "([^"]*)" and with:$/ do |file_name, file_mode, file_content|
|
47
|
-
write_file(file_name, file_content)
|
48
|
-
chmod(file_mode, file_name)
|
49
|
-
end
|
50
|
-
|
51
|
-
Given /^(?:a|the) (\d+) byte file(?: named)? "([^"]*)"$/ do |file_size, file_name|
|
52
|
-
write_fixed_size_file(file_name, file_size.to_i)
|
53
|
-
end
|
54
|
-
|
55
|
-
Given /^(?:an|the) empty file(?: named)? "([^"]*)"$/ do |file_name|
|
56
|
-
write_file(file_name, "")
|
57
|
-
end
|
58
|
-
|
59
|
-
Given /^(?:an|the) empty file(?: named)? "([^"]*)" with mode "([^"]*)"$/ do |file_name, file_mode|
|
60
|
-
write_file(file_name, "")
|
61
|
-
chmod(file_mode, file_name)
|
62
|
-
end
|
63
|
-
|
64
|
-
Given /^a mocked home directory$/ do
|
65
|
-
set_environment_variable 'HOME', expand_path('.')
|
66
|
-
end
|
67
|
-
|
68
|
-
Given /^(?:a|the) directory(?: named)? "([^"]*)" does not exist$/ do |directory_name|
|
69
|
-
remove(directory_name, :force => true)
|
70
|
-
end
|
71
|
-
|
72
|
-
When /^I write to "([^"]*)" with:$/ do |file_name, file_content|
|
73
|
-
write_file(file_name, file_content)
|
74
|
-
end
|
75
|
-
|
76
|
-
When /^I overwrite "([^"]*)" with:$/ do |file_name, file_content|
|
77
|
-
overwrite_file(file_name, file_content)
|
78
|
-
end
|
79
|
-
|
80
|
-
When /^I append to "([^"]*)" with:$/ do |file_name, file_content|
|
81
|
-
append_to_file(file_name, file_content)
|
82
|
-
end
|
83
|
-
|
84
|
-
When /^I append to "([^"]*)" with "([^"]*)"$/ do |file_name, file_content|
|
85
|
-
append_to_file(file_name, file_content)
|
86
|
-
end
|
87
|
-
|
88
|
-
When /^I remove (?:a|the) file(?: named)? "([^"]*)"$/ do |file_name|
|
89
|
-
remove(file_name)
|
90
|
-
end
|
91
|
-
|
92
|
-
Given /^(?:a|the) file(?: named)? "([^"]*)" does not exist$/ do |file_name|
|
93
|
-
remove(file_name, :force => true)
|
94
|
-
end
|
95
|
-
|
96
|
-
When(/^I remove (?:a|the) directory(?: named)? "(.*?)"$/) do |directory_name|
|
97
|
-
remove(directory_name)
|
98
|
-
end
|
99
|
-
|
100
|
-
When /^I cd to "([^"]*)"$/ do |dir|
|
101
|
-
cd(dir)
|
102
|
-
end
|
103
|
-
|
104
|
-
Given /^I set the environment variables to:/ do |table|
|
105
|
-
table.hashes.each do |row|
|
106
|
-
variable = row['variable'].to_s.upcase
|
107
|
-
value = row['value'].to_s
|
108
|
-
|
109
|
-
set_environment_variable(variable, value)
|
110
|
-
end
|
111
|
-
end
|
112
|
-
|
113
|
-
Given /^I append the value to the environment variable:/ do |table|
|
114
|
-
table.hashes.each do |row|
|
115
|
-
variable = row['variable'].to_s.upcase
|
116
|
-
value = row['value'].to_s
|
117
|
-
|
118
|
-
append_environment_variable(variable, value)
|
119
|
-
end
|
120
|
-
end
|
121
|
-
|
122
|
-
When /^I run "(.*)"$/ do |cmd|
|
123
|
-
warn(%{\e[35m The /^I run "(.*)"$/ step definition is deprecated. Please use the `backticks` version\e[0m})
|
124
|
-
|
125
|
-
cmd = unescape_text(cmd)
|
126
|
-
cmd = extract_text(cmd) if !aruba.config.keep_ansi || aruba.config.remove_ansi_escape_sequences
|
127
|
-
|
128
|
-
run_simple(cmd, false)
|
129
|
-
end
|
130
|
-
|
131
|
-
When /^I run `([^`]*)`$/ do |cmd|
|
132
|
-
cmd = unescape_text(cmd)
|
133
|
-
cmd = extract_text(cmd) if !aruba.config.keep_ansi || aruba.config.remove_ansi_escape_sequences
|
134
|
-
|
135
|
-
run_simple(cmd, false)
|
136
|
-
end
|
137
|
-
|
138
|
-
When /^I successfully run "(.*)"$/ do |cmd|
|
139
|
-
warn(%{\e[35m The /^I successfully run "(.*)"$/ step definition is deprecated. Please use the `backticks` version\e[0m})
|
140
|
-
|
141
|
-
cmd = unescape_text(cmd)
|
142
|
-
cmd = extract_text(cmd) if !aruba.config.keep_ansi || aruba.config.remove_ansi_escape_sequences
|
143
|
-
|
144
|
-
run_simple(cmd)
|
145
|
-
end
|
146
|
-
|
147
|
-
## I successfully run `echo -n "Hello"`
|
148
|
-
## I successfully run `sleep 29` for up to 30 seconds
|
149
|
-
When /^I successfully run `(.*?)`(?: for up to (\d+) seconds)?$/ do |cmd, secs|
|
150
|
-
cmd = unescape_text(cmd)
|
151
|
-
cmd = extract_text(cmd) if !aruba.config.keep_ansi || aruba.config.remove_ansi_escape_sequences
|
152
|
-
|
153
|
-
run_simple(cmd, true, secs && secs.to_i)
|
154
|
-
end
|
155
|
-
|
156
|
-
When /^I run "([^"]*)" interactively$/ do |cmd|
|
157
|
-
warn(%{\e[35m The /^I run "([^"]*)" interactively$/ step definition is deprecated. Please use the `backticks` version\e[0m})
|
158
|
-
step %(I run `#{cmd}` interactively)
|
159
|
-
end
|
160
|
-
|
161
|
-
When /^I run `([^`]*)` interactively$/ do |cmd|
|
162
|
-
cmd = unescape_text(cmd)
|
163
|
-
cmd = extract_text(cmd) if !aruba.config.keep_ansi || aruba.config.remove_ansi_escape_sequences
|
164
|
-
|
165
|
-
@interactive = run(cmd)
|
166
|
-
end
|
167
|
-
|
168
|
-
When /^I type "([^"]*)"$/ do |input|
|
169
|
-
type(unescape_text(input))
|
170
|
-
end
|
171
|
-
|
172
|
-
When /^I close the stdin stream$/ do
|
173
|
-
close_input
|
174
|
-
end
|
175
|
-
|
176
|
-
When /^I pipe in (?:a|the) file(?: named)? "([^"]*)"$/ do |file|
|
177
|
-
pipe_in_file(file)
|
178
|
-
|
179
|
-
close_input
|
180
|
-
end
|
181
|
-
|
182
|
-
When /^I wait for (?:output|stdout) to contain "([^"]*)"$/ do |expected|
|
183
|
-
Timeout.timeout(exit_timeout) do
|
184
|
-
loop do
|
185
|
-
break if assert_partial_output_interactive(expected)
|
186
|
-
sleep 0.1
|
187
|
-
end
|
188
|
-
end
|
189
|
-
end
|
190
|
-
|
191
|
-
Then /^the output should contain "([^"]*)"$/ do |expected|
|
192
|
-
assert_partial_output(expected, all_output)
|
193
|
-
end
|
194
|
-
|
195
|
-
Then /^the output from "([^"]*)" should contain "([^"]*)"$/ do |cmd, expected|
|
196
|
-
assert_partial_output(expected, output_from(cmd))
|
197
|
-
end
|
198
|
-
|
199
|
-
Then /^the output from "([^"]*)" should not contain "([^"]*)"$/ do |cmd, unexpected|
|
200
|
-
assert_no_partial_output(unexpected, output_from(cmd))
|
201
|
-
end
|
202
|
-
|
203
|
-
Then /^the output should not contain "([^"]*)"$/ do |unexpected|
|
204
|
-
assert_no_partial_output(unexpected, all_output)
|
205
|
-
end
|
206
|
-
|
207
|
-
Then /^the output should contain:$/ do |expected|
|
208
|
-
assert_partial_output(expected, all_output)
|
209
|
-
end
|
210
|
-
|
211
|
-
Then /^the output should not contain:$/ do |unexpected|
|
212
|
-
assert_no_partial_output(unexpected, all_output)
|
213
|
-
end
|
214
|
-
|
215
|
-
## the output should contain exactly "output"
|
216
|
-
## the output from `echo -n "Hello"` should contain exactly "Hello"
|
217
|
-
Then /^the output(?: from "(.*?)")? should contain exactly "(.*?)"$/ do |cmd, expected|
|
218
|
-
assert_exact_output(expected, cmd ? output_from(cmd) : all_output)
|
219
|
-
end
|
220
|
-
|
221
|
-
## the output should contain exactly:
|
222
|
-
## the output from `echo -n "Hello"` should contain exactly:
|
223
|
-
Then /^the output(?: from "(.*?)")? should contain exactly:$/ do |cmd, expected|
|
224
|
-
assert_exact_output(expected, cmd ? output_from(cmd) : all_output)
|
225
|
-
end
|
226
|
-
|
227
|
-
# "the output should match" allows regex in the partial_output, if
|
228
|
-
# you don't need regex, use "the output should contain" instead since
|
229
|
-
# that way, you don't have to escape regex characters that
|
230
|
-
# appear naturally in the output
|
231
|
-
Then /^the output should match \/([^\/]*)\/$/ do |expected|
|
232
|
-
assert_matching_output(expected, all_output)
|
233
|
-
end
|
234
|
-
|
235
|
-
Then /^the output should match %r<([^>]*)>$/ do |expected|
|
236
|
-
assert_matching_output(expected, all_output)
|
237
|
-
end
|
238
|
-
|
239
|
-
Then /^the output should match:$/ do |expected|
|
240
|
-
assert_matching_output(expected, all_output)
|
241
|
-
end
|
242
|
-
|
243
|
-
# The previous two steps antagonists
|
244
|
-
Then /^the output should not match \/([^\/]*)\/$/ do |expected|
|
245
|
-
assert_not_matching_output(expected, all_output)
|
246
|
-
end
|
247
|
-
|
248
|
-
Then /^the output should not match:$/ do |expected|
|
249
|
-
assert_not_matching_output(expected, all_output)
|
250
|
-
end
|
251
|
-
|
252
|
-
Then /^the exit status should be (\d+)$/ do |exit_status|
|
253
|
-
assert_exit_status(exit_status.to_i)
|
254
|
-
end
|
255
|
-
|
256
|
-
Then /^the exit status should not be (\d+)$/ do |exit_status|
|
257
|
-
assert_not_exit_status(exit_status.to_i)
|
258
|
-
end
|
259
|
-
|
260
|
-
Then /^it should (pass|fail) with:$/ do |pass_fail, partial_output|
|
261
|
-
self.__send__("assert_#{pass_fail}ing_with", partial_output)
|
262
|
-
end
|
263
|
-
|
264
|
-
Then /^it should (pass|fail) with exactly:$/ do |pass_fail, exact_output|
|
265
|
-
assert_exit_status_and_output(pass_fail == "pass", exact_output, true)
|
266
|
-
end
|
267
|
-
|
268
|
-
Then /^it should (pass|fail) with regexp?:$/ do |pass_fail, expected|
|
269
|
-
assert_matching_output(expected, all_output)
|
270
|
-
assert_success(pass_fail == 'pass')
|
271
|
-
end
|
272
|
-
|
273
|
-
## the stderr should contain "hello"
|
274
|
-
## the stderr from "echo -n 'Hello'" should contain "hello"
|
275
|
-
## the stderr should contain exactly:
|
276
|
-
## the stderr from "echo -n 'Hello'" should contain exactly:
|
277
|
-
Then /^the stderr(?: from "(.*?)")? should contain( exactly)? "(.*?)"$/ do |cmd, exact, expected|
|
278
|
-
if exact
|
279
|
-
assert_exact_output(expected, cmd ? stderr_from(cmd) : all_stderr)
|
280
|
-
else
|
281
|
-
assert_partial_output(expected, cmd ? stderr_from(cmd) : all_stderr)
|
282
|
-
end
|
283
|
-
end
|
284
|
-
|
285
|
-
## the stderr should contain:
|
286
|
-
## the stderr from "echo -n 'Hello'" should contain:
|
287
|
-
## the stderr should contain exactly:
|
288
|
-
## the stderr from "echo -n 'Hello'" should contain exactly:
|
289
|
-
Then /^the stderr(?: from "(.*?)")? should contain( exactly)?:$/ do |cmd, exact, expected|
|
290
|
-
if exact
|
291
|
-
assert_exact_output(expected, cmd ? stderr_from(cmd) : all_stderr)
|
292
|
-
else
|
293
|
-
assert_partial_output(expected, cmd ? stderr_from(cmd) : all_stderr)
|
294
|
-
end
|
295
|
-
end
|
296
|
-
|
297
|
-
## the stdout should contain "hello"
|
298
|
-
## the stdout from "echo -n 'Hello'" should contain "hello"
|
299
|
-
## the stdout should contain exactly:
|
300
|
-
## the stdout from "echo -n 'Hello'" should contain exactly:
|
301
|
-
Then /^the stdout(?: from "(.*?)")? should contain( exactly)? "(.*?)"$/ do |cmd, exact, expected|
|
302
|
-
if exact
|
303
|
-
assert_exact_output(expected, cmd ? stdout_from(cmd) : all_stdout)
|
304
|
-
else
|
305
|
-
assert_partial_output(expected, cmd ? stdout_from(cmd) : all_stdout)
|
306
|
-
end
|
307
|
-
end
|
308
|
-
|
309
|
-
## the stdout should contain:
|
310
|
-
## the stdout from "echo -n 'Hello'" should contain:
|
311
|
-
## the stdout should contain exactly:
|
312
|
-
## the stdout from "echo -n 'Hello'" should contain exactly:
|
313
|
-
Then /^the stdout(?: from "(.*?)")? should contain( exactly)?:$/ do |cmd, exact, expected|
|
314
|
-
if exact
|
315
|
-
assert_exact_output(expected, cmd ? stdout_from(cmd) : all_stdout)
|
316
|
-
else
|
317
|
-
assert_partial_output(expected, cmd ? stdout_from(cmd) : all_stdout)
|
318
|
-
end
|
319
|
-
end
|
320
|
-
|
321
|
-
Then /^the stderr should not contain "([^"]*)"$/ do |unexpected|
|
322
|
-
assert_no_partial_output(unexpected, all_stderr)
|
323
|
-
end
|
324
|
-
|
325
|
-
Then /^the stderr should not contain:$/ do |unexpected|
|
326
|
-
assert_no_partial_output(unexpected, all_stderr)
|
327
|
-
end
|
328
|
-
|
329
|
-
Then /^the (stderr|stdout) should not contain anything$/ do |stream_name|
|
330
|
-
stream = self.send("all_#{stream_name}")
|
331
|
-
expect(stream).to be_empty
|
332
|
-
end
|
333
|
-
|
334
|
-
Then /^the stdout should not contain "([^"]*)"$/ do |unexpected|
|
335
|
-
assert_no_partial_output(unexpected, all_stdout)
|
336
|
-
end
|
337
|
-
|
338
|
-
Then /^the stdout should not contain:$/ do |unexpected|
|
339
|
-
assert_no_partial_output(unexpected, all_stdout)
|
340
|
-
end
|
341
|
-
|
342
|
-
Then /^the stdout from "([^"]*)" should not contain "([^"]*)"$/ do |cmd, unexpected|
|
343
|
-
assert_no_partial_output(unexpected, stdout_from(cmd))
|
344
|
-
end
|
345
|
-
|
346
|
-
Then /^the stderr from "([^"]*)" should not contain "([^"]*)"$/ do |cmd, unexpected|
|
347
|
-
assert_no_partial_output(unexpected, stderr_from(cmd))
|
348
|
-
end
|
349
|
-
|
350
|
-
Then /^the following files should (not )?exist:$/ do |negated, files|
|
351
|
-
files = files.rows.flatten
|
352
|
-
|
353
|
-
if negated
|
354
|
-
expect(files).not_to include an_existing_file
|
355
|
-
else
|
356
|
-
expect(files).to all be_an_existing_file
|
357
|
-
end
|
358
|
-
end
|
359
|
-
|
360
|
-
Then /^(?:a|the) file(?: named)? "([^"]*)" should (not )?exist$/ do |file, expect_match|
|
361
|
-
if expect_match
|
362
|
-
expect(file).not_to be_an_existing_file
|
363
|
-
else
|
364
|
-
expect(file).to be_an_existing_file
|
365
|
-
end
|
366
|
-
end
|
367
|
-
|
368
|
-
Then /^(?:a|the) file matching %r<(.*?)> should (not )?exist$/ do |pattern, expect_match|
|
369
|
-
if expect_match
|
370
|
-
expect(all_paths).not_to include match Regexp.new(pattern)
|
371
|
-
else
|
372
|
-
expect(all_paths).to include match Regexp.new(pattern)
|
373
|
-
end
|
374
|
-
end
|
375
|
-
|
376
|
-
Then /^(?:a|the) (\d+) byte file(?: named)? "([^"]*)" should (not )?exist$/ do |size, file, negated|
|
377
|
-
if negated
|
378
|
-
expect(file).not_to have_file_size(size)
|
379
|
-
else
|
380
|
-
expect(file).to have_file_size(size)
|
381
|
-
end
|
382
|
-
end
|
383
|
-
|
384
|
-
Then /^the following directories should (not )?exist:$/ do |negated, directories|
|
385
|
-
directories = directories.rows.flatten
|
386
|
-
|
387
|
-
if negated
|
388
|
-
expect(directories).not_to include an_existing_directory
|
389
|
-
else
|
390
|
-
expect(directories).to all be_an_existing_directory
|
391
|
-
end
|
392
|
-
end
|
393
|
-
|
394
|
-
Then /^(?:a|the) directory(?: named)? "([^"]*)" should (not )?exist$/ do |directory, negated|
|
395
|
-
if negated
|
396
|
-
expect(directory).not_to be_an_existing_directory
|
397
|
-
else
|
398
|
-
expect(directory).to be_an_existing_directory
|
399
|
-
end
|
400
|
-
end
|
401
|
-
|
402
|
-
Then /^(?:a|the) file "([^"]*)" should (not )?contain "([^"]*)"$/ do |file, negated, content|
|
403
|
-
if negated
|
404
|
-
expect(file).not_to have_file_content Regexp.new(Regexp.escape(content))
|
405
|
-
else
|
406
|
-
expect(file).to have_file_content Regexp.new(Regexp.escape(content))
|
407
|
-
end
|
408
|
-
end
|
409
|
-
|
410
|
-
Then /^(?:a|the) file "([^"]*)" should (not )?contain:$/ do |file, negated, content|
|
411
|
-
if negated
|
412
|
-
expect(file).not_to have_file_content Regexp.new(Regexp.escape(content.chomp))
|
413
|
-
else
|
414
|
-
expect(file).to have_file_content Regexp.new(Regexp.escape(content.chomp))
|
415
|
-
end
|
416
|
-
end
|
417
|
-
|
418
|
-
Then /^(?:a|the) file "([^"]*)" should (not )?contain exactly:$/ do |file, negated, content|
|
419
|
-
if negated
|
420
|
-
expect(file).not_to have_file_content content
|
421
|
-
else
|
422
|
-
expect(file).to have_file_content content
|
423
|
-
end
|
424
|
-
end
|
425
|
-
|
426
|
-
Then /^(?:a|the) file "([^"]*)" should (not )?match %r<([^\/]*)>$/ do |file, negated, content|
|
427
|
-
if negated
|
428
|
-
expect(file).not_to have_file_content Regexp.new(content)
|
429
|
-
else
|
430
|
-
expect(file).to have_file_content Regexp.new(content)
|
431
|
-
end
|
432
|
-
end
|
433
|
-
|
434
|
-
Then /^(?:a|the) file "([^"]*)" should (not )?match \/([^\/]*)\/$/ do |file, negated, content|
|
435
|
-
if negated
|
436
|
-
expect(file).not_to have_file_content Regexp.new(content)
|
437
|
-
else
|
438
|
-
expect(file).to have_file_content Regexp.new(content)
|
439
|
-
end
|
440
|
-
end
|
441
|
-
|
442
|
-
Then /^(?:a|the) file "([^"]*)" should (not )?be equal to file "([^"]*)"/ do |file, negated, reference_file|
|
443
|
-
if negated
|
444
|
-
expect(file).not_to have_same_file_content_like(reference_file)
|
445
|
-
else
|
446
|
-
expect(file).to have_same_file_content_like(reference_file)
|
447
|
-
end
|
448
|
-
end
|
449
|
-
|
450
|
-
Then /^the mode of filesystem object "([^"]*)" should (not )?match "([^"]*)"$/ do |file, negated, permissions|
|
451
|
-
if negated
|
452
|
-
expect(file).not_to have_permissions(permissions)
|
453
|
-
else
|
454
|
-
expect(file).to have_permissions(permissions)
|
455
|
-
end
|
456
|
-
end
|