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