aruba 1.0.0.pre.alpha.5 → 1.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (122) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +153 -28
  3. data/CONTRIBUTING.md +0 -9
  4. data/LICENSE +1 -1
  5. data/README.md +37 -30
  6. data/lib/aruba/api.rb +0 -1
  7. data/lib/aruba/api/bundler.rb +17 -2
  8. data/lib/aruba/api/commands.rb +15 -16
  9. data/lib/aruba/api/core.rb +64 -50
  10. data/lib/aruba/api/environment.rb +12 -4
  11. data/lib/aruba/api/filesystem.rb +32 -46
  12. data/lib/aruba/api/text.rb +15 -3
  13. data/lib/aruba/aruba_path.rb +23 -95
  14. data/lib/aruba/basic_configuration.rb +46 -65
  15. data/lib/aruba/basic_configuration/option.rb +2 -2
  16. data/lib/aruba/cli.rb +4 -1
  17. data/lib/aruba/config/jruby.rb +1 -1
  18. data/lib/aruba/config_wrapper.rb +17 -4
  19. data/lib/aruba/configuration.rb +29 -22
  20. data/lib/aruba/console.rb +0 -2
  21. data/lib/aruba/console/help.rb +8 -5
  22. data/lib/aruba/contracts/absolute_path.rb +3 -3
  23. data/lib/aruba/contracts/is_power_of_two.rb +2 -2
  24. data/lib/aruba/contracts/relative_path.rb +3 -3
  25. data/lib/aruba/cucumber/command.rb +93 -82
  26. data/lib/aruba/cucumber/file.rb +43 -23
  27. data/lib/aruba/cucumber/hooks.rb +4 -1
  28. data/lib/aruba/cucumber/testing_frameworks.rb +14 -12
  29. data/lib/aruba/event_bus.rb +4 -2
  30. data/lib/aruba/event_bus/name_resolver.rb +9 -8
  31. data/lib/aruba/events.rb +2 -1
  32. data/lib/aruba/hooks.rb +2 -4
  33. data/lib/aruba/in_config_wrapper.rb +8 -5
  34. data/lib/aruba/initializer.rb +9 -3
  35. data/lib/aruba/matchers/base/base_matcher.rb +2 -11
  36. data/lib/aruba/matchers/base/message_indenter.rb +1 -1
  37. data/lib/aruba/matchers/base/object_formatter.rb +0 -5
  38. data/lib/aruba/matchers/collection/include_an_object.rb +4 -4
  39. data/lib/aruba/matchers/command/be_successfully_executed.rb +3 -1
  40. data/lib/aruba/matchers/command/have_exit_status.rb +3 -1
  41. data/lib/aruba/matchers/command/have_finished_in_time.rb +3 -1
  42. data/lib/aruba/matchers/command/have_output.rb +3 -1
  43. data/lib/aruba/matchers/command/have_output_on_stderr.rb +3 -1
  44. data/lib/aruba/matchers/command/have_output_on_stdout.rb +3 -1
  45. data/lib/aruba/matchers/directory/have_sub_directory.rb +8 -3
  46. data/lib/aruba/matchers/file/have_file_size.rb +4 -2
  47. data/lib/aruba/matchers/path/have_permissions.rb +7 -4
  48. data/lib/aruba/platforms/announcer.rb +25 -11
  49. data/lib/aruba/platforms/aruba_file_creator.rb +3 -1
  50. data/lib/aruba/platforms/aruba_fixed_size_file_creator.rb +7 -2
  51. data/lib/aruba/platforms/aruba_logger.rb +10 -9
  52. data/lib/aruba/platforms/command_monitor.rb +4 -6
  53. data/lib/aruba/platforms/determine_disk_usage.rb +55 -20
  54. data/lib/aruba/platforms/filesystem_status.rb +19 -13
  55. data/lib/aruba/platforms/simple_table.rb +2 -2
  56. data/lib/aruba/platforms/unix_environment_variables.rb +9 -4
  57. data/lib/aruba/platforms/unix_platform.rb +10 -10
  58. data/lib/aruba/platforms/unix_which.rb +1 -1
  59. data/lib/aruba/platforms/windows_command_string.rb +1 -1
  60. data/lib/aruba/platforms/windows_environment_variables.rb +2 -1
  61. data/lib/aruba/platforms/windows_platform.rb +3 -3
  62. data/lib/aruba/platforms/windows_which.rb +6 -2
  63. data/lib/aruba/processes/basic_process.rb +4 -6
  64. data/lib/aruba/processes/debug_process.rb +4 -2
  65. data/lib/aruba/processes/in_process.rb +5 -3
  66. data/lib/aruba/processes/spawn_process.rb +27 -16
  67. data/lib/aruba/rspec.rb +25 -15
  68. data/lib/aruba/runtime.rb +11 -4
  69. data/lib/aruba/setup.rb +23 -10
  70. data/lib/aruba/tasks/docker_helpers.rb +3 -1
  71. data/lib/aruba/version.rb +1 -1
  72. metadata +96 -109
  73. data/.cucumberproignore +0 -3
  74. data/.document +0 -5
  75. data/.github/ISSUE_TEMPLATE.md +0 -48
  76. data/.github/PULL_REQUEST_TEMPLATE.md +0 -41
  77. data/.gitignore +0 -38
  78. data/.rspec +0 -3
  79. data/.rubocop.yml +0 -31
  80. data/.rubocop_todo.yml +0 -258
  81. data/.simplecov +0 -34
  82. data/.travis.yml +0 -73
  83. data/.yardopts +0 -11
  84. data/Dockerfile +0 -67
  85. data/Gemfile +0 -15
  86. data/Rakefile +0 -92
  87. data/TODO.md +0 -13
  88. data/appveyor.yml +0 -30
  89. data/aruba.gemspec +0 -46
  90. data/bin/console +0 -7
  91. data/bin/test +0 -9
  92. data/config/.gitignore +0 -1
  93. data/cucumber.yml +0 -6
  94. data/docker-compose.yml +0 -26
  95. data/fixtures/cli-app/.gitignore +0 -9
  96. data/fixtures/cli-app/.rspec +0 -2
  97. data/fixtures/cli-app/README.md +0 -39
  98. data/fixtures/cli-app/Rakefile +0 -1
  99. data/fixtures/cli-app/bin/aruba-test-cli +0 -6
  100. data/fixtures/cli-app/cli-app.gemspec +0 -25
  101. data/fixtures/cli-app/features/support/aruba.rb +0 -1
  102. data/fixtures/cli-app/features/support/env.rb +0 -1
  103. data/fixtures/cli-app/lib/cli/app.rb +0 -9
  104. data/fixtures/cli-app/lib/cli/app/suppress_simple_cov_output.rb +0 -15
  105. data/fixtures/cli-app/lib/cli/app/version.rb +0 -5
  106. data/fixtures/cli-app/script/console +0 -14
  107. data/fixtures/cli-app/spec/spec_helper.rb +0 -7
  108. data/fixtures/cli-app/spec/support/aruba.rb +0 -1
  109. data/fixtures/copy/file.txt +0 -1
  110. data/fixtures/empty-app/.gitignore +0 -9
  111. data/fixtures/empty-app/.rspec +0 -2
  112. data/fixtures/empty-app/README.md +0 -24
  113. data/fixtures/empty-app/Rakefile +0 -1
  114. data/fixtures/empty-app/cli-app.gemspec +0 -25
  115. data/fixtures/empty-app/lib/cli/app.rb +0 -7
  116. data/fixtures/empty-app/lib/cli/app/version.rb +0 -5
  117. data/fixtures/getting-started-app/.gitignore +0 -4
  118. data/fixtures/getting-started-app/Gemfile +0 -4
  119. data/fixtures/getting-started-app/README.md +0 -3
  120. data/fixtures/getting-started-app/features/support/env.rb +0 -1
  121. data/lib/aruba/extensions/string/strip.rb +0 -25
  122. data/lib/aruba/platforms/disk_usage_calculator.rb +0 -20
