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,58 +1,33 @@
1
- if Aruba::VERSION < '1.0.0'
2
- require 'aruba/cucumber/core'
3
- end
4
1
  require 'aruba/generators/script_file'
5
2
 
6
- When(/^I run "(.*)"$/)do |cmd|
7
- warn(%{\e[35m The /^I run "(.*)"$/ step definition is deprecated. Please use the `backticks` version\e[0m})
8
-
9
- cmd = sanitize_text(cmd)
10
- run_command_and_stop(cmd, false)
11
- end
12
-
13
- When(/^I run `([^`]*)`$/)do |cmd|
14
- cmd = sanitize_text(cmd)
15
- run_command_and_stop(cmd, :fail_on_error => false)
16
- end
17
-
18
- When(/^I successfully run "(.*)"$/)do |cmd|
19
- warn(%{\e[35m The /^I successfully run "(.*)"$/ step definition is deprecated. Please use the `backticks` version\e[0m})
20
-
3
+ When(/^I run `([^`]*)`$/) do |cmd|
21
4
  cmd = sanitize_text(cmd)
22
- run_command_and_stop(cmd)
5
+ run_command_and_stop(cmd, fail_on_error: false)
23
6
  end
24
7
 
25
8
  ## I successfully run `echo -n "Hello"`
26
9
  ## I successfully run `sleep 29` for up to 30 seconds
27
- When(/^I successfully run `(.*?)`(?: for up to (\d+) seconds)?$/)do |cmd, secs|
10
+ When(/^I successfully run `(.*?)`(?: for up to ([\d.]+) seconds)?$/) do |cmd, secs|
28
11
  cmd = sanitize_text(cmd)
29
- run_command_and_stop(cmd, :fail_on_error => true, :exit_timeout => secs && secs.to_i)
12
+ run_command_and_stop(cmd, fail_on_error: true, exit_timeout: secs && secs.to_f)
30
13
  end
31
14
 
32
15
  When(/^I run the following (?:commands|script)(?: (?:with|in) `([^`]+)`)?:$/) do |shell, commands|
33
- prepend_environment_variable('PATH', expand_path('bin') + File::PATH_SEPARATOR)
16
+ full_path = expand_path('bin/myscript')
34
17
 
35
18
  Aruba.platform.mkdir(expand_path('bin'))
36
19
  shell ||= Aruba.platform.default_shell
37
20
 
38
- Aruba::ScriptFile.new(:interpreter => shell, :content => commands,
39
- :path => expand_path('bin/myscript')).call
40
- step 'I run `myscript`'
21
+ Aruba::ScriptFile.new(interpreter: shell, content: commands, path: full_path).call
22
+ run_command_and_stop(Shellwords.escape(full_path), fail_on_error: false)
41
23
  end
42
24
 
43
- When(/^I run "([^"]*)" interactively$/) do |cmd|
44
- Aruba.platform.deprecated(%{\e[35m The /^I run "([^"]*)" interactively$/ step definition is deprecated. Please use the `backticks` version\e[0m})
45
-
46
- step %(I run `#{cmd}` interactively)
47
- end
48
-
49
- When(/^I run `([^`]*)` interactively$/)do |cmd|
50
- cmd = sanitize_text(cmd)
51
- @interactive = run_command(cmd)
25
+ When(/^I run `([^`]*)` interactively$/) do |cmd|
26
+ run_command(sanitize_text(cmd))
52
27
  end
53
28
 
54
29
  # Merge interactive and background after refactoring with event queue
55
- When(/^I run `([^`]*)` in background$/)do |cmd|
30
+ When(/^I run `([^`]*)` in background$/) do |cmd|
56
31
  run_command(sanitize_text(cmd))
57
32
  end
58
33
 
@@ -71,39 +46,26 @@ When(/^I pipe in (?:a|the) file(?: named)? "([^"]*)"$/) do |file|
71
46
  end
72
47
 
73
48
  When(/^I (terminate|stop) the command (?:"([^"]*)"|(?:started last))$/) do |signal, command|
74
- if command
75
- cmd = all_commands.find { |c| c.commandline == command }
76
- fail ArgumentError, %(No command "#{command}" found) if cmd.nil?
49
+ monitor = aruba.command_monitor
77
50
 
78
- if signal == 'terminate'
79
- # last_command_started.terminate
80
- process_monitor.terminate_process!(process_monitor.get_process(command))
81
- else
82
- # last_command_started.stop
83
- process_monitor.stop_process(process_monitor.get_process(command))
84
- end
51
+ cmd = if command
52
+ monitor.find(command)
53
+ else
54
+ last_command_started
55
+ end
56
+
57
+ if signal == 'terminate'
58
+ cmd.terminate
85
59
  else
86
- if signal == 'terminate'
87
- # last_command_started.terminate
88
- process_monitor.terminate_process!(last_command_started)
89
- else
90
- # last_command_started.stop
91
- process_monitor.stop_process(last_command_started)
92
- end
60
+ cmd.stop
93
61
  end
94
62
  end
95
63
 
96
64
  When(/^I stop the command(?: started last)? if (output|stdout|stderr) contains:$/) do |channel, expected|
97
- fail %(Invalid output channel "#{channel}" chosen. Please choose one of "output, stdout or stderr") unless %w(output stdout stderr).include? channel
98
-
99
65
  begin
100
66
  Timeout.timeout(aruba.config.exit_timeout) do
101
67
  loop do
102
- output = if RUBY_VERSION < '1.9.3'
103
- last_command_started.send channel.to_sym, :wait_for_io => 0
104
- else
105
- last_command_started.public_send channel.to_sym, :wait_for_io => 0
106
- end
68
+ output = last_command_started.public_send channel.to_sym, wait_for_io: 0
107
69
 
108
70
  output = sanitize_text(output)
109
71
  expected = sanitize_text(expected)
@@ -117,7 +79,7 @@ When(/^I stop the command(?: started last)? if (output|stdout|stderr) contains:$
117
79
  sleep 0.1
118
80
  end
119
81
  end
120
- rescue ChildProcess::TimeoutError, TimeoutError
82
+ rescue ChildProcess::TimeoutError, Timeout::Error
121
83
  last_command_started.terminate
122
84
  end
123
85
  end
@@ -156,7 +118,25 @@ Then(/^the output should be (\d+) bytes long$/) do |size|
156
118
  expect(last_command_started.output).to have_output_size size.to_i
157
119
  end
158
120
 
159
- Then(/^(?:the )?(output|stderr|stdout)(?: from "([^"]*)")? should( not)? contain( exactly)? "([^"]*)"$/) do |channel, cmd, negated, exactly, expected|
121
+ ## the stderr should contain "hello"
122
+ Then(/^(?:the )?(output|stderr|stdout) should( not)? contain( exactly)? "([^"]*)"$/) do |channel, negated, exactly, expected|
123
+ combined_output = send("all_#{channel}")
124
+
125
+ output_string_matcher = if exactly
126
+ :an_output_string_being_eq
127
+ else
128
+ :an_output_string_including
129
+ end
130
+
131
+ if negated
132
+ expect(combined_output).not_to send(output_string_matcher, expected)
133
+ else
134
+ expect(combined_output).to send(output_string_matcher, expected)
135
+ end
136
+ end
137
+
138
+ ## the stderr from "echo -n 'Hello'" should contain "hello"
139
+ Then(/^(?:the )?(output|stderr|stdout) from "([^"]*)" should( not)? contain( exactly)? "([^"]*)"$/) do |channel, cmd, negated, exactly, expected|
160
140
  matcher = case channel.to_sym
161
141
  when :output
162
142
  :have_output
@@ -166,11 +146,7 @@ Then(/^(?:the )?(output|stderr|stdout)(?: from "([^"]*)")? should( not)? contain
166
146
  :have_output_on_stdout
167
147
  end
168
148
 
169
- commands = if cmd
170
- [aruba.command_monitor.find(Aruba.platform.detect_ruby(cmd))]
171
- else
172
- all_commands
173
- end
149
+ command = aruba.command_monitor.find(Aruba.platform.detect_ruby(cmd))
174
150
 
175
151
  output_string_matcher = if exactly
176
152
  :an_output_string_being_eq
@@ -178,31 +154,41 @@ Then(/^(?:the )?(output|stderr|stdout)(?: from "([^"]*)")? should( not)? contain
178
154
  :an_output_string_including
179
155
  end
180
156
 
181
- if Aruba::VERSION < '1.0'
182
- combined_output = commands.map do |c|
183
- c.stop
184
- c.send(channel.to_sym).chomp
185
- end.join("\n")
186
-
187
- if negated
188
- expect(combined_output).not_to send(output_string_matcher, expected)
189
- else
190
- expect(combined_output).to send(output_string_matcher, expected)
191
- end
157
+ if negated
158
+ expect(command).not_to send(matcher, send(output_string_matcher, expected))
192
159
  else
193
- if negated
194
- expect(commands).not_to include_an_object send(matcher, send(output_string_matcher, expected))
195
- else
196
- expect(commands).to include_an_object send(matcher, send(output_string_matcher, expected))
197
- end
160
+ expect(command).to send(matcher, send(output_string_matcher, expected))
198
161
  end
199
162
  end
200
163
 
201
- ## the stderr should contain "hello"
202
- ## the stderr from "echo -n 'Hello'" should contain "hello"
164
+ ## the stderr should not contain exactly:
165
+ Then(/^(?:the )?(output|stderr|stdout) should not contain( exactly)?:$/) do |channel, exactly, expected|
166
+ combined_output = send("all_#{channel}")
167
+
168
+ output_string_matcher = if exactly
169
+ :an_output_string_being_eq
170
+ else
171
+ :an_output_string_including
172
+ end
173
+
174
+ expect(combined_output).not_to send(output_string_matcher, expected)
175
+ end
176
+
203
177
  ## the stderr should contain exactly:
204
- ## the stderr from "echo -n 'Hello'" should contain exactly:
205
- Then(/^(?:the )?(output|stderr|stdout)(?: from "([^"]*)")? should( not)? contain( exactly)?:$/) do |channel, cmd, negated, exactly, expected|
178
+ Then(/^(?:the )?(output|stderr|stdout) should contain( exactly)?:$/) do |channel, exactly, expected|
179
+ combined_output = send("all_#{channel}")
180
+
181
+ output_string_matcher = if exactly
182
+ :an_output_string_being_eq
183
+ else
184
+ :an_output_string_including
185
+ end
186
+
187
+ expect(combined_output).to send(output_string_matcher, expected)
188
+ end
189
+
190
+ ## the stderr from "echo -n 'Hello'" should not contain exactly:
191
+ Then(/^(?:the )?(output|stderr|stdout) from "([^"]*)" should not contain( exactly)?:$/) do |channel, cmd, exactly, expected|
206
192
  matcher = case channel.to_sym
207
193
  when :output
208
194
  :have_output
@@ -210,15 +196,9 @@ Then(/^(?:the )?(output|stderr|stdout)(?: from "([^"]*)")? should( not)? contain
210
196
  :have_output_on_stderr
211
197
  when :stdout
212
198
  :have_output_on_stdout
213
- else
214
- fail ArgumentError, %(Invalid channel "#{channel}" chosen. Only "output", "stderr" or "stdout" are allowed.)
215
199
  end
216
200
 
217
- commands = if cmd
218
- [aruba.command_monitor.find(Aruba.platform.detect_ruby(cmd))]
219
- else
220
- all_commands
221
- end
201
+ command = aruba.command_monitor.find(Aruba.platform.detect_ruby(cmd))
222
202
 
223
203
  output_string_matcher = if exactly
224
204
  :an_output_string_being_eq
@@ -226,24 +206,29 @@ Then(/^(?:the )?(output|stderr|stdout)(?: from "([^"]*)")? should( not)? contain
226
206
  :an_output_string_including
227
207
  end
228
208
 
229
- if Aruba::VERSION < '1.0'
230
- combined_output = commands.map do |c|
231
- c.stop
232
- c.send(channel.to_sym).chomp
233
- end.join("\n")
209
+ expect(command).not_to send(matcher, send(output_string_matcher, expected))
210
+ end
234
211
 
235
- if negated
236
- expect(combined_output).not_to send(output_string_matcher, expected)
237
- else
238
- expect(combined_output).to send(output_string_matcher, expected)
239
- end
240
- else
241
- if negated
242
- expect(commands).not_to include_an_object send(matcher, send(output_string_matcher, expected))
243
- else
244
- expect(commands).to include_an_object send(matcher, send(output_string_matcher, expected))
245
- end
246
- end
212
+ ## the stderr from "echo -n 'Hello'" should contain exactly:
213
+ Then(/^(?:the )?(output|stderr|stdout) from "([^"]*)" should contain( exactly)?:$/) do |channel, cmd, exactly, expected|
214
+ matcher = case channel.to_sym
215
+ when :output
216
+ :have_output
217
+ when :stderr
218
+ :have_output_on_stderr
219
+ when :stdout
220
+ :have_output_on_stdout
221
+ end
222
+
223
+ command = aruba.command_monitor.find(Aruba.platform.detect_ruby(cmd))
224
+
225
+ output_string_matcher = if exactly
226
+ :an_output_string_being_eq
227
+ else
228
+ :an_output_string_including
229
+ end
230
+
231
+ expect(command).to send(matcher, send(output_string_matcher, expected))
247
232
  end
