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
@@ -3,10 +3,8 @@ require 'aruba/api'
3
3
  require 'aruba/platform'
4
4
  World(Aruba::Api)
5
5
 
6
- if Aruba::VERSION >= '1.0.0'
7
- Around do |_, block|
8
- Aruba.platform.with_environment(&block)
9
- end
6
+ Around do |_, block|
7
+ with_environment(&block)
10
8
  end
11
9
 
12
10
  Before do
@@ -44,12 +42,6 @@ Before('@announce-command-filesystem-status') do
44
42
  aruba.announcer.activate :command_filesystem_status
45
43
  end
46
44
 
47
- Before('@announce-cmd') do
48
- Aruba.platform.deprecated 'The use of "@announce-cmd"-hook is deprecated. Please use "@announce-command"'
49
-
50
- aruba.announcer.activate :command
51
- end
52
-
53
45
  Before('@announce-output') do
54
46
  aruba.announcer.activate :stdout
55
47
  aruba.announcer.activate :stderr
@@ -63,12 +55,6 @@ Before('@announce-stderr') do
63
55
  aruba.announcer.activate :stderr
64
56
  end
65
57
 
66
- Before('@announce-dir') do
67
- Aruba.platform.deprecated 'The use of "@announce-dir"-hook is deprecated. Please use "@announce-directory"'
68
-
69
- aruba.announcer.activate :directory
70
- end
71
-
72
58
  Before('@announce-directory') do
73
59
  aruba.announcer.activate :directory
74
60
  end
@@ -77,28 +63,10 @@ Before('@announce-stop-signal') do
77
63
  aruba.announcer.activate :stop_signal
78
64
  end
79
65
 
80
- Before('@announce-env') do
81
- Aruba.platform.deprecated 'The use of "@announce-env"-hook is deprecated. Please use "@announce-changed-environment"'
82
-
83
- aruba.announcer.activate :environment
84
- end
85
-
86
- Before('@announce-environment') do
87
- Aruba.platform.deprecated '@announce-environment is deprecated. Use @announce-changed-environment instead'
88
-
89
- aruba.announcer.activate :changed_environment
90
- end
91
-
92
66
  Before('@announce-full-environment') do
93
67
  aruba.announcer.activate :full_environment
94
68
  end
95
69
 
96
- Before('@announce-modified-environment') do
97
- Aruba.platform.deprecated '@announce-modified-environment is deprecated. Use @announce-changed-environment instead'
98
-
99
- aruba.announcer.activate :changed_environment
100
- end
101
-
102
70
  Before('@announce-changed-environment') do
103
71
  aruba.announcer.activate :changed_environment
104
72
  end
@@ -127,37 +95,30 @@ Before('@announce') do
127
95
  aruba.announcer.activate :command_filesystem_status
128
96
  end
129
97
 
130
- Before('@debug') do
131
- aruba.config.command_launcher = :debug
98
+ Before('@keep-ansi-escape-sequences') do
99
+ aruba.config.remove_ansi_escape_sequences = false
132
100
  end
133
101
 
134
- # After('@debug') do
135
- # aruba.config.command_launcher = :spawn
136
- # end
137
-
138
- Before('@ansi') do
139
- # rubocop:disable Metrics/LineLength
140
- Aruba::Platform.deprecated('The use of "@ansi" is deprecated. Use "@keep-ansi-escape-sequences" instead. But be aware, that this hook uses the aruba configuration and not an instance variable')
141
- # rubocop:enable Metrics/LineLength
142
-
143
- aruba.config.remove_ansi_escape_sequences = false
102
+ Before '@mocked-home-directory' do
103
+ set_environment_variable 'HOME', expand_path('.')
144
104
  end
145
105
 
146
- Before('@keep-ansi-escape-sequences') do
147
- aruba.config.remove_ansi_escape_sequences = false
148
- aruba.config.keep_ansi = true
106
+ Before('@disable-bundler') do
107
+ unset_bundler_env_vars
149
108
  end
150
109
 
151
- Before '@mocked_home_directory' do
152
- Aruba.platform.deprecated('The use of "@mocked_home_directory" is deprecated. Use "@mocked-home-directory" instead')
110
+ Before('@debug') do
111
+ aruba.config.command_launcher = :debug
112
+ end
153
113
 
154
- set_environment_variable 'HOME', expand_path('.')
114
+ Before('@command-launcher-spawn') do
115
+ aruba.config.command_launcher = :spawn
155
116
  end
156
117
 
157
- Before '@mocked-home-directory' do
158
- set_environment_variable 'HOME', expand_path('.')
118
+ Before('@command-launcher-in-process') do
119
+ aruba.config.command_launcher = :in_process
159
120
  end
160
121
 
161
- Before('@disable-bundler') do
162
- unset_bundler_env_vars
122
+ Before('@command-launcher-debug') do
123
+ aruba.config.command_launcher = :debug
163
124
  end
@@ -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,13 +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
6
  require 'aruba/cucumber/environment'
10
7
  require 'aruba/cucumber/file'
11
8
  require 'aruba/cucumber/testing_frameworks'
12
- require 'aruba/cucumber/rvm'
13
- 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