@@ -2,7 +2,6 @@ require 'rspec/expectations'
2
2
  require 'shellwords'
3
3
 
4
4
  require 'aruba/version'
5
- require 'aruba/extensions/string/strip'
6
5
 
7
6
  require 'aruba/platform'
8
7
  require 'aruba/api/core'
@@ -7,8 +7,23 @@ module Aruba
7
7
 
8
8
  # Unset variables used by bundler
9
9
  def unset_bundler_env_vars
10
- %w[RUBYOPT BUNDLE_PATH BUNDLE_BIN_PATH BUNDLE_GEMFILE].each do |key|
11
- delete_environment_variable(key)
10
+ empty_env = with_environment { with_unbundled_env { ENV.to_h } }
11
+ aruba_env = aruba.environment.to_h
12
+ (aruba_env.keys - empty_env.keys).each do |key|
13
+ delete_environment_variable key
14
+ end
15
+ empty_env.each do |k, v|
16
+ set_environment_variable k, v
17
+ end
18
+ end
19
+
20
+ private
21
+
22
+ def with_unbundled_env(&block)
23
+ if ::Bundler.respond_to?(:with_unbundled_env)
24
+ ::Bundler.with_unbundled_env(&block)
25
+ else
26
+ ::Bundler.with_clean_env(&block)
12
27
  end
