aruba 0.9.0.pre → 0.9.0.pre2
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/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
|