aruba-win-fix 0.14.2

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 (324) hide show
  1. checksums.yaml +7 -0
  2. data/.document +5 -0
  3. data/.gitignore +37 -0
  4. data/.rspec +3 -0
  5. data/.rubocop.yml +188 -0
  6. data/.simplecov +34 -0
  7. data/.travis.yml +47 -0
  8. data/.yardopts +8 -0
  9. data/CONTRIBUTING.md +71 -0
  10. data/Gemfile +83 -0
  11. data/History.md +579 -0
  12. data/LICENSE +20 -0
  13. data/README.md +226 -0
  14. data/Rakefile +49 -0
  15. data/TODO.md +13 -0
  16. data/appveyor.yml +32 -0
  17. data/aruba.gemspec +48 -0
  18. data/bin/aruba +7 -0
  19. data/config/.gitignore +1 -0
  20. data/cucumber.yml +26 -0
  21. data/features/.nav +72 -0
  22. data/features/api/command/find_command.feature +83 -0
  23. data/features/api/command/last_command_started.feature +50 -0
  24. data/features/api/command/last_command_stopped.feature +89 -0
  25. data/features/api/command/run.feature +414 -0
  26. data/features/api/command/run_simple.feature +242 -0
  27. data/features/api/command/send_signal.feature +53 -0
  28. data/features/api/command/stderr.feature +46 -0
  29. data/features/api/command/stdout.feature +46 -0
  30. data/features/api/command/stop.feature +131 -0
  31. data/features/api/command/stop_all_commands.feature +53 -0
  32. data/features/api/command/terminate_all_commands.feature +53 -0
  33. data/features/api/command/which.feature +37 -0
  34. data/features/api/core/expand_path.feature +88 -0
  35. data/features/api/environment/append_environment_variable.feature +128 -0
  36. data/features/api/environment/delete_environment_variable.feature +63 -0
  37. data/features/api/environment/prepend_environment_variable.feature +128 -0
  38. data/features/api/environment/set_environment_variable.feature +376 -0
  39. data/features/api/filesystem/cd.feature +184 -0
  40. data/features/api/filesystem/create_directory.feature +57 -0
  41. data/features/api/filesystem/disk_usage.feature +152 -0
  42. data/features/api/filesystem/does_exist.feature +62 -0
  43. data/features/api/filesystem/fixtures.feature +104 -0
  44. data/features/api/filesystem/is_absolute.feature +48 -0
  45. data/features/api/filesystem/is_directory.feature +53 -0
  46. data/features/api/filesystem/is_file.feature +54 -0
  47. data/features/api/filesystem/is_relative.feature +48 -0
  48. data/features/api/filesystem/move.feature +119 -0
  49. data/features/api/text/extract_text.feature +87 -0
  50. data/features/api/text/replace_variables.feature +45 -0
  51. data/features/api/text/sanitize_text.feature +228 -0
  52. data/features/api/text/unescape_text.feature +127 -0
  53. data/features/cli/console.feature +52 -0
  54. data/features/cli/init.feature +79 -0
  55. data/features/configuration/activate_announcer_on_command_failure.feature +38 -0
  56. data/features/configuration/command_runtime_environment.feature +129 -0
  57. data/features/configuration/console_history_file.feature +38 -0
  58. data/features/configuration/exit_timeout.feature +52 -0
  59. data/features/configuration/fixtures_directories.feature +38 -0
  60. data/features/configuration/fixtures_path_prefix.feature +23 -0
  61. data/features/configuration/home_directory.feature +80 -0
  62. data/features/configuration/io_timeout.feature +30 -0
  63. data/features/configuration/keep_ansi.feature +30 -0
  64. data/features/configuration/log_level.feature +38 -0
  65. data/features/configuration/physical_block_size.feature +53 -0
  66. data/features/configuration/remove_ansi_escape_sequences.feature +38 -0
  67. data/features/configuration/root_directory.feature +30 -0
  68. data/features/configuration/startup_wait_time.feature +48 -0
  69. data/features/configuration/usage.feature +159 -0
  70. data/features/configuration/working_directory.feature +33 -0
  71. data/features/development/build.feature +15 -0
  72. data/features/development/test.feature +24 -0
  73. data/features/getting_started/cleanup.feature +67 -0
  74. data/features/getting_started/install.feature +8 -0
  75. data/features/getting_started/run_commands.feature +177 -0
  76. data/features/getting_started/supported_testing_frameworks.feature +104 -0
  77. data/features/getting_started/writing_good_feature_tests.feature +38 -0
  78. data/features/hooks/after/command.feature +44 -0
  79. data/features/hooks/before/command.feature +71 -0
  80. data/features/matchers/collection/include_an_object.feature +72 -0
  81. data/features/matchers/directory/have_sub_directory.feature +110 -0
  82. data/features/matchers/file/be_a_command_found_in_path.feature +115 -0
  83. data/features/matchers/file/be_existing_executable.feature +88 -0
  84. data/features/matchers/file/be_existing_file.feature +82 -0
  85. data/features/matchers/file/have_file_content.feature +123 -0
  86. data/features/matchers/file/have_file_size.feature +107 -0
  87. data/features/matchers/path/be_an_absolute_path.feature +74 -0
  88. data/features/matchers/path/be_an_existing_path.feature +97 -0
  89. data/features/matchers/path/have_permissions.feature +118 -0
  90. data/features/matchers/timeouts.feature +48 -0
  91. data/features/platforms/jruby.feature +14 -0
  92. data/features/rspec/integration.feature +179 -0
  93. data/features/step_definitions/aruba_dev_steps.rb +56 -0
  94. data/features/step_definitions/hooks.rb +96 -0
  95. data/features/steps/command/debug.feature +92 -0
  96. data/features/steps/command/exit_statuses.feature +136 -0
  97. data/features/steps/command/in_process.feature +485 -0
  98. data/features/steps/command/interactive.feature +90 -0
  99. data/features/steps/command/output.feature +588 -0
  100. data/features/steps/command/run.feature +66 -0
  101. data/features/steps/command/send_signal.feature +104 -0
  102. data/features/steps/command/shell.feature +155 -0
  103. data/features/steps/command/stderr.feature +68 -0
  104. data/features/steps/command/stdout.feature +109 -0
  105. data/features/steps/command/stop.feature +313 -0
  106. data/features/steps/core/announce.feature +283 -0
  107. data/features/steps/environment/append_environment_variable.feature +52 -0
  108. data/features/steps/environment/home_variable.feature +62 -0
  109. data/features/steps/environment/prepend_environment_variable.feature +52 -0
  110. data/features/steps/environment/set_environment_variable.feature +49 -0
  111. data/features/steps/filesystem/append_to_file.feature +45 -0
  112. data/features/steps/filesystem/cd_to_directory.feature +33 -0
  113. data/features/steps/filesystem/check_file_content.feature +61 -0
  114. data/features/steps/filesystem/check_permissions_of_file.feature +39 -0
  115. data/features/steps/filesystem/compare_files.feature +42 -0
  116. data/features/steps/filesystem/copy.feature +45 -0
  117. data/features/steps/filesystem/create_directory.feature +57 -0
  118. data/features/steps/filesystem/create_file.feature +76 -0
  119. data/features/steps/filesystem/existence_of_directory.feature +57 -0
  120. data/features/steps/filesystem/existence_of_file.feature +43 -0
  121. data/features/steps/filesystem/file_content.feature +86 -0
  122. data/features/steps/filesystem/fixtures.feature +64 -0
  123. data/features/steps/filesystem/move.feature +45 -0
  124. data/features/steps/filesystem/non_existence_of_directory.feature +69 -0
  125. data/features/steps/filesystem/non_existence_of_file.feature +80 -0
  126. data/features/steps/filesystem/overwrite_file.feature +72 -0
  127. data/features/steps/filesystem/remove_directory.feature +38 -0
  128. data/features/steps/filesystem/remove_file.feature +38 -0
  129. data/features/steps/filesystem/use_fixture.feature +77 -0
  130. data/features/steps/overview.feature +60 -0
  131. data/features/support/aruba.rb +7 -0
  132. data/features/support/env.rb +33 -0
  133. data/features/support/jruby.rb +5 -0
  134. data/features/support/simplecov_setup.rb +8 -0
  135. data/fixtures/cli-app/.gitignore +9 -0
  136. data/fixtures/cli-app/.rspec +2 -0
  137. data/fixtures/cli-app/README.md +39 -0
  138. data/fixtures/cli-app/Rakefile +1 -0
  139. data/fixtures/cli-app/bin/cli +6 -0
  140. data/fixtures/cli-app/cli-app.gemspec +26 -0
  141. data/fixtures/cli-app/features/support/env.rb +1 -0
  142. data/fixtures/cli-app/lib/cli/app.rb +13 -0
  143. data/fixtures/cli-app/lib/cli/app/suppress_simple_cov_output.rb +15 -0
  144. data/fixtures/cli-app/lib/cli/app/version.rb +5 -0
  145. data/fixtures/cli-app/script/console +14 -0
  146. data/fixtures/cli-app/spec/spec_helper.rb +9 -0
  147. data/fixtures/cli-app/spec/support/aruba.rb +1 -0
  148. data/fixtures/copy/file.txt +1 -0
  149. data/fixtures/empty-app/.gitignore +9 -0
  150. data/fixtures/empty-app/.rspec +2 -0
  151. data/fixtures/empty-app/README.md +24 -0
  152. data/fixtures/empty-app/Rakefile +1 -0
  153. data/fixtures/empty-app/cli-app.gemspec +26 -0
  154. data/fixtures/empty-app/lib/cli/app.rb +13 -0
  155. data/fixtures/empty-app/lib/cli/app/version.rb +5 -0
  156. data/fixtures/getting-started-app/.gitignore +4 -0
  157. data/fixtures/getting-started-app/Gemfile +4 -0
  158. data/fixtures/getting-started-app/README.md +3 -0
  159. data/fixtures/getting-started-app/features/support/env.rb +1 -0
  160. data/fixtures/spawn_process/stderr.sh +3 -0
  161. data/lib/aruba.rb +1 -0
  162. data/lib/aruba/api.rb +34 -0
  163. data/lib/aruba/api/command.rb +307 -0
  164. data/lib/aruba/api/core.rb +191 -0
  165. data/lib/aruba/api/deprecated.rb +897 -0
  166. data/lib/aruba/api/environment.rb +89 -0
  167. data/lib/aruba/api/filesystem.rb +392 -0
  168. data/lib/aruba/api/rvm.rb +44 -0
  169. data/lib/aruba/api/text.rb +56 -0
  170. data/lib/aruba/aruba_path.rb +133 -0
  171. data/lib/aruba/basic_configuration.rb +240 -0
  172. data/lib/aruba/basic_configuration/option.rb +32 -0
  173. data/lib/aruba/cli.rb +26 -0
  174. data/lib/aruba/colorizer.rb +108 -0
  175. data/lib/aruba/command.rb +74 -0
  176. data/lib/aruba/config.rb +108 -0
  177. data/lib/aruba/config/jruby.rb +17 -0
  178. data/lib/aruba/config_wrapper.rb +58 -0
  179. data/lib/aruba/console.rb +70 -0
  180. data/lib/aruba/console/help.rb +35 -0
  181. data/lib/aruba/contracts/absolute_path.rb +20 -0
  182. data/lib/aruba/contracts/enum.rb +26 -0
  183. data/lib/aruba/contracts/is_power_of_two.rb +22 -0
  184. data/lib/aruba/contracts/relative_path.rb +20 -0
  185. data/lib/aruba/cucumber.rb +13 -0
  186. data/lib/aruba/cucumber/command.rb +422 -0
  187. data/lib/aruba/cucumber/core.rb +5 -0
  188. data/lib/aruba/cucumber/environment.rb +42 -0
  189. data/lib/aruba/cucumber/file.rb +201 -0
  190. data/lib/aruba/cucumber/hooks.rb +160 -0
  191. data/lib/aruba/cucumber/rvm.rb +3 -0
  192. data/lib/aruba/cucumber/testing_frameworks.rb +95 -0
  193. data/lib/aruba/errors.rb +37 -0
  194. data/lib/aruba/event_bus.rb +59 -0
  195. data/lib/aruba/event_bus/name_resolver.rb +168 -0
  196. data/lib/aruba/events.rb +39 -0
  197. data/lib/aruba/extensions/string/strip.rb +25 -0
  198. data/lib/aruba/file_size.rb +63 -0
  199. data/lib/aruba/generators/script_file.rb +46 -0
  200. data/lib/aruba/hooks.rb +56 -0
  201. data/lib/aruba/in_config_wrapper.rb +24 -0
  202. data/lib/aruba/in_process.rb +14 -0
  203. data/lib/aruba/initializer.rb +222 -0
  204. data/lib/aruba/jruby.rb +4 -0
  205. data/lib/aruba/matchers/base/base_matcher.rb +96 -0
  206. data/lib/aruba/matchers/base/object_formatter.rb +114 -0
  207. data/lib/aruba/matchers/collection.rb +1 -0
  208. data/lib/aruba/matchers/collection/all.rb +11 -0
  209. data/lib/aruba/matchers/collection/include_an_object.rb +122 -0
  210. data/lib/aruba/matchers/command.rb +1 -0
  211. data/lib/aruba/matchers/command/be_successfully_executed.rb +34 -0
  212. data/lib/aruba/matchers/command/have_exit_status.rb +38 -0
  213. data/lib/aruba/matchers/command/have_finished_in_time.rb +37 -0
  214. data/lib/aruba/matchers/command/have_output.rb +36 -0
  215. data/lib/aruba/matchers/command/have_output_on_stderr.rb +32 -0
  216. data/lib/aruba/matchers/command/have_output_on_stdout.rb +32 -0
  217. data/lib/aruba/matchers/command/have_output_size.rb +28 -0
  218. data/lib/aruba/matchers/directory.rb +1 -0
  219. data/lib/aruba/matchers/directory/be_an_existing_directory.rb +38 -0
  220. data/lib/aruba/matchers/directory/have_sub_directory.rb +53 -0
  221. data/lib/aruba/matchers/environment.rb +1 -0
  222. data/lib/aruba/matchers/file.rb +1 -0
  223. data/lib/aruba/matchers/file/be_a_command_found_in_path.rb +36 -0
  224. data/lib/aruba/matchers/file/be_an_existing_executable.rb +37 -0
  225. data/lib/aruba/matchers/file/be_an_existing_file.rb +38 -0
  226. data/lib/aruba/matchers/file/have_file_content.rb +62 -0
  227. data/lib/aruba/matchers/file/have_file_size.rb +47 -0
  228. data/lib/aruba/matchers/file/have_same_file_content.rb +48 -0
  229. data/lib/aruba/matchers/path.rb +1 -0
  230. data/lib/aruba/matchers/path/a_path_matching_pattern.rb +25 -0
  231. data/lib/aruba/matchers/path/be_an_absolute_path.rb +36 -0
  232. data/lib/aruba/matchers/path/be_an_existing_path.rb +37 -0
  233. data/lib/aruba/matchers/path/have_permissions.rb +64 -0
  234. data/lib/aruba/matchers/path/match_path_pattern.rb +41 -0
  235. data/lib/aruba/matchers/rspec_matcher_include_regexp.rb +25 -0
  236. data/lib/aruba/matchers/string.rb +1 -0
  237. data/lib/aruba/matchers/string/include_output_string.rb +36 -0
  238. data/lib/aruba/matchers/string/match_output_string.rb +37 -0
  239. data/lib/aruba/matchers/string/output_string_eq.rb +35 -0
  240. data/lib/aruba/platform.rb +25 -0
  241. data/lib/aruba/platforms/announcer.rb +232 -0
  242. data/lib/aruba/platforms/aruba_file_creator.rb +35 -0
  243. data/lib/aruba/platforms/aruba_fixed_size_file_creator.rb +35 -0
  244. data/lib/aruba/platforms/aruba_logger.rb +81 -0
  245. data/lib/aruba/platforms/command_monitor.rb +229 -0
  246. data/lib/aruba/platforms/determine_disk_usage.rb +28 -0
  247. data/lib/aruba/platforms/determine_file_size.rb +22 -0
  248. data/lib/aruba/platforms/disk_usage_calculator.rb +20 -0
  249. data/lib/aruba/platforms/filesystem_status.rb +68 -0
  250. data/lib/aruba/platforms/local_environment.rb +29 -0
  251. data/lib/aruba/platforms/simple_table.rb +54 -0
  252. data/lib/aruba/platforms/unix_command_string.rb +27 -0
  253. data/lib/aruba/platforms/unix_environment_variables.rb +220 -0
  254. data/lib/aruba/platforms/unix_platform.rb +276 -0
  255. data/lib/aruba/platforms/unix_which.rb +85 -0
  256. data/lib/aruba/platforms/windows_command_string.rb +31 -0
  257. data/lib/aruba/platforms/windows_environment_variables.rb +89 -0
  258. data/lib/aruba/platforms/windows_platform.rb +42 -0
  259. data/lib/aruba/platforms/windows_which.rb +106 -0
  260. data/lib/aruba/processes/basic_process.rb +143 -0
  261. data/lib/aruba/processes/debug_process.rb +69 -0
  262. data/lib/aruba/processes/in_process.rb +125 -0
  263. data/lib/aruba/processes/spawn_process.rb +278 -0
  264. data/lib/aruba/reporting.rb +126 -0
  265. data/lib/aruba/rspec.rb +107 -0
  266. data/lib/aruba/runtime.rb +96 -0
  267. data/lib/aruba/setup.rb +90 -0
  268. data/lib/aruba/spawn_process.rb +11 -0
  269. data/lib/aruba/version.rb +3 -0
  270. data/script/bootstrap +28 -0
  271. data/script/console +16 -0
  272. data/script/test +3 -0
  273. data/spec/aruba/api/environment/restore_env_spec.rb +65 -0
  274. data/spec/aruba/api/environment/set_env_spec.rb +42 -0
  275. data/spec/aruba/api/filesystem/file_size_spec.rb +28 -0
  276. data/spec/aruba/api/runtime_spec.rb +28 -0
  277. data/spec/aruba/api_spec.rb +1209 -0
  278. data/spec/aruba/aruba_path_spec.rb +103 -0
  279. data/spec/aruba/basic_configuration_spec.rb +5 -0
  280. data/spec/aruba/configuration_spec.rb +5 -0
  281. data/spec/aruba/hooks_spec.rb +17 -0
  282. data/spec/aruba/in_config_wrapper_spec.rb +25 -0
  283. data/spec/aruba/jruby_spec.rb +55 -0
  284. data/spec/aruba/matchers/command/have_output_size_spec.rb +25 -0
  285. data/spec/aruba/matchers/command_spec.rb +174 -0
  286. data/spec/aruba/matchers/directory_spec.rb +57 -0
  287. data/spec/aruba/matchers/file_spec.rb +127 -0
  288. data/spec/aruba/matchers/path_spec.rb +88 -0
  289. data/spec/aruba/platform/simple_table_spec.rb +23 -0
  290. data/spec/aruba/platform/windows_environment_variables_spec.rb +500 -0
  291. data/spec/aruba/rspec_spec.rb +15 -0
  292. data/spec/aruba/runtime_spec.rb +29 -0
  293. data/spec/aruba/spawn_process_spec.rb +60 -0
  294. data/spec/event_bus/name_resolver_spec.rb +68 -0
  295. data/spec/event_bus_spec.rb +160 -0
  296. data/spec/spec_helper.rb +23 -0
  297. data/spec/support/configs/.keep +0 -0
  298. data/spec/support/configs/aruba.rb +5 -0
  299. data/spec/support/configs/pry.rb +3 -0
  300. data/spec/support/configs/rspec.rb +15 -0
  301. data/spec/support/helpers/.keep +0 -0
  302. data/spec/support/helpers/reporting.rb +44 -0
  303. data/spec/support/matchers/.keep +0 -0
  304. data/spec/support/matchers/option.rb +35 -0
  305. data/spec/support/shared_contexts/.keep +0 -0
  306. data/spec/support/shared_contexts/aruba.rb +48 -0
  307. data/spec/support/shared_examples/.keep +0 -0
  308. data/spec/support/shared_examples/configuration.rb +116 -0
  309. data/spec/support/shared_examples/directory.rb +7 -0
  310. data/spec/support/shared_examples/file.rb +7 -0
  311. data/templates/css/console.css +24 -0
  312. data/templates/css/filesystem.css +42 -0
  313. data/templates/css/pygments-autumn.css +59 -0
  314. data/templates/files.erb +14 -0
  315. data/templates/images/LICENSE +22 -0
  316. data/templates/images/folder.png +0 -0
  317. data/templates/images/page_white.png +0 -0
  318. data/templates/images/page_white_gherkin.png +0 -0
  319. data/templates/images/page_white_ruby.png +0 -0
  320. data/templates/index.erb +20 -0
  321. data/templates/js/filesystem.js +5 -0
  322. data/templates/js/jquery-1.11.3.min.js +5 -0
  323. data/templates/main.erb +34 -0
  324. metadata +629 -0
