aruba 1.0.0.pre.alpha.5 → 1.0.4

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.
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