aruba 0.14.9 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (309) hide show
  1. checksums.yaml +4 -4
  2. data/.cucumberproignore +3 -0
  3. data/.github/ISSUE_TEMPLATE.md +48 -0
  4. data/.github/PULL_REQUEST_TEMPLATE.md +41 -0
  5. data/.gitignore +1 -0
  6. data/.rspec +1 -1
  7. data/.rubocop.yml +20 -179
  8. data/.rubocop_todo.yml +262 -0
  9. data/.simplecov +7 -5
  10. data/.travis.yml +54 -46
  11. data/.yardopts +3 -0
  12. data/CHANGELOG.md +613 -246
  13. data/CONTRIBUTING.md +247 -45
  14. data/Dockerfile +67 -0
  15. data/Gemfile +5 -96
  16. data/LICENSE +1 -1
  17. data/README.md +57 -180
  18. data/Rakefile +63 -32
  19. data/appveyor.yml +8 -11
  20. data/aruba.gemspec +47 -41
  21. data/bin/console +7 -0
  22. data/bin/test +9 -0
  23. data/cucumber.yml +4 -24
  24. data/doc/dependency_decisions.yml +42 -2
  25. data/docker-compose.yml +26 -0
  26. data/{bin → exe}/aruba +1 -1
  27. data/fixtures/cli-app/Rakefile +1 -1
  28. data/fixtures/cli-app/bin/aruba-test-cli +6 -0
  29. data/fixtures/cli-app/cli-app.gemspec +1 -2
  30. data/fixtures/cli-app/features/support/aruba.rb +1 -0
  31. data/fixtures/cli-app/features/support/env.rb +1 -1
  32. data/fixtures/cli-app/lib/cli/app/suppress_simple_cov_output.rb +3 -3
  33. data/fixtures/cli-app/lib/cli/app/version.rb +1 -1
  34. data/fixtures/cli-app/lib/cli/app.rb +1 -5
  35. data/fixtures/cli-app/spec/spec_helper.rb +4 -6
  36. data/fixtures/empty-app/Rakefile +1 -1
  37. data/fixtures/empty-app/cli-app.gemspec +1 -2
  38. data/fixtures/empty-app/lib/cli/app/version.rb +1 -1
  39. data/fixtures/empty-app/lib/cli/app.rb +0 -6
  40. data/fixtures/getting-started-app/Gemfile +1 -1
  41. data/lib/aruba/api/commands.rb +109 -143
  42. data/lib/aruba/api/core.rb +57 -43
  43. data/lib/aruba/api/environment.rb +16 -7
  44. data/lib/aruba/api/filesystem.rb +42 -29
  45. data/lib/aruba/api/text.rb +3 -9
  46. data/lib/aruba/api.rb +6 -11
  47. data/lib/aruba/aruba_path.rb +27 -89
  48. data/lib/aruba/basic_configuration.rb +4 -24
  49. data/lib/aruba/cli.rb +1 -1
  50. data/lib/aruba/colorizer.rb +10 -99
  51. data/lib/aruba/command.rb +2 -0
  52. data/lib/aruba/config/jruby.rb +15 -5
  53. data/lib/aruba/config_wrapper.rb +1 -1
  54. data/lib/aruba/configuration.rb +92 -0
  55. data/lib/aruba/console/help.rb +1 -7
  56. data/lib/aruba/console.rb +5 -5
  57. data/lib/aruba/contracts/absolute_path.rb +2 -2
  58. data/lib/aruba/contracts/relative_path.rb +2 -2
  59. data/lib/aruba/cucumber/command.rb +171 -160
  60. data/lib/aruba/cucumber/environment.rb +1 -1
  61. data/lib/aruba/cucumber/file.rb +21 -35
  62. data/lib/aruba/cucumber/hooks.rb +17 -56
  63. data/lib/aruba/cucumber/testing_frameworks.rb +74 -50
  64. data/lib/aruba/cucumber.rb +0 -5
  65. data/lib/aruba/event_bus/name_resolver.rb +5 -16
  66. data/lib/aruba/hooks.rb +1 -1
  67. data/lib/aruba/in_config_wrapper.rb +5 -1
  68. data/lib/aruba/initializer.rb +36 -42
  69. data/lib/aruba/matchers/base/base_matcher.rb +2 -2
  70. data/lib/aruba/matchers/base/message_indenter.rb +19 -0
  71. data/lib/aruba/matchers/base/object_formatter.rb +2 -9
  72. data/lib/aruba/matchers/collection/include_an_object.rb +7 -9
  73. data/lib/aruba/matchers/command/be_successfully_executed.rb +6 -4
  74. data/lib/aruba/matchers/command/have_exit_status.rb +14 -4
  75. data/lib/aruba/matchers/command/have_finished_in_time.rb +3 -5
  76. data/lib/aruba/matchers/command/have_output.rb +10 -5
  77. data/lib/aruba/matchers/command/have_output_on_stderr.rb +2 -2
  78. data/lib/aruba/matchers/command/have_output_on_stdout.rb +2 -2
  79. data/lib/aruba/matchers/command/have_output_size.rb +2 -2
  80. data/lib/aruba/matchers/directory/be_an_existing_directory.rb +5 -7
  81. data/lib/aruba/matchers/directory/have_sub_directory.rb +4 -6
  82. data/lib/aruba/matchers/file/be_a_command_found_in_path.rb +2 -4
  83. data/lib/aruba/matchers/file/be_an_existing_executable.rb +4 -6
  84. data/lib/aruba/matchers/file/be_an_existing_file.rb +5 -7
  85. data/lib/aruba/matchers/file/have_file_content.rb +4 -4
  86. data/lib/aruba/matchers/file/have_file_size.rb +6 -8
  87. data/lib/aruba/matchers/file/have_same_file_content.rb +5 -8
  88. data/lib/aruba/matchers/path/a_path_matching_pattern.rb +2 -4
  89. data/lib/aruba/matchers/path/be_an_absolute_path.rb +3 -5
  90. data/lib/aruba/matchers/path/be_an_existing_path.rb +4 -6
  91. data/lib/aruba/matchers/path/have_permissions.rb +6 -8
  92. data/lib/aruba/matchers/string/include_output_string.rb +8 -10
  93. data/lib/aruba/matchers/string/match_output_string.rb +9 -11
  94. data/lib/aruba/matchers/string/output_string_eq.rb +7 -9
  95. data/lib/aruba/platform.rb +0 -8
  96. data/lib/aruba/platforms/announcer.rb +42 -79
  97. data/lib/aruba/platforms/aruba_file_creator.rb +2 -6
  98. data/lib/aruba/platforms/aruba_fixed_size_file_creator.rb +2 -2
  99. data/lib/aruba/platforms/aruba_logger.rb +23 -7
  100. data/lib/aruba/platforms/command_monitor.rb +12 -107
  101. data/lib/aruba/platforms/determine_disk_usage.rb +56 -14
  102. data/lib/aruba/platforms/filesystem_status.rb +10 -14
  103. data/lib/aruba/platforms/local_environment.rb +2 -2
  104. data/lib/aruba/platforms/simple_table.rb +3 -11
  105. data/lib/aruba/platforms/unix_command_string.rb +7 -11
  106. data/lib/aruba/platforms/unix_environment_variables.rb +18 -27
  107. data/lib/aruba/platforms/unix_platform.rb +20 -51
  108. data/lib/aruba/platforms/unix_which.rb +2 -1
  109. data/lib/aruba/platforms/windows_command_string.rb +15 -10
  110. data/lib/aruba/platforms/windows_environment_variables.rb +43 -44
  111. data/lib/aruba/platforms/windows_platform.rb +4 -0
  112. data/lib/aruba/platforms/windows_which.rb +4 -3
  113. data/lib/aruba/processes/basic_process.rb +28 -30
  114. data/lib/aruba/processes/debug_process.rb +12 -3
  115. data/lib/aruba/processes/in_process.rb +17 -8
  116. data/lib/aruba/processes/spawn_process.rb +57 -46
  117. data/lib/aruba/rspec.rb +14 -36
  118. data/lib/aruba/runtime.rb +3 -6
  119. data/lib/aruba/setup.rb +6 -6
  120. data/lib/aruba/tasks/docker_helpers.rb +154 -0
  121. data/lib/aruba/version.rb +1 -1
  122. metadata +191 -244
  123. data/features/.nav +0 -72
  124. data/features/api/command/find_command.feature +0 -83
  125. data/features/api/command/last_command_started.feature +0 -50
  126. data/features/api/command/last_command_stopped.feature +0 -89
  127. data/features/api/command/run.feature +0 -414
  128. data/features/api/command/run_simple.feature +0 -242
  129. data/features/api/command/send_signal.feature +0 -53
  130. data/features/api/command/stderr.feature +0 -46
  131. data/features/api/command/stdout.feature +0 -46
  132. data/features/api/command/stop.feature +0 -131
  133. data/features/api/command/stop_all_commands.feature +0 -53
  134. data/features/api/command/terminate_all_commands.feature +0 -53
  135. data/features/api/command/which.feature +0 -37
  136. data/features/api/core/expand_path.feature +0 -88
  137. data/features/api/environment/append_environment_variable.feature +0 -128
  138. data/features/api/environment/delete_environment_variable.feature +0 -63
  139. data/features/api/environment/prepend_environment_variable.feature +0 -128
  140. data/features/api/environment/set_environment_variable.feature +0 -376
  141. data/features/api/filesystem/cd.feature +0 -184
  142. data/features/api/filesystem/create_directory.feature +0 -57
  143. data/features/api/filesystem/disk_usage.feature +0 -152
  144. data/features/api/filesystem/does_exist.feature +0 -62
  145. data/features/api/filesystem/fixtures.feature +0 -104
  146. data/features/api/filesystem/is_absolute.feature +0 -48
  147. data/features/api/filesystem/is_directory.feature +0 -53
  148. data/features/api/filesystem/is_file.feature +0 -54
  149. data/features/api/filesystem/is_relative.feature +0 -48
  150. data/features/api/filesystem/move.feature +0 -119
  151. data/features/api/text/extract_text.feature +0 -87
  152. data/features/api/text/replace_variables.feature +0 -45
  153. data/features/api/text/sanitize_text.feature +0 -228
  154. data/features/api/text/unescape_text.feature +0 -127
  155. data/features/cli/console.feature +0 -52
  156. data/features/cli/init.feature +0 -79
  157. data/features/configuration/activate_announcer_on_command_failure.feature +0 -38
  158. data/features/configuration/command_runtime_environment.feature +0 -129
  159. data/features/configuration/console_history_file.feature +0 -38
  160. data/features/configuration/exit_timeout.feature +0 -52
  161. data/features/configuration/fixtures_directories.feature +0 -38
  162. data/features/configuration/fixtures_path_prefix.feature +0 -23
  163. data/features/configuration/home_directory.feature +0 -80
  164. data/features/configuration/io_timeout.feature +0 -30
  165. data/features/configuration/keep_ansi.feature +0 -30
  166. data/features/configuration/log_level.feature +0 -38
  167. data/features/configuration/physical_block_size.feature +0 -53
  168. data/features/configuration/remove_ansi_escape_sequences.feature +0 -38
  169. data/features/configuration/root_directory.feature +0 -30
  170. data/features/configuration/startup_wait_time.feature +0 -48
  171. data/features/configuration/usage.feature +0 -159
  172. data/features/configuration/working_directory.feature +0 -33
  173. data/features/development/build.feature +0 -15
  174. data/features/getting_started/cleanup.feature +0 -58
  175. data/features/getting_started/run_commands.feature +0 -187
  176. data/features/getting_started/supported_testing_frameworks.feature +0 -104
  177. data/features/getting_started/writing_good_feature_tests.feature +0 -38
  178. data/features/hooks/after/command.feature +0 -46
  179. data/features/hooks/before/command.feature +0 -75
  180. data/features/matchers/collection/include_an_object.feature +0 -72
  181. data/features/matchers/directory/have_sub_directory.feature +0 -110
  182. data/features/matchers/file/be_a_command_found_in_path.feature +0 -115
  183. data/features/matchers/file/be_existing_executable.feature +0 -88
  184. data/features/matchers/file/be_existing_file.feature +0 -82
  185. data/features/matchers/file/have_file_content.feature +0 -123
  186. data/features/matchers/file/have_file_size.feature +0 -107
  187. data/features/matchers/path/be_an_absolute_path.feature +0 -74
  188. data/features/matchers/path/be_an_existing_path.feature +0 -97
  189. data/features/matchers/path/have_permissions.feature +0 -118
  190. data/features/matchers/timeouts.feature +0 -48
  191. data/features/platforms/jruby.feature +0 -14
  192. data/features/rspec/integration.feature +0 -179
  193. data/features/step_definitions/aruba_dev_steps.rb +0 -56
  194. data/features/step_definitions/hooks.rb +0 -156
  195. data/features/steps/command/debug.feature +0 -92
  196. data/features/steps/command/exit_statuses.feature +0 -136
  197. data/features/steps/command/in_process.feature +0 -485
  198. data/features/steps/command/interactive.feature +0 -90
  199. data/features/steps/command/output.feature +0 -567
  200. data/features/steps/command/run.feature +0 -66
  201. data/features/steps/command/send_signal.feature +0 -104
  202. data/features/steps/command/shell.feature +0 -155
  203. data/features/steps/command/stderr.feature +0 -68
  204. data/features/steps/command/stdout.feature +0 -109
  205. data/features/steps/command/stop.feature +0 -313
  206. data/features/steps/core/announce.feature +0 -283
  207. data/features/steps/environment/append_environment_variable.feature +0 -52
  208. data/features/steps/environment/disable_bunder.feature +0 -18
  209. data/features/steps/environment/home_variable.feature +0 -62
  210. data/features/steps/environment/prepend_environment_variable.feature +0 -52
  211. data/features/steps/environment/set_environment_variable.feature +0 -49
  212. data/features/steps/filesystem/append_to_file.feature +0 -45
  213. data/features/steps/filesystem/cd_to_directory.feature +0 -33
  214. data/features/steps/filesystem/check_file_content.feature +0 -61
  215. data/features/steps/filesystem/check_permissions_of_file.feature +0 -39
  216. data/features/steps/filesystem/compare_files.feature +0 -42
  217. data/features/steps/filesystem/copy.feature +0 -45
  218. data/features/steps/filesystem/create_directory.feature +0 -57
  219. data/features/steps/filesystem/create_file.feature +0 -76
  220. data/features/steps/filesystem/existence_of_directory.feature +0 -57
  221. data/features/steps/filesystem/existence_of_file.feature +0 -43
  222. data/features/steps/filesystem/file_content.feature +0 -86
  223. data/features/steps/filesystem/fixtures.feature +0 -64
  224. data/features/steps/filesystem/move.feature +0 -45
  225. data/features/steps/filesystem/non_existence_of_directory.feature +0 -69
  226. data/features/steps/filesystem/non_existence_of_file.feature +0 -80
  227. data/features/steps/filesystem/overwrite_file.feature +0 -72
  228. data/features/steps/filesystem/remove_directory.feature +0 -38
  229. data/features/steps/filesystem/remove_file.feature +0 -38
  230. data/features/steps/filesystem/use_fixture.feature +0 -77
  231. data/features/steps/overview.feature +0 -25
  232. data/features/support/aruba.rb +0 -7
  233. data/features/support/env.rb +0 -33
  234. data/features/support/jruby.rb +0 -5
  235. data/features/support/simplecov_setup.rb +0 -8
  236. data/fixtures/cli-app/bin/cli +0 -6
  237. data/fixtures/spawn_process/stderr.sh +0 -3
  238. data/lib/aruba/api/deprecated.rb +0 -1234
  239. data/lib/aruba/config.rb +0 -107
  240. data/lib/aruba/cucumber/core.rb +0 -5
  241. data/lib/aruba/cucumber/rvm.rb +0 -3
  242. data/lib/aruba/in_process.rb +0 -14
  243. data/lib/aruba/jruby.rb +0 -4
  244. data/lib/aruba/matchers/deprecated/file.rb +0 -17
  245. data/lib/aruba/matchers/deprecated.rb +0 -1
  246. data/lib/aruba/matchers/path/match_path_pattern.rb +0 -41
  247. data/lib/aruba/matchers/rspec_matcher_include_regexp.rb +0 -25
  248. data/lib/aruba/platforms/disk_usage_calculator.rb +0 -20
  249. data/lib/aruba/reporting.rb +0 -126
  250. data/lib/aruba/spawn_process.rb +0 -11
  251. data/script/bootstrap +0 -28
  252. data/script/console +0 -16
  253. data/script/test +0 -3
  254. data/spec/aruba/api/bundler_spec.rb +0 -15
  255. data/spec/aruba/api/deprecated_spec.rb +0 -308
  256. data/spec/aruba/api/environment/restore_env_spec.rb +0 -86
  257. data/spec/aruba/api/environment/set_env_spec.rb +0 -46
  258. data/spec/aruba/api/filesystem/file_size_spec.rb +0 -28
  259. data/spec/aruba/api/runtime_spec.rb +0 -28
  260. data/spec/aruba/api_spec.rb +0 -981
  261. data/spec/aruba/aruba_path_spec.rb +0 -103
  262. data/spec/aruba/basic_configuration_spec.rb +0 -5
  263. data/spec/aruba/configuration_spec.rb +0 -5
  264. data/spec/aruba/hooks_spec.rb +0 -17
  265. data/spec/aruba/in_config_wrapper_spec.rb +0 -25
  266. data/spec/aruba/jruby_spec.rb +0 -55
  267. data/spec/aruba/matchers/command/have_output_size_spec.rb +0 -25
  268. data/spec/aruba/matchers/command_spec.rb +0 -174
  269. data/spec/aruba/matchers/deprecated_spec.rb +0 -120
  270. data/spec/aruba/matchers/directory_spec.rb +0 -57
  271. data/spec/aruba/matchers/file_spec.rb +0 -208
  272. data/spec/aruba/matchers/path_spec.rb +0 -58
  273. data/spec/aruba/platform/simple_table_spec.rb +0 -23
  274. data/spec/aruba/platform/windows_environment_variables_spec.rb +0 -500
  275. data/spec/aruba/platforms/unix_command_string_spec.rb +0 -17
  276. data/spec/aruba/platforms/windows_command_string_spec.rb +0 -22
  277. data/spec/aruba/rspec_spec.rb +0 -15
  278. data/spec/aruba/runtime_spec.rb +0 -29
  279. data/spec/aruba/spawn_process_spec.rb +0 -96
  280. data/spec/event_bus/name_resolver_spec.rb +0 -68
  281. data/spec/event_bus_spec.rb +0 -158
  282. data/spec/spec_helper.rb +0 -20
  283. data/spec/support/configs/.keep +0 -0
  284. data/spec/support/configs/aruba.rb +0 -5
  285. data/spec/support/configs/pry.rb +0 -3
  286. data/spec/support/configs/rspec.rb +0 -15
  287. data/spec/support/helpers/.keep +0 -0
  288. data/spec/support/helpers/reporting.rb +0 -44
  289. data/spec/support/matchers/.keep +0 -0
  290. data/spec/support/matchers/option.rb +0 -35
  291. data/spec/support/shared_contexts/.keep +0 -0
  292. data/spec/support/shared_contexts/aruba.rb +0 -49
  293. data/spec/support/shared_examples/.keep +0 -0
  294. data/spec/support/shared_examples/configuration.rb +0 -116
  295. data/spec/support/shared_examples/directory.rb +0 -7
  296. data/spec/support/shared_examples/file.rb +0 -7
  297. data/templates/css/console.css +0 -24
  298. data/templates/css/filesystem.css +0 -42
  299. data/templates/css/pygments-autumn.css +0 -59
  300. data/templates/files.erb +0 -14
  301. data/templates/images/LICENSE +0 -22
  302. data/templates/images/folder.png +0 -0
  303. data/templates/images/page_white.png +0 -0
  304. data/templates/images/page_white_gherkin.png +0 -0
  305. data/templates/images/page_white_ruby.png +0 -0
  306. data/templates/index.erb +0 -20
  307. data/templates/js/filesystem.js +0 -5
  308. data/templates/js/jquery-1.11.3.min.js +0 -5
  309. data/templates/main.erb +0 -34
