aruba 0.14.10 → 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 -25
  11. data/.yardopts +3 -0
  12. data/CHANGELOG.md +585 -248
  13. data/CONTRIBUTING.md +247 -45
  14. data/Dockerfile +67 -0
  15. data/Gemfile +5 -106
  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 +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 +136 -95
  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 +42 -79
  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 +12 -104
  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 +20 -51
  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 +28 -30
  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 +40 -41
  115. data/lib/aruba/rspec.rb +14 -36
  116. data/lib/aruba/runtime.rb +3 -6
  117. data/lib/aruba/setup.rb +6 -6
  118. data/lib/aruba/tasks/docker_helpers.rb +154 -0
  119. data/lib/aruba/version.rb +1 -1
  120. metadata +190 -236
  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 -263
  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 -92
  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 -52
  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/jruby.rb +0 -5
  226. data/features/support/simplecov_setup.rb +0 -11
  227. data/fixtures/spawn_process/stderr.sh +0 -3
  228. data/lib/aruba/api/deprecated.rb +0 -1163
  229. data/lib/aruba/config.rb +0 -107
  230. data/lib/aruba/cucumber/core.rb +0 -5
  231. data/lib/aruba/cucumber/deprecated.rb +0 -93
  232. data/lib/aruba/cucumber/rvm.rb +0 -3
  233. data/lib/aruba/in_process.rb +0 -16
  234. data/lib/aruba/jruby.rb +0 -4
  235. data/lib/aruba/matchers/deprecated/file.rb +0 -17
  236. data/lib/aruba/matchers/deprecated.rb +0 -1
  237. data/lib/aruba/matchers/path/match_path_pattern.rb +0 -41
  238. data/lib/aruba/matchers/rspec_matcher_include_regexp.rb +0 -25
  239. data/lib/aruba/platforms/disk_usage_calculator.rb +0 -20
  240. data/lib/aruba/reporting.rb +0 -126
  241. data/lib/aruba/spawn_process.rb +0 -14
  242. data/script/bootstrap +0 -24
  243. data/script/console +0 -16
  244. data/script/test +0 -3
  245. data/spec/aruba/api/bundler_spec.rb +0 -15
  246. data/spec/aruba/api/core_spec.rb +0 -142
  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 -97
  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
data/CONTRIBUTING.md CHANGED
@@ -1,71 +1,273 @@
1
- ## About to create a new Github Issue?
1
+ # Contributing to the Cucumber Aruba Project
2
2
 
3
- We appreciate that. But before you do, please learn our basic rules:
3
+ ## Introduction
4
4
 
