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,242 @@
1
+ Feature: Run command
2
+
3
+ To run a command use the `#run`-method. There are some configuration options
4
+ which are relevant here:
5
+
6
+ - `fail_on_error`:
7
+
8
+ Given this option is `true`, `aruba` fails if the `command` fails to run - exit code <> 0.
9
+
10
+ For all other options see [run.feature](run.feature).
11
+
12
+ Background:
13
+ Given I use a fixture named "cli-app"
14
+
15
+ Scenario: Require executable to succeed (by default value)
16
+ Given an executable named "bin/cli" with:
17
+ """bash
18
+ #!/bin/bash
19
+ exit 1
20
+ """
21
+ And a file named "spec/run_spec.rb" with:
22
+ """ruby
23
+ require 'spec_helper'
24
+
25
+ RSpec.describe 'Run command', :type => :aruba do
26
+ it { expect { run_simple('cli') }.to raise_error RSpec::Expectations::ExpectationNotMetError }
27
+ end
28
+ """
29
+ When I run `rspec`
30
+ Then the specs should all pass
31
+
32
+ Scenario: Require executable to succeed (set by option)
33
+ Given an executable named "bin/cli" with:
34
+ """bash
35
+ #!/bin/bash
36
+ exit 1
37
+ """
38
+ And a file named "spec/run_spec.rb" with:
39
+ """ruby
40
+ require 'spec_helper'
41
+
42
+ RSpec.describe 'Run command', :type => :aruba do
43
+ it { expect { run_simple('cli', :fail_on_error => true) }.to raise_error }
44
+ end
45
+ """
46
+ When I run `rspec`
47
+ Then the specs should all pass
48
+
49
+ Scenario: Require executable to succeed (set by option, deprecated)
50
+ Given an executable named "bin/cli" with:
51
+ """bash
52
+ #!/bin/bash
53
+ exit 1
54
+ """
55
+ And a file named "spec/run_spec.rb" with:
56
+ """ruby
57
+ require 'spec_helper'
58
+
59
+ RSpec.describe 'Run command', :type => :aruba do
60
+ it { expect { run_simple('cli', true) }.to raise_error }
61
+ end
62
+ """
63
+ When I run `rspec`
64
+ Then the specs should all pass
65
+
66
+ Scenario: Ignore failure of executable (set by option)
67
+ Given an executable named "bin/cli" with:
68
+ """bash
69
+ #!/bin/bash
70
+ exit 1
71
+ """
72
+ And a file named "spec/run_spec.rb" with:
73
+ """ruby
74
+ require 'spec_helper'
75
+
76
+ RSpec.describe 'Run command', :type => :aruba do
77
+ it { expect { run_simple('cli', :fail_on_error => false) }.not_to raise_error }
78
+ end
79
+ """
80
+ When I run `rspec`
81
+ Then the specs should all pass
82
+
83
+ Scenario: Ignore failure of executable (set by option, deprecated)
84
+ Given an executable named "bin/cli" with:
85
+ """bash
86
+ #!/bin/bash
87
+ exit 1
88
+ """
89
+ And a file named "spec/run_spec.rb" with:
90
+ """ruby
91
+ require 'spec_helper'
92
+
93
+ RSpec.describe 'Run command', :type => :aruba do
94
+ it { expect { run_simple('cli', false) }.not_to raise_error }
95
+ end
96
+ """
97
+ When I run `rspec`
98
+ Then the specs should all pass
99
+
100
+ Scenario: Command with long startup phase
101
+
102
+ If you have got a command with a long startup phase or use `ruby` together
103
+ with `bundler`, you should consider using the `startup_wait_time`-option.
104
+ Otherwise methods like `#send_signal` don't work since they require the
105
+ command to be running and have setup it's signal handler.
106
+
107
+ Given an executable named "bin/cli" with:
108
+ """bash
109
+ #!/usr/bin/env bash
110
+
111
+ function initialize_script {
112
+ sleep 2
113
+ }
114
+
115
+ function do_some_work {
116
+ echo "Hello, Aruba is working"
117
+ }
118
+
119
+ initialize_script
120
+ do_some_work
121
+
122
+ exit 0
123
+ """
124
+ And a file named "spec/run_spec.rb" with:
125
+ """ruby
126
+ require 'spec_helper'
127
+
128
+ RSpec.describe 'Run command', :type => :aruba, :exit_timeout => 1, :startup_wait_time => 2 do
129
+ before(:each) { run_simple('cli') }
130
+
131
+ it { expect(last_command_started).to be_successfully_executed }
132
+ it { expect(last_command_started).to have_output /Hello, Aruba is working/ }
133
+ end
134
+ """
135
+ When I run `rspec`
136
+ Then the specs should all pass
137
+
138
+ Scenario: Long running command
139
+
140
+ If you have got a "long running" command, you should consider using the
141
+ `exit_timeout`-option.
142
+
143
+ Given an executable named "bin/cli" with:
144
+ """bash
145
+ #!/usr/bin/env bash
146
+
147
+ function do_some_work {
148
+ sleep 2
149
+ echo "Hello, Aruba here"
150
+ }
151
+
152
+ do_some_work
153
+ """
154
+ And a file named "spec/run_spec.rb" with:
155
+ """ruby
156
+ require 'spec_helper'
157
+
158
+ RSpec.describe 'Run command', :type => :aruba, :exit_timeout => 3 do
159
+ before(:each) { run_simple('cli') }
160
+
161
+ it { expect(last_command_started).to be_successfully_executed }
162
+ it { expect(last_command_started).to have_output /Hello, Aruba here/ }
163
+ end
164
+ """
165
+ When I run `rspec`
166
+ Then the specs should all pass
167
+
168
+ Scenario: Sending signals to commands started with `#run_simple()`
169
+
170
+ Sending signals to a command which is started by
171
+ `#run_simple()` does not make sense. The command is stopped internally when
172
+ its exit status is checked.
173
+
174
+ Given an executable named "bin/cli" with:
175
+ """bash
176
+ #!/usr/bin/env bash
177
+
178
+ function initialize_script {
179
+ sleep 1
180
+ }
181
+
182
+ function cleanup_script {
183
+ sleep 1
184
+ }
185
+
186
+ function do_some_work {
187
+ echo "Hello, Aruba is working"
188
+ }
189
+
190
+ trap stop_script TERM
191
+
192
+ initialize_script
193
+ do_some_work
194
+ cleanup_script
195
+ exit 0
196
+ """
197
+ And a file named "spec/run_spec.rb" with:
198
+ """ruby
199
+ require 'spec_helper'
200
+
201
+ RSpec.describe 'Run command', :type => :aruba, :exit_timeout => 2, :startup_wait_time => 1 do
202
+ before(:each) { run_simple('cli') }
203
+ it { expect { last_command_started.send_signal 'HUP' }.to raise_error Aruba::CommandAlreadyStoppedError }
204
+ end
205
+ """
206
+ When I run `rspec`
207
+ Then the specs should all pass
208
+
209
+ Scenario: Activate announcer channels on failure
210
+
211
+ Given an executable named "bin/cli" with:
212
+ """bash
213
+ #!/bin/bash
214
+ echo "Hello, I'm STDOUT"
215
+ echo "Hello, I'm STDERR" 1>&2
216
+ exit 1
217
+ """
218
+ And a file named "spec/run_spec.rb" with:
219
+ """ruby
220
+ require 'spec_helper'
221
+
222
+ Aruba.configure do |config|
223
+ config.activate_announcer_on_command_failure = [:stdout, :stderr]
224
+ end
225
+
226
+ RSpec.describe 'Run command', :type => :aruba do
227
+ it { expect { run_simple('cli', :fail_on_error => true) }.to_not raise_error }
228
+ end
229
+ """
230
+ When I run `rspec`
231
+ Then the specs should not pass
232
+ And the output should contain:
233
+ """
234
+ <<-STDOUT
235
+ Hello, I'm STDOUT
236
+
237
+ STDOUT
238
+ <<-STDERR
239
+ Hello, I'm STDERR
240
+
241
+ STDERR
242
+ """
@@ -0,0 +1,53 @@
1
+ Feature: Send running command a signal
2
+
3
+ You can send a running command a signal using
4
+ `last_command_started#send_signal`. This is only supported with
5
+ `aruba.config.command_launcher = :spawn` (default).
6
+
7
+ Background:
8
+ Given I use a fixture named "cli-app"
9
+
10
+ Scenario: Existing executable
11
+ Given an executable named "bin/cli" with:
12
+ """ruby
13
+ #!/usr/bin/env bash
14
+
15
+ function hup {
16
+ echo 'Exit...' >&2
17
+ exit 0
18
+ }
19
+
20
+ trap hup HUP
21
+
22
+ while [ true ]; do sleep 1; done
23
+ """
24
+ And a file named "spec/run_spec.rb" with:
25
+ """ruby
26
+ require 'spec_helper'
27
+
28
+ RSpec.describe 'Run command', :type => :aruba, :exit_timeout => 1, :startup_wait_time => 5 do
29
+ before(:each) { run('cli') }
30
+ before(:each) { last_command_started.send_signal 'HUP' }
31
+ it { expect(last_command_started).to have_output /Exit/ }
32
+ end
33
+ """
34
+ When I run `rspec`
35
+ Then the specs should all pass
36
+
37
+ Scenario: Dying command
38
+ Given an executable named "bin/cli" with:
39
+ """ruby
40
+ #!/usr/bin/env bash
41
+ exit 1
42
+ """
43
+ And a file named "spec/run_spec.rb" with:
44
+ """ruby
45
+ require 'spec_helper'
46
+
47
+ RSpec.describe 'Run command', :type => :aruba, :exit_timeout => 1, :startup_wait_time => 5 do
48
+ before(:each) { run('cli') }
49
+ it { expect { last_command_started.send_signal 'HUP' }.to raise_error Aruba::CommandAlreadyStoppedError, /Command "cli" with PID/ }
50
+ end
51
+ """
52
+ When I run `rspec`
53
+ Then the specs should all pass
@@ -0,0 +1,46 @@
1
+ Feature: Access STDERR of command
2
+
3
+ You may need to `#stop_all_commands` before accessing `#stderr` of a single
4
+ command - e.g. `#last_command_started`.
5
+
6
+ Background:
7
+ Given I use a fixture named "cli-app"
8
+ And the default aruba io wait timeout is 1 seconds
9
+
10
+ Scenario: Existing executable
11
+ Given an executable named "bin/cli" with:
12
+ """bash
13
+ #!/bin/bash
14
+ echo 'Hello, Aruba!' >&2
15
+ """
16
+ And a file named "spec/run_spec.rb" with:
17
+ """ruby
18
+ require 'spec_helper'
19
+
20
+ RSpec.describe 'Run command', :type => :aruba do
21
+ before(:each) { run('cli') }
22
+ before(:each) { stop_all_commands }
23
+ it { expect(last_command_started.stderr).to start_with 'Hello' }
24
+ end
25
+ """
26
+ When I run `rspec`
27
+ Then the specs should all pass
28
+
29
+ Scenario: Waiting for output to "appear" after 2 seconds
30
+ Given an executable named "bin/cli" with:
31
+ """bash
32
+ #!/bin/bash
33
+ sleep 1
34
+ echo 'Hello, Aruba' >&2
35
+ """
36
+ And a file named "spec/run_spec.rb" with:
37
+ """ruby
38
+ require 'spec_helper'
39
+
40
+ RSpec.describe 'Run command', :type => :aruba, :io_wait_timeout => 2 do
41
+ before(:each) { run('cli') }
42
+ it { expect(last_command_started.stderr).to start_with 'Hello' }
43
+ end
44
+ """
45
+ When I run `rspec`
46
+ Then the specs should all pass
@@ -0,0 +1,46 @@
1
+ Feature: Access STDOUT of command
2
+
3
+ You may need to `#stop_all_commands` before accessing `#stdout` of a single
4
+ command - e.g. `#last_command_started`.
5
+
6
+ Background:
7
+ Given I use a fixture named "cli-app"
8
+ And the default aruba io wait timeout is 1 seconds
9
+
10
+ Scenario: Existing executable
11
+ Given an executable named "bin/cli" with:
12
+ """bash
13
+ #!/bin/bash
14
+ echo 'Hello, Aruba!'
15
+ """
16
+ And a file named "spec/run_spec.rb" with:
17
+ """ruby
18
+ require 'spec_helper'
19
+
20
+ RSpec.describe 'Run command', :type => :aruba do
21
+ before(:each) { run('cli') }
22
+ before(:each) { stop_all_commands }
23
+ it { expect(last_command_started.stdout).to start_with 'Hello' }
24
+ end
25
+ """
26
+ When I run `rspec`
27
+ Then the specs should all pass
28
+
29
+ Scenario: Waiting for output to "appear" after 2 seconds
30
+ Given an executable named "bin/cli" with:
31
+ """bash
32
+ #!/bin/bash
33
+ sleep 1
34
+ echo 'Hello, Aruba'
35
+ """
36
+ And a file named "spec/run_spec.rb" with:
37
+ """ruby
38
+ require 'spec_helper'
39
+
40
+ RSpec.describe 'Run command', :type => :aruba, :io_wait_timeout => 2 do
41
+ before(:each) { run('cli') }
42
+ it { expect(last_command_started.stdout).to start_with 'Hello' }
43
+ end
44
+ """
45
+ When I run `rspec`
46
+ Then the specs should all pass
@@ -0,0 +1,131 @@
1
+ Feature: Stop command
2
+
3
+ To stop commands via API you can do the following:
4
+
5
+ - `last_command_started.stop`
6
+ - `find_command('command').stop`
7
+
8
+ But normally there's no need to stop a command manually. All matchers
9
+ handling commands make sure, that they stop ALL command before check actual
10
+ against expected.
11
+
12
+ Background:
13
+ Given I use a fixture named "cli-app"
14
+
15
+ Scenario: Stop command started last
16
+ Given an executable named "bin/cli" with:
17
+ """bash
18
+ #!/bin/bash
19
+ function term {
20
+ exit 0
21
+ }
22
+
23
+ trap term TERM
24
+ while [ true ]; do sleep 1; done
25
+ """
26
+ And a file named "spec/run_spec.rb" with:
27
+ """ruby
28
+ require 'spec_helper'
29
+
30
+ RSpec.describe 'Run command', :type => :aruba do
31
+ before(:each) { run('cli') }
32
+ before(:each) { last_command_started.stop }
33
+ it { expect(last_command_started).to be_successfully_executed }
34
+ end
35
+ """
36
+ When I run `rspec`
37
+ Then the specs should all pass
38
+
39
+ Scenario: Find and stop command
40
+ Given an executable named "bin/cli" with:
41
+ """bash
42
+ #!/bin/bash
43
+ function term {
44
+ exit 0
45
+ }
46
+
47
+ trap term TERM
48
+ while [ true ]; do sleep 1; done
49
+ """
50
+ And a file named "spec/run_spec.rb" with:
51
+ """ruby
52
+ require 'spec_helper'
53
+
54
+ RSpec.describe 'Run command', :type => :aruba do
55
+ before(:each) { run('cli') }
56
+ before(:each) { find_command('cli').stop }
57
+ it { expect(last_command_started).to be_successfully_executed }
58
+ end
59
+ """
60
+ When I run `rspec`
61
+ Then the specs should all pass
62
+
63
+ Scenario: Stop successful command with configured signal
64
+ Given an executable named "bin/cli" with:
65
+ """bash
66
+ #!/bin/bash
67
+ function hup {
68
+ echo "Exit..."
69
+ exit 0
70
+ }
71
+
72
+ function term {
73
+ echo "No! No exit here. Try HUP. I stop the command with exit 1."
74
+ exit 1
75
+ }
76
+
77
+ trap hup HUP
78
+ trap term TERM
79
+ while [ true ]; do sleep 1; done
80
+ """
81
+ And a file named "spec/run_spec.rb" with:
82
+ """ruby
83
+ require 'spec_helper'
84
+
85
+ Aruba.configure do |config|
86
+ config.stop_signal = 'HUP'
87
+ config.exit_timeout = 1
88
+ end
89
+
90
+ RSpec.describe 'Run command', :type => :aruba do
91
+ before(:each) { run('cli') }
92
+ it { expect(last_command_started).to be_successfully_executed }
93
+ end
94
+ """
95
+ When I run `rspec`
96
+ Then the specs should all pass
97
+
98
+ Scenario: Stop unsuccessful command with configured signal
99
+ Given an executable named "bin/cli" with:
100
+ """bash
101
+ #!/bin/bash
102
+ function hup {
103
+ echo "Exit..."
104
+ exit 2
105
+ }
106
+
107
+ function term {
108
+ echo "No! No exit here. Try HUP. I stop the command with exit 1."
109
+ exit 1
110
+ }
111
+
112
+ trap hup HUP
113
+ trap term TERM
114
+ while [ true ]; do sleep 1; done
115
+ """
116
+ And a file named "spec/run_spec.rb" with:
117
+ """ruby
118
+ require 'spec_helper'
119
+
120
+ Aruba.configure do |config|
121
+ config.stop_signal = 'HUP'
122
+ config.exit_timeout = 1
123
+ end
124
+
125
+ RSpec.describe 'Run command', :type => :aruba do
126
+ before(:each) { run('cli') }
127
+ it { expect(last_command_started).to have_exit_status 2 }
128
+ end
129
+ """
130
+ When I run `rspec`
131
+ Then the specs should all pass