@@ -1,485 +0,0 @@
1
- Feature: Run commands in ruby process
2
- Running a lot of scenarios where each scenario uses Aruba
3
- to spawn a new ruby process can be time consuming.
4
-
5
- Aruba lets you plug in your own process class that can
6
- run a command in the same ruby process as Cucumber/Aruba.
7
-
8
- We expect that the command supports the following API. It needs to accept:
9
- argv, stdin, stdout, stderr and kernel on `#initialize` and it needs to have
10
- an `execute!`-method.
11
-
12
- ```ruby
13
- module Cli
14
- module App
15
- class Runner
16
- def initialize(argv, stdin, stdout, stderr, kernel)
17
- \@argv = argv
18
- \@stdin = stdin
19
- \@stdout = stdout
20
- \@stderr = stderr
21
- \@kernel = kernel
22
- end
23
-
24
- def execute!
25
- end
26
- end
27
- end
28
- end
29
- ```
30
-
31
- The switch to the working directory takes place around the `execute!`-method.
32
- If needed make sure, that you determine the current working directory within
33
- code called by the `execute!`-method or just use `Dir.getwd` during "runtime"
34
- and not during "loadtime", when the `ruby`-interpreter reads in you class
35
- files.
36
-
37
- *Pros*:
38
- * Very fast compared to spawning processes
39
- * You can use libraries like
40
- [simplecov](https://github.com/colszowka/simplecov) more easily, because
41
- there is only one "process" which adds data to `simplecov`'s database
42
-
43
- *Cons*:
44
- * You might oversee some bugs: You might forget to require libraries in your
45
- "production" code, because you have required them in your testing code
46
- * Using `:in_process` interactively is not supported
47
-
48
- **WARNING**: Using `:in_process` interactively is not supported
49
-
50
- Background:
51
- Given I use a fixture named "cli-app"
52
- And a file named "features/support/cli_app.rb" with:
53
- """
54
- require 'cli/app/runner'
55
- """
56
- And a file named "features/support/in_proccess.rb" with:
57
- """
58
- require 'aruba/cucumber'
59
-
60
- Before('@in-process') do
61
- aruba.config.command_launcher = :in_process
62
- aruba.config.main_class = Cli::App::Runner
63
- end
64
-
65
- After('@in-process') do
66
- aruba.config.command_launcher = :spawn
67
- end
68
- """
69
-
70
- Scenario: Run custom code
71
- Given a file named "lib/cli/app/runner.rb" with:
72
- """
73
- module Cli
74
- module App
75
- class Runner
76
- def initialize(argv, stdin, stdout, stderr, kernel)
77
- @argv = argv
78
- @stdin = stdin
79
- @stdout = stdout
80
- @stderr = stderr
81
- @kernel = kernel
82
- end
83
-
84
- def execute!
85
- @stdout.puts(@argv.map(&:reverse).join(' '))
86
- end
87
- end
88
- end
89
- end
90
- """
91
- And a file named "features/in_process.feature" with:
92
- """
93
- Feature: Run a command in process
94
- @in-process
95
- Scenario: Run command
96
- When I run `reverse.rb Hello World`
97
- Then the output should contain:
98
- \"\"\"
99
- olleH dlroW
100
- \"\"\"
101
- """
102
- When I run `cucumber`
103
- Then the features should all pass
104
-
105
- Scenario: Mixing custom code and normal cli
106
- Given an executable named "bin/cli" with:
107
- """
108
- #!/bin/bash
109
- echo $*
110
- """
111
- And a file named "lib/cli/app/runner.rb" with:
112
- """
113
- module Cli
114
- module App
115
- class Runner
116
- def initialize(argv, stdin, stdout, stderr, kernel)
117
- @argv = argv
118
- @stdin = stdin
119
- @stdout = stdout
120
- @stderr = stderr
121
- @kernel = kernel
122
- end
123
-
124
- def execute!
125
- @stdout.puts(@argv.map(&:reverse).join(' '))
126
- end
127
- end
128
- end
129
- end
130
- """
131
- And a file named "features/in_process.feature" with:
132
- """
133
- Feature: Run a command in process
134
- @in-process
135
- Scenario: Run command in process
136
- When I run `reverse.rb Hello World`
137
- Then the output should contain:
138
- \"\"\"
139
- olleH dlroW
140
- \"\"\"
141
-
142
- Scenario: Run command
143
- When I run `cli Hello World`
144
- Then the output should contain:
145
- \"\"\"
146
- Hello World
147
- \"\"\"
148
- """
149
- When I run `cucumber`
150
- Then the features should all pass
151
-
152
- Scenario: The current working directory is changed as well
153
- Given a file named "lib/cli/app/runner.rb" with:
154
- """
155
- module Cli
156
- module App
157
- class Runner
158
- def initialize(argv, stdin, stdout, stderr, kernel)
159
- @argv = argv
160
- @stdin = stdin
161
- @stdout = stdout
162
- @stderr = stderr
163
- @kernel = kernel
164
- end
165
-
166
- def execute!
167
- @stdout.puts("PWD-ENV is " + Dir.getwd)
168
- end
169
- end
170
- end
171
- end
172
- """
173
- And a file named "features/in_process.feature" with:
174
- """
175
- Feature: Run a command in process
176
- @in-process
177
- Scenario: Run command
178
- When I run `pwd.rb`
179
- Then the output should match %r<PWD-ENV.*tmp/aruba>
180
- """
181
- When I run `cucumber`
182
- Then the features should all pass
183
-
184
- Scenario: The PWD environment is changed to current working directory
185
- Given a file named "lib/cli/app/runner.rb" with:
186
- """
187
- module Cli
188
- module App
189
- class Runner
190
- def initialize(argv, stdin, stdout, stderr, kernel)
191
- @argv = argv
192
- @stdin = stdin
193
- @stdout = stdout
194
- @stderr = stderr
195
- @kernel = kernel
196
- end
197
-
198
- def execute!
199
- @stdout.puts("PWD-ENV is " + ENV['PWD'])
200
- end
201
- end
202
- end
203
- end
204
- """
205
- And a file named "features/in_process.feature" with:
206
- """
207
- Feature: Run a command in process
208
- @in-process
209
- Scenario: Run command
210
- When I run `pwd.rb`
211
- Then the output should match %r<PWD-ENV.*tmp/aruba>
212
- """
213
- When I run `cucumber`
214
- Then the features should all pass
215
-
216
- Scenario: Set runner via "Aruba.process ="-method (deprecated)
217
- Given a file named "features/support/in_proccess.rb" with:
218
- """
219
- require 'aruba/cucumber'
220
- require 'aruba/processes/in_process'
221
-
222
- Before('@in-process') do
223
- Aruba.process = Aruba::Processes::InProcess
224
- Aruba.process.main_class = Cli::App::Runner
225
- end
226
-
227
- After('@in-process') do
228
- Aruba.process = Aruba::Processes::SpawnProcess
229
- end
230
- """
231
- Given a file named "lib/cli/app/runner.rb" with:
232
- """
233
- module Cli
234
- module App
235
- class Runner
236
- def initialize(argv, stdin, stdout, stderr, kernel)
237
- @argv = argv
238
- @stdin = stdin
239
- @stdout = stdout
240
- @stderr = stderr
241
- @kernel = kernel
242
- end
243
-
244
- def execute!
245
- @stdout.puts(@argv.map(&:reverse).join(' '))
246
- end
247
- end
248
- end
249
- end
250
- """
251
- And a file named "features/in_process.feature" with:
252
- """
253
- Feature: Run a command in process
254
- @in-process
255
- Scenario: Run command
256
- When I run `reverse.rb Hello World`
257
- Then the output should contain:
258
- \"\"\"
259
- olleH dlroW
260
- \"\"\"
261
- """
262
- When I run `cucumber`
263
- Then the features should all pass
264
-
265
- Scenario: Set runner via "Aruba.process ="-method and use old class name Aruba::InProcess (deprecated)
266
- Given a file named "features/support/in_proccess.rb" with:
267
- """
268
- require 'aruba/cucumber'
269
- require 'aruba/in_process'
270
- require 'aruba/spawn_process'
271
-
272
- Before('@in-process') do
273
- Aruba.process = Aruba::InProcess
274
- Aruba.process.main_class = Cli::App::Runner
275
- end
276
-
277
- After('@in-process') do
278
- Aruba.process = Aruba::SpawnProcess
279
- end
280
- """
281
- Given a file named "lib/cli/app/runner.rb" with:
282
- """
283
- module Cli
284
- module App
285
- class Runner
286
- def initialize(argv, stdin, stdout, stderr, kernel)
287
- @argv = argv
288
- @stdin = stdin
289
- @stdout = stdout
290
- @stderr = stderr
291
- @kernel = kernel
292
- end
293
-
294
- def execute!
295
- @stdout.puts(@argv.map(&:reverse).join(' '))
296
- end
297
- end
298
- end
299
- end
300
- """
301
- And a file named "features/in_process.feature" with:
302
- """
303
- Feature: Run a command in process
304
- @in-process
305
- Scenario: Run command
306
- When I run `reverse.rb Hello World`
307
- Then the output should contain:
308
- \"\"\"
309
- olleH dlroW
310
- \"\"\"
311
- """
312
- When I run `cucumber`
313
- Then the features should all pass
314
-
315
- Scenario: Use $stderr, $stdout and $stdin to access IO
316
-
317
- May may need/want to use the default `STDERR`, `STDOUT`, `STDIN`-constants
318
- to access IO from within your script. Unfortunately this does not work with
319
- the `:in_process`-command launcher. You need to use `$stderr`, `$stdout`
320
- and `$stdin` instead.
321
-
322
- For this example I chose `thor` to parse ARGV. Its `.start`-method accepts
323
- an "Array" as ARGV and a "Hash" for some other options &ndash; `.start <ARGV>, <OPTIONS>`
324
-
325
- Given a file named "lib/cli/app/runner.rb" with:
326
- """
327
- require 'cli/app/cli_parser'
328
-
329
- module Cli
330
- module App
331
- class Runner
332
- def initialize(argv, stdin, stdout, stderr, kernel)
333
- @argv = argv
334
- $kernel = kernel
335
- $stdin = stdin
336
- $stdout = stdout
337
- $stderr = stderr
338
- end
339
-
340
- def execute!
341
- Cli::App::CliParser.start @argv
342
- end
343
- end
344
- end
345
- end
346
- """
347
- And a file named "lib/cli/app/cli_parser.rb" with:
348
- """
349
- require 'thor'
350
-
351
- module Cli
352
- module App
353
- class CliParser < Thor
354
- def self.exit_on_failure?
355
- true
356
- end
357
-
358
- desc 'do_it', 'Reverse input'
359
- def do_it(*args)
360
- $stderr.puts 'Hey ya, Hey ya, check, check, check'
361
- $stdout.puts(args.flatten.map(&:reverse).join(' '))
362
- end
363
- end
364
- end
365
- end
366
- """
367
- And a file named "features/in_process.feature" with:
368
- """
369
- Feature: Run a command in process
370
- @in-process
371
- Scenario: Run command
372
- When I run `reverse.rb do_it Hello World`
373
- Then the stdout should contain:
374
- \"\"\"
375
- olleH dlroW
376
- \"\"\"
377
- And the stderr should contain:
378
- \"\"\"
379
- Hey ya, Hey ya, check, check, check
380
- \"\"\"
381
- """
382
- When I run `cucumber`
383
- Then the features should all pass
384
-
385
- Scenario: Use $kernel to use Kernel to capture exit code
386
-
387
- Ruby's `Kernel`-module provides some helper methods like `exit`.
388
- Unfortunately running `#exit` with `:in_process` would make the whole ruby
389
- interpreter exit. So you might want to use our `FakeKernel`-module module
390
- instead which overwrites `#exit`. This will also make our tests for
391
- checking the exit code work. This example also uses the `thor`-library.
392
-
393
- Given a file named "lib/cli/app/runner.rb" with:
394
- """
395
- require 'cli/app/cli_parser'
396
-
397
- module Cli
398
- module App
399
- class Runner
400
- def initialize(argv, stdin, stdout, stderr, kernel)
401
- @argv = argv
402
- $kernel = kernel
403
- $stdin = stdin
404
- $stdout = stdout
405
- $stderr = stderr
406
- end
407
-
408
- def execute!
409
- Cli::App::CliParser.start @argv
410
- end
411
- end
412
- end
413
- end
414
- """
415
- And a file named "lib/cli/app/cli_parser.rb" with:
416
- """
417
- require 'thor'
418
-
419
- module Cli
420
- module App
421
- class CliParser < Thor
422
- def self.exit_on_failure?
423
- true
424
- end
425
-
426
- desc 'do_it', 'Reverse input'
427
- def do_it(*args)
428
- $kernel.exit 5
429
- end
430
- end
431
- end
432
- end
433
- """
434
- And a file named "features/in_process.feature" with:
435
- """
436
- Feature: Run a command in process
437
- @in-process
438
- Scenario: Run command
439
- When I run `reverse.rb do_it`
440
- Then the exit status should be 5
441
- """
442
- When I run `cucumber`
443
- Then the features should all pass
444
-
445
- Scenario: Using `:in_process` interactively is not supported
446
-
447
- Reading from STDIN blocks ruby from going on. But writing to STDIN - e.g.
448
- type some letters on keyboard - can only appear later, but this point is
449
- never reached, because ruby is blocked.
450
-
451
- Given the default aruba exit timeout is 5 seconds
452
- And a file named "lib/cli/app/runner.rb" with:
453
- """
454
- module Cli
455
- module App
456
- class Runner
457
- def initialize(argv, stdin, stdout, stderr, kernel)
458
- @stdin = stdin
459
- end
460
-
461
- def execute!
462
- while res = @stdin.gets.to_s.chomp
463
- break if res == 'quit'
464
- puts res.reverse
465
- end
466
- end
467
- end
468
- end
469
- end
470
- """
471
- And a file named "features/in_process.feature" with:
472
- """
473
- Feature: Run a command in process
474
- @in-process
475
- Scenario: Run command
476
- Given the default aruba exit timeout is 2 seconds
477
- When I run `reverse.rb do_it` interactively
478
- When I type "hello"
479
- Then the output should contain:
480
- \"\"\"
481
- hello
482
- \"\"\"
483
- """
484
- When I run `cucumber`
485
- Then the exit status should not be 0
@@ -1,90 +0,0 @@
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