248
233
 
249
234
  # "the output should match" allows regex in the partial_output, if
@@ -275,6 +260,10 @@ Then(/^the output should( not)? match:$/) do |negated, expected|
275
260
  end
276
261
 
277
262
  Then(/^the exit status should( not)? be (\d+)$/) do |negated, exit_status|
263
+ if last_command_stopped.nil?
264
+ last_command_started.stop
265
+ end
266
+
278
267
  if negated
279
268
  expect(last_command_stopped).not_to have_exit_status exit_status.to_i
280
269
  else
@@ -282,60 +271,100 @@ Then(/^the exit status should( not)? be (\d+)$/) do |negated, exit_status|
282
271
  end
283
272
  end
284
273
 
285
- Then(/^it should( not)? (pass|fail) with "(.*?)"$/) do |negated, pass_fail, expected|
274
+ Then(/^it should not (pass|fail) with "(.*?)"$/) do |pass_fail, expected|
275
+ last_command_started.stop
276
+
286
277
  if pass_fail == 'pass'
287
278
  expect(last_command_stopped).to be_successfully_executed
288
279
  else
289
280
  expect(last_command_stopped).not_to be_successfully_executed
290
281
  end
291
282
 
292
- if negated
293
- expect(last_command_stopped).not_to have_output an_output_string_including(expected)
283
+ expect(last_command_stopped).not_to have_output an_output_string_including(expected)
284
+ end
285
+
286
+ Then(/^it should (pass|fail) with "(.*?)"$/) do |pass_fail, expected|
287
+ last_command_started.stop
288
+
289
+ if pass_fail == 'pass'
290
+ expect(last_command_stopped).to be_successfully_executed
294
291
  else
