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,66 @@
1
+ Feature: Run commands
2
+
3
+ There are several steps to run commands with `aruba`.
4
+
5
+ Background:
6
+ Given I use a fixture named "cli-app"
7
+
8
+ Scenario: Run command found in path
9
+ Given an executable named "bin/cli" with:
10
+ """
11
+ #!/bin/bash
12
+ exit 0
13
+ """
14
+ And a file named "features/run.feature" with:
15
+ """
16
+ Feature: Run it
17
+ Scenario: Run command
18
+ When I run `cli`
19
+ """
20
+ When I run `cucumber`
21
+ Then the features should all pass
22
+
23
+ Scenario: Activate desired announcers when running command fails
24
+ Given an executable named "bin/cli" with:
25
+ """
26
+ #!/bin/bash
27
+ echo "Hello, I'm STDOUT"
28
+ exit 1
29
+ """
30
+ And a file named "features/run.feature" with:
31
+ """
32
+ Feature: Run it
33
+ Scenario: Run command
34
+ When I successfully run `cli`
35
+ """
36
+ And I append to "features/support/env.rb" with:
37
+ """
38
+ Before do
39
+ aruba.config.activate_announcer_on_command_failure = [:stdout]
40
+ end
41
+ """
42
+ When I run `cucumber`
43
+ Then the features should not pass
44
+ And the output should contain:
45
+ """
46
+ <<-STDOUT
47
+ Hello, I'm STDOUT
48
+
49
+ STDOUT
50
+ """
51
+
52
+ Scenario: Run command found in "bin"-directory which is found in the current directory
53
+ Given a file named "features/run.feature" with:
54
+ """
55
+ Feature: Run it
56
+ Scenario: Run command
57
+ Given an executable named "bin/local_cli" with:
58
+ \"\"\"
59
+ #!/bin/bash
60
+ exit 0
61
+ \"\"\"
62
+ And I look for executables in "bin" within the current directory
63
+ When I successfully run `local_cli`
64
+ """
65
+ When I run `cucumber`
66
+ Then the features should all pass
@@ -0,0 +1,104 @@
1
+ Feature: Send a signal to command
2
+
3
+ You can send a command a signal with the following steps:
4
+
5
+ - `When I send the signal "HUP" to the command started last`
6
+ - `When I send the signal "HUP" to the command "bin/cli"`
7
+
8
+ Or just use `kill` on compatible platforms.
9
+
10
+ Background:
11
+ Given I use a fixture named "cli-app"
12
+
13
+ Scenario: Sending signal to the command started last
14
+ Given an executable named "bin/cli" with:
15
+ """bash
16
+ #!/usr/bin/env bash
17
+ function hup {
18
+ echo "Got signal HUP."
19
+ exit 0
20
+ }
21
+
22
+ trap hup HUP
23
+ while [ true ]; do sleep 1; done
24
+ """
25
+ And a file named "features/run.feature" with:
26
+ """
27
+ Feature: Run it
28
+ Scenario: Run command
29
+ Given the default aruba exit timeout is 5 seconds
30
+ And I wait 5 seconds for a command to start up
31
+ When I run `cli` in background
32
+ And I send the signal "HUP" to the command started last
33
+ Then the exit status should be 0
34
+ And the output should contain:
35
+ \"\"\"
36
+ Got signal HUP.
37
+ \"\"\"
38
+ """
39
+ When I run `cucumber`
40
+ Then the features should all pass
41
+
42
+ Scenario: Sending signal to a command given by command line
43
+ Given an executable named "bin/cli" with:
44
+ """bash
45
+ #!/usr/bin/env bash
46
+ function hup {
47
+ echo "Got signal HUP."
48
+ exit 0
49
+ }
50
+
51
+ trap hup HUP
52
+ while [ true ]; do sleep 1; done
53
+ """
54
+ And a file named "features/run.feature" with:
55
+ """
56
+ Feature: Run it
57
+ Scenario: Run command
58
+ Given the default aruba exit timeout is 5 seconds
59
+ And I wait 5 seconds for a command to start up
60
+ When I run `cli` in background
61
+ And I send the signal "HUP" to the command "cli"
62
+ Then the exit status should be 0
63
+ And the output should contain:
64
+ \"\"\"
65
+ Got signal HUP.
66
+ \"\"\"
67
+ """
68
+ When I run `cucumber`
69
+ Then the features should all pass
70
+
71
+ @unsupported-on-platform-windows
72
+ @experimental
73
+ Scenario: Using the "kill"-command
74
+
75
+ `<pid-last-command-started>` in your command line will be replaced by the
76
+ PID of the last command started. Please note, this feature is experimental.
77
+ The name of the variable may change without further notice.
78
+
79
+ Given an executable named "bin/cli" with:
80
+ """bash
81
+ #!/usr/bin/env bash
82
+ function hup {
83
+ echo "Got signal HUP."
84
+ exit 0
85
+ }
86
+
87
+ trap hup HUP
88
+ while [ true ]; do sleep 1; done
89
+ """
90
+ And a file named "features/run.feature" with:
91
+ """
92
+ Feature: Run it
93
+ Scenario: Run command
94
+ Given the default aruba exit timeout is 5 seconds
95
+ And I wait 5 seconds for a command to start up
96
+ When I run `cli` in background
97
+ And I run `kill -HUP <pid-last-command-started>`
98
+ Then the output should contain:
99
+ \"\"\"
100
+ Got signal HUP.
101
+ \"\"\"
102
+ """
103
+ When I run `cucumber`
104
+ Then the features should all pass
@@ -0,0 +1,155 @@
1
+ Feature: Running shell commands
2
+
3
+ You can run an *ad hoc* script with the following steps:
4
+ - `When I run the following script:`
5
+
6
+ Or you can run shell commands with:
7
+ - `I run the following (bash|zsh|...shell)? commands`
8
+ - `I run the following (bash|zsh|...shell)? commands (in|with) \`interpreter\``
9
+ - `I run the following (bash|zsh|...shell)? commands (in|with) \`/path/to/interpreter\``
10
+
11
+ Background:
12
+ Given I use a fixture named "cli-app"
13
+
14
+ Scenario: Creating and running scripts
15
+ Given a file named "features/shell.feature" with:
16
+ """
17
+ Feature: Running scripts
18
+ Scenario: Running ruby script
19
+ When I run the following script:
20
+ \"\"\"bash
21
+ #!/usr/bin/env ruby
22
+
23
+ puts "Hello"
24
+ \"\"\"
25
+ Then the output should contain exactly "Hello"
26
+
27
+ Scenario: Running python script
28
+ When I run the following script:
29
+ \"\"\"bash
30
+ #!/usr/bin/env python
31
+
32
+ print("Hello")
33
+ \"\"\"
34
+ Then the output should contain exactly "Hello"
35
+ """
36
+ When I run `cucumber`
37
+ Then the features should all pass
38
+
39
+ Scenario: Running shell commands
40
+ Given a file named "features/shell.feature" with:
41
+ """
42
+ Feature: Running scripts
43
+ Scenario: Running shell commands
44
+ When I run the following commands:
45
+ \"\"\"bash
46
+ echo "Hello shell"
47
+ \"\"\"
48
+ Then the output should contain exactly "Hello shell"
49
+ """
50
+ When I run `cucumber`
51
+ Then the features should all pass
52
+
53
+ Scenario: Running bash commands
54
+ Given a file named "features/shell.feature" with:
55
+ """
56
+ Feature: Running scripts
57
+ Scenario: Running bash commands
58
+ When I run the following commands with `bash`:
59
+ \"\"\"bash
60
+ echo -n "Hello "
61
+ echo `echo bash` # subshell
62
+ \"\"\"
63
+ Then the output should contain exactly "Hello bash"
64
+ """
65
+ When I run `cucumber`
66
+ Then the features should all pass
67
+
68
+ Scenario: Running zsh commands
69
+ Given a file named "features/shell.feature" with:
70
+ """
71
+ Feature: Running zsh scripts
72
+ Scenario: Running zsh commands
73
+ When I run the following commands with `zsh`:
74
+ \"\"\"bash
75
+ echo "Hello \c"
76
+ echo $((2 + 2))
77
+ \"\"\"
78
+ Then the output should contain exactly "Hello 4"
79
+ """
80
+ When I run `cucumber`
81
+ Then the features should all pass
82
+
83
+ Scenario: Running ruby commands
84
+ Given a file named "features/shell.feature" with:
85
+ """
86
+ Feature: Running scripts
87
+ Scenario: Running ruby commands
88
+ When I run the following commands with `ruby`:
89
+ \"\"\"ruby
90
+ puts "Hello, Aruba!"
91
+ \"\"\"
92
+ Then the output should contain exactly "Hello, Aruba!"
93
+ """
94
+ When I run `cucumber`
95
+ Then the features should all pass
96
+
97
+ Scenario: Running python commands
98
+ Given a file named "features/shell.feature" with:
99
+ """
100
+ Feature: Running scripts
101
+ Scenario: Running ruby commands
102
+ When I run the following commands with `python`:
103
+ \"\"\"ruby
104
+ print("Hello, Aruba!")
105
+ \"\"\"
106
+ Then the output should contain exactly "Hello, Aruba!"
107
+ """
108
+ When I run `cucumber`
109
+ Then the features should all pass
110
+
111
+ Scenario: Running commands if full path to interpreter is given
112
+ Given a file named "features/shell.feature" with:
113
+ """
114
+ Feature: Running full path zsh
115
+ Scenario: Running zsh commands #1
116
+ When I run the following commands with `/bin/zsh`:
117
+ \"\"\"bash
118
+ echo "Hello \c"
119
+ echo $((6 - 2))
120
+ \"\"\"
121
+ Then the output should contain exactly "Hello 4"
122
+
123
+ Scenario: Running zsh commands #1
124
+ When I run the following commands in `/bin/zsh`:
125
+ \"\"\"bash
126
+ echo "Hello \c"
127
+ echo $((6 - 2))
128
+ \"\"\"
129
+ Then the output should contain exactly "Hello 4"
130
+ """
131
+ When I run `cucumber`
132
+ Then the features should all pass
133
+
134
+ Scenario: Running commands if only the name of interpreter is given
135
+ Given a file named "features/shell.feature" with:
136
+ """
137
+ Feature: Running full path zsh
138
+ Scenario: Running zsh commands #1
139
+ When I run the following commands with `zsh`:
140
+ \"\"\"bash
141
+ echo "Hello \c"
142
+ echo $((6 - 2))
143
+ \"\"\"
144
+ Then the output should contain exactly "Hello 4"
145
+
146
+ Scenario: Running zsh commands #2
147
+ When I run the following commands in `zsh`:
148
+ \"\"\"bash
149
+ echo "Hello \c"
150
+ echo $((6 - 2))
151
+ \"\"\"
152
+ Then the output should contain exactly "Hello 4"
153
+ """
154
+ When I run `cucumber`
155
+ Then the features should all pass
@@ -0,0 +1,68 @@
1
+ Feature: STDERR of commands which were executed
2
+
3
+ In order to specify expected output
4
+ As a developer using Cucumber
5
+ I want to use the "the stderr should contain" step
6
+
7
+ Background:
8
+ Given I use a fixture named "cli-app"
9
+
10
+ Scenario: Detect stderr from all processes
11
+ Given a file named "features/output.feature" with:
12
+ """
13
+ Feature: Run command
14
+ Scenario: Run command
15
+ When I run `bash -c 'printf "hello world!\n" >&2'`
16
+ And I run `bash -c 'cat >&2 '` interactively
17
+ And I type "hola"
18
+ And I type ""
19
+ Then the stderr should contain:
20
+ \"\"\"
21
+ hello world!
22
+ \"\"\"
23
+ And the stderr should contain:
24
+ \"\"\"
25
+ hola
26
+ \"\"\"
27
+ And the stdout should not contain anything
28
+ """
29
+ When I run `cucumber`
30
+ Then the features should all pass
31
+
32
+ Scenario: Detect stderr from all processes (deprecated)
33
+ Given a file named "features/output.feature" with:
34
+ """
35
+ Feature: Run command
36
+ Scenario: Run command
37
+ When I run `bash -c 'printf "hello world!\n" >&2'`
38
+ And I run `bash -c 'cat >&2 '` interactively
39
+ And I type "hola"
40
+ And I type ""
41
+ Then the stderr should contain:
42
+ \"\"\"
43
+ hello world!
44
+ hola
45
+ \"\"\"
46
+ And the stdout should not contain anything
47
+ """
48
+ When I run `cucumber`
49
+ Then the features should all pass
50
+
51
+ Scenario: Detect stderr from named source
52
+ Given a file named "features/output.feature" with:
53
+ """
54
+ Feature: Run command
55
+ Scenario: Run command
56
+ When I run `bash -c 'printf hello >&2'`
57
+ And I run `printf goodbye`
58
+ Then the stderr from "bash -c 'printf hello >&2'" should contain "hello"
59
+ And the stderr from "bash -c 'printf hello >&2'" should contain exactly "hello"
60
+ And the stderr from "bash -c 'printf hello >&2'" should contain exactly:
61
+ \"\"\"
62
+ hello
63
+ \"\"\"
64
+ And the stdout from "bash -c 'printf hello >&2'" should not contain "hello"
65
+ And the stderr from "printf goodbye" should not contain "hello"
66
+ """
67
+ When I run `cucumber`
68
+ Then the features should all pass
@@ -0,0 +1,109 @@
1
+ Feature: STDOUT of commands which were executed
2
+
3
+ In order to specify expected output
4
+ As a developer using Cucumber
5
+ I want to use the "the stdout should contain" step
6
+
7
+ Background:
8
+ Given I use a fixture named "cli-app"
9
+
10
+ Scenario: Match output in stdout
11
+ Given an executable named "bin/cli" with:
12
+ """bash
13
+ #!/usr/bin/env bash
14
+
15
+ echo -e "hello\nworld"
16
+ """
17
+ And a file named "features/output.feature" with:
18
+ """cucumber
19
+ Feature: Run command
20
+ Scenario: Run command
21
+ When I run `cli`
22
+ Then the stdout should contain "hello"
23
+ Then the stderr should not contain "hello"
24
+ """
25
+ When I run `cucumber`
26
+ Then the features should all pass
27
+
28
+ Scenario: Match stdout on several lines
29
+ Given an executable named "bin/cli" with:
30
+ """bash
31
+ #!/usr/bin/env bash
32
+
33
+ echo 'GET /'
34
+ """
35
+ And a file named "features/output.feature" with:
36
+ """cucumber
37
+ Feature: Run command
38
+ Scenario: Run command
39
+ When I run `cli`
40
+ Then the stdout should contain:
41
+ \"\"\"
42
+ GET /
43
+ \"\"\"
44
+ """
45
+ When I run `cucumber`
46
+ Then the features should all pass
47
+
48
+ Scenario: Match output on several lines where stdout contains quotes
49
+ Given an executable named "bin/cli" with:
50
+ """bash
51
+ #!/usr/bin/env bash
52
+
53
+ echo 'GET "/"'
54
+ """
55
+ And a file named "features/output.feature" with:
56
+ """cucumber
57
+ Feature: Run command
58
+ Scenario: Run command
59
+ When I run `cli`
60
+ Then the stdout should contain:
61
+ \"\"\"
62
+ GET "/"
63
+ \"\"\"
64
+ """
65
+ When I run `cucumber`
66
+ Then the features should all pass
67
+
68
+ Scenario: Detect stdout from all processes including interactive ones
69
+ Given a file named "features/output.feature" with:
70
+ """
71
+ Feature: Run command
72
+ Scenario: Run command
73
+ When I run `printf "hello world!\n"`
74
+ And I run `cat` interactively
75
+ And I type "hola"
76
+ And I type ""
77
+ Then the stdout should contain:
78
+ \"\"\"
79
+ hello world!
80
+ \"\"\"
81
+ And the stdout should contain:
82
+ \"\"\"
83
+ hola
84
+ \"\"\"
85
+ And the stderr should not contain anything
86
+ """
87
+ When I run `cucumber`
88
+ Then the features should all pass
89
+
90
+ Scenario: Detect stdout from named source
91
+ Given a file named "features/output.feature" with:
92
+ """
93
+ Feature: Run command
94
+ Scenario: Run command
95
+ When I run `printf 'hello'`
96
+ And I run `printf 'goodbye'`
97
+ Then the stdout from "printf 'hello'" should contain "hello"
98
+ And the stdout from "printf 'hello'" should contain exactly "hello"
99
+ And the stdout from "printf 'hello'" should contain exactly:
100
+ \"\"\"
101
+ hello
102
+ \"\"\"
103
+ And the stderr from "printf 'hello'" should not contain "hello"
104
+ And the stdout from "printf 'goodbye'" should not contain "hello"
105
+ """
106
+ When I run `cucumber`
107
+ Then the features should all pass
108
+
109
+