aruba 0.14.9 → 1.0.0

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 (309) hide show
  1. checksums.yaml +4 -4
  2. data/.cucumberproignore +3 -0
  3. data/.github/ISSUE_TEMPLATE.md +48 -0
  4. data/.github/PULL_REQUEST_TEMPLATE.md +41 -0
  5. data/.gitignore +1 -0
  6. data/.rspec +1 -1
  7. data/.rubocop.yml +20 -179
  8. data/.rubocop_todo.yml +262 -0
  9. data/.simplecov +7 -5
  10. data/.travis.yml +54 -46
  11. data/.yardopts +3 -0
  12. data/CHANGELOG.md +613 -246
  13. data/CONTRIBUTING.md +247 -45
  14. data/Dockerfile +67 -0
  15. data/Gemfile +5 -96
  16. data/LICENSE +1 -1
  17. data/README.md +57 -180
  18. data/Rakefile +63 -32
  19. data/appveyor.yml +8 -11
  20. data/aruba.gemspec +47 -41
  21. data/bin/console +7 -0
  22. data/bin/test +9 -0
  23. data/cucumber.yml +4 -24
  24. data/doc/dependency_decisions.yml +42 -2
  25. data/docker-compose.yml +26 -0
  26. data/{bin → exe}/aruba +1 -1
  27. data/fixtures/cli-app/Rakefile +1 -1
  28. data/fixtures/cli-app/bin/aruba-test-cli +6 -0
  29. data/fixtures/cli-app/cli-app.gemspec +1 -2
  30. data/fixtures/cli-app/features/support/aruba.rb +1 -0
  31. data/fixtures/cli-app/features/support/env.rb +1 -1
  32. data/fixtures/cli-app/lib/cli/app/suppress_simple_cov_output.rb +3 -3
  33. data/fixtures/cli-app/lib/cli/app/version.rb +1 -1
  34. data/fixtures/cli-app/lib/cli/app.rb +1 -5
  35. data/fixtures/cli-app/spec/spec_helper.rb +4 -6
  36. data/fixtures/empty-app/Rakefile +1 -1
  37. data/fixtures/empty-app/cli-app.gemspec +1 -2
  38. data/fixtures/empty-app/lib/cli/app/version.rb +1 -1
  39. data/fixtures/empty-app/lib/cli/app.rb +0 -6
  40. data/fixtures/getting-started-app/Gemfile +1 -1
  41. data/lib/aruba/api/commands.rb +109 -143
  42. data/lib/aruba/api/core.rb +57 -43
  43. data/lib/aruba/api/environment.rb +16 -7
  44. data/lib/aruba/api/filesystem.rb +42 -29
  45. data/lib/aruba/api/text.rb +3 -9
  46. data/lib/aruba/api.rb +6 -11
  47. data/lib/aruba/aruba_path.rb +27 -89
  48. data/lib/aruba/basic_configuration.rb +4 -24
  49. data/lib/aruba/cli.rb +1 -1
  50. data/lib/aruba/colorizer.rb +10 -99
  51. data/lib/aruba/command.rb +2 -0
  52. data/lib/aruba/config/jruby.rb +15 -5
  53. data/lib/aruba/config_wrapper.rb +1 -1
  54. data/lib/aruba/configuration.rb +92 -0
  55. data/lib/aruba/console/help.rb +1 -7
  56. data/lib/aruba/console.rb +5 -5
  57. data/lib/aruba/contracts/absolute_path.rb +2 -2
  58. data/lib/aruba/contracts/relative_path.rb +2 -2
  59. data/lib/aruba/cucumber/command.rb +171 -160
  60. data/lib/aruba/cucumber/environment.rb +1 -1
  61. data/lib/aruba/cucumber/file.rb +21 -35
  62. data/lib/aruba/cucumber/hooks.rb +17 -56
  63. data/lib/aruba/cucumber/testing_frameworks.rb +74 -50
  64. data/lib/aruba/cucumber.rb +0 -5
  65. data/lib/aruba/event_bus/name_resolver.rb +5 -16
  66. data/lib/aruba/hooks.rb +1 -1
  67. data/lib/aruba/in_config_wrapper.rb +5 -1
  68. data/lib/aruba/initializer.rb +36 -42
  69. data/lib/aruba/matchers/base/base_matcher.rb +2 -2
  70. data/lib/aruba/matchers/base/message_indenter.rb +19 -0
  71. data/lib/aruba/matchers/base/object_formatter.rb +2 -9
  72. data/lib/aruba/matchers/collection/include_an_object.rb +7 -9
  73. data/lib/aruba/matchers/command/be_successfully_executed.rb +6 -4
  74. data/lib/aruba/matchers/command/have_exit_status.rb +14 -4
  75. data/lib/aruba/matchers/command/have_finished_in_time.rb +3 -5
  76. data/lib/aruba/matchers/command/have_output.rb +10 -5
  77. data/lib/aruba/matchers/command/have_output_on_stderr.rb +2 -2
  78. data/lib/aruba/matchers/command/have_output_on_stdout.rb +2 -2
  79. data/lib/aruba/matchers/command/have_output_size.rb +2 -2
  80. data/lib/aruba/matchers/directory/be_an_existing_directory.rb +5 -7
  81. data/lib/aruba/matchers/directory/have_sub_directory.rb +4 -6
  82. data/lib/aruba/matchers/file/be_a_command_found_in_path.rb +2 -4
  83. data/lib/aruba/matchers/file/be_an_existing_executable.rb +4 -6
  84. data/lib/aruba/matchers/file/be_an_existing_file.rb +5 -7
  85. data/lib/aruba/matchers/file/have_file_content.rb +4 -4
  86. data/lib/aruba/matchers/file/have_file_size.rb +6 -8
  87. data/lib/aruba/matchers/file/have_same_file_content.rb +5 -8
  88. data/lib/aruba/matchers/path/a_path_matching_pattern.rb +2 -4
  89. data/lib/aruba/matchers/path/be_an_absolute_path.rb +3 -5
  90. data/lib/aruba/matchers/path/be_an_existing_path.rb +4 -6
  91. data/lib/aruba/matchers/path/have_permissions.rb +6 -8
  92. data/lib/aruba/matchers/string/include_output_string.rb +8 -10
  93. data/lib/aruba/matchers/string/match_output_string.rb +9 -11
  94. data/lib/aruba/matchers/string/output_string_eq.rb +7 -9
  95. data/lib/aruba/platform.rb +0 -8
  96. data/lib/aruba/platforms/announcer.rb +42 -79
  97. data/lib/aruba/platforms/aruba_file_creator.rb +2 -6
  98. data/lib/aruba/platforms/aruba_fixed_size_file_creator.rb +2 -2
  99. data/lib/aruba/platforms/aruba_logger.rb +23 -7
  100. data/lib/aruba/platforms/command_monitor.rb +12 -107
  101. data/lib/aruba/platforms/determine_disk_usage.rb +56 -14
  102. data/lib/aruba/platforms/filesystem_status.rb +10 -14
  103. data/lib/aruba/platforms/local_environment.rb +2 -2
  104. data/lib/aruba/platforms/simple_table.rb +3 -11
  105. data/lib/aruba/platforms/unix_command_string.rb +7 -11
  106. data/lib/aruba/platforms/unix_environment_variables.rb +18 -27
  107. data/lib/aruba/platforms/unix_platform.rb +20 -51
  108. data/lib/aruba/platforms/unix_which.rb +2 -1
  109. data/lib/aruba/platforms/windows_command_string.rb +15 -10
  110. data/lib/aruba/platforms/windows_environment_variables.rb +43 -44
  111. data/lib/aruba/platforms/windows_platform.rb +4 -0
  112. data/lib/aruba/platforms/windows_which.rb +4 -3
  113. data/lib/aruba/processes/basic_process.rb +28 -30
  114. data/lib/aruba/processes/debug_process.rb +12 -3
  115. data/lib/aruba/processes/in_process.rb +17 -8
  116. data/lib/aruba/processes/spawn_process.rb +57 -46
  117. data/lib/aruba/rspec.rb +14 -36
  118. data/lib/aruba/runtime.rb +3 -6
  119. data/lib/aruba/setup.rb +6 -6
  120. data/lib/aruba/tasks/docker_helpers.rb +154 -0
  121. data/lib/aruba/version.rb +1 -1
  122. metadata +191 -244
  123. data/features/.nav +0 -72
  124. data/features/api/command/find_command.feature +0 -83
  125. data/features/api/command/last_command_started.feature +0 -50
  126. data/features/api/command/last_command_stopped.feature +0 -89
  127. data/features/api/command/run.feature +0 -414
  128. data/features/api/command/run_simple.feature +0 -242
  129. data/features/api/command/send_signal.feature +0 -53
  130. data/features/api/command/stderr.feature +0 -46
  131. data/features/api/command/stdout.feature +0 -46
  132. data/features/api/command/stop.feature +0 -131
  133. data/features/api/command/stop_all_commands.feature +0 -53
  134. data/features/api/command/terminate_all_commands.feature +0 -53
  135. data/features/api/command/which.feature +0 -37
  136. data/features/api/core/expand_path.feature +0 -88
  137. data/features/api/environment/append_environment_variable.feature +0 -128
  138. data/features/api/environment/delete_environment_variable.feature +0 -63
  139. data/features/api/environment/prepend_environment_variable.feature +0 -128
  140. data/features/api/environment/set_environment_variable.feature +0 -376
  141. data/features/api/filesystem/cd.feature +0 -184
  142. data/features/api/filesystem/create_directory.feature +0 -57
  143. data/features/api/filesystem/disk_usage.feature +0 -152
  144. data/features/api/filesystem/does_exist.feature +0 -62
  145. data/features/api/filesystem/fixtures.feature +0 -104
  146. data/features/api/filesystem/is_absolute.feature +0 -48
  147. data/features/api/filesystem/is_directory.feature +0 -53
  148. data/features/api/filesystem/is_file.feature +0 -54
  149. data/features/api/filesystem/is_relative.feature +0 -48
  150. data/features/api/filesystem/move.feature +0 -119
  151. data/features/api/text/extract_text.feature +0 -87
  152. data/features/api/text/replace_variables.feature +0 -45
  153. data/features/api/text/sanitize_text.feature +0 -228
  154. data/features/api/text/unescape_text.feature +0 -127
  155. data/features/cli/console.feature +0 -52
  156. data/features/cli/init.feature +0 -79
  157. data/features/configuration/activate_announcer_on_command_failure.feature +0 -38
  158. data/features/configuration/command_runtime_environment.feature +0 -129
  159. data/features/configuration/console_history_file.feature +0 -38
  160. data/features/configuration/exit_timeout.feature +0 -52
  161. data/features/configuration/fixtures_directories.feature +0 -38
  162. data/features/configuration/fixtures_path_prefix.feature +0 -23
  163. data/features/configuration/home_directory.feature +0 -80
  164. data/features/configuration/io_timeout.feature +0 -30
  165. data/features/configuration/keep_ansi.feature +0 -30
  166. data/features/configuration/log_level.feature +0 -38
  167. data/features/configuration/physical_block_size.feature +0 -53
  168. data/features/configuration/remove_ansi_escape_sequences.feature +0 -38
  169. data/features/configuration/root_directory.feature +0 -30
  170. data/features/configuration/startup_wait_time.feature +0 -48
  171. data/features/configuration/usage.feature +0 -159
  172. data/features/configuration/working_directory.feature +0 -33
  173. data/features/development/build.feature +0 -15
  174. data/features/getting_started/cleanup.feature +0 -58
  175. data/features/getting_started/run_commands.feature +0 -187
  176. data/features/getting_started/supported_testing_frameworks.feature +0 -104
  177. data/features/getting_started/writing_good_feature_tests.feature +0 -38
  178. data/features/hooks/after/command.feature +0 -46
  179. data/features/hooks/before/command.feature +0 -75
  180. data/features/matchers/collection/include_an_object.feature +0 -72
  181. data/features/matchers/directory/have_sub_directory.feature +0 -110
  182. data/features/matchers/file/be_a_command_found_in_path.feature +0 -115
  183. data/features/matchers/file/be_existing_executable.feature +0 -88
  184. data/features/matchers/file/be_existing_file.feature +0 -82
  185. data/features/matchers/file/have_file_content.feature +0 -123
  186. data/features/matchers/file/have_file_size.feature +0 -107
  187. data/features/matchers/path/be_an_absolute_path.feature +0 -74
  188. data/features/matchers/path/be_an_existing_path.feature +0 -97
  189. data/features/matchers/path/have_permissions.feature +0 -118
  190. data/features/matchers/timeouts.feature +0 -48
  191. data/features/platforms/jruby.feature +0 -14
  192. data/features/rspec/integration.feature +0 -179
  193. data/features/step_definitions/aruba_dev_steps.rb +0 -56
  194. data/features/step_definitions/hooks.rb +0 -156
  195. data/features/steps/command/debug.feature +0 -92
  196. data/features/steps/command/exit_statuses.feature +0 -136
  197. data/features/steps/command/in_process.feature +0 -485
  198. data/features/steps/command/interactive.feature +0 -90
  199. data/features/steps/command/output.feature +0 -567
  200. data/features/steps/command/run.feature +0 -66
  201. data/features/steps/command/send_signal.feature +0 -104
  202. data/features/steps/command/shell.feature +0 -155
  203. data/features/steps/command/stderr.feature +0 -68
  204. data/features/steps/command/stdout.feature +0 -109
  205. data/features/steps/command/stop.feature +0 -313
  206. data/features/steps/core/announce.feature +0 -283
  207. data/features/steps/environment/append_environment_variable.feature +0 -52
  208. data/features/steps/environment/disable_bunder.feature +0 -18
  209. data/features/steps/environment/home_variable.feature +0 -62
  210. data/features/steps/environment/prepend_environment_variable.feature +0 -52
  211. data/features/steps/environment/set_environment_variable.feature +0 -49
  212. data/features/steps/filesystem/append_to_file.feature +0 -45
  213. data/features/steps/filesystem/cd_to_directory.feature +0 -33
  214. data/features/steps/filesystem/check_file_content.feature +0 -61
  215. data/features/steps/filesystem/check_permissions_of_file.feature +0 -39
  216. data/features/steps/filesystem/compare_files.feature +0 -42
  217. data/features/steps/filesystem/copy.feature +0 -45
  218. data/features/steps/filesystem/create_directory.feature +0 -57
  219. data/features/steps/filesystem/create_file.feature +0 -76
  220. data/features/steps/filesystem/existence_of_directory.feature +0 -57
  221. data/features/steps/filesystem/existence_of_file.feature +0 -43
  222. data/features/steps/filesystem/file_content.feature +0 -86
  223. data/features/steps/filesystem/fixtures.feature +0 -64
  224. data/features/steps/filesystem/move.feature +0 -45
  225. data/features/steps/filesystem/non_existence_of_directory.feature +0 -69
  226. data/features/steps/filesystem/non_existence_of_file.feature +0 -80
  227. data/features/steps/filesystem/overwrite_file.feature +0 -72
  228. data/features/steps/filesystem/remove_directory.feature +0 -38
  229. data/features/steps/filesystem/remove_file.feature +0 -38
  230. data/features/steps/filesystem/use_fixture.feature +0 -77
  231. data/features/steps/overview.feature +0 -25
  232. data/features/support/aruba.rb +0 -7
  233. data/features/support/env.rb +0 -33
  234. data/features/support/jruby.rb +0 -5
  235. data/features/support/simplecov_setup.rb +0 -8
  236. data/fixtures/cli-app/bin/cli +0 -6
  237. data/fixtures/spawn_process/stderr.sh +0 -3
  238. data/lib/aruba/api/deprecated.rb +0 -1234
  239. data/lib/aruba/config.rb +0 -107
  240. data/lib/aruba/cucumber/core.rb +0 -5
  241. data/lib/aruba/cucumber/rvm.rb +0 -3
  242. data/lib/aruba/in_process.rb +0 -14
  243. data/lib/aruba/jruby.rb +0 -4
  244. data/lib/aruba/matchers/deprecated/file.rb +0 -17
  245. data/lib/aruba/matchers/deprecated.rb +0 -1
  246. data/lib/aruba/matchers/path/match_path_pattern.rb +0 -41
  247. data/lib/aruba/matchers/rspec_matcher_include_regexp.rb +0 -25
  248. data/lib/aruba/platforms/disk_usage_calculator.rb +0 -20
  249. data/lib/aruba/reporting.rb +0 -126
  250. data/lib/aruba/spawn_process.rb +0 -11
  251. data/script/bootstrap +0 -28
  252. data/script/console +0 -16
  253. data/script/test +0 -3
  254. data/spec/aruba/api/bundler_spec.rb +0 -15
  255. data/spec/aruba/api/deprecated_spec.rb +0 -308
  256. data/spec/aruba/api/environment/restore_env_spec.rb +0 -86
  257. data/spec/aruba/api/environment/set_env_spec.rb +0 -46
  258. data/spec/aruba/api/filesystem/file_size_spec.rb +0 -28
  259. data/spec/aruba/api/runtime_spec.rb +0 -28
  260. data/spec/aruba/api_spec.rb +0 -981
  261. data/spec/aruba/aruba_path_spec.rb +0 -103
  262. data/spec/aruba/basic_configuration_spec.rb +0 -5
  263. data/spec/aruba/configuration_spec.rb +0 -5
  264. data/spec/aruba/hooks_spec.rb +0 -17
  265. data/spec/aruba/in_config_wrapper_spec.rb +0 -25
  266. data/spec/aruba/jruby_spec.rb +0 -55
  267. data/spec/aruba/matchers/command/have_output_size_spec.rb +0 -25
  268. data/spec/aruba/matchers/command_spec.rb +0 -174
  269. data/spec/aruba/matchers/deprecated_spec.rb +0 -120
  270. data/spec/aruba/matchers/directory_spec.rb +0 -57
  271. data/spec/aruba/matchers/file_spec.rb +0 -208
  272. data/spec/aruba/matchers/path_spec.rb +0 -58
  273. data/spec/aruba/platform/simple_table_spec.rb +0 -23
  274. data/spec/aruba/platform/windows_environment_variables_spec.rb +0 -500
  275. data/spec/aruba/platforms/unix_command_string_spec.rb +0 -17
  276. data/spec/aruba/platforms/windows_command_string_spec.rb +0 -22
  277. data/spec/aruba/rspec_spec.rb +0 -15
  278. data/spec/aruba/runtime_spec.rb +0 -29
  279. data/spec/aruba/spawn_process_spec.rb +0 -96
  280. data/spec/event_bus/name_resolver_spec.rb +0 -68
  281. data/spec/event_bus_spec.rb +0 -158
  282. data/spec/spec_helper.rb +0 -20
  283. data/spec/support/configs/.keep +0 -0
  284. data/spec/support/configs/aruba.rb +0 -5
  285. data/spec/support/configs/pry.rb +0 -3
  286. data/spec/support/configs/rspec.rb +0 -15
  287. data/spec/support/helpers/.keep +0 -0
  288. data/spec/support/helpers/reporting.rb +0 -44
  289. data/spec/support/matchers/.keep +0 -0
  290. data/spec/support/matchers/option.rb +0 -35
  291. data/spec/support/shared_contexts/.keep +0 -0
  292. data/spec/support/shared_contexts/aruba.rb +0 -49
  293. data/spec/support/shared_examples/.keep +0 -0
  294. data/spec/support/shared_examples/configuration.rb +0 -116
  295. data/spec/support/shared_examples/directory.rb +0 -7
  296. data/spec/support/shared_examples/file.rb +0 -7
  297. data/templates/css/console.css +0 -24
  298. data/templates/css/filesystem.css +0 -42
  299. data/templates/css/pygments-autumn.css +0 -59
  300. data/templates/files.erb +0 -14
  301. data/templates/images/LICENSE +0 -22
  302. data/templates/images/folder.png +0 -0
  303. data/templates/images/page_white.png +0 -0
  304. data/templates/images/page_white_gherkin.png +0 -0
  305. data/templates/images/page_white_ruby.png +0 -0
  306. data/templates/index.erb +0 -20
  307. data/templates/js/filesystem.js +0 -5
  308. data/templates/js/jquery-1.11.3.min.js +0 -5
  309. data/templates/main.erb +0 -34