295
- expect(last_command_stopped).to have_output an_output_string_including(expected)
292
+ expect(last_command_stopped).not_to be_successfully_executed
296
293
  end
294
+
295
+ expect(last_command_stopped).to have_output an_output_string_including(expected)
297
296
  end
298
297
 
299
- Then(/^it should( not)? (pass|fail) with:$/) do |negated, pass_fail, expected|
298
+ Then(/^it should not (pass|fail) with:$/) do |pass_fail, expected|
299
+ last_command_started.stop
300
+
300
301
  if pass_fail == 'pass'
301
302
  expect(last_command_stopped).to be_successfully_executed
302
303
  else
303
304
  expect(last_command_stopped).not_to be_successfully_executed
304
305
  end
305
306
 
306
- if negated
307
- expect(last_command_stopped).not_to have_output an_output_string_including(expected)
307
+ expect(last_command_stopped).not_to have_output an_output_string_including(expected)
308
+ end
309
+
310
+ Then(/^it should (pass|fail) with:$/) do |pass_fail, expected|
311
+ last_command_started.stop
312
+
313
+ if pass_fail == 'pass'
314
+ expect(last_command_stopped).to be_successfully_executed
308
315
  else
309
- expect(last_command_stopped).to have_output an_output_string_including(expected)
316
+ expect(last_command_stopped).not_to be_successfully_executed
310
317
  end