13
28
  end
14
29
  end
@@ -64,7 +64,7 @@ module Aruba
64
64
  # If block is given use it to filter the commands which should be
65
65
  # stoppend.
66
66
  def stop_all_commands(&block)
67
- cmds = if block_given?
67
+ cmds = if block
68
68
  all_commands.select(&block)
69
69
  else
70
70
  all_commands
@@ -81,7 +81,7 @@ module Aruba
81
81
  # If block is given use it to filter the commands which should be
82
82
  # terminated.
83
83
  def terminate_all_commands(&block)
84
- cmds = if block_given?
84
+ cmds = if block
85
85
  all_commands.select(&block)
86
86
  else
87
87
  all_commands
@@ -168,16 +168,16 @@ module Aruba
168
168
  # @param [String] cmd
169
169
  # The command to be executed
170
170
  #
171
- # @param [Hash] options
171
+ # @param [Hash] opts
172
172
  # Options for aruba
173
173
  #
174
- # @option options [Boolean] fail_on_error
174
+ # @option opts [Boolean] :fail_on_error
175
175
  # Should aruba fail on error?
176
176
  #
177
- # @option options [Numeric] exit_timeout
177
+ # @option opts [Numeric] :exit_timeout
178
178
  # Timeout for execution
179
179
  #
180
- # @option options [Numeric] io_wait_timeout
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].nil? ? aruba.config.exit_timeout : opts[:exit_timeout]
226
- io_wait_timeout = opts[:io_wait_timeout].nil? ? aruba.config.io_wait_timeout : opts[:io_wait_timeout]
227
- stop_signal = opts[:stop_signal].nil? ? aruba.config.stop_signal : opts[:stop_signal]
228
- startup_wait_time = opts[:startup_wait_time].nil? ? aruba.config.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,17 +255,17 @@ module Aruba
256
255
  )
257
256
  end
258
257
 
259
- # rubocop:enable Metrics/MethodLength
260
-
261
258
  def start_command(command)
262
- aruba.config.before(:command, self, command)
259
+ aruba.config.run_before_hook(:command, self, command)
263
260
 
264
- command.start
261
+ in_current_directory do
262
+ command.start
263
+ end
265
264
 
266
265
  stop_signal = command.stop_signal
267
266
  aruba.announcer.announce(:stop_signal, command.pid, stop_signal) if stop_signal
268
267
 
269
- aruba.config.after(:command, self, command)
268
+ aruba.config.run_after_hook(:command, self, command)
270
269
  end
271
270
  end
272
271
  end
@@ -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 be using the memo!
19
- # Renaming this to `aruba` causes 100's of rspec failures. Needs a deeper dive, approach with caution!
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,27 +56,30 @@ 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
- if block_given?
60
+ if block
60
61
  begin
61
- unless Aruba.platform.directory? expand_path(dir)
62
- fail ArgumentError, "#{expand_path(dir)} is not a directory or does not exist."
62
+ unless Aruba.platform.directory?(expand_path(dir))
63
+ raise ArgumentError,
64
+ "#{expand_path(dir)} is not a directory or does not exist."
63
65
  end
64
66
 
65
67
  old_directory = expand_path('.')
