aruba 1.0.0 → 1.0.1
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/.rubocop.yml +29 -8
- data/.rubocop_todo.yml +100 -146
- data/CHANGELOG.md +23 -1
- data/CONTRIBUTING.md +0 -8
- data/Gemfile +3 -1
- data/Rakefile +6 -4
- data/appveyor.yml +0 -1
- data/aruba.gemspec +7 -4
- data/fixtures/cli-app/cli-app.gemspec +3 -2
- data/fixtures/cli-app/spec/spec_helper.rb +2 -1
- data/fixtures/empty-app/cli-app.gemspec +3 -2
- data/lib/aruba/api/bundler.rb +1 -1
- data/lib/aruba/api/commands.rb +8 -11
- data/lib/aruba/api/core.rb +48 -33
- data/lib/aruba/api/environment.rb +12 -4
- data/lib/aruba/api/filesystem.rb +27 -23
- data/lib/aruba/api/text.rb +15 -3
- data/lib/aruba/basic_configuration.rb +5 -6
- data/lib/aruba/basic_configuration/option.rb +2 -2
- data/lib/aruba/cli.rb +4 -1
- data/lib/aruba/config_wrapper.rb +17 -2
- data/lib/aruba/configuration.rb +27 -12
- data/lib/aruba/console.rb +0 -2
- data/lib/aruba/console/help.rb +5 -2
- data/lib/aruba/contracts/absolute_path.rb +1 -1
- data/lib/aruba/contracts/is_power_of_two.rb +2 -2
- data/lib/aruba/contracts/relative_path.rb +1 -1
- data/lib/aruba/cucumber/command.rb +83 -64
- data/lib/aruba/cucumber/file.rb +42 -22
- data/lib/aruba/cucumber/hooks.rb +4 -1
- data/lib/aruba/cucumber/testing_frameworks.rb +14 -12
- data/lib/aruba/event_bus.rb +4 -2
- data/lib/aruba/event_bus/name_resolver.rb +9 -8
- data/lib/aruba/events.rb +2 -1
- data/lib/aruba/hooks.rb +2 -4
- data/lib/aruba/in_config_wrapper.rb +8 -5
- data/lib/aruba/initializer.rb +5 -3
- data/lib/aruba/matchers/base/base_matcher.rb +2 -11
- data/lib/aruba/matchers/base/object_formatter.rb +0 -3
- data/lib/aruba/matchers/collection/include_an_object.rb +4 -4
- data/lib/aruba/matchers/command/be_successfully_executed.rb +3 -1
- data/lib/aruba/matchers/command/have_exit_status.rb +3 -1
- data/lib/aruba/matchers/command/have_finished_in_time.rb +3 -1
- data/lib/aruba/matchers/command/have_output.rb +3 -1
- data/lib/aruba/matchers/command/have_output_on_stderr.rb +3 -1
- data/lib/aruba/matchers/command/have_output_on_stdout.rb +3 -1
- data/lib/aruba/matchers/directory/have_sub_directory.rb +8 -3
- data/lib/aruba/matchers/file/have_file_size.rb +4 -2
- data/lib/aruba/matchers/path/have_permissions.rb +4 -2
- data/lib/aruba/platforms/announcer.rb +18 -6
- data/lib/aruba/platforms/aruba_file_creator.rb +3 -1
- data/lib/aruba/platforms/aruba_fixed_size_file_creator.rb +7 -2
- data/lib/aruba/platforms/command_monitor.rb +3 -3
- data/lib/aruba/platforms/unix_environment_variables.rb +2 -4
- data/lib/aruba/platforms/unix_which.rb +1 -1
- data/lib/aruba/platforms/windows_environment_variables.rb +2 -1
- data/lib/aruba/platforms/windows_which.rb +6 -2
- data/lib/aruba/processes/debug_process.rb +4 -2
- data/lib/aruba/processes/in_process.rb +4 -2
- data/lib/aruba/processes/spawn_process.rb +18 -10
- data/lib/aruba/rspec.rb +25 -15
- data/lib/aruba/runtime.rb +11 -4
- data/lib/aruba/setup.rb +23 -10
- data/lib/aruba/tasks/docker_helpers.rb +3 -1
- data/lib/aruba/version.rb +1 -1
- metadata +22 -8
data/CONTRIBUTING.md
CHANGED
@@ -210,8 +210,6 @@ bundle exec rake install:local
|
|
210
210
|
entries for all fixes.
|
211
211
|
* No need to add a [`CHANGELOG.md`] header at this point - this should be done
|
212
212
|
later, when a new change is made.
|
213
|
-
* If a major version is released, update the `still` branch, which points to
|
214
|
-
the "old" major version.
|
215
213
|
|
216
214
|
Now release it:
|
217
215
|
|
@@ -225,12 +223,6 @@ bin/test
|
|
225
223
|
# Release gem
|
226
224
|
git commit -m "Version bump"
|
227
225
|
bundle exec rake release
|
228
|
-
|
229
|
-
# If it's a major relase:
|
230
|
-
# Merge changes back to have correct documentation
|
231
|
-
git checkout still
|
232
|
-
git merge master
|
233
|
-
git push
|
234
226
|
```
|
235
227
|
|
236
228
|
Now send a PR to [cucumber/website] adding an article
|
data/Gemfile
CHANGED
@@ -4,7 +4,9 @@ source 'https://rubygems.org'
|
|
4
4
|
gemspec
|
5
5
|
|
6
6
|
# Load local Gemfile
|
7
|
-
|
7
|
+
if File.file? File.expand_path('Gemfile.local', __dir__)
|
8
|
+
load File.expand_path('Gemfile.local', __dir__)
|
9
|
+
end
|
8
10
|
|
9
11
|
unless RUBY_PLATFORM.include?('java')
|
10
12
|
gem 'byebug', '~> 11.0'
|
data/Rakefile
CHANGED
@@ -18,13 +18,13 @@ require 'cucumber/rake/task'
|
|
18
18
|
require 'rspec/core/rake_task'
|
19
19
|
|
20
20
|
Cucumber::Rake::Task.new do |t|
|
21
|
-
t.cucumber_opts = %w
|
21
|
+
t.cucumber_opts = %w(--format progress)
|
22
22
|
end
|
23
23
|
|
24
24
|
Cucumber::Rake::Task.new('cucumber:wip', 'Run Cucumber features '\
|
25
25
|
'which are "WORK IN PROGRESS" and '\
|
26
26
|
'are allowed to fail') do |t|
|
27
|
-
t.cucumber_opts = %w
|
27
|
+
t.cucumber_opts = %w(--format progress)
|
28
28
|
t.profile = 'wip'
|
29
29
|
end
|
30
30
|
|
@@ -53,7 +53,8 @@ namespace :docker do
|
|
53
53
|
args.with_defaults(version: 'latest')
|
54
54
|
args.with_defaults(cache: true)
|
55
55
|
|
56
|
-
docker_compose_file =
|
56
|
+
docker_compose_file =
|
57
|
+
Aruba::DockerComposeFile.new(File.expand_path('docker-compose.yml', __dir__))
|
57
58
|
docker_run_instance = Aruba::DockerRunInstance.new(docker_compose_file, :base)
|
58
59
|
|
59
60
|
builder = Aruba::DockerBuildCommandLineBuilder.new(
|
@@ -67,7 +68,8 @@ namespace :docker do
|
|
67
68
|
|
68
69
|
desc 'Run docker container'
|
69
70
|
task :run, :command do |_, args|
|
70
|
-
docker_compose_file =
|
71
|
+
docker_compose_file =
|
72
|
+
Aruba::DockerComposeFile.new(File.expand_path('docker-compose.yml', __dir__))
|
71
73
|
docker_run_instance = Aruba::DockerRunInstance.new(docker_compose_file, :base)
|
72
74
|
|
73
75
|
builder = Aruba::DockerRunCommandLineBuilder.new(
|
data/appveyor.yml
CHANGED
data/aruba.gemspec
CHANGED
@@ -6,8 +6,10 @@ Gem::Specification.new do |spec|
|
|
6
6
|
spec.name = 'aruba'
|
7
7
|
spec.version = Aruba::VERSION
|
8
8
|
spec.author = 'Aslak Hellesøy, Matt Wynne and other Aruba Contributors'
|
9
|
-
spec.description =
|
10
|
-
|
9
|
+
spec.description = <<~TEXT
|
10
|
+
Extension for popular TDD and BDD frameworks like "Cucumber", "RSpec" and "Minitest",
|
11
|
+
to make testing commandline applications meaningful, easy and fun.
|
12
|
+
TEXT
|
11
13
|
spec.summary = "aruba-#{spec.version}"
|
12
14
|
spec.license = 'MIT'
|
13
15
|
spec.email = 'cukes@googlegroups.com'
|
@@ -23,7 +25,7 @@ to make testing commandline applications meaningful, easy and fun.'
|
|
23
25
|
|
24
26
|
spec.add_runtime_dependency 'childprocess', '~> 3.0'
|
25
27
|
spec.add_runtime_dependency 'contracts', '~> 0.16.0'
|
26
|
-
spec.add_runtime_dependency 'cucumber', ['>= 2.4', '<
|
28
|
+
spec.add_runtime_dependency 'cucumber', ['>= 2.4', '< 5.0']
|
27
29
|
spec.add_runtime_dependency 'ffi', '~> 1.9'
|
28
30
|
spec.add_runtime_dependency 'rspec-expectations', '~> 3.4'
|
29
31
|
spec.add_runtime_dependency 'thor', '~> 1.0'
|
@@ -34,8 +36,9 @@ to make testing commandline applications meaningful, easy and fun.'
|
|
34
36
|
spec.add_development_dependency 'pry-doc', '~> 1.0'
|
35
37
|
spec.add_development_dependency 'rake', '~> 13.0'
|
36
38
|
spec.add_development_dependency 'rspec', '~> 3.6'
|
37
|
-
spec.add_development_dependency 'rubocop', '~> 0.
|
39
|
+
spec.add_development_dependency 'rubocop', '~> 0.84.0'
|
38
40
|
spec.add_development_dependency 'rubocop-performance', '~> 1.5'
|
41
|
+
spec.add_development_dependency 'rubocop-rspec', '~> 1.39'
|
39
42
|
spec.add_development_dependency 'simplecov', '~> 0.18.0'
|
40
43
|
spec.add_development_dependency 'yard-junk', '~> 0.0.7'
|
41
44
|
|
@@ -15,11 +15,12 @@ Gem::Specification.new do |spec|
|
|
15
15
|
# Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
|
16
16
|
# delete this section to allow pushing this gem to any host.
|
17
17
|
|
18
|
-
spec.files = `git ls-files -z`.split("\x0")
|
18
|
+
spec.files = `git ls-files -z`.split("\x0")
|
19
|
+
.reject { |f| f.match(%r{^(test|spec|features)/}) }
|
19
20
|
spec.bindir = 'exe'
|
20
21
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
21
22
|
spec.require_paths = ['lib']
|
22
23
|
|
23
24
|
spec.add_development_dependency 'bundler', '~> 1.9'
|
24
|
-
spec.add_development_dependency 'rake', '~>
|
25
|
+
spec.add_development_dependency 'rake', '~> 13.0'
|
25
26
|
end
|
@@ -15,11 +15,12 @@ Gem::Specification.new do |spec|
|
|
15
15
|
# Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
|
16
16
|
# delete this section to allow pushing this gem to any host.
|
17
17
|
|
18
|
-
spec.files = `git ls-files -z`.split("\x0")
|
18
|
+
spec.files = `git ls-files -z`.split("\x0")
|
19
|
+
.reject { |f| f.match(%r{^(test|spec|features)/}) }
|
19
20
|
spec.bindir = 'exe'
|
20
21
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
21
22
|
spec.require_paths = ['lib']
|
22
23
|
|
23
24
|
spec.add_development_dependency 'bundler', '~> 1.9'
|
24
|
-
spec.add_development_dependency 'rake', '~>
|
25
|
+
spec.add_development_dependency 'rake', '~> 13.0'
|
25
26
|
end
|
data/lib/aruba/api/bundler.rb
CHANGED
@@ -7,7 +7,7 @@ module Aruba
|
|
7
7
|
|
8
8
|
# Unset variables used by bundler
|
9
9
|
def unset_bundler_env_vars
|
10
|
-
%w
|
10
|
+
%w(RUBYOPT BUNDLE_PATH BUNDLE_BIN_PATH BUNDLE_GEMFILE).each do |key|
|
11
11
|
delete_environment_variable(key)
|
12
12
|
end
|
13
13
|
end
|
data/lib/aruba/api/commands.rb
CHANGED
@@ -168,16 +168,16 @@ module Aruba
|
|
168
168
|
# @param [String] cmd
|
169
169
|
# The command to be executed
|
170
170
|
#
|
171
|
-
# @param [Hash]
|
171
|
+
# @param [Hash] opts
|
172
172
|
# Options for aruba
|
173
173
|
#
|
174
|
-
# @option
|
174
|
+
# @option opts [Boolean] :fail_on_error
|
175
175
|
# Should aruba fail on error?
|
176
176
|
#
|
177
|
-
# @option
|
177
|
+
# @option opts [Numeric] :exit_timeout
|
178
178
|
# Timeout for execution
|
179
179
|
#
|
180
|
-
# @option
|
180
|
+
# @option opts [Numeric] :io_wait_timeout
|
181
181
|
# Timeout for IO - STDERR, STDOUT
|
182
182
|
#
|
183
183
|
def run_command_and_stop(cmd, opts = {})
|
@@ -220,12 +220,11 @@ module Aruba
|
|
220
220
|
|
221
221
|
private
|
222
222
|
|
223
|
-
# rubocop:disable Metrics/MethodLength
|
224
223
|
def prepare_command(cmd, opts)
|
225
|
-
exit_timeout = opts[:exit_timeout]
|
226
|
-
io_wait_timeout = opts[:io_wait_timeout]
|
227
|
-
stop_signal = opts[:stop_signal]
|
228
|
-
startup_wait_time = opts[:startup_wait_time]
|
224
|
+
exit_timeout = opts[:exit_timeout] || aruba.config.exit_timeout
|
225
|
+
io_wait_timeout = opts[:io_wait_timeout] || aruba.config.io_wait_timeout
|
226
|
+
stop_signal = opts[:stop_signal] || aruba.config.stop_signal
|
227
|
+
startup_wait_time = opts[:startup_wait_time] || aruba.config.startup_wait_time
|
229
228
|
|
230
229
|
cmd = replace_variables(cmd)
|
231
230
|
|
@@ -256,8 +255,6 @@ module Aruba
|
|
256
255
|
)
|
257
256
|
end
|
258
257
|
|
259
|
-
# rubocop:enable Metrics/MethodLength
|
260
|
-
|
261
258
|
def start_command(command)
|
262
259
|
aruba.config.before(:command, self, command)
|
263
260
|
|
data/lib/aruba/api/core.rb
CHANGED
@@ -15,8 +15,10 @@ module Aruba
|
|
15
15
|
|
16
16
|
# Aruba Runtime
|
17
17
|
def aruba
|
18
|
-
# TODO: Check this variable being accessed inconsistently. Should only
|
19
|
-
#
|
18
|
+
# TODO: Check this variable being accessed inconsistently. Should only
|
19
|
+
# be using the memo!
|
20
|
+
# Renaming this to `aruba` causes 100's of rspec failures. Needs a
|
21
|
+
# deeper dive, approach with caution!
|
20
22
|
@_aruba_runtime ||= Runtime.new
|
21
23
|
end
|
22
24
|
|
@@ -54,21 +56,25 @@ module Aruba
|
|
54
56
|
# @example Run code in directory
|
55
57
|
# result = cd('some-dir') { Dir.getwd }
|
56
58
|
#
|
57
|
-
# rubocop:disable Metrics/MethodLength
|
58
59
|
def cd(dir, &block)
|
59
60
|
if block_given?
|
60
61
|
begin
|
61
|
-
|
62
|
+
unless Aruba.platform.directory?(expand_path(dir))
|
63
|
+
raise ArgumentError,
|
64
|
+
"#{expand_path(dir)} is not a directory or does not exist."
|
65
|
+
end
|
62
66
|
|
63
67
|
old_directory = expand_path('.')
|
64
68
|
aruba.current_directory << dir
|
65
69
|
new_directory = expand_path('.')
|
66
70
|
|
67
|
-
aruba.event_bus.notify Events::ChangedWorkingDirectory.new(old: old_directory,
|
71
|
+
aruba.event_bus.notify Events::ChangedWorkingDirectory.new(old: old_directory,
|
72
|
+
new: new_directory)
|
68
73
|
|
69
74
|
old_dir = Aruba.platform.getwd
|
70
75
|
|
71
|
-
real_new_directory = File.expand_path(aruba.current_directory,
|
76
|
+
real_new_directory = File.expand_path(aruba.current_directory,
|
77
|
+
aruba.root_directory)
|
72
78
|
Aruba.platform.chdir real_new_directory
|
73
79
|
|
74
80
|
result = with_environment(
|
@@ -84,17 +90,19 @@ module Aruba
|
|
84
90
|
return result
|
85
91
|
end
|
86
92
|
|
87
|
-
|
93
|
+
unless Aruba.platform.directory?(expand_path(dir))
|
94
|
+
raise ArgumentError, "#{expand_path(dir)} is not a directory or does not exist."
|
95
|
+
end
|
88
96
|
|
89
97
|
old_directory = expand_path('.')
|
90
98
|
aruba.current_directory << dir
|
91
99
|
new_directory = expand_path('.')
|
92
100
|
|
93
|
-
aruba.event_bus.notify Events::ChangedWorkingDirectory.new(old: old_directory,
|
101
|
+
aruba.event_bus.notify Events::ChangedWorkingDirectory.new(old: old_directory,
|
102
|
+
new: new_directory)
|
94
103
|
|
95
104
|
self
|
96
105
|
end
|
97
|
-
# rubocop:enable Metrics/MethodLength
|
98
106
|
|
99
107
|
# Expand file name
|
100
108
|
#
|
@@ -132,31 +140,34 @@ module Aruba
|
|
132
140
|
# # => /foo/bar
|
133
141
|
# expand_path('/foo/bar')
|
134
142
|
#
|
135
|
-
# rubocop:disable Metrics/MethodLength
|
136
|
-
# rubocop:disable Metrics/CyclomaticComplexity
|
137
|
-
# rubocop:disable Metrics/PerceivedComplexity
|
138
143
|
def expand_path(file_name, dir_string = nil)
|
139
|
-
#
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
fail ArgumentError, message unless file_name.is_a?(String) && !file_name.empty?
|
144
|
+
message = "Filename #{file_name} needs to be a string." \
|
145
|
+
' It cannot be nil or empty either. '\
|
146
|
+
"Please use `expand_path('.')` if you want the current directory to be expanded."
|
144
147
|
|
145
|
-
|
146
|
-
fail %(Aruba's working directory does not exist. Maybe you forgot to run `setup_aruba` before using its API.) unless Aruba.platform.directory? File.join(aruba.config.root_directory, aruba.config.working_directory)
|
148
|
+
raise ArgumentError, message unless file_name.is_a?(String) && !file_name.empty?
|
147
149
|
|
148
|
-
|
150
|
+
unless Aruba.platform.directory? File.join(aruba.config.root_directory,
|
151
|
+
aruba.config.working_directory)
|
152
|
+
raise "Aruba's working directory does not exist." \
|
153
|
+
' Maybe you forgot to run `setup_aruba` before using its API.'
|
154
|
+
end
|
149
155
|
|
150
156
|
prefix = file_name[0]
|
151
157
|
rest = file_name[2..-1]
|
152
158
|
|
153
159
|
if aruba.config.fixtures_path_prefix == prefix
|
154
160
|
path = File.join(*[aruba.fixtures_directory, rest].compact)
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
161
|
+
unless Aruba.platform.exist? path
|
162
|
+
aruba_fixture_candidates = aruba.config.fixtures_directories
|
163
|
+
.map { |p| format('"%s"', p) }.join(', ')
|
164
|
+
|
165
|
+
raise ArgumentError,
|
166
|
+
"Fixture \"#{rest}\" does not exist" \
|
167
|
+
" in fixtures directory \"#{aruba.fixtures_directory}\"." \
|
168
|
+
' This was the one we found first on your system from all possible' \
|
169
|
+
" candidates: #{aruba_fixture_candidates}."
|
170
|
+
end
|
160
171
|
|
161
172
|
path
|
162
173
|
elsif prefix == '~'
|
@@ -164,16 +175,23 @@ module Aruba
|
|
164
175
|
File.expand_path(file_name)
|
165
176
|
end
|
166
177
|
|
167
|
-
|
168
|
-
|
178
|
+
raise ArgumentError, 'Expanding "~/" to "/" is not allowed' if path == '/'
|
179
|
+
|
180
|
+
unless Aruba.platform.absolute_path? path
|
181
|
+
raise ArgumentError,
|
182
|
+
"Expanding \"~\" to a relative path \"#{path}\" is not allowed"
|
183
|
+
end
|
169
184
|
|
170
185
|
path.to_s
|
171
|
-
elsif absolute?
|
186
|
+
elsif absolute?(file_name)
|
172
187
|
unless aruba.config.allow_absolute_paths
|
173
188
|
caller_location = caller_locations(1, 1).first
|
174
189
|
caller_file_line = "#{caller_location.path}:#{caller_location.lineno}"
|
175
|
-
aruba.logger.warn
|
176
|
-
'
|
190
|
+
aruba.logger.warn \
|
191
|
+
"Aruba's `expand_path` method was called with an absolute path" \
|
192
|
+
" at #{caller_file_line}, which is not recommended." \
|
193
|
+
' Change the call to pass a relative path or set '\
|
194
|
+
'`config.allow_absolute_paths = true` to silence this warning'
|
177
195
|
end
|
178
196
|
file_name
|
179
197
|
else
|
@@ -184,9 +202,6 @@ module Aruba
|
|
184
202
|
end
|
185
203
|
end
|
186
204
|
end
|
187
|
-
# rubocop:enable Metrics/MethodLength
|
188
|
-
# rubocop:enable Metrics/CyclomaticComplexity
|
189
|
-
# rubocop:enable Metrics/PerceivedComplexity
|
190
205
|
|
191
206
|
# Run block with environment
|
192
207
|
#
|
@@ -23,7 +23,9 @@ module Aruba
|
|
23
23
|
aruba.environment[name] = value
|
24
24
|
new_environment = aruba.environment.to_h
|
25
25
|
|
26
|
-
environment_change = { old: old_environment,
|
26
|
+
environment_change = { old: old_environment,
|
27
|
+
new: new_environment,
|
28
|
+
changed: { name: name, value: value } }
|
27
29
|
aruba.event_bus.notify Events::AddedEnvironmentVariable.new(environment_change)
|
28
30
|
|
29
31
|
self
|
@@ -46,7 +48,9 @@ module Aruba
|
|
46
48
|
aruba.environment.append name, value
|
47
49
|
new_environment = aruba.environment.to_h
|
48
50
|
|
49
|
-
environment_change = { old: old_environment,
|
51
|
+
environment_change = { old: old_environment,
|
52
|
+
new: new_environment,
|
53
|
+
changed: { name: name, value: value } }
|
50
54
|
aruba.event_bus.notify Events::ChangedEnvironmentVariable.new(environment_change)
|
51
55
|
|
52
56
|
self
|
@@ -69,7 +73,9 @@ module Aruba
|
|
69
73
|
aruba.environment.prepend name, value
|
70
74
|
new_environment = aruba.environment.to_h
|
71
75
|
|
72
|
-
environment_change = { old: old_environment,
|
76
|
+
environment_change = { old: old_environment,
|
77
|
+
new: new_environment,
|
78
|
+
changed: { name: name, value: value } }
|
73
79
|
aruba.event_bus.notify Events::ChangedEnvironmentVariable.new(environment_change)
|
74
80
|
|
75
81
|
self
|
@@ -88,7 +94,9 @@ module Aruba
|
|
88
94
|
aruba.environment.delete name
|
89
95
|
new_environment = aruba.environment.to_h
|
90
96
|
|
91
|
-
environment_change = { old: old_environment,
|
97
|
+
environment_change = { old: old_environment,
|
98
|
+
new: new_environment,
|
99
|
+
changed: { name: name, value: '' } }
|
92
100
|
aruba.event_bus.notify Events::ChangedEnvironmentVariable.new(environment_change)
|
93
101
|
|
94
102
|
self
|
data/lib/aruba/api/filesystem.rb
CHANGED
@@ -92,7 +92,7 @@ module Aruba
|
|
92
92
|
# @return [Dir]
|
93
93
|
# The directory object
|
94
94
|
def directory(path)
|
95
|
-
|
95
|
+
raise ArgumentError, %(Path "#{name}" does not exist.) unless exist? name
|
96
96
|
|
97
97
|
Dir.new(expand_path(path))
|
98
98
|
end
|
@@ -102,22 +102,31 @@ module Aruba
|
|
102
102
|
# @return [Array]
|
103
103
|
# The content of directory
|
104
104
|
def list(name)
|
105
|
-
|
106
|
-
|
105
|
+
raise ArgumentError, %(Path "#{name}" does not exist.) unless exist? name
|
106
|
+
|
107
|
+
unless directory? name
|
108
|
+
raise ArgumentError,
|
109
|
+
%(Only directories are supported. Path "#{name}" is not a directory.)
|
110
|
+
end
|
107
111
|
|
108
112
|
existing_files = Dir.glob(expand_path(File.join(name, '**', '*')))
|
109
113
|
current_working_directory = Pathname.new(expand_path('.'))
|
110
114
|
|
111
|
-
existing_files.map
|
115
|
+
existing_files.map do |d|
|
116
|
+
Pathname.new(d).relative_path_from(current_working_directory).to_s
|
117
|
+
end
|
112
118
|
end
|
113
119
|
|
114
120
|
# Return content of file
|
115
121
|
#
|
116
122
|
# @return [Array]
|
117
|
-
# The content of file, without "\n" or "\r\n" at the end.
|
123
|
+
# The content of file, without "\n" or "\r\n" at the end.
|
124
|
+
# To rebuild the file use `content.join("\n")`
|
118
125
|
def read(name)
|
119
|
-
|
120
|
-
|
126
|
+
raise ArgumentError, %(Path "#{name}" does not exist.) unless exist? name
|
127
|
+
unless file? name
|
128
|
+
raise ArgumentError, %(Only files are supported. Path "#{name}" is not a file.)
|
129
|
+
end
|
121
130
|
|
122
131
|
File.readlines(expand_path(name)).map(&:chomp)
|
123
132
|
end
|
@@ -145,7 +154,7 @@ module Aruba
|
|
145
154
|
def touch(*args)
|
146
155
|
args = args.flatten
|
147
156
|
|
148
|
-
options = if args.last.
|
157
|
+
options = if args.last.is_a? Hash
|
149
158
|
args.pop
|
150
159
|
else
|
151
160
|
{}
|
@@ -168,9 +177,6 @@ module Aruba
|
|
168
177
|
# @param [String] destination
|
169
178
|
# A file or directory name. If multiple sources are given the destination
|
170
179
|
# needs to be a directory
|
171
|
-
#
|
172
|
-
# rubocop:disable Metrics/CyclomaticComplexity
|
173
|
-
# def copy(*source, destination)
|
174
180
|
def copy(*args)
|
175
181
|
args = args.flatten
|
176
182
|
destination = args.pop
|
@@ -181,7 +187,8 @@ module Aruba
|
|
181
187
|
end
|
182
188
|
|
183
189
|
if destination.start_with? aruba.config.fixtures_path_prefix
|
184
|
-
raise ArgumentError,
|
190
|
+
raise ArgumentError,
|
191
|
+
"Using a fixture as destination (#{destination}) is not supported"
|
185
192
|
end
|
186
193
|
|
187
194
|
if source.count > 1 && exist?(destination) && !directory?(destination)
|
@@ -202,7 +209,6 @@ module Aruba
|
|
202
209
|
|
203
210
|
self
|
204
211
|
end
|
205
|
-
# rubocop:enable Metrics/CyclomaticComplexity
|
206
212
|
|
207
213
|
# Move a file and/or directory
|
208
214
|
#
|
@@ -214,20 +220,20 @@ module Aruba
|
|
214
220
|
# @param [String] destination
|
215
221
|
# A file or directory name. If multiple sources are given the destination
|
216
222
|
# needs to be a directory
|
217
|
-
#
|
218
|
-
# rubocop:disable Metrics/CyclomaticComplexity
|
219
|
-
# rubocop:disable Metrics/MethodLength
|
220
223
|
def move(*args)
|
221
224
|
args = args.flatten
|
222
225
|
destination = args.pop
|
223
226
|
source = args
|
224
227
|
|
225
228
|
source.each do |s|
|
226
|
-
|
229
|
+
if s.start_with? aruba.config.fixtures_path_prefix
|
230
|
+
raise ArgumentError, "Using a fixture as source (#{source}) is not supported"
|
231
|
+
end
|
227
232
|
end
|
228
233
|
|
229
234
|
if destination.start_with? aruba.config.fixtures_path_prefix
|
230
|
-
raise ArgumentError,
|
235
|
+
raise ArgumentError,
|
236
|
+
"Using a fixture as destination (#{destination}) is not supported"
|
231
237
|
end
|
232
238
|
|
233
239
|
source.each do |s|
|
@@ -252,8 +258,6 @@ module Aruba
|
|
252
258
|
|
253
259
|
self
|
254
260
|
end
|
255
|
-
# rubocop:enable Metrics/MethodLength
|
256
|
-
# rubocop:enable Metrics/CyclomaticComplexity
|
257
261
|
|
258
262
|
# Create a file with the given size
|
259
263
|
#
|
@@ -292,14 +296,14 @@ module Aruba
|
|
292
296
|
def chmod(*args)
|
293
297
|
args = args.flatten
|
294
298
|
|
295
|
-
options = if args.last.
|
299
|
+
options = if args.last.is_a? Hash
|
296
300
|
args.pop
|
297
301
|
else
|
298
302
|
{}
|
299
303
|
end
|
300
304
|
|
301
305
|
mode = args.shift
|
302
|
-
mode = if mode.
|
306
|
+
mode = if mode.is_a? String
|
303
307
|
mode.to_i(8)
|
304
308
|
else
|
305
309
|
mode
|
@@ -344,7 +348,7 @@ module Aruba
|
|
344
348
|
def remove(*args)
|
345
349
|
args = args.flatten
|
346
350
|
|
347
|
-
options = if args.last.
|
351
|
+
options = if args.last.is_a? Hash
|
348
352
|
args.pop
|
349
353
|
else
|
350
354
|
{}
|