@@ -1,7 +1,7 @@
1
1
  require 'shellwords'
2
2
  require 'aruba/colorizer'
3
3
 
4
- Aruba::AnsiColor.coloring = false if !STDOUT.tty? && !ENV.key?("AUTOTEST")
4
+ Aruba::Colorizer.coloring = false if !STDOUT.tty? && !ENV.key?('AUTOTEST')
5
5
 
6
6
  # Aruba
7
7
  module Aruba
@@ -27,25 +27,32 @@ module Aruba
27
27
  # Aruba.announcer.announce(:my_channel, 'my message')
28
28
  #
29
29
  class Announcer
30
+ # Base Announcer class
31
+ class BaseAnnouncer
32
+ def mode?(m)
33
+ mode == m
34
+ end
35
+ end
36
+
30
37
  # Announcer using Kernel.puts
31
- class KernelPutsAnnouncer
38
+ class KernelPutsAnnouncer < BaseAnnouncer
32
39
  def announce(message)
33
40
  Kernel.puts message
34
41
  end
35
42
 
36
- def mode?(m)
37
- :kernel_puts == m
43
+ def mode
44
+ :kernel_puts
38
45
  end
39
46
  end
40
47
 
41
48
  # Announcer using Main#puts
42
- class PutsAnnouncer
49
+ class PutsAnnouncer < BaseAnnouncer
43
50
  def announce(message)