66
68
  aruba.current_directory << dir
67
69
  new_directory = expand_path('.')
68
70
 
69
- aruba.event_bus.notify Events::ChangedWorkingDirectory.new(old: old_directory, new: new_directory)
71
+ aruba.event_bus.notify Events::ChangedWorkingDirectory.new(old: old_directory,
72
+ new: new_directory)
70
73
 
71
74
  old_dir = Aruba.platform.getwd
72
75
 
73
- Aruba.platform.chdir File.join(aruba.root_directory, aruba.current_directory)
76
+ real_new_directory = File.expand_path(aruba.current_directory,
77
+ aruba.root_directory)
78
+ Aruba.platform.chdir real_new_directory
74
79
 
75
80
  result = with_environment(
76
81
  'OLDPWD' => old_dir,
77
- 'PWD' => File.expand_path(File.join(aruba.root_directory, aruba.current_directory)),
82
+ 'PWD' => real_new_directory,
78
83
  &block
79
84
  )
80
85
  ensure
@@ -85,19 +90,19 @@ module Aruba
85
90
  return result
86
91
  end
87
92
 
88
- unless Aruba.platform.directory? expand_path(dir)
89
- fail ArgumentError, "#{expand_path(dir)} is not a directory or does not exist."
93
+ unless Aruba.platform.directory?(expand_path(dir))
94
+ raise ArgumentError, "#{expand_path(dir)} is not a directory or does not exist."
90
95
  end
91
96
 
92
97
  old_directory = expand_path('.')
93
98
  aruba.current_directory << dir
94
99
  new_directory = expand_path('.')
95
100
 
96
- aruba.event_bus.notify Events::ChangedWorkingDirectory.new(old: old_directory, new: new_directory)
101
+ aruba.event_bus.notify Events::ChangedWorkingDirectory.new(old: old_directory,
102
+ new: new_directory)
97
103
 
98
104
  self
99
105
  end
100
- # rubocop:enable Metrics/MethodLength
101
106
 
102
107
  # Expand file name
103
108
  #
@@ -135,57 +140,70 @@ module Aruba
135
140
  # # => /foo/bar
136
141
  # expand_path('/foo/bar')
137
142
  #
138
- # rubocop:disable Metrics/MethodLength
139
- # rubocop:disable Metrics/CyclomaticComplexity
140
- # rubocop:disable Metrics/PerceivedComplexity
141
143
  def expand_path(file_name, dir_string = nil)
142
- # rubocop:disable Metrics/LineLength
143
- message = %(Filename "#{file_name}" needs to be a string. It cannot be nil or empty either. Please use `expand_path('.')` if you want the current directory to be expanded.)
144
- # rubocop:enable Metrics/LineLength
144
+ unless file_name.is_a?(String) && !file_name.empty?
145
+ message = "Filename #{file_name} needs to be a string." \
146
+ ' It cannot be nil or empty either. '\
147
+ "Please use `expand_path('.')` if you want the current directory to be expanded."
145
148
 
146
- fail ArgumentError, message unless file_name.is_a?(String) && !file_name.empty?
147
-
148
- # rubocop:disable Metrics/LineLength
149
- 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)
149
+ raise ArgumentError, message
150
+ end
150
151
 
151
- # rubocop:enable Metrics/LineLength
152
+ unless Aruba.platform.directory? File.join(aruba.config.root_directory,
153
+ aruba.config.working_directory)
154
+ raise "Aruba's working directory does not exist." \
155
+ ' Maybe you forgot to run `setup_aruba` before using its API.'
156
+ end
152
157
 
153
158
  prefix = file_name[0]
154
- rest = file_name[2..-1]
155
159
 
156
160
  if aruba.config.fixtures_path_prefix == prefix
161
+ rest = file_name[2..-1]
157
162
  path = File.join(*[aruba.fixtures_directory, rest].compact)
