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,90 @@
1
+ Feature: Running an interactive command
2
+
3
+ In order to test interactive command line applications
4
+ As a developer using Cucumber
5
+ I want to use the interactive session steps
6
+
7
+ Background:
8
+ Given I use a fixture named "cli-app"
9
+
10
+ @wip-jruby-java-1.6
11
+ Scenario: Running ruby interactively
12
+ Given an executable named "bin/cli" with:
13
+ """bash
14
+ #!/usr/bin/env ruby
15
+
16
+ while res = gets.chomp
17
+ break if res == "quit"
18
+ puts res.reverse
19
+ end
20
+ """
21
+ And a file named "features/interactive.feature" with:
22
+ """cucumber
23
+ Feature: Run command
24
+ Scenario: Run command
25
+ When I run `cli` interactively
26
+ And I type "hello, world"
27
+ And I type "quit"
28
+ Then it should pass with "dlrow ,olleh"
29
+ """
30
+ When I run `cucumber`
31
+ Then the features should all pass
32
+
33
+ @posix
34
+ Scenario: Running a native binary interactively
35
+ Given a file named "features/interactive.feature" with:
36
+ """cucumber
37
+ Feature: Run command
38
+ Scenario: Run command
39
+ When I run `cat` interactively
40
+ And I type "Hello, world"
41
+ And I type ""
42
+ Then the output should contain "Hello, world"
43
+ """
44
+ When I run `cucumber`
45
+ Then the features should all pass
46
+
47
+ @posix
48
+ Scenario: Pipe in a file
49
+ Given a file named "features/interactive.feature" with:
50
+ """cucumber
51
+ Feature: Run command
52
+ Scenario: Run command
53
+ Given a file named "test.txt" with "line1\nline2"
54
+ When I run `cat` interactively
55
+ And I pipe in the file "test.txt"
56
+ Then the output should contain "line1\nline2"
57
+ """
58
+ When I run `cucumber`
59
+ Then the features should all pass
60
+
61
+ @posix
62
+ Scenario: Close stdin stream
63
+ Given a file named "features/interactive.feature" with:
64
+ """cucumber
65
+ Feature: Run command
66
+ Scenario: Run command
67
+ When I run `cat` interactively
68
+ And I type "Hello, world"
69
+ And I close the stdin stream
70
+ Then the output should contain "Hello, world"
71
+ """
72
+ When I run `cucumber`
73
+ Then the features should all pass
74
+
75
+ @posix
76
+ Scenario: All processes are stopped before checking for filesystem changes
77
+
78
+ See: http://github.com/aslakhellesoy/aruba/issues#issue/17 for context
79
+
80
+ Given a file named "features/interactive.feature" with:
81
+ """cucumber
82
+ Feature: Run command
83
+ Scenario: Run command
84
+ Given a directory named "rename_me"
85
+ When I run `mv rename_me renamed` interactively
86
+ Then the directory "renamed" should exist
87
+ And the directory "rename_me" should not exist
88
+ """
89
+ When I run `cucumber`
90
+ Then the features should all pass
@@ -0,0 +1,588 @@
1
+ Feature: All output 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 output should contain" step
6
+
7
+ Background:
8
+ Given I use a fixture named "cli-app"
9
+
10
+ Scenario: Detect subset of one-line output
11
+ Given an executable named "bin/cli" with:
12
+ """bash
13
+ #!/usr/bin/env bash
14
+
15
+ echo 'hello world'
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 output should contain "hello world"
23
+ """
24
+ When I run `cucumber`
25
+ Then the features should all pass
26
+
27
+ Scenario: Detect absence of one-line output
28
+ Given an executable named "bin/cli" with:
29
+ """bash
30
+ #!/usr/bin/env bash
31
+
32
+ echo 'hello world'
33
+ """
34
+ And a file named "features/output.feature" with:
35
+ """cucumber
36
+ Feature: Run command
37
+ Scenario: Run command
38
+ When I run `cli`
39
+ Then the output should not contain "good-bye"
40
+ """
41
+ When I run `cucumber`
42
+ Then the features should all pass
43
+
44
+ Scenario: Detect subset of multiline output
45
+ Given an executable named "bin/cli" with:
46
+ """bash
47
+ #!/usr/bin/env bash
48
+
49
+ echo -e "hello\nworld"
50
+ """
51
+ And a file named "features/output.feature" with:
52
+ """cucumber
53
+ Feature: Run command
54
+ Scenario: Run command
55
+ When I run `cli`
56
+ Then the output should contain:
57
+ \"\"\"
58
+ hello
59
+ \"\"\"
60
+ """
61
+ When I run `cucumber`
62
+ Then the features should all pass
63
+
64
+ Scenario: Detect absence of subset of multiline output
65
+ Given an executable named "bin/cli" with:
66
+ """bash
67
+ #!/usr/bin/env bash
68
+
69
+ echo -e "hello\nworld"
70
+ """
71
+ And a file named "features/output.feature" with:
72
+ """cucumber
73
+ Feature: Run command
74
+ Scenario: Run command
75
+ When I run `cli`
76
+ Then the output should not contain:
77
+ \"\"\"
78
+ good-bye
79
+ \"\"\"
80
+ """
81
+ When I run `cucumber`
82
+ Then the features should all pass
83
+
84
+ @posix
85
+ Scenario: Detect exact one-line output for posix commands
86
+ Given a file named "features/output.feature" with:
87
+ """cucumber
88
+ Feature: Run command
89
+ Scenario: Run command
90
+ When I run `printf 'hello world'`
91
+ Then the output should contain exactly:
92
+ \"\"\"
93
+ hello world
94
+ \"\"\"
95
+ """
96
+ When I run `cucumber`
97
+ Then the features should all pass
98
+
99
+ Scenario: Detect exact one-line output for ruby commands
100
+ Given an executable named "bin/cli" with:
101
+ """ruby
102
+ #!/usr/bin/env ruby
103
+
104
+ print "hello world"
105
+ """
106
+ And a file named "features/output.feature" with:
107
+ """cucumber
108
+ Feature: Run command
109
+ Scenario: Run command
110
+ When I run `cli`
111
+ Then the output should contain exactly:
112
+ \"\"\"
113
+ hello world
114
+ \"\"\"
115
+ """
116
+ When I run `cucumber`
117
+ Then the features should all pass
118
+
119
+ Scenario: Detect exact one-line output with ANSI output
120
+ Given an executable named "bin/cli" with:
121
+ """bash
122
+ #!/usr/bin/env bash
123
+
124
+ echo -e "\e[36mhello world\e[0m"
125
+ """
126
+ And a file named "features/output.feature" with:
127
+ """cucumber
128
+ Feature: Run command
129
+ @keep-ansi-escape-sequences
130
+ Scenario: Run command
131
+ When I run `cli`
132
+ Then the output should contain exactly:
133
+ \"\"\"
134
+ \e[36mhello world\e[0m
135
+ \"\"\"
136
+ """
137
+ When I run `cucumber`
138
+ Then the features should all pass
139
+
140
+ Scenario: Detect exact one-line output with ANSI output stripped by default
141
+ Given the default aruba exit timeout is 12 seconds
142
+ Given an executable named "bin/cli" with:
143
+ """bash
144
+ #!/usr/bin/env bash
145
+
146
+ echo -e "\e[36mhello world\e[0m"
147
+ """
148
+ And a file named "features/output.feature" with:
149
+ """cucumber
150
+ Feature: Run command
151
+ Scenario: Run command
152
+ When I run `cli`
153
+ Then the output should contain exactly:
154
+ \"\"\"
155
+ hello world
156
+ \"\"\"
157
+ """
158
+ When I run `cucumber`
159
+ Then the features should all pass
160
+
161
+ Scenario: Detect exact multiline output
162
+ Given an executable named "bin/cli" with:
163
+ """bash
164
+ #!/usr/bin/env bash
165
+
166
+ echo -ne "hello\nworld"
167
+ """
168
+ And a file named "features/output.feature" with:
169
+ """cucumber
170
+ Feature: Run command
171
+ Scenario: Run command
172
+ When I run `cli`
173
+ Then the output should contain exactly:
174
+ \"\"\"
175
+ hello
176
+ world
177
+ \"\"\"
178
+ """
179
+ When I run `cucumber`
180
+ Then the features should all pass
181
+
182
+ Scenario: Detect subset of one-line output
183
+ Given an executable named "bin/cli" with:
184
+ """bash
185
+ #!/usr/bin/env bash
186
+
187
+ echo 'hello world'
188
+ """
189
+ And a file named "features/output.feature" with:
190
+ """cucumber
191
+ Feature: Run command
192
+ Scenario: Run command
193
+ When I run `cli`
194
+ Then the output should contain "hello world"
195
+ """
196
+ When I run `cucumber`
197
+ Then the features should all pass
198
+
199
+ Scenario: Detect subset of one-line output with regex
200
+ Given an executable named "bin/cli" with:
201
+ """bash
202
+ #!/usr/bin/env bash
203
+
204
+ echo 'hello, ruby'
205
+ """
206
+ And a file named "features/output.feature" with:
207
+ """cucumber
208
+ Feature: Run command
209
+ Scenario: Run command
210
+ When I run `cli`
211
+ Then the output should match /^hello(, world)?/
212
+ """
213
+ When I run `cucumber`
214
+ Then the features should all pass
215
+
216
+ Scenario: Detect subset of multiline output with regex
217
+ Given an executable named "bin/cli" with:
218
+ """bash
219
+ #!/usr/bin/env bash
220
+
221
+ echo -e "hello\nworld\nextra line1\nextra line2\nimportant line"
222
+ """
223
+ And a file named "features/output.feature" with:
224
+ """cucumber
225
+ Feature: Run command
226
+ Scenario: Run command
227
+ When I run `cli`
228
+ Then the output should match:
229
+ \"\"\"
230
+ he..o
231
+ wor.d
232
+ .*
233
+ important line
234
+ \"\"\"
235
+ """
236
+ When I run `cucumber`
237
+ Then the features should all pass
238
+
239
+ Scenario: Negative matching of one-line output with regex
240
+ Given an executable named "bin/cli" with:
241
+ """bash
242
+ #!/usr/bin/env bash
243
+
244
+ echo "hello, ruby"
245
+ """
246
+ And a file named "features/output.feature" with:
247
+ """cucumber
248
+ Feature: Run command
249
+ Scenario: Run command
250
+ When I run `cli`
251
+ Then the output should not match /ruby is a better perl$/
252
+ """
253
+ When I run `cucumber`
254
+ Then the features should all pass
255
+
256
+ Scenario: Negative matching of multiline output with regex
257
+ Given an executable named "bin/cli" with:
258
+ """bash
259
+ #!/usr/bin/env bash
260
+
261
+ echo -e "hello\nworld\nextra line1\nextra line2\nimportant line"
262
+ """
263
+ And a file named "features/output.feature" with:
264
+ """cucumber
265
+ Feature: Run command
266
+ Scenario: Run command
267
+ When I run `cli`
268
+ Then the output should not match:
269
+ \"\"\"
270
+ ruby
271
+ is
272
+ a
273
+ .*
274
+ perl
275
+ \"\"\"
276
+ """
277
+ When I run `cucumber`
278
+ Then the features should all pass
279
+
280
+ Scenario: Match passing exit status and partial output
281
+ Given an executable named "bin/cli" with:
282
+ """bash
283
+ #!/usr/bin/env bash
284
+
285
+ echo "hello world"
286
+ exit 0
287
+ """
288
+ And a file named "features/output.feature" with:
289
+ """cucumber
290
+ Feature: Run command
291
+ Scenario: Run command
292
+ When I run `cli`
293
+ Then it should pass with:
294
+ \"\"\"
295
+ hello
296
+ \"\"\"
297
+ """
298
+ When I run `cucumber`
299
+ Then the features should all pass
300
+
301
+ Scenario: Match passing exit status and exact output
302
+ Given an executable named "bin/cli" with:
303
+ """bash
304
+ #!/usr/bin/env bash
305
+
306
+ echo -ne "hello\nworld"
307
+ exit 0
308
+ """
309
+ And a file named "features/output.feature" with:
310
+ """cucumber
311
+ Feature: Run command
312
+ Scenario: Run command
313
+ When I run `cli`
314
+ Then it should pass with exactly:
315
+ \"\"\"
316
+ hello
317
+ world
318
+ \"\"\"
319
+ """
320
+ When I run `cucumber`
321
+ Then the features should all pass
322
+
323
+ Scenario: Match failing exit status and partial output
324
+ Given an executable named "bin/cli" with:
325
+ """bash
326
+ #!/usr/bin/env bash
327
+
328
+ echo -e "hello\nworld"
329
+ exit 1
330
+ """
331
+ And a file named "features/output.feature" with:
332
+ """cucumber
333
+ Feature: Run command
334
+ Scenario: Run command
335
+ When I run `cli`
336
+ Then it should fail with:
337
+ \"\"\"
338
+ hello
339
+ \"\"\"
340
+ """
341
+ When I run `cucumber`
342
+ Then the features should all pass
343
+
344
+
345
+ Scenario: Match failing exit status and exact output
346
+ Given an executable named "bin/cli" with:
347
+ """bash
348
+ #!/usr/bin/env bash
349
+
350
+ echo -e "hello\nworld"
351
+ exit 1
352
+ """
353
+ And a file named "features/output.feature" with:
354
+ """cucumber
355
+ Feature: Run command
356
+ Scenario: Run command
357
+ When I run `cli`
358
+ Then it should fail with:
359
+ \"\"\"
360
+ hello
361
+ world
362
+ \"\"\"
363
+ """
364
+ When I run `cucumber`
365
+ Then the features should all pass
366
+
367
+ Scenario: Match failing exit status and output with regex
368
+ Given an executable named "bin/cli" with:
369
+ """bash
370
+ #!/usr/bin/env bash
371
+
372
+ echo -e "hello\nworld"
373
+ exit 1
374
+ """
375
+ And a file named "features/output.feature" with:
376
+ """cucumber
377
+ Feature: Run command
378
+ Scenario: Run command
379
+ When I run `cli`
380
+ Then it should fail with regex:
381
+ \"\"\"
382
+ hello\s*world
383
+ \"\"\"
384
+ """
385
+ When I run `cucumber`
386
+ Then the features should all pass
387
+
388
+ @requires-aruba-version-1
389
+ Scenario: Detect output from all processes
390
+ Given an executable named "bin/cli1" with:
391
+ """bash
392
+ #!/usr/bin/env bash
393
+
394
+ echo 'This is cli1'
395
+ """
396
+ And an executable named "bin/cli2" with:
397
+ """bash
398
+ #!/usr/bin/env bash
399
+
400
+ echo 'This is cli2'
401
+ """
402
+ And a file named "features/output.feature" with:
403
+ """cucumber
404
+ Feature: Run command
405
+ Scenario: Run command
406
+ When I run `cli1`
407
+ When I run `cli2`
408
+ Then the stdout should contain exactly:
409
+ \"\"\"
410
+ This is cli1
411
+ \"\"\"
412
+ And the stdout should contain exactly:
413
+ \"\"\"
414
+ This is cli2
415
+ \"\"\"
416
+ """
417
+ When I run `cucumber`
418
+ Then the features should all pass
419
+
420
+ Scenario: Detect output from all processes (deprecated)
421
+ Given an executable named "bin/cli1" with:
422
+ """bash
423
+ #!/usr/bin/env bash
424
+
425
+ echo 'This is cli1'
426
+ """
427
+ And an executable named "bin/cli2" with:
428
+ """bash
429
+ #!/usr/bin/env bash
430
+
431
+ echo 'This is cli2'
432
+ """
433
+ And a file named "features/output.feature" with:
434
+ """cucumber
435
+ Feature: Run command
436
+ Scenario: Run command
437
+ When I run `cli1`
438
+ When I run `cli2`
439
+ Then the stdout should contain exactly:
440
+ \"\"\"
441
+ This is cli1
442
+ This is cli2
443
+ \"\"\"
444
+ """
445
+ When I run `cucumber`
446
+ Then the features should all pass
447
+
448
+ Scenario: Handle little output
449
+ Given an executable named "bin/cli" with:
450
+ """bash
451
+ #!/usr/bin/env bash
452
+
453
+ for ((c=0; c<256; c = c+1)); do
454
+ echo -n "a"
455
+ done
456
+ """
457
+ And a file named "features/flushing.feature" with:
458
+ """cucumber
459
+ Feature: Flushing output
460
+ Scenario: Run command
461
+ When I run `cli`
462
+ Then the output should contain "a"
463
+ And the output should be 256 bytes long
464
+ And the exit status should be 0
465
+ """
466
+ When I run `cucumber`
467
+ Then the features should all pass
468
+
469
+ Scenario: Handle tons of output
470
+
471
+ In order to test processes that output a lot of data
472
+ As a developer using Aruba
473
+ I want to make sure that large amounts of output aren't buffered
474
+
475
+ Given the default aruba exit timeout is 10 seconds
476
+ And an executable named "bin/cli" with:
477
+ """bash
478
+ #!/usr/bin/env bash
479
+
480
+ for ((c=0; c<65536; c = c+1)); do
481
+ echo -n "a"
482
+ done
483
+ """
484
+ And a file named "features/flushing.feature" with:
485
+ """cucumber
486
+ Feature: Flushing output
487
+ Scenario: Run command
488
+ When I run `cli`
489
+ Then the output should contain "a"
490
+ And the output should be 65536 bytes long
491
+ And the exit status should be 0
492
+ """
493
+ When I run `cucumber`
494
+ Then the features should all pass
495
+
496
+ Scenario: Handle tons of interactive output
497
+ Given the default aruba exit timeout is 10 seconds
498
+ And an executable named "bin/cli" with:
499
+ """bash
500
+ #!/usr/bin/env bash
501
+
502
+ read size; for ((c=0; c<$size; c = c+1)); do
503
+ echo -n "a"
504
+ done
505
+ """
506
+ And a file named "features/flushing.feature" with:
507
+ """cucumber
508
+ Feature: Flushing output
509
+ Scenario: Run command
510
+ When I run `cli` interactively
511
+ And I type "65536"
512
+ Then the output should contain "a"
513
+ And the output should be 65536 bytes long
514
+ And the exit status should be 0
515
+ """
516
+ When I run `cucumber`
517
+ Then the features should all pass
518
+
519
+ @requires-aruba-version-1
520
+ Scenario: Detect output from all processes normal and interactive ones
521
+ Given an executable named "bin/cli1" with:
522
+ """
523
+ #!/usr/bin/env bash
524
+ echo 'This is cli1'
525
+ """
526
+ And an executable named "bin/cli2" with:
527
+ """
528
+ #!/usr/bin/env ruby
529
+
530
+ while input = gets do
531
+ break if "" == input
532
+ puts input
533
+ end
534
+ """
535
+ And a file named "features/output.feature" with:
536
+ """
537
+ Feature: Run command
538
+ Scenario: Run command
539
+ When I run `cli1`
540
+ When I run `cli2` interactively
541
+ And I type "This is cli2"
542
+ And I type ""
543
+ Then the stdout should contain exactly:
544
+ \"\"\"
545
+ This is cli1
546
+ \"\"\"
547
+ And the stdout should contain exactly:
548
+ \"\"\"
549
+ This is cli2
550
+ \"\"\"
551
+ """
552
+ When I run `cucumber`
553
+ Then the features should all pass
554
+
555
+ Scenario: Detect output from named source
556
+ Given a file named "features/output.feature" with:
557
+ """
558
+ Feature: Run command
559
+ Scenario: Run command
560
+ When I run `printf 'simple'`
561
+ And I run `cat` interactively
562
+ And I type "interactive"
563
+ And I type ""
564
+ Then the output from "printf 'simple'" should contain "simple"
565
+ And the output from "printf 'simple'" should contain exactly "simple"
566
+ And the output from "printf 'simple'" should contain exactly:
567
+ \"\"\"
568
+ simple
569
+ \"\"\"
570
+ And the output from "cat" should not contain "simple"
571
+ """
572
+ When I run `cucumber`
573
+ Then the features should all pass
574
+
575
+ Scenario: Detect second output from named source with custom name
576
+ Given a file named "features/output.feature" with:
577
+ """
578
+ Feature: Run command
579
+ Scenario: Run command
580
+ When I set the environment variable "ARUBA_TEST_VAR" to "first"
581
+ And I run `bash -c 'printf $ARUBA_TEST_VAR'`
582
+ Then the output from "bash -c 'printf $ARUBA_TEST_VAR'" should contain "first"
583
+ When I set the environment variable "ARUBA_TEST_VAR" to "second"
584
+ And I run `bash -c 'printf $ARUBA_TEST_VAR'`
585
+ Then the output from "bash -c 'printf $ARUBA_TEST_VAR'" should contain "second"
586
+ """
587
+ When I run `cucumber`
588
+ Then the features should all pass