44
51
  puts message
45
52
  end
46
53
 
47
- def mode?(m)
48
- :puts == m
54
+ def mode
55
+ :puts
49
56
  end
50
57
  end
51
58
 
@@ -55,7 +62,7 @@ module Aruba
55
62
 
56
63
  public
57
64
 
58
- def initialize(*args)
65
+ def initialize
59
66
  @announcers = []
60
67
  @announcers << PutsAnnouncer.new
61
68
  @announcers << KernelPutsAnnouncer.new
@@ -66,14 +73,11 @@ module Aruba
66
73
  @channels = {}
67
74
  @output_formats = {}
68
75
 
69
- @options = args[1] || {}
70
-
71
76
  after_init
72
77
  end
73
78
 
74
79
  private
75
80
 
76
- # rubocop:disable Metrics/MethodLength
77
81
  def after_init
78
82
  output_format :changed_configuration, proc { |n, v| format('# %s = %s', n, v) }
79
83
  output_format :changed_environment, proc { |n, v| format('$ export %s=%s', n, Shellwords.escape(v)) }
@@ -88,34 +92,12 @@ module Aruba
88
92
  output_format :stop_signal, proc { |p, s| format('Command will be stopped with `kill -%s %s`', s, p) }
89
93
  output_format :timeout, '# %s-timeout: %s seconds'
