aruba 0.14.14 → 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 (299) 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 -181
  8. data/.rubocop_todo.yml +262 -0
  9. data/.simplecov +7 -5
  10. data/.travis.yml +53 -28
  11. data/.yardopts +3 -0
  12. data/CHANGELOG.md +301 -2
  13. data/CONTRIBUTING.md +247 -45
  14. data/Dockerfile +67 -0
  15. data/Gemfile +5 -114
  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 +35 -13
  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 +1 -1
  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 -7
  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/getting-started-app/Gemfile +1 -1
  40. data/lib/aruba/api/commands.rb +85 -143
  41. data/lib/aruba/api/core.rb +48 -41
  42. data/lib/aruba/api/environment.rb +16 -7
  43. data/lib/aruba/api/filesystem.rb +43 -30
  44. data/lib/aruba/api/text.rb +3 -9
  45. data/lib/aruba/api.rb +6 -11
  46. data/lib/aruba/aruba_path.rb +27 -89
  47. data/lib/aruba/basic_configuration.rb +4 -24
  48. data/lib/aruba/cli.rb +1 -1
  49. data/lib/aruba/command.rb +2 -0
  50. data/lib/aruba/config/jruby.rb +1 -1
  51. data/lib/aruba/config_wrapper.rb +1 -1
  52. data/lib/aruba/configuration.rb +92 -0
  53. data/lib/aruba/console/help.rb +1 -7
  54. data/lib/aruba/console.rb +5 -5
  55. data/lib/aruba/contracts/absolute_path.rb +2 -2
  56. data/lib/aruba/contracts/relative_path.rb +2 -2
  57. data/lib/aruba/cucumber/command.rb +133 -92
  58. data/lib/aruba/cucumber/environment.rb +1 -1
  59. data/lib/aruba/cucumber/file.rb +21 -23
  60. data/lib/aruba/cucumber/hooks.rb +18 -13
  61. data/lib/aruba/cucumber/testing_frameworks.rb +74 -50
  62. data/lib/aruba/cucumber.rb +0 -6
  63. data/lib/aruba/event_bus/name_resolver.rb +5 -16
  64. data/lib/aruba/hooks.rb +1 -1
  65. data/lib/aruba/in_config_wrapper.rb +5 -1
  66. data/lib/aruba/initializer.rb +36 -42
  67. data/lib/aruba/matchers/base/base_matcher.rb +2 -2
  68. data/lib/aruba/matchers/base/message_indenter.rb +19 -0
  69. data/lib/aruba/matchers/base/object_formatter.rb +2 -9
  70. data/lib/aruba/matchers/collection/include_an_object.rb +7 -9
  71. data/lib/aruba/matchers/command/be_successfully_executed.rb +6 -4
  72. data/lib/aruba/matchers/command/have_exit_status.rb +14 -4
  73. data/lib/aruba/matchers/command/have_finished_in_time.rb +3 -5
  74. data/lib/aruba/matchers/command/have_output.rb +10 -5
  75. data/lib/aruba/matchers/command/have_output_on_stderr.rb +2 -2
  76. data/lib/aruba/matchers/command/have_output_on_stdout.rb +2 -2
  77. data/lib/aruba/matchers/command/have_output_size.rb +2 -2
  78. data/lib/aruba/matchers/directory/be_an_existing_directory.rb +5 -7
  79. data/lib/aruba/matchers/directory/have_sub_directory.rb +4 -6
  80. data/lib/aruba/matchers/file/be_a_command_found_in_path.rb +2 -4
  81. data/lib/aruba/matchers/file/be_an_existing_executable.rb +4 -6
  82. data/lib/aruba/matchers/file/be_an_existing_file.rb +5 -7
  83. data/lib/aruba/matchers/file/have_file_content.rb +4 -4
  84. data/lib/aruba/matchers/file/have_file_size.rb +6 -8
  85. data/lib/aruba/matchers/file/have_same_file_content.rb +5 -8
  86. data/lib/aruba/matchers/path/a_path_matching_pattern.rb +2 -4
  87. data/lib/aruba/matchers/path/be_an_absolute_path.rb +3 -5
  88. data/lib/aruba/matchers/path/be_an_existing_path.rb +4 -6
  89. data/lib/aruba/matchers/path/have_permissions.rb +6 -8
  90. data/lib/aruba/matchers/string/include_output_string.rb +8 -10
  91. data/lib/aruba/matchers/string/match_output_string.rb +9 -11
  92. data/lib/aruba/matchers/string/output_string_eq.rb +8 -10
  93. data/lib/aruba/platform.rb +0 -8
  94. data/lib/aruba/platforms/announcer.rb +30 -72
  95. data/lib/aruba/platforms/aruba_file_creator.rb +2 -6
  96. data/lib/aruba/platforms/aruba_fixed_size_file_creator.rb +2 -2
  97. data/lib/aruba/platforms/aruba_logger.rb +23 -7
  98. data/lib/aruba/platforms/command_monitor.rb +11 -103
  99. data/lib/aruba/platforms/determine_disk_usage.rb +56 -14
  100. data/lib/aruba/platforms/filesystem_status.rb +10 -14
  101. data/lib/aruba/platforms/local_environment.rb +2 -2
  102. data/lib/aruba/platforms/simple_table.rb +3 -11
  103. data/lib/aruba/platforms/unix_command_string.rb +7 -11
  104. data/lib/aruba/platforms/unix_environment_variables.rb +18 -27
  105. data/lib/aruba/platforms/unix_platform.rb +16 -50
  106. data/lib/aruba/platforms/unix_which.rb +2 -1
  107. data/lib/aruba/platforms/windows_command_string.rb +15 -10
  108. data/lib/aruba/platforms/windows_environment_variables.rb +43 -44
  109. data/lib/aruba/platforms/windows_platform.rb +4 -0
  110. data/lib/aruba/platforms/windows_which.rb +4 -3
  111. data/lib/aruba/processes/basic_process.rb +18 -20
  112. data/lib/aruba/processes/debug_process.rb +12 -3
  113. data/lib/aruba/processes/in_process.rb +17 -8
  114. data/lib/aruba/processes/spawn_process.rb +36 -39
  115. data/lib/aruba/rspec.rb +14 -36
  116. data/lib/aruba/runtime.rb +3 -6
  117. data/lib/aruba/setup.rb +1 -1
  118. data/lib/aruba/tasks/docker_helpers.rb +154 -0
  119. data/lib/aruba/version.rb +1 -1
  120. metadata +190 -242
  121. data/features/.nav +0 -72
  122. data/features/01_getting_started_with_aruba/cleanup_working_directory.feature +0 -57
  123. data/features/01_getting_started_with_aruba/run_commands.feature +0 -217
  124. data/features/01_getting_started_with_aruba/supported_testing_frameworks.feature +0 -88
  125. data/features/02_configure_aruba/activate_announcer_on_command_failure.feature +0 -38
  126. data/features/02_configure_aruba/basics.feature +0 -151
  127. data/features/02_configure_aruba/command_runtime_environment.feature +0 -129
  128. data/features/02_configure_aruba/console_history_file.feature +0 -38
  129. data/features/02_configure_aruba/exit_timeout.feature +0 -60
  130. data/features/02_configure_aruba/fixtures_directories.feature +0 -38
  131. data/features/02_configure_aruba/fixtures_path_prefix.feature +0 -23
  132. data/features/02_configure_aruba/home_directory.feature +0 -80
  133. data/features/02_configure_aruba/io_timeout.feature +0 -30
  134. data/features/02_configure_aruba/keep_ansi.feature +0 -30
  135. data/features/02_configure_aruba/log_level.feature +0 -38
  136. data/features/02_configure_aruba/physical_block_size.feature +0 -53
  137. data/features/02_configure_aruba/remove_ansi_escape_sequences.feature +0 -38
  138. data/features/02_configure_aruba/root_directory.feature +0 -30
  139. data/features/02_configure_aruba/startup_wait_time.feature +0 -48
  140. data/features/02_configure_aruba/working_directory.feature +0 -38
  141. data/features/03_testing_frameworks/cucumber/announce_information_for_troubleshooting.feature +0 -306
  142. data/features/03_testing_frameworks/cucumber/disable_bunder.feature +0 -18
  143. data/features/03_testing_frameworks/cucumber/steps/command/check_for_exit_statuses.feature +0 -136
  144. data/features/03_testing_frameworks/cucumber/steps/command/check_output_of_command.feature +0 -514
  145. data/features/03_testing_frameworks/cucumber/steps/command/check_stderr_of_command.feature +0 -68
  146. data/features/03_testing_frameworks/cucumber/steps/command/check_stdout_of_command.feature +0 -109
  147. data/features/03_testing_frameworks/cucumber/steps/command/debug_your_command_in_aruba.feature +0 -118
  148. data/features/03_testing_frameworks/cucumber/steps/command/run_a_command.feature +0 -66
  149. data/features/03_testing_frameworks/cucumber/steps/command/run_command_in_process.feature +0 -485
  150. data/features/03_testing_frameworks/cucumber/steps/command/run_command_interactively.feature +0 -90
  151. data/features/03_testing_frameworks/cucumber/steps/command/run_commands_which_require_a_shell.feature +0 -79
  152. data/features/03_testing_frameworks/cucumber/steps/command/send_signal_to_command.feature +0 -83
  153. data/features/03_testing_frameworks/cucumber/steps/command/stop_command.feature +0 -285
  154. data/features/03_testing_frameworks/cucumber/steps/environment/append_environment_variable.feature +0 -52
  155. data/features/03_testing_frameworks/cucumber/steps/environment/modify_home_variable_for_testing.feature +0 -62
  156. data/features/03_testing_frameworks/cucumber/steps/environment/prepend_environment_variable.feature +0 -52
  157. data/features/03_testing_frameworks/cucumber/steps/environment/set_environment_variable.feature +0 -49
  158. data/features/03_testing_frameworks/cucumber/steps/filesystem/append_to_file.feature +0 -45
  159. data/features/03_testing_frameworks/cucumber/steps/filesystem/cd_to_directory.feature +0 -33
  160. data/features/03_testing_frameworks/cucumber/steps/filesystem/check_existence_of_directory.feature +0 -57
  161. data/features/03_testing_frameworks/cucumber/steps/filesystem/check_existence_of_file.feature +0 -43
  162. data/features/03_testing_frameworks/cucumber/steps/filesystem/check_file_content.feature +0 -143
  163. data/features/03_testing_frameworks/cucumber/steps/filesystem/check_non_existence_of_directory.feature +0 -69
  164. data/features/03_testing_frameworks/cucumber/steps/filesystem/check_non_existence_of_file.feature +0 -80
  165. data/features/03_testing_frameworks/cucumber/steps/filesystem/check_permissions_of_file.feature +0 -39
  166. data/features/03_testing_frameworks/cucumber/steps/filesystem/compare_files.feature +0 -42
  167. data/features/03_testing_frameworks/cucumber/steps/filesystem/copy_file_or_directory.feature +0 -45
  168. data/features/03_testing_frameworks/cucumber/steps/filesystem/create_directory.feature +0 -57
  169. data/features/03_testing_frameworks/cucumber/steps/filesystem/create_file.feature +0 -76
  170. data/features/03_testing_frameworks/cucumber/steps/filesystem/move_file_or_directory.feature +0 -44
  171. data/features/03_testing_frameworks/cucumber/steps/filesystem/overwrite_file.feature +0 -72
  172. data/features/03_testing_frameworks/cucumber/steps/filesystem/remove_directory.feature +0 -38
  173. data/features/03_testing_frameworks/cucumber/steps/filesystem/remove_file.feature +0 -38
  174. data/features/03_testing_frameworks/cucumber/steps/filesystem/use_fixtures_for_setup_test.feature +0 -77
  175. data/features/03_testing_frameworks/rspec/hooks/define_after_hook_for_commands.feature +0 -43
  176. data/features/03_testing_frameworks/rspec/hooks/define_before_hook_for_commands.feature +0 -71
  177. data/features/03_testing_frameworks/rspec/setup_aruba_for_rspec.feature +0 -179
  178. data/features/04_aruba_api/command/find_a_started_command.feature +0 -83
  179. data/features/04_aruba_api/command/find_command_in_PATH.feature +0 -37
  180. data/features/04_aruba_api/command/read_stderr_of_command.feature +0 -46
  181. data/features/04_aruba_api/command/read_stdout_of_command.feature +0 -46
  182. data/features/04_aruba_api/command/run_command.feature +0 -423
  183. data/features/04_aruba_api/command/run_simple.feature +0 -254
  184. data/features/04_aruba_api/command/send_signal_to_command.feature +0 -53
  185. data/features/04_aruba_api/command/stop_all_commands.feature +0 -57
  186. data/features/04_aruba_api/command/stop_single_command.feature +0 -132
  187. data/features/04_aruba_api/command/terminate_all_commands.feature +0 -57
  188. data/features/04_aruba_api/command/use_last_command_started.feature +0 -50
  189. data/features/04_aruba_api/command/use_last_command_stopped.feature +0 -89
  190. data/features/04_aruba_api/core/expand_path.feature +0 -88
  191. data/features/04_aruba_api/environment/append_environment_variable.feature +0 -128
  192. data/features/04_aruba_api/environment/delete_environment_variable.feature +0 -63
  193. data/features/04_aruba_api/environment/prepend_environment_variable.feature +0 -128
  194. data/features/04_aruba_api/environment/set_environment_variable.feature +0 -376
  195. data/features/04_aruba_api/filesystem/cd_to_directory.feature +0 -184
  196. data/features/04_aruba_api/filesystem/check_existence_file_or_directory.feature +0 -62
  197. data/features/04_aruba_api/filesystem/check_if_path_is_absolute.feature +0 -48
  198. data/features/04_aruba_api/filesystem/check_if_path_is_directory.feature +0 -53
  199. data/features/04_aruba_api/filesystem/check_if_path_is_file.feature +0 -54
  200. data/features/04_aruba_api/filesystem/check_if_path_is_relative.feature +0 -48
  201. data/features/04_aruba_api/filesystem/create_directory.feature +0 -57
  202. data/features/04_aruba_api/filesystem/move_file_or_directory.feature +0 -119
  203. data/features/04_aruba_api/filesystem/report_disk_usage.feature +0 -152
  204. data/features/04_aruba_api/filesystem/use_fixtures.feature +0 -104
  205. data/features/04_aruba_api/text/extract_text.feature +0 -87
  206. data/features/04_aruba_api/text/replace_variables.feature +0 -45
  207. data/features/04_aruba_api/text/sanitize_text.feature +0 -228
  208. data/features/04_aruba_api/text/unescape_text.feature +0 -127
  209. data/features/05_use_rspec_matchers/command/check_timeouts.feature +0 -48
  210. data/features/05_use_rspec_matchers/directory/have_sub_directory.feature +0 -110
  211. data/features/05_use_rspec_matchers/file/be_a_command_found_in_path.feature +0 -115
  212. data/features/05_use_rspec_matchers/file/be_existing_executable.feature +0 -88
  213. data/features/05_use_rspec_matchers/file/be_existing_file.feature +0 -82
  214. data/features/05_use_rspec_matchers/file/have_file_content.feature +0 -123
  215. data/features/05_use_rspec_matchers/file/have_file_size.feature +0 -107
  216. data/features/05_use_rspec_matchers/path/be_an_absolute_path.feature +0 -74
  217. data/features/05_use_rspec_matchers/path/be_an_existing_path.feature +0 -97
  218. data/features/05_use_rspec_matchers/path/have_permissions.feature +0 -118
  219. data/features/06_use_aruba_cli/initialize_project_with_aruba.feature +0 -79
  220. data/features/06_use_aruba_cli/open_console.feature +0 -55
  221. data/features/08_other/improve_performance_if_using_jruby.feature +0 -37
  222. data/features/step_definitions/hooks.rb +0 -146
  223. data/features/support/aruba.rb +0 -7
  224. data/features/support/env.rb +0 -33
  225. data/features/support/simplecov_setup.rb +0 -11
  226. data/fixtures/spawn_process/stderr.sh +0 -3
  227. data/lib/aruba/api/deprecated.rb +0 -1155
  228. data/lib/aruba/config.rb +0 -107
  229. data/lib/aruba/cucumber/core.rb +0 -5
  230. data/lib/aruba/cucumber/deprecated.rb +0 -93
  231. data/lib/aruba/cucumber/rvm.rb +0 -3
  232. data/lib/aruba/in_process.rb +0 -16
  233. data/lib/aruba/jruby.rb +0 -4
  234. data/lib/aruba/matchers/deprecated/file.rb +0 -17
  235. data/lib/aruba/matchers/deprecated.rb +0 -1
  236. data/lib/aruba/matchers/path/match_path_pattern.rb +0 -41
  237. data/lib/aruba/matchers/rspec_matcher_include_regexp.rb +0 -25
  238. data/lib/aruba/platforms/disk_usage_calculator.rb +0 -20
  239. data/lib/aruba/reporting.rb +0 -126
  240. data/lib/aruba/spawn_process.rb +0 -14
  241. data/script/bootstrap +0 -24
  242. data/script/console +0 -16
  243. data/script/test +0 -3
  244. data/spec/aruba/api/bundler_spec.rb +0 -15
  245. data/spec/aruba/api/commands_spec.rb +0 -30
  246. data/spec/aruba/api/core_spec.rb +0 -184
  247. data/spec/aruba/api/deprecated_spec.rb +0 -421
  248. data/spec/aruba/api/filesystem_spec.rb +0 -746
  249. data/spec/aruba/api/runtime_spec.rb +0 -28
  250. data/spec/aruba/api_spec.rb +0 -73
  251. data/spec/aruba/aruba_path_spec.rb +0 -103
  252. data/spec/aruba/basic_configuration_spec.rb +0 -5
  253. data/spec/aruba/configuration_spec.rb +0 -5
  254. data/spec/aruba/hooks_spec.rb +0 -17
  255. data/spec/aruba/in_config_wrapper_spec.rb +0 -25
  256. data/spec/aruba/jruby_spec.rb +0 -73
  257. data/spec/aruba/matchers/command/have_output_size_spec.rb +0 -25
  258. data/spec/aruba/matchers/command_spec.rb +0 -174
  259. data/spec/aruba/matchers/deprecated_spec.rb +0 -120
  260. data/spec/aruba/matchers/directory_spec.rb +0 -57
  261. data/spec/aruba/matchers/file_spec.rb +0 -208
  262. data/spec/aruba/matchers/path_spec.rb +0 -58
  263. data/spec/aruba/platform/simple_table_spec.rb +0 -23
  264. data/spec/aruba/platform/windows_environment_variables_spec.rb +0 -500
  265. data/spec/aruba/platforms/unix_command_string_spec.rb +0 -17
  266. data/spec/aruba/platforms/windows_command_string_spec.rb +0 -22
  267. data/spec/aruba/processes/spawn_process_spec.rb +0 -112
  268. data/spec/aruba/rspec_spec.rb +0 -15
  269. data/spec/aruba/runtime_spec.rb +0 -29
  270. data/spec/event_bus/name_resolver_spec.rb +0 -68
  271. data/spec/event_bus_spec.rb +0 -158
  272. data/spec/spec_helper.rb +0 -22
  273. data/spec/support/configs/.keep +0 -0
  274. data/spec/support/configs/aruba.rb +0 -5
  275. data/spec/support/configs/pry.rb +0 -3
  276. data/spec/support/configs/rspec.rb +0 -15
  277. data/spec/support/helpers/.keep +0 -0
  278. data/spec/support/helpers/reporting.rb +0 -44
  279. data/spec/support/matchers/.keep +0 -0
  280. data/spec/support/matchers/option.rb +0 -35
  281. data/spec/support/shared_contexts/.keep +0 -0
  282. data/spec/support/shared_contexts/aruba.rb +0 -49
  283. data/spec/support/shared_examples/.keep +0 -0
  284. data/spec/support/shared_examples/configuration.rb +0 -116
  285. data/spec/support/shared_examples/directory.rb +0 -7
  286. data/spec/support/shared_examples/file.rb +0 -7
  287. data/templates/css/console.css +0 -24
  288. data/templates/css/filesystem.css +0 -42
  289. data/templates/css/pygments-autumn.css +0 -59
  290. data/templates/files.erb +0 -14
  291. data/templates/images/LICENSE +0 -22
  292. data/templates/images/folder.png +0 -0
  293. data/templates/images/page_white.png +0 -0
  294. data/templates/images/page_white_gherkin.png +0 -0
  295. data/templates/images/page_white_ruby.png +0 -0
  296. data/templates/index.erb +0 -20
  297. data/templates/js/filesystem.js +0 -5
  298. data/templates/js/jquery-1.11.3.min.js +0 -5
  299. data/templates/main.erb +0 -34
