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,89 @@
1
+ require 'aruba/platform'
2
+
3
+ # Aruba
4
+ module Aruba
5
+ # Api
6
+ module Api
7
+ # Environment methods of aruba
8
+ module Environment
9
+ # Set environment variable
10
+ #
11
+ # @param [String] name
12
+ # The name of the environment variable as string, e.g. 'HOME'
13
+ #
14
+ # @param [String] value
15
+ # The value of the environment variable. Needs to be a string.
16
+ def set_environment_variable(name, value)
17
+ name = name.to_s
18
+ value = value.to_s
19
+
20
+ old_environment = aruba.environment.to_h
21
+ aruba.environment[name] = value
22
+ new_environment = aruba.environment.to_h
23
+
24
+ aruba.event_bus.notify Events::AddedEnvironmentVariable.new(:old => old_environment, :new => new_environment, :changed => { :name => name, :value => value })
25
+
26
+ self
27
+ end
28
+
29
+ # Append environment variable
30
+ #
31
+ # @param [String] name
32
+ # The name of the environment variable as string, e.g. 'HOME'
33
+ #
34
+ # @param [String] value
35
+ # The value of the environment variable. Needs to be a string.
36
+ def append_environment_variable(name, value)
37
+ name = name.to_s
38
+ value = value.to_s
39
+
40
+ old_environment = aruba.environment.to_h
41
+ aruba.environment.append name, value
42
+ new_environment = aruba.environment.to_h
43
+
44
+ aruba.event_bus.notify Events::ChangedEnvironmentVariable.new(:old => old_environment, :new => new_environment, :changed => { :name => name, :value => value })
45
+
46
+ self
47
+ end
48
+
49
+ # Prepend environment variable
50
+ #
51
+ # @param [String] name
52
+ # The name of the environment variable as string, e.g. 'HOME'
53
+ #
54
+ # @param [String] value
55
+ # The value of the environment variable. Needs to be a string.
56
+ def prepend_environment_variable(name, value)
57
+ name = name.to_s
58
+ value = value.to_s
59
+
60
+ old_environment = aruba.environment.to_h
61
+ aruba.environment.prepend name, value
62
+ new_environment = aruba.environment.to_h
63
+
64
+ aruba.event_bus.notify Events::ChangedEnvironmentVariable.new(:old => old_environment, :new => new_environment, :changed => { :name => name, :value => value })
65
+
66
+ self
67
+ end
68
+
69
+ # Remove existing environment variable
70
+ #
71
+ # @param [String] key
72
+ # The name of the environment variable as string, e.g. 'HOME'
73
+ #
74
+ # @param [String] value
75
+ # The value of the environment variable. Needs to be a string.
76
+ def delete_environment_variable(name)
77
+ name = name.to_s
78
+
79
+ old_environment = aruba.environment.to_h
80
+ aruba.environment.delete name
81
+ new_environment = aruba.environment.to_h
82
+
83
+ aruba.event_bus.notify Events::DeletedEnvironmentVariable.new(:old => old_environment, :new => new_environment, :changed => { :name => name, :value => '' })
84
+
85
+ self
86
+ end
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,392 @@
1
+ require 'aruba/platform'
2
+
3
+ require 'aruba/extensions/string/strip'
4
+
5
+ require 'aruba/aruba_path'
6
+
7
+ Aruba.platform.require_matching_files('../matchers/file/*.rb', __FILE__)
8
+ Aruba.platform.require_matching_files('../matchers/directory/*.rb', __FILE__)
9
+ Aruba.platform.require_matching_files('../matchers/path/*.rb', __FILE__)
10
+
11
+ # Aruba
12
+ module Aruba
13
+ # Api
14
+ module Api
15
+ # Filesystem methods
16
+ module Filesystem
17
+ # Check if file or directory exist
18
+ #
19
+ # @param [String] file_or_directory
20
+ # The file/directory which should exist
21
+ def exist?(file_or_directory)
22
+ Aruba.platform.exist? expand_path(file_or_directory)
23
+ end
24
+
25
+ # Check if file exist and is file
26
+ #
27
+ # @param [String] file
28
+ # The file/directory which should exist
29
+ def file?(file)
30
+ Aruba.platform.file? expand_path(file)
31
+ end
32
+
33
+ # Check if directory exist and is directory
34
+ #
35
+ # @param [String] file
36
+ # The file/directory which should exist
37
+ def directory?(file)
38
+ Aruba.platform.directory? expand_path(file)
39
+ end
40
+
41
+ # Check if file exist and is executable
42
+ #
43
+ # @param [String] file
44
+ # The file which should exist
45
+ def executable?(path)
46
+ path = expand_path(path)
47
+
48
+ Aruba.platform.file?(path) && Aruba.platform.executable?(path)
49
+ end
50
+
51
+ # Check if path is absolute
52
+ #
53
+ # @return [TrueClass, FalseClass]
54
+ # Result of check
55
+ def absolute?(path)
56
+ ArubaPath.new(path).absolute?
57
+ end
58
+
59
+ # Check if path is relative
60
+ #
61
+ # @return [TrueClass, FalseClass]
62
+ # Result of check
63
+ def relative?(path)
64
+ ArubaPath.new(path).relative?
65
+ end
66
+
67
+ # Return all existing paths (directories, files) in current dir
68
+ #
69
+ # @return [Array]
70
+ # List of files and directories
71
+ def all_paths
72
+ list('.').map { |p| expand_path(p) }
73
+ end
74
+
75
+ # Return all existing files in current directory
76
+ #
77
+ # @return [Array]
78
+ # List of files
79
+ def all_files
80
+ list('.').select { |p| file? p }.map { |p| expand_path(p) }
81
+ end
82
+
83
+ # Return all existing directories in current directory
84
+ #
85
+ # @return [Array]
86
+ # List of files
87
+ def all_directories
88
+ list('.').select { |p| directory? p }.map { |p| expand_path(p) }
89
+ end
90
+
91
+ # Create directory object
92
+ #
93
+ # @return [Dir]
94
+ # The directory object
95
+ def directory(path)
96
+ fail ArgumentError, %(Path "#{name}" does not exist.) unless exist? name
97
+
98
+ Dir.new(expand_path(path))
99
+ end
100
+
101
+ # Return content of directory
102
+ #
103
+ # @return [Array]
104
+ # The content of directory
105
+ def list(name)
106
+ fail ArgumentError, %(Path "#{name}" does not exist.) unless exist? name
107
+ fail ArgumentError, %(Only directories are supported. Path "#{name}" is not a directory.) unless directory? name
108
+
109
+ existing_files = Dir.glob(expand_path(File.join(name, '**', '*')))
110
+ current_working_directory = ArubaPath.new(expand_path('.'))
111
+
112
+ existing_files.map { |d| ArubaPath.new(d).relative_path_from(current_working_directory).to_s }
113
+ end
114
+
115
+ # Return content of file
116
+ #
117
+ # @return [Array]
118
+ # The content of file, without "\n" or "\r\n" at the end. To rebuild the file use `content.join("\n")`
119
+ def read(name)
120
+ fail ArgumentError, %(Path "#{name}" does not exist.) unless exist? name
121
+ fail ArgumentError, %(Only files are supported. Path "#{name}" is not a file.) unless file? name
122
+
123
+ File.readlines(expand_path(name)).map(&:chomp)
124
+ end
125
+
126
+ # Create a file with given content
127
+ #
128
+ # The method does not check if file already exists. If the file name is a
129
+ # path the method will create all neccessary directories.
130
+ #
131
+ # @param [String] file_name
132
+ # The name of the file
133
+ #
134
+ # @param [String] file_content
135
+ # The content which should be written to the file
136
+ def write_file(name, content)
137
+ Aruba.platform.create_file(expand_path(name), content, false)
138
+
139
+ self
140
+ end
141
+
142
+ # Create an empty file
143
+ #
144
+ # @param [String] file_name
145
+ # The name of the file
146
+ def touch(*args)
147
+ args = args.flatten
148
+
149
+ options = if args.last.kind_of? Hash
150
+ args.pop
151
+ else
152
+ {}
153
+ end
154
+
155
+ args.each { |p| create_directory(File.dirname(p)) }
156
+
157
+ Aruba.platform.touch(args.map { |p| expand_path(p) }, options)
158
+
159
+ self
160
+ end
161
+
162
+ # Copy a file and/or directory
163
+ #
164
+ # @param [String, Array] source
165
+ # A single file or directory, multiple files or directories or multiple
166
+ # files and directories. If multiple sources are given the destination
167
+ # needs to be a directory
168
+ #
169
+ # @param [String] destination
170
+ # A file or directory name. If multiple sources are given the destination
171
+ # needs to be a directory
172
+ #
173
+ # rubocop:disable Metrics/CyclomaticComplexity
174
+ # def copy(*source, destination)
175
+ def copy(*args)
176
+ args = args.flatten
177
+ destination = args.pop
178
+ source = args
179
+
180
+ source.each do |s|
181
+ raise ArgumentError, %(The following source "#{s}" does not exist.) unless exist? s
182
+ end
183
+
184
+ raise ArgumentError, "Using a fixture as destination (#{destination}) is not supported" if destination.start_with? aruba.config.fixtures_path_prefix
185
+ raise ArgumentError, "Multiples sources can only be copied to a directory" if source.count > 1 && exist?(destination) && !directory?(destination)
186
+
187
+ source_paths = source.map { |f| expand_path(f) }
188
+ destination_path = expand_path(destination)
189
+
190
+ if source_paths.count > 1
191
+ Aruba.platform.mkdir(destination_path)
192
+ else
193
+ Aruba.platform.mkdir(File.dirname(destination_path))
194
+ source_paths = source_paths.first
195
+ end
196
+
197
+ Aruba.platform.cp source_paths, destination_path
198
+
199
+ self
200
+ end
201
+ # rubocop:enable Metrics/CyclomaticComplexity
202
+
203
+ # Move a file and/or directory
204
+ #
205
+ # @param [String, Array] source
206
+ # A single file or directory, multiple files or directories or multiple
207
+ # files and directories. If multiple sources are given the destination
208
+ # needs to be a directory
209
+ #
210
+ # @param [String] destination
211
+ # A file or directory name. If multiple sources are given the destination
212
+ # needs to be a directory
213
+ #
214
+ # rubocop:disable Metrics/CyclomaticComplexity
215
+ # rubocop:disable Metrics/MethodLength
216
+ def move(*args)
217
+ args = args.flatten
218
+ destination = args.pop
219
+ source = args
220
+
221
+ source.each do |s|
222
+ raise ArgumentError, "Using a fixture as source (#{source}) is not supported" if s.start_with? aruba.config.fixtures_path_prefix
223
+ end
224
+
225
+ raise ArgumentError, "Using a fixture as destination (#{destination}) is not supported" if destination.start_with? aruba.config.fixtures_path_prefix
226
+
227
+ source.each do |s|
228
+ raise ArgumentError, %(The following source "#{s}" does not exist.) unless exist? s
229
+ end
230
+
231
+ raise ArgumentError, "Multiple sources can only be copied to a directory" if source.count > 1 && exist?(destination) && !directory?(destination)
232
+
233
+ source_paths = source.map { |f| expand_path(f) }
234
+ destination_path = expand_path(destination)
235
+
236
+ if source_paths.count > 1
237
+ Aruba.platform.mkdir(destination_path)
238
+ else
239
+ Aruba.platform.mkdir(File.dirname(destination_path))
240
+ source_paths = source_paths.first
241
+ end
242
+
243
+ Aruba.platform.mv source_paths, destination_path
244
+
245
+ self
246
+ end
247
+ # rubocop:enable Metrics/MethodLength
248
+ # rubocop:enable Metrics/CyclomaticComplexity
249
+
250
+ # Create a file with the given size
251
+ #
252
+ # The method does not check if file already exists. If the file name is a
253
+ # path the method will create all neccessary directories.
254
+ #
255
+ # @param [String] file_name
256
+ # The name of the file
257
+ #
258
+ # @param [Integer] file_size
259
+ # The size of the file
260
+ def write_fixed_size_file(name, size)
261
+ Aruba.platform.create_fixed_size_file(expand_path(name), size, false)
262
+
263
+ self
264
+ end
265
+
266
+ # Create a file with given content
267
+ #
268
+ # The method does check if file already exists and fails if the file is
269
+ # missing. If the file name is a path the method will create all neccessary
270
+ # directories.
271
+ def overwrite_file(name, content)
272
+ Aruba.platform.create_file(expand_path(name), content, true)
273
+
274
+ self
275
+ end
276
+
277
+ # Change file system permissions of file
278
+ #
279
+ # @param [Octal] mode
280
+ # File system mode, eg. 0755
281
+ #
282
+ # @param [String] file_name
283
+ # Name of file to be modified. This file needs to be present to succeed
284
+ def chmod(*args)
285
+ args = args.flatten
286
+
287
+ options = if args.last.kind_of? Hash
288
+ args.pop
289
+ else
290
+ {}
291
+ end
292
+
293
+ mode = args.shift
294
+ mode = if mode.kind_of? String
295
+ mode.to_i(8)
296
+ else
297
+ mode
298
+ end
299
+
300
+ args.each { |p| raise "Expected #{p} to be present" unless exist?(p) }
301
+ paths = args.map { |p| expand_path(p) }
302
+
303
+ Aruba.platform.chmod(mode, paths, options)
304
+
305
+ self
306
+ end
307
+
308
+ # Append data to file
309
+ #
310
+ # @param [String] file_name
311
+ # The name of the file to be used
312
+ #
313
+ # @param [String] file_content
314
+ # The content which should be appended to file
315
+ def append_to_file(file_name, file_content)
316
+ file_name = expand_path(file_name)
317
+
318
+ Aruba.platform.mkdir(File.dirname(file_name))
319
+ File.open(file_name, 'a') { |f| f << file_content }
320
+ end
321
+
322
+ # Create a directory in current directory
323
+ #
324
+ # @param [String] directory_name
325
+ # The name of the directory which should be created
326
+ def create_directory(directory_name)
327
+ Aruba.platform.mkdir expand_path(directory_name)
328
+
329
+ self
330
+ end
331
+
332
+ # Remove file or directory
333
+ #
334
+ # @param [Array, String] name
335
+ # The name of the file / directory which should be removed
336
+ def remove(*args)
337
+ args = args.flatten
338
+
339
+ options = if args.last.kind_of? Hash
340
+ args.pop
341
+ else
342
+ {}
343
+ end
344
+
345
+ args = args.map { |p| expand_path(p) }
346
+
347
+ Aruba.platform.rm(args, options)
348
+ end
349
+
350
+ # Read content of file and yield the content to block
351
+ #
352
+ # @param [String) file
353
+ # The name of file which should be read from
354
+ #
355
+ # @yield
356
+ # Pass the content of the given file to this block
357
+ def with_file_content(file, &block)
358
+ expect(file).to be_an_existing_path
359
+
360
+ content = read(file).join("\n")
361
+
362
+ yield(content)
363
+ end
364
+
365
+ # Calculate disk usage for file(s) and/or directories
366
+ #
367
+ # It shows the disk usage for a single file/directory. If multiple paths
368
+ # are given, it sum their size up.
369
+ #
370
+ # @param [Array, Path] paths
371
+ # The paths
372
+ #
373
+ # @result [FileSize]
374
+ # Bytes on disk
375
+ def disk_usage(*paths)
376
+ expect(paths.flatten).to Aruba::Matchers.all be_an_existing_path
377
+
378
+ Aruba.platform.determine_disk_usage paths.flatten.map { |p| ArubaPath.new(expand_path(p)) }, aruba.config.physical_block_size
379
+ end
380
+
381
+ # Get size of file
382
+ #
383
+ # @return [Numeric]
384
+ # The size of the file
385
+ def file_size(name)
386
+ expect(name).to be_an_existing_file
387
+
388
+ Aruba.platform.determine_file_size expand_path(name)
389
+ end
390
+ end
391
+ end
392
+ end