90
94
  output_format :wait_time, '# %s: %s seconds'
91
- # rubocop:disable Metrics/LineLength
92
- output_format :command_filesystem_status, proc { |status| format("<<-COMMAND FILESYSTEM STATUS\n%s\nCOMMAND FILESYSTEM STATUS", Aruba.platform.simple_table(status.to_h, :sort => false)) }
93
- # rubocop:enable Metrics/LineLength
94
-
95
- # rubocop:disable Metrics/LineLength
96
- if @options[:stdout]
97
- warn('The use of "@announce_stdout-instance" variable and "options[:stdout] = true" for Announcer.new is deprecated. Please use "announcer.activate(:stdout)" instead.')
98
- activate :stdout
99
- end
100
- if @options[:stderr]
101
- warn('The use of "@announce_stderr-instance" variable and "options[:stderr] = true" for Announcer.new is deprecated. Please use "announcer.activate(:stderr)" instead.')
102
- activate :stderr
103
- end
104
- if @options[:dir]
105
- warn('The use of "@announce_dir-instance" variable and "options[:dir] = true" for Announcer.new is deprecated. Please use "announcer.activate(:directory)" instead.')
106
- activate :directory
107
- end
108
- if @options[:cmd]
109
- warn('The use of "@announce_cmd-instance" variable and "options[:cmd] = true" for Announcer.new is deprecated. Please use "announcer.activate(:command)" instead.')
110
- activate :command
111
- end
112
- if @options[:env]
113
- warn('The use of "@announce_env-instance" variable and "options[:env] = true" for Announcer.new is deprecated. Please use "announcer.activate(:modified_environment)" instead.')
114
- activate :modified_enviroment
115
- end
116
- # rubocop:enable Metrics/LineLength
95
+ output_format :command_filesystem_status,
96
+ proc { |status|
97
+ format("<<-COMMAND FILESYSTEM STATUS\n%s\nCOMMAND FILESYSTEM STATUS",
98
+ Aruba.platform.simple_table(status.to_h, sort: false))
99
+ }
117
100
  end