@@ -1,25 +1,33 @@
1
1
  # Cucumber
2
- Then /^the feature(?:s)? should( not)?(?: all)? pass$/ do |negated|
3
- if negated
4
- step 'the output should contain " failed)"'
5
- step 'the exit status should be 1'
6
- else
7
- step 'the output should not contain " failed)"'
8
- step 'the output should not contain " undefined)"'
9
- step 'the exit status should be 0'
10
- end
2
+ Then /^the feature(?:s)? should not(?: all)? pass$/ do
3
+ step 'the output should contain " failed)"'
4
+ step 'the exit status should be 1'
5
+ end
6
+
7
+ # Cucumber
8
+ Then /^the feature(?:s)? should(?: all)? pass$/ do
9
+ step 'the output should not contain " failed)"'
10
+ step 'the output should not contain " undefined)"'
11
+ step 'the exit status should be 0'
11
12
  end
12
13
 
13
14
  # Cucumber
14
- Then /^the feature(?:s)? should( not)?(?: all)? pass with( regex)?:$/ do |negated, regex, string|
15
- if negated
16
- step 'the output should contain " failed)"'
17
- step 'the exit status should be 1'
15
+ Then /^the feature(?:s)? should not(?: all)? pass with( regex)?:$/ do |regex, string|
16
+ step 'the output should contain " failed)"'
17
+ step 'the exit status should be 1'
18
+
19
+ if regex
20
+ step "the output should match %r<#{string}>"
18
21
  else