158
-
159
- # rubocop:disable Metrics/LineLength
160
- fail ArgumentError, %(Fixture "#{rest}" does not exist in fixtures directory "#{aruba.fixtures_directory}". This was the one we found first on your system from all possible candidates: #{aruba.config.fixtures_directories.map { |p| format('"%s"', p) }.join(', ')}.) unless Aruba.platform.exist? path
161
-
162
- # rubocop:enable Metrics/LineLength
163
+ unless Aruba.platform.exist? path
164
+ aruba_fixture_candidates = aruba.config.fixtures_directories
165
+ .map { |p| format('"%s"', p) }.join(', ')
166
+
167
+ raise ArgumentError,
168
+ "Fixture \"#{rest}\" does not exist" \
169
+ " in fixtures directory \"#{aruba.fixtures_directory}\"." \
170
+ ' This was the one we found first on your system from all possible' \
171
+ " candidates: #{aruba_fixture_candidates}."
172
+ end
163
173
 
164
174
  path
165
175
  elsif prefix == '~'
166
176
  path = with_environment do
167
- ArubaPath.new(File.expand_path(file_name))
177
+ File.expand_path(file_name)
168
178
  end
169
179
 
170
- fail ArgumentError, 'Expanding "~/" to "/" is not allowed' if path.to_s == '/'
171
- fail ArgumentError, %(Expanding "~/" to a relative path "#{path}" is not allowed) unless path.absolute?
180
+ raise ArgumentError, 'Expanding "~/" to "/" is not allowed' if path == '/'
181
+
182
+ unless Aruba.platform.absolute_path? path
183
+ raise ArgumentError,
184
+ "Expanding \"~\" to a relative path \"#{path}\" is not allowed"
185
+ end
172
186
 
173
187
  path.to_s
174
- elsif absolute? file_name
188
+ elsif absolute?(file_name)
175
189
  unless aruba.config.allow_absolute_paths
176
- aruba.logger.warn 'Using absolute paths in Aruba is not recommended.' \
177
- ' Set config.allow_absolute_paths = true to silence this warning'
190
+ caller_location = caller_locations(1, 1).first
191
+ caller_file_line = "#{caller_location.path}:#{caller_location.lineno}"
192
+ aruba.logger.warn \
193
+ "Aruba's `expand_path` method was called with an absolute path" \
194
+ " at #{caller_file_line}, which is not recommended." \
195
+ ' Change the call to pass a relative path or set '\
196
+ '`config.allow_absolute_paths = true` to silence this warning'
178
197
  end
179
198
  file_name
180
199
  else
181
- directory = File.join(aruba.root_directory, aruba.current_directory)
182
- directory = File.expand_path(dir_string, directory) if dir_string
183
- File.expand_path(file_name, directory)
200
+ with_environment do
201
+ directory = File.expand_path(aruba.current_directory, aruba.root_directory)
202
+ directory = File.expand_path(dir_string, directory) if dir_string
203
+ File.expand_path(file_name, directory)
204
+ end
184
205
  end
185
206
  end
186
- # rubocop:enable Metrics/MethodLength
187
- # rubocop:enable Metrics/CyclomaticComplexity
188
- # rubocop:enable Metrics/PerceivedComplexity
189
207
 
190
208
  # Run block with environment
191
209
  #
@@ -195,14 +213,10 @@ module Aruba
195
213
  # @yield
196
214
  # The block of code which should be run with the changed environment variables
197
215
  def with_environment(env = {}, &block)
198
- old_aruba_env = aruba.environment.to_h
199
-
200
- # make sure the old environment is really restored in "ENV"
201
- Aruba.platform.with_environment aruba.environment.update(env).to_h, &block
202
- ensure
203
- # make sure the old environment is really restored in "aruba.environment"
204
- aruba.environment.clear
205
- aruba.environment.update old_aruba_env
216
+ aruba.environment.nest do |nested_env|
217
+ nested_env.update(env)
218
+ Aruba.platform.with_environment nested_env.to_h, &block
219
+ end
206
220
  end
207
221
  end
208
222
  end
@@ -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, new: new_environment, changed: { name: name, value: value } }
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, new: new_environment, changed: { name: name, value: value } }
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, new: new_environment, changed: { name: name, value: value } }
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, new: new_environment, changed: { name: name, value: '' } }
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
@@ -1,8 +1,6 @@
1
- require 'aruba/platform'
2
-
3
- require 'aruba/extensions/string/strip'
1
+ require 'pathname'
4
2
 