118
- # rubocop:enable Metrics/MethodLength
119
101
 
120
102
  def output_format(channel, string = '%s', &block)
121
103
  output_formats[channel.to_sym] = if block_given?
@@ -139,11 +121,18 @@ module Aruba
139
121
  # @param [Symbol] m
140
122
  # The mode to set
141
123
  def mode=(m)
142
- @announcer = @announcers.find { |a| f.mode? m.to_sym }
124
+ @announcer = @announcers.find { |a| a.mode? m.to_sym }
143
125
 
144
126
  self
145
127
  end
146
128
 
129
+ # Fecth mode of announcer
130
+ #
131
+ # @return [Symbol] The current announcer mode
132
+ def mode
133
+ @announcer.mode
134
+ end
135
+
147
136
  # Check if channel is activated
148
137
  #
149
138
  # @param [Symbol] channel
@@ -154,7 +143,7 @@ module Aruba
154
143
 
155
144
  # Activate a channel
156
145
  #
157
- # @param [Symbol] channel
146
+ # @param [Symbol] chns
158
147
  # The name of the channel to activate
159
148
  def activate(*chns)
160
149
  chns.flatten.each { |c| channels[c.to_sym] = true }
@@ -173,7 +162,7 @@ module Aruba
173
162
  # @yield
174
163
  # If block is given, that one is called and the return value is used as
175
164
  # message to be announced.
176
- def announce(channel, *args, &block)
165
+ def announce(channel, *args)
177
166
  channel = channel.to_sym
178
167
 
179
168
  the_output_format = if output_formats.key? channel
@@ -184,49 +173,23 @@ module Aruba
184
173
 
185
174
  return unless activated?(channel)
186
175
 
187
- message = if block_given?
188
- the_output_format.call(yield)
189
- else
190
- the_output_format.call(*args)
191
- end
192
- message += "\n"
193
- message = colorizer.cyan(message)
176
+ begin
177
+ if block_given?
178
+ value = yield
179
+ args << value
180
+ end
181
+
182
+ message = the_output_format.call(*args)
183
+ message += "\n"
184
+ message = colorizer.cyan(message)
185
+ rescue NotImplementedError => e
186
+ message = "Error fetching announced value for #{channel}: #{e.message}"
187
+ end
194
188
 
195
189
  announcer.announce(message)
196
190
 
197
191
  nil
198
192
  end