19
- step 'the output should not contain " failed)"'
20
- step 'the output should not contain " undefined)"'
21
- step 'the exit status should be 0'
22
+ step 'the output should contain:', string
22
23
  end
24
+ end
25
+
26
+ # Cucumber
27
+ Then /^the feature(?:s)? should(?: all)? pass with( regex)?:$/ do |regex, string|
28
+ step 'the output should not contain " failed)"'
29
+ step 'the output should not contain " undefined)"'
30
+ step 'the exit status should be 0'
23
31
 
24
32
  if regex
25
33
  step "the output should match %r<#{string}>"
@@ -29,30 +37,38 @@ Then /^the feature(?:s)? should( not)?(?: all)? pass with( regex)?:$/ do |negate
29
37
  end
30
38
 
31
39
  # RSpec
32
- Then /^the spec(?:s)? should( not)?(?: all)? pass(?: with (\d+) failures?)?$/ do |negated, count_failures|
33
- if negated
34
- if count_failures.nil?
35
- step 'the output should not contain "0 failures"'
36
- else
37
- step %(the output should contain "#{count_failures} failures")
38
- end
39
-
40
- step 'the exit status should be 1'
40
+ Then /^the spec(?:s)? should not(?: all)? pass(?: with (\d+) failures?)?$/ do |count_failures|
41
+ if count_failures.nil?
42
+ step 'the output should not contain "0 failures"'
41
43
  else
