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,313 @@
1
+ Feature: Stop commands
2
+
3
+ After you've started a command, you might want to stop a command. To do that
4
+ you've got multiple possibilities.
5
+
6
+ On "JRuby" it's not possible to read the output of command which `echo`s a
7
+ string in a `signal`-handler - `TERM`, `HUP` etc. So please don't write
8
+ tests, which check on this, if your script needs to run on "JRuby". All other
9
+ output is logged to `STDERR` and/or `STDOUT` as normal.
10
+
11
+ Background:
12
+ Given I use a fixture named "cli-app"
13
+
14
+ Scenario: Terminate last command started
15
+
16
+ Terminating a command will send `SIGTERM` to the command.
17
+
18
+ Given an executable named "bin/cli1" with:
19
+ """bash
20
+ #!/bin/bash
21
+
22
+ function term {
23
+ exit 100
24
+ }
25
+
26
+ trap term TERM
27
+ echo "Hello, Aruba!"
28
+ while [ true ]; do sleep 1; done
29
+ exit 1
30
+ """
31
+ And an executable named "bin/cli2" with:
32
+ """bash
33
+ #!/bin/bash
34
+
35
+ function term {
36
+ exit 155
37
+ }
38
+
39
+ trap term TERM
40
+ echo "Hello, Aruba!"
41
+ while [ true ]; do sleep 1; done
42
+ exit 1
43
+ """
44
+ And a file named "features/stop.feature" with:
45
+ """
46
+ Feature: Run it
47
+ Scenario: Run command
48
+ Given the default aruba exit timeout is 1 second
49
+ And I wait 2 seconds for a command to start up
50
+ When I run `cli1` in background
51
+ And I run `cli2` in background
52
+ And I terminate the command started last
53
+ Then the exit status should be 155
54
+ And the output should contain:
55
+ \"\"\"
56
+ Hello, Aruba!
57
+ \"\"\"
58
+ """
59
+ When I run `cucumber`
60
+ Then the features should all pass
61
+
62
+ Scenario: Stop last command started
63
+
64
+ Stopping a command will wait n seconds for the command to stop and then
65
+ send `SIGTERM` to the command. Normally "n" is defined by the default exit
66
+ timeout of aruba.
67
+
68
+ Given an executable named "bin/cli1" with:
69
+ """bash
70
+ #!/bin/bash
71
+
72
+ function term {
73
+ exit 100
74
+ }
75
+
76
+ trap term TERM
77
+ echo "Hello, Aruba!"
78
+ while [ true ]; do sleep 1; done
79
+ exit 1
80
+ """
81
+ And an executable named "bin/cli2" with:
82
+ """bash
83
+ #!/bin/bash
84
+
85
+ function term {
86
+ exit 155
87
+ }
88
+
89
+ trap term TERM
90
+ echo "Hello, Aruba!"
91
+ while [ true ]; do sleep 1; done
92
+ exit 1
93
+ """
94
+ And a file named "features/stop.feature" with:
95
+ """
96
+ Feature: Run it
97
+ Background:
98
+
99
+ Scenario: Run command
100
+ Given the default aruba exit timeout is 5 seconds
101
+ And I wait 2 seconds for a command to start up
102
+ When I run `cli1` in background
103
+ And I run `cli2` in background
104
+ And I stop the command started last
105
+ Then the exit status should be 155
106
+ And the output should contain:
107
+ \"\"\"
108
+ Hello, Aruba!
109
+ \"\"\"
110
+ """
111
+ When I run `cucumber`
112
+ Then the features should all pass
113
+
114
+ Scenario: Terminate command given by commandline
115
+
116
+ Pass the commandline to the step to find the command, which should be
117
+ stopped.
118
+
119
+ Given an executable named "bin/cli1" with:
120
+ """bash
121
+ #!/bin/bash
122
+
123
+ function term {
124
+ exit 100
125
+ }
126
+
127
+ trap term TERM
128
+ echo "Hello, Aruba!"
129
+ while [ true ]; do sleep 1; done
130
+ """
131
+ And an executable named "bin/cli2" with:
132
+ """bash
133
+ #!/bin/bash
134
+
135
+ function term {
136
+ exit 155
137
+ }
138
+
139
+ trap term TERM
140
+ echo "Hello, Aruba!"
141
+ while [ true ]; do sleep 1; done
142
+ exit 2
143
+ """
144
+ And a file named "features/stop.feature" with:
145
+ """
146
+ Feature: Run it
147
+ Background:
148
+ Given the default aruba exit timeout is 5 seconds
149
+
150
+ Scenario: Run command
151
+ Given I wait 2 seconds for a command to start up
152
+ When I run `cli1` in background
153
+ When I run `cli2` in background
154
+ And I terminate the command "cli1"
155
+ Then the exit status should be 100
156
+ And the output should contain:
157
+ \"\"\"
158
+ Hello, Aruba!
159
+ \"\"\"
160
+ """
161
+ When I run `cucumber`
162
+ Then the features should all pass
163
+
164
+ Scenario: Stop command given by commandline
165
+
166
+ Stopping a command will wait n seconds for the command to stop and then
167
+ send `SIGTERM` to the command. Normally "n" is defined by the default exit
168
+ timeout of aruba.
169
+
170
+ Given an executable named "bin/cli1" with:
171
+ """bash
172
+ #!/bin/bash
173
+
174
+ function term {
175
+ exit 155
176
+ }
177
+
178
+ trap term TERM
179
+ echo "Hello, Aruba!"
180
+ while [ true ]; do sleep 1; done
181
+ exit 1
182
+ """
183
+ And an executable named "bin/cli2" with:
184
+ """bash
185
+ #!/bin/bash
186
+
187
+ function term {
188
+ exit 100
189
+ }
190
+
191
+ trap term TERM
192
+ echo "Hello, Aruba!"
193
+ while [ true ]; do sleep 1; done
194
+ exit 1
195
+ """
196
+ And a file named "features/stop.feature" with:
197
+ """
198
+ Feature: Run it
199
+ Background:
200
+ Given the default aruba exit timeout is 5 seconds
201
+
202
+ Scenario: Run command
203
+ Given I wait 2 seconds for a command to start up
204
+ When I run `cli1` in background
205
+ And I run `cli2` in background
206
+ When I stop the command "cli1"
207
+ Then the exit status should be 155
208
+ And the output should contain:
209
+ \"\"\"
210
+ Hello, Aruba!
211
+ \"\"\"
212
+ """
213
+ When I run `cucumber`
214
+ Then the features should all pass
215
+
216
+ Scenario: Stop command with configured signal
217
+
218
+ You can define a default signal which is used to stop all commands.
219
+
220
+ Given an executable named "bin/cli" with:
221
+ """bash
222
+ #!/bin/bash
223
+ function hup {
224
+ exit 155
225
+ }
226
+
227
+ function term {
228
+ exit 100
229
+ }
230
+
231
+ trap hup HUP
232
+ trap term TERM
233
+ echo "Hello, Aruba!"
234
+ while [ true ]; do sleep 1; done
235
+ exit 1
236
+ """
237
+ And a file named "features/run.feature" with:
238
+ """
239
+ Feature: Run it
240
+ Scenario: Run command
241
+ Given the default aruba stop signal is "HUP"
242
+ And the default aruba exit timeout is 5 seconds
243
+ When I run `cli`
244
+ Then the exit status should be 155
245
+ """
246
+ When I run `cucumber`
247
+ Then the features should all pass
248
+
249
+ @requires-ruby-platform-java
250
+ Scenario: STDERR/STDOUT is empty on JRUBY if output was written in "signal"-handler
251
+ Given an executable named "bin/cli1" with:
252
+ """bash
253
+ #!/bin/bash
254
+
255
+ function term {
256
+ echo 'Hello, TERM'
257
+ exit 100
258
+ }
259
+
260
+ trap term TERM
261
+ echo "Hello, Aruba!"
262
+ while [ true ]; do sleep 1; done
263
+ exit 1
264
+ """
265
+ And a file named "features/stop.feature" with:
266
+ """
267
+ Feature: Run it
268
+ Scenario: Run command
269
+ Given the default aruba exit timeout is 1 second
270
+ And I wait 2 seconds for a command to start up
271
+ When I run `cli1` in background
272
+ And I terminate the command started last
273
+ Then the exit status should be 100
274
+ And the output should not contain:
275
+ \"\"\"
276
+ Hello, TERM
277
+ \"\"\"
278
+ """
279
+ When I run `cucumber`
280
+ Then the features should all pass
281
+
282
+ @requires-ruby-platform-mri
283
+ Scenario: STDERR/STDOUT is written normally with MRI-Ruby if output was written in "signal"-handler
284
+ Given an executable named "bin/cli1" with:
285
+ """bash
286
+ #!/bin/bash
287
+
288
+ function term {
289
+ echo 'Hello, TERM'
290
+ exit 100
291
+ }
292
+
293
+ trap term TERM
294
+ echo "Hello, Aruba!"
295
+ while [ true ]; do sleep 1; done
296
+ exit 1
297
+ """
298
+ And a file named "features/stop.feature" with:
299
+ """
300
+ Feature: Run it
301
+ Scenario: Run command
302
+ Given the default aruba exit timeout is 1 second
303
+ And I wait 2 seconds for a command to start up
304
+ When I run `cli1` in background
305
+ And I terminate the command started last
306
+ Then the exit status should be 100
307
+ And the output should contain:
308
+ \"\"\"
309
+ Hello, TERM
310
+ \"\"\"
311
+ """
312
+ When I run `cucumber`
313
+ Then the features should all pass
@@ -0,0 +1,283 @@
1
+ Feature: Announce output during test run
2
+
3
+ In order to specify expected output
4
+ As a developer using Cucumber
5
+ I want to use the "the output should contain" step
6
+
7
+ Background:
8
+ Given I use a fixture named "cli-app"
9
+
10
+ Scenario: Announce change of directory (deprecated)
11
+ Given a file named "features/exit_status.feature" with:
12
+ """cucumber
13
+ Feature: Announce
14
+ @announce-dir
15
+ Scenario: Run command
16
+ Given a directory named "dir.d"
17
+ When I cd to "dir.d"
18
+ """
19
+ When I run `cucumber`
20
+ Then the features should all pass
21
+ And the output should contain:
22
+ """
23
+ $ cd /
24
+ """
25
+ And the output should contain:
26
+ """
27
+ tmp/aruba/dir.d
28
+ """
29
+
30
+ Scenario: Announce change of directory
31
+ Given a file named "features/exit_status.feature" with:
32
+ """cucumber
33
+ Feature: Announce
34
+ @announce-directory
35
+ Scenario: Run command
36
+ Given a directory named "dir.d"
37
+ When I cd to "dir.d"
38
+ """
39
+ When I run `cucumber`
40
+ Then the features should all pass
41
+ And the output should contain:
42
+ """
43
+ $ cd /
44
+ """
45
+ And the output should contain:
46
+ """
47
+ tmp/aruba/dir.d
48
+ """
49
+
50
+ Scenario: Announce stdout
51
+ Given an executable named "bin/cli" with:
52
+ """bash
53
+ #!/usr/bin/env bash
54
+
55
+ echo 'Hello World'
56
+ """
57
+ And a file named "features/exit_status.feature" with:
58
+ """cucumber
59
+ Feature: Announce
60
+ @announce-stdout
61
+ Scenario: Run command
62
+ When I run `cli`
63
+ Then the exit status should be 0
64
+ """
65
+ When I run `cucumber`
66
+ Then the features should all pass
67
+ And the output should contain:
68
+ """
69
+ <<-STDOUT
70
+ Hello World
71
+
72
+ STDOUT
73
+ """
74
+
75
+ Scenario: Announce stderr
76
+ Given an executable named "bin/cli" with:
77
+ """bash
78
+ #!/usr/bin/env bash
79
+
80
+ echo 'Hello World' >&2
81
+ """
82
+ And a file named "features/exit_status.feature" with:
83
+ """cucumber
84
+ Feature: Announce
85
+ @announce-stderr
86
+ Scenario: Run command
87
+ When I run `cli`
88
+ Then the exit status should be 0
89
+ """
90
+ When I run `cucumber`
91
+ Then the features should all pass
92
+ And the output should contain:
93
+ """
94
+ <<-STDERR
95
+ Hello World
96
+
97
+ STDERR
98
+ """
99
+
100
+ Scenario: Announce both stderr and stdout
101
+ Given an executable named "bin/cli" with:
102
+ """bash
103
+ #!/usr/bin/env bash
104
+
105
+ echo 'Hello' >&2
106
+ echo 'World'
107
+ """
108
+ And a file named "features/exit_status.feature" with:
109
+ """cucumber
110
+ Feature: Announce
111
+ @announce-output
112
+ Scenario: Run command
113
+ When I run `cli`
114
+ Then the exit status should be 0
115
+ """
116
+ When I run `cucumber`
117
+ Then the features should all pass
118
+ And the output should contain:
119
+ """
120
+ <<-STDERR
121
+ Hello
122
+
123
+ STDERR
124
+ """
125
+ And the output should contain:
126
+ """
127
+ <<-STDOUT
128
+ World
129
+
130
+ STDOUT
131
+ """
132
+
133
+ Scenario: Announce command
134
+ Given an executable named "bin/cli" with:
135
+ """bash
136
+ #!/usr/bin/env bash
137
+
138
+ echo 'Hello World'
139
+ """
140
+ And a file named "features/exit_status.feature" with:
141
+ """cucumber
142
+ Feature: Announce
143
+ @announce-cmd
144
+ Scenario: Run command
145
+ When I run `cli`
146
+ Then the exit status should be 0
147
+ """
148
+ When I run `cucumber`
149
+ Then the features should all pass
150
+ And the output should contain:
151
+ """
152
+ $ cli
153
+ """
154
+
155
+ Scenario: Announce change of environment variable
156
+ Given an executable named "bin/cli" with:
157
+ """bash
158
+ #!/usr/bin/env bash
159
+
160
+ echo 'Hello World'
161
+ """
162
+ And a file named "features/exit_status.feature" with:
163
+ """cucumber
164
+ Feature: Announce
165
+ @announce-env
166
+ Scenario: Run command
167
+ When I set the environment variables to:
168
+ | variable | value |
169
+ | MY_VAR | my_value |
170
+ And I run `cli`
171
+ Then the exit status should be 0
172
+ """
173
+ When I run `cucumber`
174
+ Then the features should all pass
175
+ And the output should contain:
176
+ """
177
+ $ export MY_VAR=my_value
178
+ """
179
+
180
+ Scenario: Announce change of environment variable which contains special characters
181
+ Given an executable named "bin/cli" with:
182
+ """bash
183
+ #!/usr/bin/env bash
184
+
185
+ echo 'Hello World'
186
+ """
187
+ And a file named "features/exit_status.feature" with:
188
+ """cucumber
189
+ Feature: Announce
190
+ @announce-env
191
+ Scenario: Run command
192
+ When I set the environment variables to:
193
+ | variable | value |
194
+ | MY_VAR | my value ! |
195
+ And I run `cli`
196
+ Then the exit status should be 0
197
+ """
198
+ When I run `cucumber`
199
+ Then the features should all pass
200
+ And the output should contain:
201
+ """
202
+ $ export MY_VAR=my\ value\ \
203
+ """
204
+
205
+ Scenario: Announce file system status of command
206
+ This will output information like owner, group, atime, mtime, ctime, size,
207
+ mode and if command is executable.
208
+
209
+ Given an executable named "bin/cli" with:
210
+ """bash
211
+ #!/usr/bin/env bash
212
+
213
+ echo 'Hello World'
214
+ """
215
+ And a file named "features/exit_status.feature" with:
216
+ """cucumber
217
+ Feature: Announce
218
+ @announce-command-filesystem-status
219
+ Scenario: Run command
220
+ And I run `cli`
221
+ Then the exit status should be 0
222
+ """
223
+ When I run `cucumber`
224
+ Then the features should all pass
225
+ And the output should contain:
226
+ """
227
+ # mode => 755
228
+ """
229
+ And the output should contain:
230
+ """
231
+ # owner
232
+ """
233
+ And the output should contain:
234
+ """
235
+ # group
236
+ """
237
+ And the output should contain:
238
+ """
239
+ # ctime
240
+ """
241
+ And the output should contain:
242
+ """
243
+ # mtime
244
+ """
245
+ And the output should contain:
246
+ """
247
+ # atime
248
+ """
249
+ And the output should contain:
250
+ """
251
+ # size
252
+ """
253
+ And the output should contain:
254
+ """
255
+ # executable
256
+ """
257
+
258
+ Scenario: Announce content of command
259
+ This will output the content of the executable command. Be careful doing
260
+ this with binary executables. This hook should be used with scripts only.
261
+
262
+ Given an executable named "bin/cli" with:
263
+ """bash
264
+ #!/usr/bin/env bash
265
+
266
+ echo 'Hello World'
267
+ """
268
+ And a file named "features/exit_status.feature" with:
269
+ """cucumber
270
+ Feature: Announce
271
+ @announce-command-content
272
+ Scenario: Run command
273
+ And I run `cli`
274
+ Then the exit status should be 0
275
+ """
276
+ When I run `cucumber`
277
+ Then the features should all pass
278
+ And the output should contain:
279
+ """
280
+ #!/usr/bin/env bash
281
+
282
+ echo 'Hello World'
283
+ """