318
+
319
+ expect(last_command_stopped).to have_output an_output_string_including(expected)
311
320
  end
312
321
 
313
- Then(/^it should( not)? (pass|fail) with exactly:$/) do |negated, pass_fail, expected|
322
+ Then(/^it should not (pass|fail) with exactly:$/) do |pass_fail, expected|
323
+ last_command_started.stop
324
+
314
325
  if pass_fail == 'pass'
315
326
  expect(last_command_stopped).to be_successfully_executed
316
327
  else
317
328
  expect(last_command_stopped).not_to be_successfully_executed
318
329
  end
319
330
 
320
- if negated
321
- expect(last_command_stopped).not_to have_output an_output_string_eq(expected)
331
+ expect(last_command_stopped).not_to have_output an_output_string_eq(expected)
332
+ end
333
+
334
+ Then(/^it should (pass|fail) with exactly:$/) do |pass_fail, expected|
335
+ last_command_started.stop
336
+
337
+ if pass_fail == 'pass'
338
+ expect(last_command_stopped).to be_successfully_executed
322
339
  else
323
- expect(last_command_stopped).to have_output an_output_string_being_eq(expected)
340
+ expect(last_command_stopped).not_to be_successfully_executed
324
341
  end
342
+
343
+ expect(last_command_stopped).to have_output an_output_string_being_eq(expected)
325
344
  end