5
- require 'aruba/aruba_path'
3
+ require 'aruba/platform'
6
4
 
7
5
  Aruba.platform.require_matching_files('../matchers/file/*.rb', __FILE__)
8
6
  Aruba.platform.require_matching_files('../matchers/directory/*.rb', __FILE__)
@@ -54,14 +52,14 @@ module Aruba
54
52
  #
55
53
  # @return [Boolean]
56
54
  def absolute?(path)
57
- ArubaPath.new(path).absolute?
55
+ Aruba.platform.absolute_path?(path)
58
56
  end
59
57
 
60
58
  # Check if path is relative
61
59
  #
62
60
  # @return [Boolean]
63
61
  def relative?(path)
64
- ArubaPath.new(path).relative?
62
+ Aruba.platform.relative_path?(path)
65
63
  end
66
64
 
67
65
  # Return all existing paths (directories, files) in current dir
@@ -93,7 +91,7 @@ module Aruba
93
91
  # @return [Dir]
94
92
  # The directory object
95
93
  def directory(path)
96
- fail ArgumentError, %(Path "#{name}" does not exist.) unless exist? name
94
+ raise ArgumentError, %(Path "#{name}" does not exist.) unless exist? name
97
95
 
98
96
  Dir.new(expand_path(path))
99
97
  end
@@ -103,24 +101,31 @@ module Aruba
103
101
  # @return [Array]
104
102
  # The content of directory
105
103
  def list(name)
106
- fail ArgumentError, %(Path "#{name}" does not exist.) unless exist? name
104
+ raise ArgumentError, %(Path "#{name}" does not exist.) unless exist? name
105
+
107
106
  unless directory? name
108
- fail ArgumentError, %(Only directories are supported. Path "#{name}" is not a directory.)
107
+ raise ArgumentError,
108
+ %(Only directories are supported. Path "#{name}" is not a directory.)
109
109
  end
110
110
 
111
111
  existing_files = Dir.glob(expand_path(File.join(name, '**', '*')))
112
- current_working_directory = ArubaPath.new(expand_path('.'))
112
+ current_working_directory = Pathname.new(expand_path('.'))
113
113
 
114
- existing_files.map { |d| ArubaPath.new(d).relative_path_from(current_working_directory).to_s }
114
+ existing_files.map do |d|
115
+ Pathname.new(d).relative_path_from(current_working_directory).to_s
116
+ end
115
117
  end
116
118
 
117
119
  # Return content of file
118
120
  #
119
121
  # @return [Array]
120
- # The content of file, without "\n" or "\r\n" at the end. To rebuild the file use `content.join("\n")`
122
+ # The content of file, without "\n" or "\r\n" at the end.
123
+ # To rebuild the file use `content.join("\n")`
121
124
  def read(name)
122
- fail ArgumentError, %(Path "#{name}" does not exist.) unless exist? name
123
- fail ArgumentError, %(Only files are supported. Path "#{name}" is not a file.) unless file? name
125
+ raise ArgumentError, %(Path "#{name}" does not exist.) unless exist? name
126
+ unless file? name
127
+ raise ArgumentError, %(Only files are supported. Path "#{name}" is not a file.)
128
+ end
124
129
 
125
130
  File.readlines(expand_path(name)).map(&:chomp)
126
131
  end
@@ -148,7 +153,7 @@ module Aruba
148
153
  def touch(*args)
149
154
  args = args.flatten
150
155
 
151
- options = if args.last.kind_of? Hash
156
+ options = if args.last.is_a? Hash
152
157
  args.pop
153
158
  else
154
159
  {}
@@ -171,9 +176,6 @@ module Aruba
171
176
  # @param [String] destination
172
177
  # A file or directory name. If multiple sources are given the destination
173
178
  # needs to be a directory
174
- #
175
- # rubocop:disable Metrics/CyclomaticComplexity
176
- # def copy(*source, destination)
177
179
  def copy(*args)
178
180
  args = args.flatten
179
181
  destination = args.pop
@@ -184,7 +186,8 @@ module Aruba
184
186
  end
185
187
 
186
188
  if destination.start_with? aruba.config.fixtures_path_prefix