@@ -0,0 +1,35 @@
1
+ # Aruba
2
+ module Aruba
3
+ # Platforms
4
+ module Platforms
5
+ # Create files with fixed size
6
+ #
7
+ # This class is not meant to be used directly by users.
8
+ #
9
+ # It uses a single null byte as content and really creates so called sparse
10
+ # files.
11
+ #
12
+ # @private
13
+ class ArubaFixedSizeFileCreator
14
+ # Write File
15
+ #
16
+ # @param [String] path
17
+ # The path to write content to
18
+ #
19
+ # @param [Numeric] size
20
+ # The size of the file
21
+ #
22
+ # @param [TrueClass, FalseClass] check_presence (false)
23
+ # Check if file exist
24
+ def call(path, size, check_presence)
25
+ fail "Expected #{path} to be present" if check_presence && !Aruba.platform.file?(path)
26
+
27
+ Aruba.platform.mkdir(File.dirname(path))
28
+
29
+ File.open(path, "wb"){ |f| f.seek(size - 1); f.write("\0") }
30
+
31
+ self
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,81 @@
1
+ require 'logger'
2
+
3
+ # Aruba
4
+ module Aruba
5
+ # Logger
6
+ #
7
+ # @private
8
+ class ArubaLogger
9
+ attr_reader :mode
10
+
11
+ # Create logger
12
+ #
13
+ # @param [Logger] logger (::Logger.new( $stderr ))
14
+ # The logger with should be used to output data
15
+ def initialize(opts = {})
16
+ @mode = opts.fetch(:default_mode, :info)
17
+ end
18
+
19
+ [:fatal, :warn, :debug, :info, :error, :unknown].each do |m|
20
+ 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
26
+ end
27
+ end
28
+
29
+ # Create new logger on every invocation to make
30
+ # capturing $stderr possible
31
+ def logger
32
+ l = ::Logger.new($stderr)
33
+
34
+ case mode
35
+ when :debug
36
+ l.level = ::Logger::DEBUG
37
+ format_debug(l)
38
+ when :silent
39
+ l.level = 9_999
40
+ when :info
41
+ l.level = ::Logger::INFO
42
+ format_standard(l)
43
+ else
44
+ l.level = ::Logger::INFO
45
+ format_standard(l)
46
+ end
47
+
48
+ l
49
+ end
50
+
51
+ # Is mode?
52
+ #
53
+ # @param [String, Symbol] m
54
+ # Mode to compare with
55
+ def mode?(m)
56
+ mode == m.to_sym
57
+ end
58
+
59
+ # Change mode of logger: :debug, ... + Change the output format
60
+ #
61
+ # @param [Symbol] m
62
+ # the mode: :debug, ...
63
+ def mode=(m)
64
+ @mode = m.to_sym
65
+ end
66
+
67
+ private
68
+
69
+ def format_debug(l)
70
+ l.formatter = proc { |severity, datetime, progname, msg|
71
+ format("%s %s %s: %s\n", datetime, severity, progname, msg)
72
+ }
73
+ end
74
+
75
+ def format_standard(l)
76
+ l.formatter = proc { |severity, datetime, _, msg|
77
+ format("%s %s: %s\n", datetime, severity, msg)
78
+ }
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,229 @@
1
+ require 'aruba/errors'
2
+
3
+ # Aruba
4
+ module Aruba
5
+ # The command monitor is part of the private API of Aruba.
6
+ #
7
+ # @private
8
+ class CommandMonitor
9
+ private
10
+
11
+ attr_reader :announcer
12
+
13
+ public
14
+
15
+ attr_reader :registered_commands, :last_command_started
16
+
17
+ class DefaultLastCommandStopped
18
+ def nil?
19
+ true
20
+ end
21
+
22
+ def method_missing(*)
23
+ fail NoCommandHasBeenStoppedError, 'No last command stopped available'
24
+ end
25
+ end
26
+
27
+ class DefaultLastCommandStarted
28
+ def nil?
29
+ true
30
+ end
31
+
32
+ def method_missing(*)
33
+ fail NoCommandHasBeenStartedError, 'No last command started available'
34
+ end
35
+ end
36
+
37
+ # rubocop:disable Metrics/MethodLength
38
+ def initialize(opts = {})
39
+ @registered_commands = []
40
+ @announcer = opts.fetch(:announcer)
41
+
42
+ @last_command_stopped = DefaultLastCommandStopped.new
43
+ @last_command_started = DefaultLastCommandStarted.new
44
+
45
+ rescue KeyError => e
46
+ raise ArgumentError, e.message
47
+ end
48
+
49
+ if Aruba::VERSION < '1'
50
+ # Return the last command stopped
51
+ def last_command_stopped
52
+ return @last_command_stopped unless @last_command_stopped.nil?
53
+
54
+ registered_commands.each(&:stop)
55
+
56
+ @last_command_stopped
57
+ end
58
+ else
59
+ attr_reader :last_command_stopped
60
+ end
61
+
62
+ # Set last command started
63
+ #
64
+ # @param [String] cmd
65
+ # The commandline of the command
66
+ def last_command_started=(cmd)
67
+ @last_command_started = find(cmd)
68
+ end
69
+
70
+ # Set last command started
71
+ #
72
+ # @param [String] cmd
73
+ # The commandline of the command
74
+ def last_command_stopped=(cmd)
75
+ @last_command_stopped = find(cmd)
76
+ end
77
+
78
+ # Find command
79
+ #
80
+ # @yield [Command]
81
+ # This yields the found command
82
+ def find(cmd)
83
+ cmd = cmd.commandline if cmd.respond_to? :commandline
84
+ command = registered_commands.reverse.find { |c| c.commandline == cmd }
85
+
86
+ fail CommandNotFoundError, "No command named '#{cmd}' has been started" if command.nil?
87
+
88
+ command
89
+ end
90
+
91
+ # Clear list of known commands
92
+ def clear
93
+ registered_commands.each(&:terminate)
94
+ registered_commands.clear
95
+
96
+ self
97
+ end
98
+
99
+ # @deprecated
100
+ # Fetch output (stdout, stderr) from command
101
+ #
102
+ # @param [String] cmd
103
+ # The command
104
+ def output_from(cmd)
105
+ cmd = Utils.detect_ruby(cmd)
106
+ find(cmd).output
107
+ end
108
+
109
+ # @deprecated
110
+ # Fetch stdout from command
111
+ #
112
+ # @param [String] cmd
113
+ # The command
114
+ def stdout_from(cmd)
115
+ cmd = Utils.detect_ruby(cmd)
116
+ find(cmd).stdout
117
+ end
118
+
119
+ # @deprecated
120
+ # Fetch stderr from command
121
+ #
122
+ # @param [String] cmd
123
+ # The command
124
+ def stderr_from(cmd)
125
+ cmd = Utils.detect_ruby(cmd)
126
+ find(cmd).stderr
127
+ end
128
+
129
+ # @deprecated
130
+ # Get stdout of all commands
131
+ #
132
+ # @return [String]
133
+ # The stdout of all command which have run before
134
+ def all_stdout
135
+ registered_commands.each(&:stop)
136
+
137
+ if RUBY_VERSION < '1.9.3'
138
+ # rubocop:disable Style/EachWithObject
139
+ registered_commands.inject("") { |a, e| a << e.stdout; a }
140
+ # rubocop:enable Style/EachWithObject
141
+ else
142
+ registered_commands.each_with_object("") { |e, a| a << e.stdout }
143
+ end
144
+ end
145
+
146
+ # @deprecated
147
+ # Get stderr of all commands
148
+ #
149
+ # @return [String]
150
+ # The stderr of all command which have run before
151
+ def all_stderr
152
+ registered_commands.each(&:stop)
153
+
154
+ if RUBY_VERSION < '1.9.3'
155
+ # rubocop:disable Style/EachWithObject
156
+ registered_commands.inject("") { |a, e| a << e.stderr; a }
157
+ # rubocop:enable Style/EachWithObject
158
+ else
159
+ registered_commands.each_with_object("") { |e, a| a << e.stderr }
160
+ end
161
+ end
162
+
163
+ # @deprecated
164
+ # Get stderr and stdout of all commands
165
+ #
166
+ # @return [String]
167
+ # The stderr and stdout of all command which have run before
168
+ def all_output
169
+ all_stdout << all_stderr
170
+ end
171
+
172
+ # @deprecated
173
+ def last_exit_status
174
+ Aruba.platform.deprecated('The use of "#last_exit_status" is deprecated. Use "last_command_(started|stopped).exit_status" instead')
175
+
176
+ return @last_exit_status if @last_exit_status
177
+ registered_commands.each(&:stop)
178
+ @last_exit_status
179
+ end
180
+
181
+ # @deprecated
182
+ def stop_process(process)
183
+ @last_command_stopped = process
184
+ @last_exit_status = process.stop(announcer)
185
+ end
186
+
187
+ # @deprecated
188
+ def terminate_process!(process)
189
+ process.terminate
190
+ end
191
+
192
+ # @deprecated
193
+ def stop_processes!
194
+ Aruba.platform.deprecated('The use of "#stop_processes!" is deprecated.')
195
+
196
+ registered_commands.each(&:stop)
197
+ end
198
+
199
+ # @deprecated
200
+ # Terminate all running processes
201
+ def terminate_processes
202
+ Aruba.platform.deprecated('The use of "#terminate_processes" is deprecated.')
203
+
204
+ registered_commands.each(&:terminate)
205
+ end
206
+
207
+ # @deprecated
208
+ def only_processes
209
+ Aruba.platform.deprecated('The use of "#only_processes" is deprecated.')
210
+
211
+ registered_commands
212
+ end
213
+
214
+ # @deprecated
215
+ def get_process(wanted)
216
+ command = find(wanted)
217
+ raise ArgumentError.new("No process named '#{wanted}' has been started") unless command
218
+
219
+ command
220
+ end
221
+
222
+ # Register command to monitor
223
+ def register_command(cmd)
224
+ registered_commands << cmd
225
+
226
+ self
227
+ end
228
+ end
229
+ end
@@ -0,0 +1,28 @@
1
+ require 'aruba/platforms/disk_usage_calculator'
2
+
3
+ # Aruba
4
+ module Aruba
5
+ # Platforms
6
+ module Platforms
7
+ # Determinate disk usage
8
+ #
9
+ # @private
10
+ 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
+ )
22
+ end.inject(0, &:+)
23
+
24
+ FileSize.new(size)
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,22 @@
1
+ # Aruba
2
+ module Aruba
3
+ # Platforms
4
+ module Platforms
5
+ # Determine size of a file
6
+ #
7
+ # @param [String] path
8
+ # The path to file
9
+ #
10
+ # @return [Integer]
11
+ # Returns size if exists. Returns -1 if path does not exist
12
+ class DetermineFileSize
13
+ def call(path)
14
+ return -1 unless File.file? path
15
+
16
+ FileSize.new(
17
+ File.size(path)
18
+ )
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,20 @@
1
+ require 'aruba/file_size'
2
+
3
+ # Aruba
4
+ module Aruba
5
+ # Platforms
6
+ module Platforms
7
+ # Calculate disk usage
8
+ class DiskUsageCalculator
9
+ # Calc
10
+ #
11
+ # @param [Integer] blocks
12
+ # Count of blocks
13
+ # @param [Integer] block_size
14
+ # The size of a single block
15
+ def call(blocks, block_size)
16
+ Aruba::FileSize.new(blocks * block_size)
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,68 @@
1
+ require 'forwardable'
2
+
3
+ module Aruba
4
+ module Platforms
5
+ # File System Status object
6
+ #
7
+ # This is a wrapper for File::Stat returning only a subset of information.
8
+ class FilesystemStatus
9
+ METHODS = [
10
+ :executable?,
11
+ :ctime,
12
+ :atime,
13
+ :mtime,
14
+ :size
15
+ ].freeze
16
+
17
+ extend Forwardable
18
+
19
+ private
20
+
21
+ attr_reader :status
22
+
23
+ public
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
30
+
31
+ def initialize(path)
32
+ @status = File::Stat.new(path)
33
+ end
34
+
35
+ # Return permissions
36
+ def mode
37
+ format("%o", status.mode)[-4,4].gsub(/^0*/, '')
38
+ end
39
+
40
+ # Return owner
41
+ def owner
42
+ status.uid
43
+ end
44
+
45
+ # Return owning group
46
+ def group
47
+ status.gid
48
+ end
49
+
50
+ # Convert status to hash
51
+ #
52
+ # @return [Hash]
53
+ # A hash of values
54
+ def to_h
55
+ {
56
+ :owner => owner,
57
+ :group => group,
58
+ :mode => mode,
59
+ :executable => executable?,
60
+ :ctime => ctime,
61
+ :atime => atime,
62
+ :mtime => mtime,
63
+ :size => size
64
+ }
65
+ end
66
+ end
67
+ end
68
+ end