326
345
 
327
- Then(/^it should( not)? (pass|fail) (?:with regexp?|matching):$/) do |negated, pass_fail, expected|
346
+ Then(/^it should not (pass|fail) (?:with regexp?|matching):$/) do |pass_fail, expected|
347
+ last_command_started.stop
348
+
328
349
  if pass_fail == 'pass'
329
350
  expect(last_command_stopped).to be_successfully_executed
330
351
  else
331
352
  expect(last_command_stopped).not_to be_successfully_executed
332
353
  end
333
354
 
334
- if negated
335
- expect(last_command_stopped).not_to have_output an_output_string_matching(expected)
355
+ expect(last_command_stopped).not_to have_output an_output_string_matching(expected)
356
+ end
357
+
358
+ Then(/^it should (pass|fail) (?:with regexp?|matching):$/) do |pass_fail, expected|
359
+ last_command_started.stop
360
+
361
+ if pass_fail == 'pass'
362
+ expect(last_command_stopped).to be_successfully_executed
336
363
  else
337
- expect(last_command_stopped).to have_output an_output_string_matching(expected)
364
+ expect(last_command_stopped).not_to be_successfully_executed
338
365
  end
366
+
367
+ expect(last_command_stopped).to have_output an_output_string_matching(expected)
339
368
  end
340
369
 
341
370
  Then(/^(?:the )?(output|stderr|stdout) should not contain anything$/) do |channel|
@@ -346,8 +375,6 @@ Then(/^(?:the )?(output|stderr|stdout) should not contain anything$/) do |channe
346
375
  :have_output_on_stderr
347
376
  when :stdout
348
377
  :have_output_on_stdout
349
- else
350
- fail ArgumentError, %(Invalid channel "#{channel}" chosen. Only "output", "stdout" and "stderr" are supported.)
351
378
  end
352
379
 
353
380
  expect(all_commands).to include_an_object send(matcher, be_nil.or(be_empty))
@@ -355,16 +382,16 @@ end
355
382
 
356
383
  Then(/^(?:the )?(output|stdout|stderr) should( not)? contain all of these lines:$/) do |channel, negated, table|
357
384
  table.raw.flatten.each do |expected|
358
- matcher = case channel.to_sym
359
- when :output
360
- :have_output
361
- when :stderr
362
- :have_output_on_stderr
363
- when :stdout
364
- :have_output_on_stdout
365
- else
366
- fail ArgumentError, %(Invalid channel "#{channel}" chosen. Only "output", "stdout" and "stderr" are supported.)
367
- end
385
+ case channel.to_sym
386
+ when :output
387
+ :have_output
388
+ when :stderr
389
+ :have_output_on_stderr
390
+ when :stdout
391
+ :have_output_on_stdout
392
+ end
393
+
394
+ # TODO: This isn't actually using the above. It's hardcoded to use have_output only
368
395
 
369
396
  if negated
370
397
  expect(all_commands).not_to include_an_object have_output an_output_string_including(expected)