199
-
200
- # @deprecated
201
- def stdout(content)
202
- warn('The announcer now has a new api to activate channels. Please use this one: announce(:stdout, message)')
203
- announce :stdout, content
204
- end
205
-
206
- # @deprecated
207
- def stderr(content)
208
- warn('The announcer now has a new api to activate channels. Please use this one: announce(:stderr, message)')
209
- announce :stderr, content
210
- end
211
-
212
- # @deprecated
213
- def dir(dir)
214
- warn('The announcer now has a new api to activate channels. Please use this one announce(:directory, message)')
215
- announce :directory, dir
216
- end
217
-
218
- # @deprecated
219
- def cmd(cmd)
220
- warn('The announcer now has a new api to activate channels. Please use this one announce(:command, message)')
221
- announce :command, cmd
222
- end
223
-
224
- # @deprecated
225
- def env(name, value)
226
- warn('The announcer now has a new api to activate channels. Please use this one: announce(:changed_environment, key, value)')
227
-
228
- announce :changed_environment, name, value
229
- end
230
193
  end
231
194
  end
232
195
  end
@@ -15,18 +15,14 @@ module Aruba
15
15
  # @param [Object] content
16
16
  # The content of the file
17
17
  #
18
- # @param [TrueClass, FalseClass] check_presence (false)
18
+ # @param [Boolean] check_presence (false)
19
19
  # Check if file exist
20
20
  def call(path, content, check_presence = false)
21
21
  fail "Expected #{path} to be present" if check_presence && !Aruba.platform.file?(path)
22
22
 
23
23
  Aruba.platform.mkdir(File.dirname(path))
24
24
 
25
- if RUBY_VERSION < '1.9.3'
26
- File.open(path, 'w') { |f| f << content }
27
- else
28
- File.write(path, content)
29
- end
25
+ File.write(path, content)
30
26
 
31
27
  self
32
28
  end
@@ -19,14 +19,14 @@ module Aruba
19
19
  # @param [Numeric] size
20
20
  # The size of the file
21
21
  #
22
- # @param [TrueClass, FalseClass] check_presence (false)
22
+ # @param [Boolean] check_presence (false)
23
23
  # Check if file exist
24
24
  def call(path, size, check_presence)
25
25
  fail "Expected #{path} to be present" if check_presence && !Aruba.platform.file?(path)
26
26
 
27
27
  Aruba.platform.mkdir(File.dirname(path))
28
28
 
29
- File.open(path, "wb"){ |f| f.seek(size - 1); f.write("\0") }
29
+ File.open(path, 'wb') { |f| f.seek(size - 1); f.write("\0") }
30
30
 
31
31
  self
32
32
  end
@@ -10,19 +10,35 @@ module Aruba
10
10
 
11
11
  # Create logger
12
12
  #
13
- # @param [Logger] logger (::Logger.new( $stderr ))
14
- # The logger with should be used to output data
13
+ # @param [Hash] opts
14
+ # Options
15
+ #
16
+ # @option opts [Symbol] :default_mode Log level
15
17
  def initialize(opts = {})
16
18
  @mode = opts.fetch(:default_mode, :info)
17
19
  end
18
20
 
21
+ # @!method fatal(msg)
22
+ # Log a fatal level log message
23
+
24
+ # @!method warn(msg)
25
+ # Log a warn level log message
26
+
27
+ # @!method debug(msg)
28
+ # Log a debug level log message
29
+
30
+ # @!method info(msg)
31
+ # Log an info level log message
32
+
33
+ # @!method error(msg)
34
+ # Log an error level log message
35
+
36
+ # @!method unknown(msg)
37
+ # Log an unknown level log message
38
+
19
39
  [:fatal, :warn, :debug, :info, :error, :unknown].each do |m|
20
40
  define_method m do |msg|
21
- if RUBY_VERSION < '1.9'
22
- logger.send m, msg
23
- else
24
- logger.public_send m, msg
25
- end
41
+ logger.public_send m, msg
26
42
  end
27
43
  end
28
44
 
@@ -22,6 +22,10 @@ module Aruba
22
22
  def method_missing(*)
23
23
  fail NoCommandHasBeenStoppedError, 'No last command stopped available'
24
24
  end
25
+
26
+ def respond_to_missing?(*)
27
+ true
28
+ end
25
29
  end
26
30
 
27
31
  class DefaultLastCommandStarted
@@ -32,6 +36,10 @@ module Aruba
32
36
  def method_missing(*)
33
37
  fail NoCommandHasBeenStartedError, 'No last command started available'
34
38
  end
39
+
40
+ def respond_to_missing?(*)
41
+ true
42
+ end
35
43
  end
36
44
 
37
45
  def initialize(opts = {})
@@ -40,23 +48,11 @@ module Aruba
40
48
 
41
49
  @last_command_stopped = DefaultLastCommandStopped.new
42
50
  @last_command_started = DefaultLastCommandStarted.new
43
-
44
51
  rescue KeyError => e
45
52
  raise ArgumentError, e.message
46
53
  end
47
54
 
48
- if Aruba::VERSION < '1'
49
- # Return the last command stopped
50
- def last_command_stopped
51
- return @last_command_stopped unless @last_command_stopped.nil?
52
-
53
- registered_commands.each(&:stop)
54
-
55
- @last_command_stopped
56
- end
57
- else
58
- attr_reader :last_command_stopped
59
- end
55
+ attr_reader :last_command_stopped
60
56
 
61
57
  # Set last command started
62
58
  #
@@ -66,7 +62,7 @@ module Aruba
66
62
  @last_command_started = find(cmd)
67
63
  end
68
64
 