42
- step 'the output should contain "0 failures"'
43
- step 'the exit status should be 0'
44
+ step %(the output should contain "#{count_failures} failures")
44
45
  end
46
+
47
+ step 'the exit status should be 1'
45
48
  end
46
49
 
47
50
  # RSpec
48
- Then /^the spec(?:s)? should( not)?(?: all)? pass with( regex)?:$/ do |negated, regex, string|
49
- if negated
50
- step 'the output should not contain "0 failures"'
51
- step 'the exit status should be 1'
51
+ Then /^the spec(?:s)? should all pass$/ do
52
+ step 'the output should contain "0 failures"'
53
+ step 'the exit status should be 0'
54
+ end
55
+
56
+ # RSpec
57
+ Then /^the spec(?:s)? should not(?: all)? pass with( regex)?:$/ do |regex, string|
58
+ step 'the output should not contain "0 failures"'
59
+ step 'the exit status should be 1'
60
+
61
+ if regex
62
+ step "the output should match %r<#{string}>"
52
63
  else
53
- step 'the output should contain "0 failures"'
54
- step 'the exit status should be 0'
64
+ step 'the output should contain:', string
55
65
  end
66
+ end
67
+
68
+ # RSpec
69
+ Then /^the spec(?:s)? should(?: all)? pass with( regex)?:$/ do |regex, string|
70
+ step 'the output should contain "0 failures"'
71
+ step 'the exit status should be 0'
56
72
 