@@ -374,36 +401,20 @@ Then(/^(?:the )?(output|stdout|stderr) should( not)? contain all of these lines:
374
401
  end
375
402
  end
376
403
 
377
- Given(/the default aruba timeout is (\d+) seconds/) do |seconds|
378
- # rubocop:disable Metrics/LineLength
379
- Aruba.platform.deprecated(%{The /^the default aruba timeout is (\d+) seconds/ step definition is deprecated. Please use /^the default aruba exit timeout is (\d+) seconds/ step definition is deprecated.})
380
- # rubocop:enable Metrics/LineLength
381
-
382
- aruba.config.exit_timeout = seconds.to_i
383
- end
384
-
385
- Given(/The default aruba timeout is (\d+) seconds/) do |seconds|
386
- # rubocop:disable Metrics/LineLength
387
- Aruba.platform.deprecated(%{The /^The default aruba timeout is (\d+) seconds/ step definition is deprecated. Please use /^the default aruba exit timeout is (\d+) seconds/ step definition is deprecated.})
388
- # rubocop:enable Metrics/LineLength
389
-
390
- aruba.config.exit_timeout = seconds.to_i
391
- end
392
-
393
- Given(/^the (?:default )?aruba io wait timeout is (\d+) seconds?$/) do |seconds|
394
- aruba.config.io_wait_timeout = seconds.to_i
404
+ Given(/^the (?:default )?aruba io wait timeout is ([\d.]+) seconds?$/) do |seconds|
405
+ aruba.config.io_wait_timeout = seconds.to_f
395
406
  end
396
407
 
397
- Given(/^the (?:default )?aruba exit timeout is (\d+) seconds?$/) do |seconds|
398
- aruba.config.exit_timeout = seconds.to_i
408
+ Given(/^the (?:default )?aruba exit timeout is ([\d.]+) seconds?$/) do |seconds|
409
+ aruba.config.exit_timeout = seconds.to_f
399
410
  end
400
411
 
401
412
  Given(/^the (?:default )?aruba stop signal is "([^"]*)"$/) do |signal|
402
413
  aruba.config.stop_signal = signal
403
414
  end
404
415
 
405
- Given(/^I wait (\d+) seconds? for (?:a|the) command to start up$/) do |seconds|
406
- aruba.config.startup_wait_time = seconds.to_i
416
+ Given(/^I wait ([\d.]+) seconds? for (?:a|the) command to start up$/) do |seconds|
417
+ aruba.config.startup_wait_time = seconds.to_f
407
418
  end
408
419
 
409
420
  When(/^I send the signal "([^"]*)" to the command (?:"([^"]*)"|(?:started last))$/) do |signal, command|
@@ -1,4 +1,4 @@
1
- Given(/^a mocked home directory$/)do
1
+ Given(/^a mocked home directory$/) do
2
2
  set_environment_variable 'HOME', expand_path('.')
3
3
  end
4
4
 
@@ -3,11 +3,11 @@ Given(/^I use (?:a|the) fixture(?: named)? "([^"]*)"$/) do |name|
3
3
  cd name
4
4
  end
5
5
 
6
- Given(/^I copy (?:a|the) (file|directory)(?: (?:named|from))? "([^"]*)" to "([^"]*)"$/) do |file_or_directory, source, destination|
6
+ Given(/^I copy (?:a|the) (?:file|directory)(?: (?:named|from))? "([^"]*)" to "([^"]*)"$/) do |source, destination|
7
7
  copy source, destination
8
8
  end
9
9
 
10
- Given(/^I move (?:a|the) (file|directory)(?: (?:named|from))? "([^"]*)" to "([^"]*)"$/) do |file_or_directory, source, destination|
10
+ Given(/^I move (?:a|the) (?:file|directory)(?: (?:named|from))? "([^"]*)" to "([^"]*)"$/) do |source, destination|
11
11
  move source, destination
12
12
  end
13
13
 
@@ -42,11 +42,11 @@ Given(/^(?:a|the) (\d+) byte file(?: named)? "([^"]*)"$/) do |file_size, file_na
42
42
  end
43
43
 
44
44
  Given(/^(?:an|the) empty file(?: named)? "([^"]*)"$/) do |file_name|
45
- write_file(file_name, "")
45
+ write_file(file_name, '')
46
46
  end
47
47
 
48
48
  Given(/^(?:an|the) empty file(?: named)? "([^"]*)" with mode "([^"]*)"$/) do |file_name, file_mode|
49
- write_file(file_name, "")
49
+ write_file(file_name, '')
50
50
  chmod(file_mode, file_name)
51
51
  end
52
52
 
@@ -67,11 +67,11 @@ When(/^I append to "([^"]*)" with "([^"]*)"$/) do |file_name, file_content|
67
67
  end
68
68
 
69
69
  When(/^I remove (?:a|the) (?:file|directory)(?: named)? "([^"]*)"( with full force)?$/) do |name, force_remove|