69
- # Set last command started
65
+ # Set last command stopped
70
66
  #
71
67
  # @param [String] cmd
72
68
  # The commandline of the command
@@ -95,37 +91,6 @@ module Aruba
95
91
  self
96
92
  end
97
93
 
98
- # @deprecated
99
- # Fetch output (stdout, stderr) from command
100
- #
101
- # @param [String] cmd
102
- # The command
103
- def output_from(cmd)
104
- cmd = Utils.detect_ruby(cmd)
105
- find(cmd).output
106
- end
107
-
108
- # @deprecated
109
- # Fetch stdout from command
110
- #
111
- # @param [String] cmd
112
- # The command
113
- def stdout_from(cmd)
114
- cmd = Utils.detect_ruby(cmd)
115
- find(cmd).stdout
116
- end
117
-
118
- # @deprecated
119
- # Fetch stderr from command
120
- #
121
- # @param [String] cmd
122
- # The command
123
- def stderr_from(cmd)
124
- cmd = Utils.detect_ruby(cmd)
125
- find(cmd).stderr
126
- end
127
-
128
- # @deprecated
129
94
  # Get stdout of all commands
130
95
  #
131
96
  # @return [String]
@@ -133,14 +98,9 @@ module Aruba
133
98
  def all_stdout
134
99
  registered_commands.each(&:stop)
135
100
 
136
- if RUBY_VERSION < '1.9.3'
137
- registered_commands.inject("") { |a, e| a << e.stdout; a }
138
- else
139
- registered_commands.each_with_object("") { |e, a| a << e.stdout }
140
- end
101
+ registered_commands.each_with_object('') { |e, a| a << e.stdout }
141
102
  end
142
103
 
143
- # @deprecated
144
104
  # Get stderr of all commands
145
105
  #
146
106
  # @return [String]
@@ -148,14 +108,9 @@ module Aruba
148
108
  def all_stderr
149
109
  registered_commands.each(&:stop)
150
110
 
151
- if RUBY_VERSION < '1.9.3'
152
- registered_commands.inject("") { |a, e| a << e.stderr; a }
153
- else
154
- registered_commands.each_with_object("") { |e, a| a << e.stderr }
155
- end
111
+ registered_commands.each_with_object('') { |e, a| a << e.stderr }
156
112
  end
157
113
 
158
- # @deprecated
159
114
  # Get stderr and stdout of all commands
160
115
  #
161
116
  # @return [String]
@@ -164,56 +119,6 @@ module Aruba
164
119
  all_stdout << all_stderr
165
120
  end
166
121
 
167
- # @deprecated
168
- def last_exit_status
169
- Aruba.platform.deprecated('The use of "#last_exit_status" is deprecated. Use "last_command_(started|stopped).exit_status" instead')
170
-
171
- return @last_exit_status if @last_exit_status
172
- registered_commands.each(&:stop)
173
- @last_exit_status
174
- end
175
-
176
- # @deprecated
177
- def stop_process(process)
178
- @last_command_stopped = process
179
- @last_exit_status = process.stop(announcer)
180
- end
181
-
182
- # @deprecated
183
- def terminate_process!(process)
184
- process.terminate
185
- end
186
-
187
- # @deprecated
188
- def stop_processes!
189
- Aruba.platform.deprecated('The use of "#stop_processes!" is deprecated.')
190
-
191
- registered_commands.each(&:stop)
192
- end
193
-
194
- # @deprecated
195
- # Terminate all running processes
196
- def terminate_processes
197
- Aruba.platform.deprecated('The use of "#terminate_processes" is deprecated.')
198
-
199
- registered_commands.each(&:terminate)
200
- end
201
-
202
- # @deprecated
203
- def only_processes
204
- Aruba.platform.deprecated('The use of "#only_processes" is deprecated.')
205
-
206
- registered_commands
207
- end
208
-
209
- # @deprecated
210
- def get_process(wanted)
211
- command = find(wanted)
212
- raise ArgumentError.new("No process named '#{wanted}' has been started") unless command
213
-
214
- command
215
- end
216
-
217
122
  # Register command to monitor
218
123
  def register_command(cmd)
219
124
  registered_commands << cmd
@@ -1,28 +1,70 @@
1
- require 'aruba/platforms/disk_usage_calculator'
1
+ require 'aruba/file_size'
2
2
 
3
- # Aruba
4
3
  module Aruba
5
- # Platforms
6
4
  module Platforms
7
5
  # Determinate disk usage
8
6
  #
9
7
  # @private
10
8
  class DetermineDiskUsage
11
- def call(*args)
12
- args = args.flatten
13
-
14
- physical_block_size = args.pop
15
- paths = args
16
-
17
- size = paths.flatten.map do |p|
18
- DiskUsageCalculator.new.call(
19
- p.blocks,
20
- physical_block_size
21
- )
9
+ def call(paths)
10
+ size = paths.flatten.map do |path|
11
+ minimum_disk_space_used path
22
12
  end.inject(0, &:+)
23
13
 
24
14
  FileSize.new(size)
25
15
  end