57
73
  if regex
58
74
  step "the output should match %r<#{string}>"
@@ -62,30 +78,38 @@ Then /^the spec(?:s)? should( not)?(?: all)? pass with( regex)?:$/ do |negated,
62
78
  end
63
79
 
64
80
  # Minitest
65
- Then /^the tests(?:s)? should( not)?(?: all)? pass(?: with (\d+) failures?)?$/ do |negated, count_failures|
66
- if negated
67
- if count_failures.nil?
68
- step 'the output should not contain "0 errors"'
69
- else
70
- step %(the output should contain "#{count_failures} errors")
71
- end
72
-
73
- step 'the exit status should be 1'
81
+ Then /^the tests(?:s)? should not(?: all)? pass(?: with (\d+) failures?)?$/ do |count_failures|
82
+ if count_failures.nil?
83
+ step 'the output should not contain "0 errors"'
74
84
  else
75
- step 'the output should contain "0 errors"'
76
- step 'the exit status should be 0'
85
+ step %(the output should contain "#{count_failures} errors")
77
86
  end
87
+
88
+ step 'the exit status should be 1'
78
89
  end
79
90
 
80
91
  # Minitest
81
- Then /^the test(?:s)? should( not)?(?: all)? pass with( regex)?:$/ do |negated, regex, string|
82
- if negated
83
- step 'the output should contain "0 errors"'
84
- step 'the exit status should be 1'
92
+ Then /^the tests(?:s)? should all pass$/ do
93
+ step 'the output should contain "0 errors"'
94
+ step 'the exit status should be 0'
95
+ end
96
+
97
+ # Minitest
98
+ Then /^the test(?:s)? should not(?: all)? pass with( regex)?:$/ do |regex, string|
99
+ step 'the output should contain "0 errors"'
100
+ step 'the exit status should be 1'
101
+
102
+ if regex
103
+ step "the output should match %r<#{string}>"
85
104
  else
86
- step 'the output should not contain "0 errors"'
87
- step 'the exit status should be 0'
105
+ step 'the output should contain:', string
88
106
  end
107
+ end
108
+
109
+ # Minitest
110
+ Then /^the test(?:s)? should(?: all)? pass with( regex)?:$/ do |regex, string|
111
+ step 'the output should not contain "0 errors"'
112
+ step 'the exit status should be 0'
89
113
 
90
114
  if regex
91
115
  step "the output should match %r<#{string}>"
@@ -1,14 +1,8 @@
1
1
  require 'aruba/version'
2
2
 
3
3
  require 'aruba/api'
4
- World(Aruba::Api)
5
-
6
4
  require 'aruba/cucumber/hooks'
7
5
  require 'aruba/cucumber/command'
8
- require 'aruba/cucumber/core'
9
- require 'aruba/cucumber/deprecated'
10
6
  require 'aruba/cucumber/environment'
11
7
  require 'aruba/cucumber/file'
12
8
  require 'aruba/cucumber/testing_frameworks'
13
- require 'aruba/cucumber/rvm'
14
- require 'aruba/reporting'
@@ -10,17 +10,12 @@ module Aruba
10
10
  # Helpers for Resolvers
11
11
  module ResolveHelpers
12
12
  def camel_case(underscored_name)
13
- if RUBY_VERSION < '1.9.3'
14
- underscored_name.to_s.split('_').map { |word| word.upcase.chars.to_a[0] + word.chars.to_a[1..-1].join }.join
15
- else
16
- underscored_name.to_s.split('_').map { |word| word.upcase[0] + word[1..-1] }.join
17
- end
13
+ underscored_name.to_s.split('_').map { |word| word.upcase[0] + word[1..-1] }.join
18
14
  end
19
15
 
20
16
  # Thanks ActiveSupport
21
17
  # (Only needed to support Ruby 1.9.3 and JRuby)
22
18
  # rubocop:disable Metrics/CyclomaticComplexity
23
- # rubocop:disable Metrics/MethodLength
24
19
  def constantize(camel_cased_word)
25
20
  names = camel_cased_word.split('::')
26
21
 
@@ -36,23 +31,18 @@ module Aruba
36
31
  else
37
32
  candidate = constant.const_get(name)
38
33
 
39
- if RUBY_VERSION < '1.9.3'
40
- next candidate if constant.const_defined?(name)
41
- else
42
- next candidate if constant.const_defined?(name, false)
43
- end
34
+ next candidate if constant.const_defined?(name, false)
44
35
 
45
36
  next candidate unless Object.const_defined?(name)
46
37
 
47
38
  # Go down the ancestors to check if it is owned directly. The check
48
39
  # stops when we reach Object or the end of ancestors tree.
49
- # rubocop:disable Style/EachWithObject
50
40
  constant = constant.ancestors.inject do |const, ancestor|
51
41
  break const if ancestor == Object