70
- remove(name, :force => force_remove.nil? ? false : true)
70
+ remove(name, force: force_remove.nil? ? false : true)
71
71
  end
72
72
 
73
73
  Given(/^(?:a|the) (?:file|directory)(?: named)? "([^"]*)" does not exist$/) do |name|
74
- remove(name, :force => true)
74
+ remove(name, force: true)
75
75
  end
76
76
 
77
77
  When(/^I cd to "([^"]*)"$/) do |dir|
@@ -79,7 +79,7 @@ When(/^I cd to "([^"]*)"$/) do |dir|
79
79
  end
80
80
 
81
81
  Then(/^the following files should (not )?exist:$/) do |negated, files|
82
- files = files.rows.flatten
82
+ files = files.raw.flatten
83
83
 
84
84
  if negated
85
85
  expect(files).not_to include an_existing_file
@@ -88,21 +88,19 @@ Then(/^the following files should (not )?exist:$/) do |negated, files|
88
88
  end
89
89
  end
90
90
 
91
- Then(/^(?:a|the) (file|directory)(?: named)? "([^"]*)" should (not )?exist(?: anymore)?$/) do |directory_or_file, path, expect_match|
92
- if directory_or_file == 'file'
93
- if expect_match
94
- expect(path).not_to be_an_existing_file
95
- else
96
- expect(path).to be_an_existing_file
97
- end
98
- elsif directory_or_file == 'directory'
99
- if expect_match
100
- expect(path).not_to be_an_existing_directory
101
- else
102
- expect(path).to be_an_existing_directory
103
- end
91
+ Then(/^(?:a|the) file(?: named)? "([^"]*)" should (not )?exist(?: anymore)?$/) do |path, expect_match|
92
+ if expect_match
93
+ expect(path).not_to be_an_existing_file
94
+ else
95
+ expect(path).to be_an_existing_file
96
+ end
97
+ end
98
+
99
+ Then(/^(?:a|the) directory(?: named)? "([^"]*)" should (not )?exist(?: anymore)?$/) do |path, expect_match|
100
+ if expect_match
101
+ expect(path).not_to be_an_existing_directory
104
102
  else
105
- fail ArgumentError, %("#{directory_or_file}" can only be "directory" or "file".)
103
+ expect(path).to be_an_existing_directory
106
104
  end
107
105
  end
108
106
 
@@ -156,7 +154,7 @@ Then(/^(?:a|the) file(?: named)? "([^"]*)" should (not )?contain exactly:$/) do
156
154
  end
157
155
  end
158
156
 
159
- Then(/^(?:a|the) file(?: named)? "([^"]*)" should (not )?match %r<([^\/]*)>$/) do |file, negated, content|
157
+ Then(/^(?:a|the) file(?: named)? "([^"]*)" should (not )?match %r<([^>]*)>$/) do |file, negated, content|
160
158
  if negated
161
159
  expect(file).not_to have_file_content file_content_matching(content)
162
160
  else
@@ -180,19 +178,7 @@ Then(/^(?:a|the) file(?: named)? "([^"]*)" should (not )?be equal to file "([^"]
180
178
  end
181
179
  end
182
180
 
183
- Then(/^the mode of filesystem object "([^"]*)" should (not )?match "([^"]*)"$/) do |file, negated, permissions|
184
- # rubocop:disable Metrics/LineLength
185
- Aruba.platform.deprecated('The use of step "the mode of filesystem object "([^"]*)" should (not )?match "([^"]*)" is deprecated. Use "^the (?:file|directory)(?: named)? "([^"]*)" should have permissions "([^"]*)"$" instead')
186
- # rubocop:enable Metrics/LineLength
187
-
188
- if negated
189
- expect(file).not_to have_permissions(permissions)
190
- else
191
- expect(file).to have_permissions(permissions)
192
- end
193
- end
194
-
195
- Then(/^the (?:file|directory)(?: named)? "([^"]*)" should( not)? have permissions "([^"]*)"$/) do |path, negated, permissions|
181
+ Then(/^(?:a|the) (?:file|directory)(?: named)? "([^"]*)" should( not)? have permissions "([^"]*)"$/) do |path, negated, permissions|
196
182
  if negated
197
183
  expect(path).not_to have_permissions(permissions)
198
184
  else