16
+
17
+ private
18
+
19
+ # TODO: Aruba.config.physical_block_size could be allowed to be nil
20
+ # (So the unit size can be autodetected)
21
+
22
+ # Report minimum disk space used
23
+ #
24
+ # This estimates the minimum bytes allocated by the path.
25
+ #
26
+ # E.g. a 1-byte text file on a typical EXT-3 filesystem takes up 4096 bytes
27
+ # (could be more if it was truncated or less for sparse files).
28
+ #
29
+ # Both `File::Stat` and the `stat()` system call will report 8 `blocks`
30
+ # (each "usually" represents 512 bytes). So 8 * 512 is exactly 4096 bytes.
31
+ #
32
+ # (The "magic" 512 bye implied makes the value of "blocks" so confusing).
33
+ #
34
+ # Currently Aruba allows you to set what's called the `physical_block_size`,
35
+ # which is a bit misleading - it's the "512" value. So if you somehow have a
36
+ # "filesystem unit size" of 8192 (instead of a typical 4KB), set the
37
+ # `physical_block_size` to 1024 (yes, divide by 8: 8192/8 = 1024).
38
+ #
39
+ # Ideally, Aruba should provide e.g. `Aruba.config.fs_allocation_unit`
40
+ # (with 4096 as the default), so you wouldn't have to "divide by 8".
41
+ #
42
+ # (typical_fs_unit / typical_dev_bsize = 4096 / 512 = 8)
43
+ #
44
+ #
45
+ # @return [Integer]
46
+ # Total bytes allocate
47
+ #
48
+ # TODO: this is recommended over the above "blocks"
49
+ def minimum_disk_space_used(path)
50
+ # TODO: replace Aruba.config.physical_block_size
51
+ # with something like Aruba.config.fs_allocation_unit
52
+ dev_bsize = Aruba.config.physical_block_size
53
+
54
+ stat = File::Stat.new(path.to_s)
55
+
56
+ blocks = stat.blocks
57
+ return (blocks * dev_bsize) if blocks
58
+
59
+ typical_fs_unit = 4096
60
+ typical_dev_bsize = 512 # google dev_bsize for more info
61
+
62
+ block_multiplier = typical_fs_unit / typical_dev_bsize
63
+ fs_unit_size = dev_bsize * block_multiplier
64
+ fs_units = (stat.size + fs_unit_size - 1) / fs_unit_size
65
+ fs_units = 1 if fs_units.zero?
66
+ fs_units * fs_unit_size
67
+ end
26
68
  end
27
69
  end
28
70
  end
@@ -22,11 +22,7 @@ module Aruba
22
22
 
23
23
  public
24
24
 
25
- if RUBY_VERSION >= '1.9.3'
26
- def_delegators :@status, *METHODS
27
- else
28
- def_delegators :@status, :executable?, :ctime, :atime, :mtime, :size
29
- end
25
+ def_delegators :@status, *METHODS
30
26
 
31
27
  def initialize(path)
32
28
  @status = File::Stat.new(path)
@@ -34,7 +30,7 @@ module Aruba
34
30
 
35
31
  # Return permissions
36
32
  def mode
37
- format("%o", status.mode)[-4,4].gsub(/^0*/, '')
33
+ format('%o', status.mode)[-4, 4].gsub(/^0*/, '')
38
34
  end
39
35
 
40
36
  # Return owner
@@ -53,14 +49,14 @@ module Aruba
53
49
  # A hash of values
54
50
  def to_h
55
51
  {
56
- :owner => owner,
57
- :group => group,
58
- :mode => mode,
59
- :executable => executable?,
60
- :ctime => ctime,
61
- :atime => atime,
62
- :mtime => mtime,
63
- :size => size
52
+ owner: owner,
53
+ group: group,
54
+ mode: mode,
55
+ executable: executable?,
56
+ ctime: ctime,
57
+ atime: atime,
58
+ mtime: mtime,
59
+ size: size
64
60
  }
65
61
  end
66
62
  end
@@ -13,8 +13,8 @@ module Aruba
13
13
  #
14
14
  # @yield
15
15
  # The block of code which should with local ENV
16
- def call(env, &block)
17
- old_env = ENV.to_hash.dup
16
+ def call(env)
17
+ old_env = Aruba.platform.environment_variables.hash_from_env
18
18
 
19
19
  ENV.clear
20
20
  ENV.update env
@@ -17,7 +17,7 @@ module Aruba
17
17
  def initialize(hash, opts)
18
18
  @hash = hash
19
19
  @opts = {
20
- :sort => true
20
+ sort: true
21
21
  }.merge opts
22
22
  end
23
23
 
@@ -31,16 +31,8 @@ module Aruba
31
31
 
32
32
  name_size = longest_key.length
33
33
 
34
- if RUBY_VERSION < '2'
35
- rows = []
36
-
37
- hash.each do |k,v|
38
- rows << format("# %-#{name_size}s => %s", k, v)
39
- end
40
- else
41
- rows = hash.each_with_object([]) do |(k,v), a|
42
- a << format("# %-#{name_size}s => %s", k, v)
43
- end
34
+ rows = hash.each_with_object([]) do |(k, v), a|
35
+ a << format("# %-#{name_size}s => %s", k, v)
44
36
  end
45
37
 
46
38
  if opts[:sort] == true
@@ -6,21 +6,17 @@ module Aruba
6
6
  # Platforms
7
7
  module Platforms
8
8
  # This is a command which should be run
9
- class UnixCommandString < SimpleDelegator
10
- def initialize(cmd)
11
- __setobj__ cmd
9
+ #
10
+ # @private
11
+ class UnixCommandString
12
+ def initialize(command, *arguments)
13
+ @command = command
14
+ @arguments = arguments
12
15
  end
13
16
 
14
17
  # Convert to array
15
18
  def to_a
16
- [__getobj__]
17
- end
18
-
19
- if RUBY_VERSION < '1.9'
20
- def to_s
21
- __getobj__.to_s
22
- end
23
- alias inspect to_s
19
+ [@command, *@arguments]
24
20
  end
25
21
  end
26
22
  end