5
- * This is not a support forum. If you have a question, please go to [The Cukes Google Group](http://groups.google.com/group/cukes).
6
- * Do you have an idea for a new feature? Then don't expect it to be implemented unless you or someone else sends a [pull request](https://help.github.com/articles/using-pull-requests). You might be better to start a discussion on [the google group](http://groups.google.com/group/cukes).
7
- * Reporting a bug? Please tell us:
8
- * which version of Aruba you're using
9
- * which version of Ruby you're using.
10
- * How to reproduce it. Bugs with a failing test in a [pull request](https://help.github.com/articles/using-pull-requests) get fixed much quicker. Some bugs may never be fixed.
11
- * Want to paste some code or output? Put \`\`\` on a line above and below your code/output. See [GFM](https://help.github.com/articles/github-flavored-markdown)'s *Fenced Code Blocks* for details.
12
- * We love [pull requests](https://help.github.com/articles/using-pull-requests). But if you don't have a test to go with it we probably won't merge it.
5
+ We would love to get help from you as a **user** and a **contributor**.
13
6
 
14
- # Contributing to Aruba
7
+ ### As a **User**
15
8
 
16
- This document is a guide for those maintaining Aruba, and others who would like to submit patches.
9
+ * Tell us how "Aruba" works for you
10
+ * Spread the word if you like our work and please tell us if something is (utterly) wrong
11
+ * Encourage people in testing their code and keep communicating their needs
17
12
 
18
- ## Note on Patches/Pull Requests
13
+ ### As a **Contributor**
14
+
15
+ * Send us bug fixes
16
+ * Add new features to the code
17
+ * Discuss changes
18
+ * Add missing documentation
19
+ * Improve our test coverage
20
+
21
+ The rest of this document is a guide for those maintaining Aruba, and others
22
+ who would like to submit patches.
23
+
24
+ ## Contributing to the Aruba project
25
+
26
+ It would be great if all people who want to contribute to the Aruba project
27
+ — contributors and maintainers — follow the guidelines in this
28
+ section. There are also "Getting started" sections both for
29
+ [contributors](#getting-started-as-a-contributor) and
30
+ [maintainers](#getting-started-as-a-maintainer).
31
+
32
+ ### Issues
33
+
34
+ About to create a new GitHub Issue? We appreciate that. But before you do,
35
+ please learn our basic rules:
36
+
37
+ * This is not a support forum. If you have a question, please go to
38
+ [The Cukes Google Group](http://groups.google.com/group/cukes).
39
+ * Do you have an idea for a new feature? Then don't expect it to be implemented
40
+ unless you or someone else submits a
41
+ [pull request](https://help.github.com/articles/using-pull-requests). It
42
+ might be better to start a discussion on
43
+ [the Google Group](http://groups.google.com/group/cukes).
44
+ * Reporting a bug? Follow our comments in the Issue Template, which is
45
+ pre-filled when you create the new GitHub Issue.
46
+ * We love [pull requests](https://help.github.com/articles/using-pull-requests).
47
+ The same here: Please consider our comments within the pull request template.
48
+
49
+ ### Pull Requests
50
+
51
+ #### Contributors
52
+
53
+ Please...
19
54
 
20
55
  * Fork the project. Make a branch for your change.
21
- * Make your feature addition or bug fix.
22
- * Make sure your patch is well covered by tests. We don't accept changes that aren't tested.
23
- * Please do not change the Rakefile, version, or history.
24
- (if you want to have your own version, that is fine but
25
- bump version in a commit by itself so we can ignore when we merge your change)
56
+ * Make your feature addition or bug fix — if you're unsure if your
57
+ addition will be accepted, open a GitHub Issue for discussion first
58
+ * Make sure your patch is well covered by tests. We don't accept changes that
59
+ aren't tested.
60
+ * Do not change the `Rakefile`, gem version number in `version.rb`, or
61
+ [`CHANGELOG.md`][].
62
+ (If you want to have your own version, that is fine but bump version in a
63
+ separate commit, so that we can ignore that commit when we merge your change.)
64
+ * Make sure your pull request complies with our development style guidelines.
65
+ * Rebase your branch if needed. This reduces clutter in our git history.
66
+ * Make sure you don't break other people's code. On major changes: First
67
+ deprecate, then bump major version, then make breaking changes,
68
+ * Split up your changes into reviewable git commits which combine all
69
+ lines/files relevant for a single change.
26
70
  * Send us a pull request.
27
71
 
28
- ## Bootstrap environment
72
+ #### Maintainers
73
+
74
+ * Use pull requests for larger or controversial changes made by yourself or
75
+ changes you might expected to break the build.
76
+ * Commit smaller changes directly to master, e.g. fixing typos, adding tests or
77
+ adding documentation.
78
+ * Update [`CHANGELOG.md`][] when a pull request is merged.
79
+ * Make sure all tests are green before merging a pull request.
80
+
81
+ ### Development style guidelines
82
+
83
+ * We try to follow the recommendations in the
84
+ [Ruby Community Style Guide][] and use
85
+ [`rubocop`][] to "enforce" it. Please see
86
+ [.rubocop.yml][] for exceptions.
87
+ * There should be `action` methods and `getter` methods in Aruba. Only the
88
+ latter should return values. Please expect the first ones to return `nil`.
89
+ * Add documentation — aka acceptance tests — for new features
90
+ using Aruba's Cucumber steps. Place them somewhere suitable in [features/].
91
+ * Add unit tests where needed to cover edge cases which are not (directly)
92
+ relevant for users.
93
+ * Add [YARD] developer documentation to all relevant methods added.
94
+ * Format your commit messages following these seven rules — see
95
+ the ["How to Write a Git Commit Message"] blog post for a well-written
96
+ explanation about the why.
97
+ 1. Separate subject from body with a blank line
98
+ 2. Limit the subject line to 50 characters
99
+ 3. Capitalize the subject line
100
+ 4. Do not end the subject line with a period
101
+ 5. Use the imperative mood in the subject line
102
+ 6. Wrap the body at 72 characters
103
+ 7. Use the body to explain what and why vs. how (optional if subject is self-explanatory)
104
+
105
+ ## Getting started as a "Contributor"
106
+
107
+ ### Requirements
108
+
109
+ To get started with Aruba, you only need [Bundler].
110
+
111
+ Install Aruba's dependencies:
112
+
113
+ ```bash
114
+ bundle install
115
+ ```
116
+
117
+ ### Running tests
118
+
119
+ Run the following command to run the test suite.
120
+
121
+ ```bash
122
+ # Run the test suite
123
+ bin/test
124
+ ```
125
+
126
+ Or use these Rake tasks:
127
+
128
+ ```bash
129
+ # Run the whole test suite
130
+ rake test
131
+ # Run RSpec tests
132
+ rake spec
133
+ # Run Cucumber features
134
+ rake cucumber
135
+ # Run Cucumber features which are "WORK IN PROGRESS" and are allowed to fail
136
+ rake cucumber:wip
137
+ ```
29
138
 
30
- To get started with `aruba`, you just need to bootstrap the environment by
31
- running the following command.
139
+ If you have problems because our assumptions about your local setup are wrong,
140
+ perhaps you can use this Docker workflow. This requires [Docker] to be
141
+ installed on your local system.
32
142
 
33
- # Bootstrap environment
34
- script/bootstrap
143
+ ```bash
144
+ # Build the docker container
145
+ bundle exec rake docker:build
35
146
 
36
- ## Running tests
147
+ # Alternative: Build with disabled cache
148
+ bundle exec rake 'docker:build[false]'
37
149
 
38
- Make sure you bootstrap the environment first.
150
+ # Build image with version tag
151
+ bundle exec rake 'docker:build[false, 0.1.0]'
39
152
 
40
- # Run the test suite
41
- script/test
153
+ # Run the whole test suite in "docker"-container
154
+ RUN_IN_DOCKER=1 bin/test
42
155
 
43
- ## Release Process
156
+ # Run only selected scenario
157
+ RUN_IN_DOCKER=1 bin/test cucumber features/steps/command/shell.feature:14
158
+ ```
44
159
 
45
- * Bump the version number in `aruba.gemspec`
46
- * Make sure `History.md` is updated with the upcoming version number, and has entries for all fixes.
47
- * No need to add a `History.md` header at this point - this should be done when a new change is made, later.
160
+ ### Installing your own gems used for development
48
161
 
49
- Now release it
162
+ A `Gemfile.local` file can be used, to have your own gems installed to support
163
+ your normal development workflow.
50
164
 
51
- bundle update
52
- bundle exec rake
53
- git commit -m "Release X.Y.Z"
54
- rake release
165
+ Example `Gemfile.local`:
55
166
 
56
- Now email cukes@googlegroups.com with details of the new release. Just a copy / paste from the History.md file is normally fine.
167
+ ```ruby
168
+ gem 'pry'
169
+ gem 'pry-byebug'
170
+ gem 'byebug'
171
+ ```
57
172
 
58
- ## Gaining Release Karma
173
+ ### Running a developer console
59
174
 
60
- To become a release manager, create a pull request adding your name to the list below, and include your Rubygems email address in the ticket. One of the existing Release managers will then add you.
175
+ The interactive Aruba console starts an IRB console with Aruba's API loaded:
176
+
177
+ ```bash
178
+ bin/console
179
+ ```
180
+
181
+ ### Linting
182
+
183
+ Aruba's Rakefile provides the following linting tasks
184
+
185
+ ```bash
186
+ bundle exec rake lint # Run all linters
187
+ bundle exec rake lint:coding_guidelines # Lint our code with "rubocop"
188
+ bundle exec rake lint:licenses # Check for relevant licenses in project
189
+ ```
190
+
191
+ ### Building and installing your local Aruba version
192
+
193
+ You can use the following Rake tasks to build and install your work-in-progress locally:
194
+
195
+ ```bash
196
+ # Build your copy
197
+ bundle exec rake build
198
+ # Build and install your copy
199
+ bundle exec rake install
200
+ # Build and install your copy without network access
201
+ bundle exec rake install:local
202
+ ```
203
+
204
+ ## Getting started as a "Maintainer"
205
+
206
+ ### Release Process
207
+
208
+ * Bump the version number in `lib/aruba/version.rb`
209
+ * Make sure [`CHANGELOG.md`] is updated with the upcoming version number, and has
210
+ entries for all fixes.
211
+ * No need to add a [`CHANGELOG.md`] header at this point - this should be done
212
+ later, when a new change is made.
213
+ * If a major version is released, update the `still` branch, which points to
214
+ the "old" major version.
215
+
216
+ Now release it:
217
+
218
+ ```bash
219
+ # update dependencies
220
+ bundle update
221
+
222
+ # Run test suite
223
+ bin/test
224
+
225
+ # Release gem
226
+ git commit -m "Version bump"
227
+ bundle exec rake release
228
+
229
+ # If it's a major relase:
230
+ # Merge changes back to have correct documentation
231
+ git checkout still
232
+ git merge master
233
+ git push
234
+ ```
235
+
236
+ Now send a PR to [cucumber/website] adding an article
237
+ with details of the new release. Then merge it - an aruba maintainer should
238
+ normally be allowed to merge PRs on [cucumber/website]. A copy of an old
239
+ announcement can be used as basis for the new article.
240
+
241
+ Now, send an email with the link to the article to `cukes@googlegroups.com`.
242
+
243
+ ### Gaining Release Karma
244
+
245
+ To become a release manager, create a pull request adding your name to the list
246
+ below, and include your Rubygems email address in the ticket. One of the
247
+ existing Release managers will then add you.
61
248
 
62
249
  Current release managers:
63
- * Jarl Friis ([@jarl-dk](https://github.com/jarl-dk))
64
- * Matt Wynne ([@mattwynne](http://github.com/mattwynne))
65
- * Aslak Hellesøy ([@aslakhellesoy](http://github.com/aslakhellesoy))
66
- * Tom Brand ([@tom025](https://github.com/tom025))
67
- * Dennis Günnewig ([@maxmeyer](http://github.com/maxmeyer), [@dg-rationdata](http://github.com/dg-rationdata))
250
+ * Aslak Hellesøy ([@aslakhellesoy](https://github.com/aslakhellesoy))
251
+ * Matt Wynne ([@mattwynne](https://github.com/mattwynne))
252
+ * Matijs van Zuijlen ([@mvz](https://github.com/mvz))
68
253
 
69
254
  To grant release karma, issue the following command:
70
255
 
71
- gem owner aruba --add <NEW OWNER RUBYGEMS EMAIL>
256
+ ```bash
257
+ gem owner aruba --add <NEW OWNER RUBYGEMS EMAIL>
258
+ ```
259
+
260
+ [`CHANGELOG.md`]: CHANGELOG.md
261
+ [CHANGELOG.md]: CHANGELOG.md
262
+
263
+ [`rubocop`]: https://github.com/bbatsov/rubocop
264
+ [Ruby Community Style Guide]: https://github.com/bbatsov/ruby-style-guide
265
+ [.rubocop.yml]: .rubocop.yml
266
+ [features/]: features/
267
+
268
+ [Bundler]: https://bundler.io/
269
+
270
+ [Docker]: https://docs.docker.com/
271
+ [YARD]: http://yardoc.org/
272
+ ["How to Write a Git Commit Message"]: http://chris.beams.io/posts/git-commit/
273
+ [cucumber/website]: https://github.com/cucumber/website
data/Dockerfile ADDED
@@ -0,0 +1,67 @@
1
+ FROM ubuntu:14.04
2
+ MAINTAINER Aruba Maintainers <cukes-devs@googlegroups.com>
3
+
4
+ # Packages needed to install RVM and run Bundler gem commands
5
+ RUN apt-get update -qq \
6
+ && apt-get -y install ca-certificates curl git-core --no-install-recommends \
7
+ && rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin
8
+
9
+ # Create guest user early (before rvm) so uid:gid are 1000:000
10
+ RUN useradd -m -s /bin/bash guest
11
+
12
+ # Temporarily install RVM as root - just for requirements
13
+ RUN gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 \
14
+ && curl -L get.rvm.io | bash -s stable \
15
+ && bash -l -c 'rvm requirements 2.2.1' \
16
+ && bash -l -c 'echo yes | rvm implode' \
17
+
18
+ # Fix locale
19
+ ENV DEBIAN_FRONTEND noninteractive
20
+ RUN dpkg-reconfigure locales && locale-gen en_US.UTF-8 && /usr/sbin/update-locale LANG=en_US.UTF-8 \
21
+ && echo 'en_US.UTF-8 UTF-8' >> /etc/locale.gen && locale-gen
22
+ ENV LC_ALL C.UTF-8
23
+ ENV LANG C.UTF-8
24
+ ENV LANGUAGE C.UTF-8
25
+
26
+ # Zsh (just for the sake of a handful of Cucumber scenarios)
27
+ RUN apt-get update -qq \
28
+ && apt-get -y install zsh --no-install-recommends \
29
+ && rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin
30
+
31
+ # Python (just for the sake of a handful of Cucumber scenarios)
32
+ RUN apt-get update -qq \
33
+ && apt-get -y install python --no-install-recommends \
34
+ && rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin
35
+
36
+ # Java (for javac - also for just a few Cucumber scenarios)
37
+ RUN apt-get update -qq \
38
+ && apt-get -y install openjdk-7-jdk --no-install-recommends \
39
+ && rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin
40
+
41
+ # Cache needed gems - for faster test reruns
42
+ ADD Gemfile Gemfile.lock aruba.gemspec /home/guest/cache/aruba/
43
+ ADD lib/aruba/version.rb /home/guest/cache/aruba/lib/aruba/version.rb
44
+ RUN chown -R guest:guest /home/guest/cache
45
+
46
+ USER guest
47
+ ENV HOME /home/guest
48
+ WORKDIR /home/guest
49
+
50
+ # Install RVM as guest
51
+ RUN gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 \
52
+ && /bin/bash -l -c "echo 'gem: --no-ri --no-rdoc' > ~/.gemrc" \
53
+ && curl -L get.rvm.io | bash -s stable \
54
+ && /bin/bash -l -c "rvm install 2.3.0 && rvm cleanup all" \
55
+ && /bin/bash -l -c "gem install bundler --no-ri --no-rdoc" \
56
+ && echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"' >> ~/.bashrc \
57
+ && echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"' >> ~/.zshrc
58
+
59
+ # Download and install aruba + dependencies
60
+ WORKDIR /home/guest/cache/aruba
61
+ RUN bash -l -c "bundle install"
62
+
63
+ # Default working directory
64
+ RUN mkdir -p /home/guest/aruba
65
+ WORKDIR /home/guest/aruba
66
+
67
+ CMD ["bundle exec rake test"]
data/Gemfile CHANGED
@@ -3,111 +3,10 @@ source 'https://rubygems.org'
3
3
  # Use dependencies from gemspec
4
4
  gemspec
5
5
 
6
- # Debug aruba
7
- group :debug do
8
- unless RUBY_PLATFORM.include?('java')
9
- if RUBY_VERSION >= '2.2'
10
- gem 'byebug', '~> 10.0'
11
- gem 'pry-byebug', '~> 3.4'
12
- elsif RUBY_VERSION >= '2'
13
- gem 'byebug', '~> 9.0'
14
- gem 'pry-byebug', '~> 3.4'
15
- elsif RUBY_VERSION > '1.9'
16
- gem 'debugger', '~> 1.6.8'
17
- gem 'pry-debugger', '~> 0.2.3'
18
- end
19
- end
6
+ # Load local Gemfile
7
+ load File.expand_path('Gemfile.local', __dir__) if File.file? File.expand_path('Gemfile.local', __dir__)
20
8
 
21
- if RUBY_VERSION < '2'
22
- gem 'pry-doc', '~> 0.8.0'
23
- else
24
- gem 'pry-doc', '~> 1.0.0'
25
- end
26
- end
27
-
28
- # Tools to run during development
29
- group :development do
30
- # License compliance
31
- if RUBY_VERSION >= '2.3'
32
- gem 'license_finder', '~> 5.0'
33
- elsif RUBY_VERSION >= '2.0.0'
34
- gem 'license_finder', '~> 2.0.4'
35
- end
36
- end
37
-
38
- group :development, :test do
39
- # we use this to demonstrate interactive debugging within our feature tests
40
- if RUBY_VERSION >= '2'
41
- gem 'pry', '~> 0.12.2'
42
- else
43
- gem 'pry', '~> 0.9.12'
44
- end
45
-
46
- # Run development and test tasks
47
- if RUBY_VERSION >= '2.0.0'
48
- gem 'rake', '~> 12.3'
49
- elsif RUBY_VERSION >= '1.9.3'
50
- gem 'rake', '~> 12.2.0'
51
- else
52
- gem 'rake', '~> 10.5.0'
53
- end
54
-
55
- if RUBY_VERSION >= '2.0.0'
56
- # Lint travis yaml
57
- gem 'travis-yaml'
58
-
59
- # Reporting
60
- gem 'bcat', '~> 0.6.2'
61
- end
62
-
63
- # YARD documentation
64
- if RUBY_VERSION >= '2.3.0'
65
- gem 'yard', '~> 0.9.11'
66
- gem 'kramdown', '~> 2.1'
67
- elsif RUBY_VERSION >= '2.0.0'
68
- gem 'yard', '~> 0.9.11'
69
- gem 'kramdown', '~> 1.7.0'
70
- end
71
-
72
- # Code Coverage
73
- gem 'simplecov', '~> 0.10' unless RUBY_PLATFORM.include?('java')
74
-
75
- # Test api
76
- gem 'rspec', '~> 3.4'
77
- gem 'fuubar', '~> 2.0'
78
-
79
- # using platform for this make bundler complain about the same gem given
80
- # twice
81
- if RUBY_VERSION < '1.9.3'
82
- gem 'cucumber', '~> 1.3.20'
83
- else
84
- gem 'cucumber', '~> 2.0'
85
- end
86
-
87
- if RUBY_VERSION < '1.9.2'
88
- gem 'childprocess', '~> 0.6.3'
89
- else
90
- gem 'childprocess', '~> 1.0.1'
91
- end
92
-
93
- if RUBY_VERSION < '1.9.2'
94
- gem 'contracts', '~> 0.15.0'
95
- else
96
- gem 'contracts', '~> 0.16.0'
97
- end
98
-
99
- if RUBY_VERSION >= '2.0.0'
100
- # Make aruba compliant to ruby community guide
101
- gem 'rubocop', '~> 0.32', '< 0.41.1'
102
- end
103
-
104
- if RUBY_VERSION >= '1.9.3'
105
- gem 'cucumber-pro', '~> 0.0'
106
- end
107
-
108
- if RUBY_VERSION < '2.0.0'
109
- gem 'ffi', '< 1.11.0'
110
- end
111
-
112
- gem 'minitest', '~> 5.8'
9
+ unless RUBY_PLATFORM.include?('java')
10
+ gem 'byebug', '~> 11.0'
11
+ gem 'pry-byebug', '~> 3.4'
113
12
  end
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2010-2016 Aslak Hellesøy, David Chelimsky, Mike Sassak, Jarl Friis, Matt Wynne, Dennis Günnewig
1
+ Copyright (c) 2010-2020 Aslak Hellesøy, David Chelimsky, Mike Sassak, Jarl Friis, Matt Wynne, Dennis Günnewig and Matijs van Zuijlen
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the