187
- raise ArgumentError, "Using a fixture as destination (#{destination}) is not supported"
189
+ raise ArgumentError,
190
+ "Using a fixture as destination (#{destination}) is not supported"
188
191
  end
189
192
 
190
193
  if source.count > 1 && exist?(destination) && !directory?(destination)
@@ -205,7 +208,6 @@ module Aruba
205
208
 
206
209
  self
207
210
  end
208
- # rubocop:enable Metrics/CyclomaticComplexity
209
211
 
210
212
  # Move a file and/or directory
211
213
  #
@@ -217,9 +219,6 @@ module Aruba
217
219
  # @param [String] destination
218
220
  # A file or directory name. If multiple sources are given the destination
219
221
  # needs to be a directory
220
- #
221
- # rubocop:disable Metrics/CyclomaticComplexity
222
- # rubocop:disable Metrics/MethodLength
223
222
  def move(*args)
224
223
  args = args.flatten
225
224
  destination = args.pop
@@ -232,7 +231,8 @@ module Aruba
232
231
  end
233
232
 
234
233
  if destination.start_with? aruba.config.fixtures_path_prefix
235
- raise ArgumentError, "Using a fixture as destination (#{destination}) is not supported"
234
+ raise ArgumentError,
235
+ "Using a fixture as destination (#{destination}) is not supported"
236
236
  end
237
237
 
238
238
  source.each do |s|
@@ -257,8 +257,6 @@ module Aruba
257
257
 
258
258
  self
259
259
  end
260
- # rubocop:enable Metrics/MethodLength
261
- # rubocop:enable Metrics/CyclomaticComplexity
262
260
 
263
261
  # Create a file with the given size
264
262
  #
@@ -290,21 +288,21 @@ module Aruba
290
288
  # Change file system permissions of file
291
289
  #
292
290
  # @param [Octal] mode
293
- # File system mode, eg. 0755
291
+ # File system mode, eg. 0o755
294
292
  #
295
293
  # @param [String] file_name
296
294
  # Name of file to be modified. This file needs to be present to succeed
297
295
  def chmod(*args)
298
296
  args = args.flatten
299
297
 
300
- options = if args.last.kind_of? Hash
298
+ options = if args.last.is_a? Hash
301
299
  args.pop
302
300
  else
303
301
  {}
304
302
  end
305
303
 
306
304
  mode = args.shift
307
- mode = if mode.kind_of? String
305
+ mode = if mode.is_a? String
308
306
  mode.to_i(8)
309
307
  else
310
308
  mode
@@ -349,7 +347,7 @@ module Aruba
349
347
  def remove(*args)
350
348
  args = args.flatten
351
349
 
352
- options = if args.last.kind_of? Hash
350
+ options = if args.last.is_a? Hash
353
351
  args.pop
354
352
  else
355
353
  {}
@@ -386,23 +384,11 @@ module Aruba
386
384
  # @return [FileSize]
387
385
  # Bytes on disk
388
386
  def disk_usage(*paths)
389
- expect(paths.flatten).to Aruba::Matchers.all be_an_existing_path
390
- expanded = paths.flatten.map { |path| ArubaPath.new(expand_path(path)) }
391
-
392
- # TODO: change the API so that you could set something like
393
- # aruba.config.fs_allocation_unit_size directly
394
-
395
- typical_fs_unit = 4096 # very typical, except for giant or embedded filesystems
396
- typical_dev_bsize = 512 # google dev_bsize for more info
397
-
398
- block_multiplier = typical_fs_unit / typical_dev_bsize
399
- fs_unit_size = aruba.config.physical_block_size * block_multiplier
387
+ paths = paths.flatten
388
+ expect(paths).to Aruba::Matchers.all be_an_existing_path
389
+ expanded = paths.map { |path| expand_path(path) }
400
390
 
401
- # TODO: the size argument here is unnecessary - ArubaPath should decide
402
- # what the disk usage of a file is (even if Aruba.config needs to be
403
- # read)
404
- deprecated_block_count = fs_unit_size / block_multiplier
405
- Aruba.platform.determine_disk_usage(expanded, deprecated_block_count)
391
+ Aruba.platform.determine_disk_usage(expanded)
406
392
  end
407
393
 
408
394
  # Get size of file