52
42
  break ancestor if ancestor.const_defined?(name, false)
43
+
53
44
  const
54
45
  end
55
- # rubocop:enable Style/EachWithObject
56
46
 
57
47
  # owner is in Object, so raise
58
48
  constant.const_get(name, false)
@@ -60,7 +50,6 @@ module Aruba
60
50
  end
61
51
  end
62
52
  # rubocop:enable Metrics/CyclomaticComplexity
63
- # rubocop:enable Metrics/MethodLength
64
53
  end
65
54
 
66
55
  # @private
@@ -159,9 +148,9 @@ module Aruba
159
148
  def transform(event_id)
160
149
  resolvers.find { |r| r.match? event_id }.new.transform(default_namespace, event_id)
161
150
  rescue => e
162
- # rubocop:disable Metrics/LineLength
151
+ # rubocop:disable Layout/LineLength
163
152
  raise EventNameResolveError, %(Transforming "#{event_id}" into an event class failed. Supported types are: #{@resolvers.map(&:supports).flatten.join(', ')}. #{e.message}.\n\n#{e.backtrace.join("\n")})
164
- # rubocop:enable Metrics/LineLength
153
+ # rubocop:enable Layout/LineLength
165
154
  end
166
155
  end
167
156
  end
data/lib/aruba/hooks.rb CHANGED
@@ -18,7 +18,7 @@ module Aruba
18
18
  # @param [String, Symbol] label
19
19
  # The name of the hook
20
20
  #
21
- # @para [Proc] block
21
+ # @param [Proc] block
22
22
  # The block which should be run for the hook
23
23
  def append(label, block)
24
24
  if store.key?(label.to_sym) && store[label.to_sym].respond_to?(:<<)
@@ -15,10 +15,14 @@ module Aruba
15
15
  end
16
16
 
17
17
  def method_missing(name, *args)
18
- fail ArgumentError, 'Options take no argument' if args.count > 0
18
+ fail ArgumentError, 'Options take no argument' if args.any?
19
19
  fail UnknownOptionError, %(Option "#{name}" is unknown. Please use only earlier defined options) unless config.key? name
20
20
 
21
21
  config[name]
22
22
  end
23
+
24
+ def respond_to_missing?(*)
25
+ true
26
+ end
23
27
  end
24
28
  end
@@ -23,7 +23,11 @@ module Aruba
23
23
  end
24
24
 
25
25
  content = if File.exist? file
26
- %(gem 'aruba', '~> #{Aruba::VERSION}')
26
+ file_ends_with_carriage_return = File.open(file, 'r').readlines.last.match(/.*\n$/)
27
+
28
+ prefix = file_ends_with_carriage_return ? '' : "\n"
29
+
30
+ %(#{prefix}gem 'aruba', '~> #{Aruba::VERSION}')
27
31
  else
28
32
  %(source 'https://rubygems.org'\ngem 'aruba', '~> #{Aruba::VERSION}'\n)
29
33
  end
@@ -68,7 +72,7 @@ module Aruba
68
72
 
69
73
  no_commands do
70
74
  def self.match?(framework)
71
- :rspec == framework.downcase.to_sym
75
+ framework.downcase.to_sym == :rspec
72
76
  end
73
77
  end
74
78
 
@@ -80,23 +84,18 @@ module Aruba
80
84
  :create_file
81
85
  end
82
86
 
83
- send creator, file, <<-EOS
84
- $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
87
+ send creator, file, <<~EOS
88
+ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
85
89
 
86
- if RUBY_VERSION < '1.9.3'
87
- ::Dir.glob(::File.expand_path('../support/*.rb', __FILE__)).each { |f| require File.join(File.dirname(f), File.basename(f, '.rb')) }
88
- ::Dir.glob(::File.expand_path('../support/**/*.rb', __FILE__)).each { |f| require File.join(File.dirname(f), File.basename(f, '.rb')) }
89
- else
90
- ::Dir.glob(::File.expand_path('../support/*.rb', __FILE__)).each { |f| require_relative f }
91
- ::Dir.glob(::File.expand_path('../support/**/*.rb', __FILE__)).each { |f| require_relative f }
92
- end
93
- EOS
90
+ ::Dir.glob(::File.expand_path('../support/*.rb', __FILE__)).each { |f| require_relative f }
91
+ ::Dir.glob(::File.expand_path('../support/**/*.rb', __FILE__)).each { |f| require_relative f }
92
+ EOS
94
93
  end
95
94
 
96
95
  def create_support_file
97
- create_file 'spec/support/aruba.rb', <<-EOS
98
- require 'aruba/rspec'
99
- EOS
96
+ create_file 'spec/support/aruba.rb', <<~EOS
97
+ require 'aruba/rspec'
98
+ EOS
100
99
  end
101
100
  end
102
101
  end
@@ -114,14 +113,14 @@ module Aruba
114
113
 
115
114
  no_commands do
116
115
  def self.match?(framework)
117
- :cucumber == framework.downcase.to_sym
116
+ framework.downcase.to_sym == :cucumber
118
117
  end
119
118
  end
120
119
 
121
120
  def create_support_file
122
- create_file 'features/support/aruba.rb', <<-EOS
123
- require 'aruba/cucumber'
124
- EOS
121
+ create_file 'features/support/aruba.rb', <<~EOS
122
+ require 'aruba/cucumber'
123
+ EOS
125
124
  end
126
125
  end
127
126
  end
@@ -139,7 +138,7 @@ module Aruba
139
138
 
140
139
  no_commands do
141
140
  def self.match?(framework)
142
- :minitest == framework.downcase.to_sym
141
+ framework.downcase.to_sym == :minitest
143
142
  end
144
143
  end
145
144
 
@@ -151,35 +150,30 @@ module Aruba
151
150
  :create_file
152
151
  end
153
152
 
154
- send creator, file, <<-EOS
155
- $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
153
+ send creator, file, <<~EOS
154
+ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
156
155
 
157
- if RUBY_VERSION < '1.9.3'
158
- ::Dir.glob(::File.expand_path('../support/*.rb', __FILE__)).each { |f| require File.join(File.dirname(f), File.basename(f, '.rb')) }
159
- ::Dir.glob(::File.expand_path('../support/**/*.rb', __FILE__)).each { |f| require File.join(File.dirname(f), File.basename(f, '.rb')) }
160
- else
161
- ::Dir.glob(::File.expand_path('../support/*.rb', __FILE__)).each { |f| require_relative f }
162
- ::Dir.glob(::File.expand_path('../support/**/*.rb', __FILE__)).each { |f| require_relative f }
163
- end
164
- EOS
156
+ ::Dir.glob(::File.expand_path('../support/*.rb', __FILE__)).each { |f| require_relative f }
157
+ ::Dir.glob(::File.expand_path('../support/**/*.rb', __FILE__)).each { |f| require_relative f }
158
+ EOS
165
159
  end
166
160
 
167
161
  def create_example
168
- create_file 'test/use_aruba_with_minitest.rb', <<-EOS
169
- $LOAD_PATH.unshift File.expand_path('../test', __FILE__)
162
+ create_file 'test/use_aruba_with_minitest.rb', <<~EOS
163
+ $LOAD_PATH.unshift File.expand_path('../test', __FILE__)
170
164
 
171
- require 'test_helper'
172
- require 'minitest/autorun'
173
- require 'aruba/api'
165
+ require 'test_helper'
166
+ require 'minitest/autorun'
167
+ require 'aruba/api'
174
168
 
175
- class FirstRun < Minitest::Test
176
- include Aruba::Api
169
+ class FirstRun < Minitest::Test
170
+ include Aruba::Api
177
171
 
178
- def setup
179
- aruba_setup
180
- end
181
- end
182
- EOS
172
+ def setup
173
+ aruba_setup
174
+ end
175
+ end
176
+ EOS
183
177
  end
184
178
  end
185
179
  end
@@ -72,14 +72,14 @@ module Aruba
72
72
  end
73
73
 
74
74
  # @private
75
- # rubocop:disable Style/PredicateName
75
+ # rubocop:disable Naming/PredicateName
76
76
  def self.has_default_failure_messages?(matcher)
77
77
  matcher.method(:failure_message).owner == self &&
78
78
  matcher.method(:failure_message_when_negated).owner == self
79
79
  rescue NameError
80
80
  false
81
81
  end
82
- # rubocop:enable Style/PredicateName
82
+ # rubocop:enable Naming/PredicateName
83
83
  end
84
84
 
85
85
  include DefaultFailureMessages
@@ -0,0 +1,19 @@
1
+ module Aruba
2
+ module Matchers
3
+ module Base
4
+ # Provide #indent_multiline_message helper method.
5
+ #
6
+ # @api private
7
+ module MessageIndenter
8
+ module_function
9
+
10
+ def indent_multiline_message(message)
11
+ message = message.sub(/\n+\z/, '')
12
+ message.lines.map do |line|
13
+ /\S/.match?(line) ? ' ' + line : line
14
+ end.join
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -12,7 +12,6 @@ module Aruba
12
12
  prepare_for_inspection(object).inspect
13
13
  end
14
14
 
15
- # rubocop:disable MethodLength
16
15
  # rubocop:disable Metrics/CyclomaticComplexity
17
16
 
18
17
  # @private
@@ -48,7 +47,6 @@ module Aruba
48
47
  InspectableItem.new(inspection)
49
48
  end
50
49
  # rubocop:enable Metrics/CyclomaticComplexity
51
- # rubocop:enable MethodLength
52
50
 
53
51
  # @private
54
52
  def self.prepare_hash(input)
@@ -57,21 +55,16 @@ module Aruba
57
55
  end
58
56
  end
59
57
 
60
- TIME_FORMAT = "%Y-%m-%d %H:%M:%S".freeze
58
+ TIME_FORMAT = '%Y-%m-%d %H:%M:%S'.freeze
61
59
 
62
60
  if Time.method_defined?(:nsec)
63
61
  # @private
64
62
  def self.format_time(time)
65
63
  time.strftime("#{TIME_FORMAT}.#{format('%09d', time.nsec)} %z")
66
64
  end
67
- else # for 1.8.7
68
- # @private
69
- def self.format_time(time)
70
- time.strftime("#{TIME_FORMAT}.#{format('%06d', time.usec)} %z")
71
- end
72
65
  end
73
66
 
74
- DATE_TIME_FORMAT = "%a, %d %b %Y %H:%M:%S.%N %z".freeze
67
+ DATE_TIME_FORMAT = '%a, %d %b %Y %H:%M:%S.%N %z'.freeze
75
68
 
76
69
  # ActiveSupport sometimes overrides inspect. If `ActiveSupport` is
77
70
  # defined use a custom format string that includes more time precision.
@@ -1,4 +1,5 @@
1
1
  require 'aruba/matchers/base/base_matcher'
2
+ require 'aruba/matchers/base/message_indenter'
2
3
 
3
4
  # Aruba
4
5
  module Aruba
@@ -8,6 +9,8 @@ module Aruba
8
9
  # Provides the implementation for `include_an_object`.
9
10
  # Not intended to be instantiated directly.
10
11
  class IncludeAnObject < BaseMatcher
12
+ include Base::MessageIndenter
13
+
11
14
  protected
12
15
 
13
16
  # @private
@@ -19,7 +22,7 @@ module Aruba
19
22
 
20
23
  def initialize(matcher)
21
24
  @matcher = matcher
22
- @failed_objects = {}
25
+ @failed_objects = []
23
26
  @any_succeeded_object = false
24
27
  end
25
28
 
@@ -30,8 +33,10 @@ module Aruba
30
33
  return "#{improve_hash_formatting(super)}, but was not iterable"
31
34
  end
32
35
 
36
+ return failed_objects.first if failed_objects.size == 1
37
+
33
38
  all_messages = [improve_hash_formatting(super)]
34
- failed_objects.each do |index, matcher_failure_message|
39
+ failed_objects.each_with_index do |matcher_failure_message, index|
35
40
  all_messages << failure_message_for_item(index, matcher_failure_message)
36
41
  end
37
42
  all_messages.join("\n\n")
@@ -92,13 +97,6 @@ module Aruba
92
97
  def add_new_line_if_needed(message)
93
98
  message.start_with?("\n") ? message : "\n#{message}"
94
99
  end
95
-
96
- def indent_multiline_message(message)
97
- message = message.sub(/\n+\z/, '')
98
- message.lines.map do |line|
99
- line =~ /\S/ ? ' ' + line : line
100
- end.join
101
- end
102
100
  end
103
101
  end
104
102
  end
@@ -6,7 +6,7 @@ require 'aruba/matchers/command/have_finished_in_time'
6
6
  # @!method be_successfuly_executed
7
7
  # This matchers checks if execution of <command> was successful
8
8
  #
9
- # @return [TrueClass, FalseClass] The result
9
+ # @return [Boolean] The result
10
10
  #
11
11
  # false:
12
12
  # * if command was not successful
@@ -27,8 +27,10 @@ RSpec::Matchers.define :be_successfully_executed do
27
27
 
28
28
  expect(@old_actual).to have_exit_status(0)
29
29
  end
30
- end
31
30
 
32
- if RSpec::Expectations::Version::STRING >= '3.1'
33
- RSpec::Matchers.define_negated_matcher :have_failed_running, :be_successfully_executed
31
+ failure_message do |_actual|
32
+ "Expected `#{@actual}` to succeed but got non-zero exit status and the following output:\n\n#{@old_actual.output}\n"
33
+ end
34
34
  end
35
+
36
+ RSpec::Matchers.define_negated_matcher :have_failed_running, :be_successfully_executed
@@ -4,7 +4,7 @@
4
4
  # @param [Integer] status
5
5
  # The value of the exit status
6
6
  #
7
- # @return [TrueClass, FalseClass] The result
7
+ # @return [Boolean] The result
8
8
  #
9
9
  # false:
10
10
  # * if command does not have exit status
@@ -23,16 +23,26 @@ RSpec::Matchers.define :have_exit_status do |expected|
23
23
  @old_actual.stop
24
24
  @actual = actual.exit_status
25
25
 
26
- next false unless @old_actual.respond_to? :exit_status
26
+ raise "Expected #{@old_actual} to respond to #exit_status" unless @old_actual.respond_to? :exit_status
27
27
 
28
28
  values_match? expected, @actual
29
29
  end
30
30
 
31
31
  failure_message do |actual|
32
- format(%(expected that command "%s" has exit status of "%s", but has "%s".), @old_actual.commandline, expected.to_s, actual.to_s)
32
+ format(
33
+ %(expected that command "%s" has exit status of "%s", but has "%s".),
34
+ @old_actual.commandline,
35
+ expected.to_s,
36
+ actual.to_s
37
+ )
33
38
  end
34
39
 
35
40
  failure_message_when_negated do |actual|
36
- format(%(expected that command "%s" does not have exit status of "%s", but has "%s".), @old_actual.commandline, expected.to_s, actual.to_s)
41
+ format(
42
+ %(expected that command "%s" does not have exit status of "%s", but has "%s".),
43
+ @old_actual.commandline,
44
+ expected.to_s,
45
+ actual.to_s
46
+ )
37
47
  end
38
48
  end
@@ -4,7 +4,7 @@ require 'rspec/expectations/version'
4
4
  # This matchers checks if <command> run too long. Say the timeout is 10
5
5
  # seconds and it takes <command> to finish in 15. This matchers will succeed.
6
6
  #
7
- # @return [TrueClass, FalseClass] The result
7
+ # @return [Boolean] The result
8
8
  #
9
9
  # false:
10
10
  # * if command not to run too long
@@ -24,7 +24,7 @@ RSpec::Matchers.define :have_finished_in_time do
24
24
  @old_actual = actual
25
25
  @actual = @old_actual.commandline
26
26
 
27
- next false unless @old_actual.respond_to? :timed_out?
27
+ raise "Expected #{@old_actual} to respond to #timed_out?" unless @old_actual.respond_to? :timed_out?
28
28
 
29
29
  @old_actual.stop
30
30
 
@@ -32,6 +32,4 @@ RSpec::Matchers.define :have_finished_in_time do
32
32
  end
33
33
  end
34
34
 
35
- if RSpec::Expectations::Version::STRING >= '3.1'
36
- RSpec::Matchers.define_negated_matcher :run_too_long, :have_finished_in_time
37
- end
35
+ RSpec::Matchers.define_negated_matcher :run_too_long, :have_finished_in_time
@@ -1,7 +1,9 @@
1
+ require 'aruba/matchers/base/message_indenter'
2
+
1
3
  # @!method have_output
2
4
  # This matchers checks if <command> has created output
3
5
  #
4
- # @return [TrueClass, FalseClass] The result
6
+ # @return [Boolean] The result
5
7
  #
6
8
  # false:
7
9
  # * if command has not created output
@@ -17,7 +19,7 @@ RSpec::Matchers.define :have_output do |expected|
17
19
  match do |actual|
18
20
  @old_actual = actual
19
21
 
20
- next false unless @old_actual.respond_to? :output
22
+ raise "Expected #{@old_actual} to respond to #output" unless @old_actual.respond_to? :output
21
23
 
22
24
  @old_actual.stop
23
25
 
@@ -29,8 +31,11 @@ RSpec::Matchers.define :have_output do |expected|
29
31
  diffable
30
32
 
31
33
  description { "have output: #{description_of expected}" }
32
- end
33
34
 
34
- if RSpec::Expectations::Version::STRING >= '3.0'
35
- RSpec::Matchers.alias_matcher :a_command_having_output, :have_output
35
+ failure_message do |_actual|
36
+ "expected `#{@old_actual.commandline}` to have output #{description_of expected}\n" \
37
+ "but was:\n#{Aruba::Matchers::Base::MessageIndenter.indent_multiline_message @actual}"
38
+ end
36
39
  end
40
+
41
+ RSpec::Matchers.alias_matcher :a_command_having_output, :have_output