aruba-win-fix 0.14.2

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 (324) hide show
  1. checksums.yaml +7 -0
  2. data/.document +5 -0
  3. data/.gitignore +37 -0
  4. data/.rspec +3 -0
  5. data/.rubocop.yml +188 -0
  6. data/.simplecov +34 -0
  7. data/.travis.yml +47 -0
  8. data/.yardopts +8 -0
  9. data/CONTRIBUTING.md +71 -0
  10. data/Gemfile +83 -0
  11. data/History.md +579 -0
  12. data/LICENSE +20 -0
  13. data/README.md +226 -0
  14. data/Rakefile +49 -0
  15. data/TODO.md +13 -0
  16. data/appveyor.yml +32 -0
  17. data/aruba.gemspec +48 -0
  18. data/bin/aruba +7 -0
  19. data/config/.gitignore +1 -0
  20. data/cucumber.yml +26 -0
  21. data/features/.nav +72 -0
  22. data/features/api/command/find_command.feature +83 -0
  23. data/features/api/command/last_command_started.feature +50 -0
  24. data/features/api/command/last_command_stopped.feature +89 -0
  25. data/features/api/command/run.feature +414 -0
  26. data/features/api/command/run_simple.feature +242 -0
  27. data/features/api/command/send_signal.feature +53 -0
  28. data/features/api/command/stderr.feature +46 -0
  29. data/features/api/command/stdout.feature +46 -0
  30. data/features/api/command/stop.feature +131 -0
  31. data/features/api/command/stop_all_commands.feature +53 -0
  32. data/features/api/command/terminate_all_commands.feature +53 -0
  33. data/features/api/command/which.feature +37 -0
  34. data/features/api/core/expand_path.feature +88 -0
  35. data/features/api/environment/append_environment_variable.feature +128 -0
  36. data/features/api/environment/delete_environment_variable.feature +63 -0
  37. data/features/api/environment/prepend_environment_variable.feature +128 -0
  38. data/features/api/environment/set_environment_variable.feature +376 -0
  39. data/features/api/filesystem/cd.feature +184 -0
  40. data/features/api/filesystem/create_directory.feature +57 -0
  41. data/features/api/filesystem/disk_usage.feature +152 -0
  42. data/features/api/filesystem/does_exist.feature +62 -0
  43. data/features/api/filesystem/fixtures.feature +104 -0
  44. data/features/api/filesystem/is_absolute.feature +48 -0
  45. data/features/api/filesystem/is_directory.feature +53 -0
  46. data/features/api/filesystem/is_file.feature +54 -0
  47. data/features/api/filesystem/is_relative.feature +48 -0
  48. data/features/api/filesystem/move.feature +119 -0
  49. data/features/api/text/extract_text.feature +87 -0
  50. data/features/api/text/replace_variables.feature +45 -0
  51. data/features/api/text/sanitize_text.feature +228 -0
  52. data/features/api/text/unescape_text.feature +127 -0
  53. data/features/cli/console.feature +52 -0
  54. data/features/cli/init.feature +79 -0
  55. data/features/configuration/activate_announcer_on_command_failure.feature +38 -0
  56. data/features/configuration/command_runtime_environment.feature +129 -0
  57. data/features/configuration/console_history_file.feature +38 -0
  58. data/features/configuration/exit_timeout.feature +52 -0
  59. data/features/configuration/fixtures_directories.feature +38 -0
  60. data/features/configuration/fixtures_path_prefix.feature +23 -0
  61. data/features/configuration/home_directory.feature +80 -0
  62. data/features/configuration/io_timeout.feature +30 -0
  63. data/features/configuration/keep_ansi.feature +30 -0
  64. data/features/configuration/log_level.feature +38 -0
  65. data/features/configuration/physical_block_size.feature +53 -0
  66. data/features/configuration/remove_ansi_escape_sequences.feature +38 -0
  67. data/features/configuration/root_directory.feature +30 -0
  68. data/features/configuration/startup_wait_time.feature +48 -0
  69. data/features/configuration/usage.feature +159 -0
  70. data/features/configuration/working_directory.feature +33 -0
  71. data/features/development/build.feature +15 -0
  72. data/features/development/test.feature +24 -0
  73. data/features/getting_started/cleanup.feature +67 -0
  74. data/features/getting_started/install.feature +8 -0
  75. data/features/getting_started/run_commands.feature +177 -0
  76. data/features/getting_started/supported_testing_frameworks.feature +104 -0
  77. data/features/getting_started/writing_good_feature_tests.feature +38 -0
  78. data/features/hooks/after/command.feature +44 -0
  79. data/features/hooks/before/command.feature +71 -0
  80. data/features/matchers/collection/include_an_object.feature +72 -0
  81. data/features/matchers/directory/have_sub_directory.feature +110 -0
  82. data/features/matchers/file/be_a_command_found_in_path.feature +115 -0
  83. data/features/matchers/file/be_existing_executable.feature +88 -0
  84. data/features/matchers/file/be_existing_file.feature +82 -0
  85. data/features/matchers/file/have_file_content.feature +123 -0
  86. data/features/matchers/file/have_file_size.feature +107 -0
  87. data/features/matchers/path/be_an_absolute_path.feature +74 -0
  88. data/features/matchers/path/be_an_existing_path.feature +97 -0
  89. data/features/matchers/path/have_permissions.feature +118 -0
  90. data/features/matchers/timeouts.feature +48 -0
  91. data/features/platforms/jruby.feature +14 -0
  92. data/features/rspec/integration.feature +179 -0
  93. data/features/step_definitions/aruba_dev_steps.rb +56 -0
  94. data/features/step_definitions/hooks.rb +96 -0
  95. data/features/steps/command/debug.feature +92 -0
  96. data/features/steps/command/exit_statuses.feature +136 -0
  97. data/features/steps/command/in_process.feature +485 -0
  98. data/features/steps/command/interactive.feature +90 -0
  99. data/features/steps/command/output.feature +588 -0
  100. data/features/steps/command/run.feature +66 -0
  101. data/features/steps/command/send_signal.feature +104 -0
  102. data/features/steps/command/shell.feature +155 -0
  103. data/features/steps/command/stderr.feature +68 -0
  104. data/features/steps/command/stdout.feature +109 -0
  105. data/features/steps/command/stop.feature +313 -0
  106. data/features/steps/core/announce.feature +283 -0
  107. data/features/steps/environment/append_environment_variable.feature +52 -0
  108. data/features/steps/environment/home_variable.feature +62 -0
  109. data/features/steps/environment/prepend_environment_variable.feature +52 -0
  110. data/features/steps/environment/set_environment_variable.feature +49 -0
  111. data/features/steps/filesystem/append_to_file.feature +45 -0
  112. data/features/steps/filesystem/cd_to_directory.feature +33 -0
  113. data/features/steps/filesystem/check_file_content.feature +61 -0
  114. data/features/steps/filesystem/check_permissions_of_file.feature +39 -0
  115. data/features/steps/filesystem/compare_files.feature +42 -0
  116. data/features/steps/filesystem/copy.feature +45 -0
  117. data/features/steps/filesystem/create_directory.feature +57 -0
  118. data/features/steps/filesystem/create_file.feature +76 -0
  119. data/features/steps/filesystem/existence_of_directory.feature +57 -0
  120. data/features/steps/filesystem/existence_of_file.feature +43 -0
  121. data/features/steps/filesystem/file_content.feature +86 -0
  122. data/features/steps/filesystem/fixtures.feature +64 -0
  123. data/features/steps/filesystem/move.feature +45 -0
  124. data/features/steps/filesystem/non_existence_of_directory.feature +69 -0
  125. data/features/steps/filesystem/non_existence_of_file.feature +80 -0
  126. data/features/steps/filesystem/overwrite_file.feature +72 -0
  127. data/features/steps/filesystem/remove_directory.feature +38 -0
  128. data/features/steps/filesystem/remove_file.feature +38 -0
  129. data/features/steps/filesystem/use_fixture.feature +77 -0
  130. data/features/steps/overview.feature +60 -0
  131. data/features/support/aruba.rb +7 -0
  132. data/features/support/env.rb +33 -0
  133. data/features/support/jruby.rb +5 -0
  134. data/features/support/simplecov_setup.rb +8 -0
  135. data/fixtures/cli-app/.gitignore +9 -0
  136. data/fixtures/cli-app/.rspec +2 -0
  137. data/fixtures/cli-app/README.md +39 -0
  138. data/fixtures/cli-app/Rakefile +1 -0
  139. data/fixtures/cli-app/bin/cli +6 -0
  140. data/fixtures/cli-app/cli-app.gemspec +26 -0
  141. data/fixtures/cli-app/features/support/env.rb +1 -0
  142. data/fixtures/cli-app/lib/cli/app.rb +13 -0
  143. data/fixtures/cli-app/lib/cli/app/suppress_simple_cov_output.rb +15 -0
  144. data/fixtures/cli-app/lib/cli/app/version.rb +5 -0
  145. data/fixtures/cli-app/script/console +14 -0
  146. data/fixtures/cli-app/spec/spec_helper.rb +9 -0
  147. data/fixtures/cli-app/spec/support/aruba.rb +1 -0
  148. data/fixtures/copy/file.txt +1 -0
  149. data/fixtures/empty-app/.gitignore +9 -0
  150. data/fixtures/empty-app/.rspec +2 -0
  151. data/fixtures/empty-app/README.md +24 -0
  152. data/fixtures/empty-app/Rakefile +1 -0
  153. data/fixtures/empty-app/cli-app.gemspec +26 -0
  154. data/fixtures/empty-app/lib/cli/app.rb +13 -0
  155. data/fixtures/empty-app/lib/cli/app/version.rb +5 -0
  156. data/fixtures/getting-started-app/.gitignore +4 -0
  157. data/fixtures/getting-started-app/Gemfile +4 -0
  158. data/fixtures/getting-started-app/README.md +3 -0
  159. data/fixtures/getting-started-app/features/support/env.rb +1 -0
  160. data/fixtures/spawn_process/stderr.sh +3 -0
  161. data/lib/aruba.rb +1 -0
  162. data/lib/aruba/api.rb +34 -0
  163. data/lib/aruba/api/command.rb +307 -0
  164. data/lib/aruba/api/core.rb +191 -0
  165. data/lib/aruba/api/deprecated.rb +897 -0
  166. data/lib/aruba/api/environment.rb +89 -0
  167. data/lib/aruba/api/filesystem.rb +392 -0
  168. data/lib/aruba/api/rvm.rb +44 -0
  169. data/lib/aruba/api/text.rb +56 -0
  170. data/lib/aruba/aruba_path.rb +133 -0
  171. data/lib/aruba/basic_configuration.rb +240 -0
  172. data/lib/aruba/basic_configuration/option.rb +32 -0
  173. data/lib/aruba/cli.rb +26 -0
  174. data/lib/aruba/colorizer.rb +108 -0
  175. data/lib/aruba/command.rb +74 -0
  176. data/lib/aruba/config.rb +108 -0
  177. data/lib/aruba/config/jruby.rb +17 -0
  178. data/lib/aruba/config_wrapper.rb +58 -0
  179. data/lib/aruba/console.rb +70 -0
  180. data/lib/aruba/console/help.rb +35 -0
  181. data/lib/aruba/contracts/absolute_path.rb +20 -0
  182. data/lib/aruba/contracts/enum.rb +26 -0
  183. data/lib/aruba/contracts/is_power_of_two.rb +22 -0
  184. data/lib/aruba/contracts/relative_path.rb +20 -0
  185. data/lib/aruba/cucumber.rb +13 -0
  186. data/lib/aruba/cucumber/command.rb +422 -0
  187. data/lib/aruba/cucumber/core.rb +5 -0
  188. data/lib/aruba/cucumber/environment.rb +42 -0
  189. data/lib/aruba/cucumber/file.rb +201 -0
  190. data/lib/aruba/cucumber/hooks.rb +160 -0
  191. data/lib/aruba/cucumber/rvm.rb +3 -0
  192. data/lib/aruba/cucumber/testing_frameworks.rb +95 -0
  193. data/lib/aruba/errors.rb +37 -0
  194. data/lib/aruba/event_bus.rb +59 -0
  195. data/lib/aruba/event_bus/name_resolver.rb +168 -0
  196. data/lib/aruba/events.rb +39 -0
  197. data/lib/aruba/extensions/string/strip.rb +25 -0
  198. data/lib/aruba/file_size.rb +63 -0
  199. data/lib/aruba/generators/script_file.rb +46 -0
  200. data/lib/aruba/hooks.rb +56 -0
  201. data/lib/aruba/in_config_wrapper.rb +24 -0
  202. data/lib/aruba/in_process.rb +14 -0
  203. data/lib/aruba/initializer.rb +222 -0
  204. data/lib/aruba/jruby.rb +4 -0
  205. data/lib/aruba/matchers/base/base_matcher.rb +96 -0
  206. data/lib/aruba/matchers/base/object_formatter.rb +114 -0
  207. data/lib/aruba/matchers/collection.rb +1 -0
  208. data/lib/aruba/matchers/collection/all.rb +11 -0
  209. data/lib/aruba/matchers/collection/include_an_object.rb +122 -0
  210. data/lib/aruba/matchers/command.rb +1 -0
  211. data/lib/aruba/matchers/command/be_successfully_executed.rb +34 -0
  212. data/lib/aruba/matchers/command/have_exit_status.rb +38 -0
  213. data/lib/aruba/matchers/command/have_finished_in_time.rb +37 -0
  214. data/lib/aruba/matchers/command/have_output.rb +36 -0
  215. data/lib/aruba/matchers/command/have_output_on_stderr.rb +32 -0
  216. data/lib/aruba/matchers/command/have_output_on_stdout.rb +32 -0
  217. data/lib/aruba/matchers/command/have_output_size.rb +28 -0
  218. data/lib/aruba/matchers/directory.rb +1 -0
  219. data/lib/aruba/matchers/directory/be_an_existing_directory.rb +38 -0
  220. data/lib/aruba/matchers/directory/have_sub_directory.rb +53 -0
  221. data/lib/aruba/matchers/environment.rb +1 -0
  222. data/lib/aruba/matchers/file.rb +1 -0
  223. data/lib/aruba/matchers/file/be_a_command_found_in_path.rb +36 -0
  224. data/lib/aruba/matchers/file/be_an_existing_executable.rb +37 -0
  225. data/lib/aruba/matchers/file/be_an_existing_file.rb +38 -0
  226. data/lib/aruba/matchers/file/have_file_content.rb +62 -0
  227. data/lib/aruba/matchers/file/have_file_size.rb +47 -0
  228. data/lib/aruba/matchers/file/have_same_file_content.rb +48 -0
  229. data/lib/aruba/matchers/path.rb +1 -0
  230. data/lib/aruba/matchers/path/a_path_matching_pattern.rb +25 -0
  231. data/lib/aruba/matchers/path/be_an_absolute_path.rb +36 -0
  232. data/lib/aruba/matchers/path/be_an_existing_path.rb +37 -0
  233. data/lib/aruba/matchers/path/have_permissions.rb +64 -0
  234. data/lib/aruba/matchers/path/match_path_pattern.rb +41 -0
  235. data/lib/aruba/matchers/rspec_matcher_include_regexp.rb +25 -0
  236. data/lib/aruba/matchers/string.rb +1 -0
  237. data/lib/aruba/matchers/string/include_output_string.rb +36 -0
  238. data/lib/aruba/matchers/string/match_output_string.rb +37 -0
  239. data/lib/aruba/matchers/string/output_string_eq.rb +35 -0
  240. data/lib/aruba/platform.rb +25 -0
  241. data/lib/aruba/platforms/announcer.rb +232 -0
  242. data/lib/aruba/platforms/aruba_file_creator.rb +35 -0
  243. data/lib/aruba/platforms/aruba_fixed_size_file_creator.rb +35 -0
  244. data/lib/aruba/platforms/aruba_logger.rb +81 -0
  245. data/lib/aruba/platforms/command_monitor.rb +229 -0
  246. data/lib/aruba/platforms/determine_disk_usage.rb +28 -0
  247. data/lib/aruba/platforms/determine_file_size.rb +22 -0
  248. data/lib/aruba/platforms/disk_usage_calculator.rb +20 -0
  249. data/lib/aruba/platforms/filesystem_status.rb +68 -0
  250. data/lib/aruba/platforms/local_environment.rb +29 -0
  251. data/lib/aruba/platforms/simple_table.rb +54 -0
  252. data/lib/aruba/platforms/unix_command_string.rb +27 -0
  253. data/lib/aruba/platforms/unix_environment_variables.rb +220 -0
  254. data/lib/aruba/platforms/unix_platform.rb +276 -0
  255. data/lib/aruba/platforms/unix_which.rb +85 -0
  256. data/lib/aruba/platforms/windows_command_string.rb +31 -0
  257. data/lib/aruba/platforms/windows_environment_variables.rb +89 -0
  258. data/lib/aruba/platforms/windows_platform.rb +42 -0
  259. data/lib/aruba/platforms/windows_which.rb +106 -0
  260. data/lib/aruba/processes/basic_process.rb +143 -0
  261. data/lib/aruba/processes/debug_process.rb +69 -0
  262. data/lib/aruba/processes/in_process.rb +125 -0
  263. data/lib/aruba/processes/spawn_process.rb +278 -0
  264. data/lib/aruba/reporting.rb +126 -0
  265. data/lib/aruba/rspec.rb +107 -0
  266. data/lib/aruba/runtime.rb +96 -0
  267. data/lib/aruba/setup.rb +90 -0
  268. data/lib/aruba/spawn_process.rb +11 -0
  269. data/lib/aruba/version.rb +3 -0
  270. data/script/bootstrap +28 -0
  271. data/script/console +16 -0
  272. data/script/test +3 -0
  273. data/spec/aruba/api/environment/restore_env_spec.rb +65 -0
  274. data/spec/aruba/api/environment/set_env_spec.rb +42 -0
  275. data/spec/aruba/api/filesystem/file_size_spec.rb +28 -0
  276. data/spec/aruba/api/runtime_spec.rb +28 -0
  277. data/spec/aruba/api_spec.rb +1209 -0
  278. data/spec/aruba/aruba_path_spec.rb +103 -0
  279. data/spec/aruba/basic_configuration_spec.rb +5 -0
  280. data/spec/aruba/configuration_spec.rb +5 -0
  281. data/spec/aruba/hooks_spec.rb +17 -0
  282. data/spec/aruba/in_config_wrapper_spec.rb +25 -0
  283. data/spec/aruba/jruby_spec.rb +55 -0
  284. data/spec/aruba/matchers/command/have_output_size_spec.rb +25 -0
  285. data/spec/aruba/matchers/command_spec.rb +174 -0
  286. data/spec/aruba/matchers/directory_spec.rb +57 -0
  287. data/spec/aruba/matchers/file_spec.rb +127 -0
  288. data/spec/aruba/matchers/path_spec.rb +88 -0
  289. data/spec/aruba/platform/simple_table_spec.rb +23 -0
  290. data/spec/aruba/platform/windows_environment_variables_spec.rb +500 -0
  291. data/spec/aruba/rspec_spec.rb +15 -0
  292. data/spec/aruba/runtime_spec.rb +29 -0
  293. data/spec/aruba/spawn_process_spec.rb +60 -0
  294. data/spec/event_bus/name_resolver_spec.rb +68 -0
  295. data/spec/event_bus_spec.rb +160 -0
  296. data/spec/spec_helper.rb +23 -0
  297. data/spec/support/configs/.keep +0 -0
  298. data/spec/support/configs/aruba.rb +5 -0
  299. data/spec/support/configs/pry.rb +3 -0
  300. data/spec/support/configs/rspec.rb +15 -0
  301. data/spec/support/helpers/.keep +0 -0
  302. data/spec/support/helpers/reporting.rb +44 -0
  303. data/spec/support/matchers/.keep +0 -0
  304. data/spec/support/matchers/option.rb +35 -0
  305. data/spec/support/shared_contexts/.keep +0 -0
  306. data/spec/support/shared_contexts/aruba.rb +48 -0
  307. data/spec/support/shared_examples/.keep +0 -0
  308. data/spec/support/shared_examples/configuration.rb +116 -0
  309. data/spec/support/shared_examples/directory.rb +7 -0
  310. data/spec/support/shared_examples/file.rb +7 -0
  311. data/templates/css/console.css +24 -0
  312. data/templates/css/filesystem.css +42 -0
  313. data/templates/css/pygments-autumn.css +59 -0
  314. data/templates/files.erb +14 -0
  315. data/templates/images/LICENSE +22 -0
  316. data/templates/images/folder.png +0 -0
  317. data/templates/images/page_white.png +0 -0
  318. data/templates/images/page_white_gherkin.png +0 -0
  319. data/templates/images/page_white_ruby.png +0 -0
  320. data/templates/index.erb +20 -0
  321. data/templates/js/filesystem.js +5 -0
  322. data/templates/js/jquery-1.11.3.min.js +5 -0
  323. data/templates/main.erb +34 -0
  324. metadata +629 -0
@@ -0,0 +1,104 @@
1
+ Feature: Supported Testing Frameworks
2
+
3
+ You can use `aruba` with all major testing frameworks from the Ruby World:
4
+
5
+ \* Cucumber
6
+ \* RSpec
7
+ \* Minitest
8
+
9
+ Background:
10
+ Given I use a fixture named "cli-app"
11
+
12
+ Scenario: Use "aruba" with "Cucumber"
13
+ Given a file named "features/support/env.rb" with:
14
+ """
15
+ require 'aruba/cucumber'
16
+ """
17
+ And a file named "features/use_aruba_with_cucumber.feature" with:
18
+ """
19
+ Feature: Cucumber
20
+ Scenario: First Run
21
+ Given a file named "file.txt" with:
22
+ \"\"\"
23
+ Hello World
24
+ \"\"\"
25
+ Then the file "file.txt" should contain:
26
+ \"\"\"
27
+ Hello World
28
+ \"\"\"
29
+ """
30
+ When I run `cucumber`
31
+ Then the features should all pass
32
+
33
+ Scenario: Use "aruba" with "RSpec"
34
+ Given a file named "spec/support/aruba.rb" with:
35
+ """
36
+ require 'aruba/rspec'
37
+ """
38
+ And a file named "spec/spec_helper.rb" with:
39
+ """
40
+ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
41
+
42
+ if RUBY_VERSION < '1.9.3'
43
+ ::Dir.glob(::File.expand_path('../support/**/*.rb', __FILE__)).each { |f| require File.join(File.dirname(f), File.basename(f, '.rb')) }
44
+ else
45
+ ::Dir.glob(::File.expand_path('../support/**/*.rb', __FILE__)).each { |f| require_relative f }
46
+ end
47
+ """
48
+ And a file named "spec/use_aruba_with_rspec_spec.rb" with:
49
+ """
50
+ require 'spec_helper'
51
+
52
+ RSpec.describe 'First Run', :type => :aruba do
53
+ let(:file) { 'file.txt' }
54
+ let(:content) { 'Hello World' }
55
+
56
+ before(:each) { write_file file, content }
57
+
58
+ it { expect(read(file)).to eq [content] }
59
+ end
60
+ """
61
+ When I run `rspec`
62
+ Then the specs should all pass
63
+
64
+
65
+ Scenario: Use "aruba" with "Minitest"
66
+ Given a file named "test/support/aruba.rb" with:
67
+ """
68
+ require 'aruba/api'
69
+ """
70
+ And a file named "test/test_helper.rb" with:
71
+ """
72
+ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
73
+
74
+ if RUBY_VERSION < '1.9.3'
75
+ ::Dir.glob(::File.expand_path('../support/**/*.rb', __FILE__)).each { |f| require File.join(File.dirname(f), File.basename(f, '.rb')) }
76
+ else
77
+ ::Dir.glob(::File.expand_path('../support/**/*.rb', __FILE__)).each { |f| require_relative f }
78
+ end
79
+ """
80
+ And a file named "test/use_aruba_with_minitest.rb" with:
81
+ """
82
+ $LOAD_PATH.unshift File.expand_path('../test', __FILE__)
83
+
84
+ require 'test_helper'
85
+ require 'minitest/autorun'
86
+
87
+ class FirstRun < Minitest::Test
88
+ include Aruba::Api
89
+
90
+ def setup
91
+ aruba_setup
92
+ end
93
+
94
+ def getting_started_with_aruba
95
+ file = 'file.txt'
96
+ content = 'Hello World'
97
+
98
+ write_file file, content
99
+ read(file).must_equal [content]
100
+ end
101
+ end
102
+ """
103
+ When I run `ruby -Ilib:test test/use_aruba_with_minitest.rb`
104
+ Then the tests should all pass
@@ -0,0 +1,38 @@
1
+ Feature: Writing good feature tests with aruba to create documentations
2
+
3
+ You can use Markdown within your feature tests. This is quite good to write a
4
+ living documentation.
5
+
6
+ There are some edge cases where Gherkin and Markdown don't agree. Bullet lists
7
+ using `*` is one example. The `*` is also an alias for step keywords in
8
+ Gherkin. Markdown headers (the kind starting with a `#`) is another example.
9
+ They are parsed as comments by Gherkin. To use either of these, just escape
10
+ them with a backslash. Alternatively just use the "-".
11
+
12
+ You'd write:
13
+
14
+ ```gherkin
15
+ Scenario: Make tea
16
+ \## Making tea
17
+ \* Get a pot
18
+ \* And some hot water
19
+
20
+ Given...
21
+ ```
22
+
23
+ This way Gherkin won't recognize these lines as special tokens, and the
24
+ reporter will render them as Markdown. (The reporter strips away any leading
25
+ the backslashes before handing it off to the Markdown parser).
26
+
27
+ Another option is to use alternative Markdown syntax and omit conflicts and
28
+ escaping altogether:
29
+
30
+ ```gherkin
31
+ Scenario: Make tea
32
+ Making tea
33
+ ----------
34
+ - Get a pot
35
+ - And some hot water
36
+
37
+ Given...
38
+ ```
@@ -0,0 +1,44 @@
1
+ Feature: After command hooks
2
+
3
+ You can configure Aruba to run blocks of code after it has run
4
+ a command. The command will be passed to the block.
5
+
6
+ You can hook into Aruba's lifecycle just before it runs a command and after it has run the command:
7
+
8
+ ```ruby
9
+ Aruba.configure do |config|
10
+ config.after :command do |cmd|
11
+ puts "After the run of '#{cmd}'"
12
+ end
13
+ end
14
+ ```
15
+
16
+ Background:
17
+ Given I use a fixture named "cli-app"
18
+
19
+ Scenario: Run a simple command with an "after(:command)"-hook
20
+ Given a file named "spec/support/hooks.rb" with:
21
+ """
22
+ Aruba.configure do |config|
23
+ config.after :command do |cmd|
24
+ puts "after the run of `#{cmd.commandline}`"
25
+ end
26
+ end
27
+ """
28
+ And a file named "spec/hook_spec.rb" with:
29
+ """
30
+ require 'spec_helper'
31
+
32
+ RSpec.describe 'Hooks', :type => :aruba do
33
+ before(:each) { run_simple 'echo running' }
34
+
35
+ it { expect(last_command_started.stdout.chomp).to eq 'running' }
36
+ end
37
+ """
38
+ When I run `rspec`
39
+ Then the specs should all pass
40
+ And the output should contain:
41
+ """
42
+ after the run of `echo running`
43
+ """
44
+
@@ -0,0 +1,71 @@
1
+ Feature: before_cmd hooks
2
+
3
+ You can configure Aruba to run blocks of code before it runs
4
+ each command.
5
+
6
+ The command will be passed to the block.
7
+
8
+ You can hook into Aruba's lifecycle just before it runs a command and after it has run the command:
9
+
10
+ ```ruby
11
+ Aruba.configure do |config|
12
+ config.before :command do |cmd|
13
+ puts "About to run '#{cmd}'"
14
+ end
15
+ end
16
+ ```
17
+
18
+ Background:
19
+ Given I use a fixture named "cli-app"
20
+
21
+ Scenario: Run a simple command with a "before(:command)"-hook
22
+ Given a file named "spec/support/hooks.rb" with:
23
+ """
24
+ Aruba.configure do |config|
25
+ config.before :command do |cmd|
26
+ puts "before the run of `#{cmd.commandline}`"
27
+ end
28
+ end
29
+ """
30
+ And a file named "spec/hook_spec.rb" with:
31
+ """
32
+ require 'spec_helper'
33
+
34
+ RSpec.describe 'Hooks', :type => :aruba do
35
+ before(:each) { run_simple 'echo running' }
36
+
37
+ it { expect(last_command_started.stdout.chomp).to eq 'running' }
38
+ end
39
+ """
40
+ When I run `rspec`
41
+ Then the specs should all pass
42
+ And the output should contain:
43
+ """
44
+ before the run of `echo running`
45
+ """
46
+
47
+ Scenario: Run a simple command with a "before(:cmd)"-hook (deprecated)
48
+ Given a file named "spec/support/hooks.rb" with:
49
+ """
50
+ Aruba.configure do |config|
51
+ config.before :cmd do |cmd|
52
+ puts "before the run of `#{cmd}`"
53
+ end
54
+ end
55
+ """
56
+ And a file named "spec/hook_spec.rb" with:
57
+ """
58
+ require 'spec_helper'
59
+
60
+ RSpec.describe 'Hooks', :type => :aruba do
61
+ before(:each) { run_simple 'echo running' }
62
+
63
+ it { expect(last_command_started.stdout.chomp).to eq 'running' }
64
+ end
65
+ """
66
+ When I run `rspec`
67
+ Then the specs should all pass
68
+ And the output should contain:
69
+ """
70
+ before the run of `echo running`
71
+ """
@@ -0,0 +1,72 @@
1
+ Feature: `include_an_object` Matcher
2
+
3
+ Use the `include_an_object` matcher to specify that a collection's objects include_an_object pass an expected matcher.
4
+ This works on include_an_object enumerable object.
5
+
6
+ ```ruby
7
+ expect([1, 4, 5]).to include_an_object( be_odd )
8
+ expect([1, 3, 'a']).to include_an_object( be_an(Integer) )
9
+ expect([1, 3, 11]).to include_an_object( be < 10 )
10
+ ```
11
+
12
+ The matcher also supports compound matchers:
13
+
14
+ ```ruby
15
+ expect([1, 'a', 11]).to include_an_object( be_odd.and be < 10 )
16
+ ```
17
+
18
+ Background:
19
+ Given I use a fixture named "cli-app"
20
+
21
+ Scenario: Array usage
22
+ Given a file named "spec/array_include_an_object_matcher_spec.rb" with:
23
+ """ruby
24
+ require 'spec_helper'
25
+
26
+ RSpec.describe [1, 4, 'a', 11] do
27
+ it { is_expected.to include_an_object( be_odd ) }
28
+ it { is_expected.to include_an_object( be_an(Integer) ) }
29
+ it { is_expected.to include_an_object( be < 10 ) }
30
+ it { is_expected.not_to include_an_object( eq 'b' ) }
31
+ end
32
+
33
+ RSpec.describe [14, 'a'] do
34
+ it { is_expected.to include_an_object( be_odd ) }
35
+ it { is_expected.to include_an_object( be_an(Symbol) ) }
36
+ it { is_expected.to include_an_object( be < 10 ) }
37
+ it { is_expected.not_to include_an_object( eq 'a' ) }
38
+ end
39
+ """
40
+ When I run `rspec`
41
+ Then the output should contain all of these lines:
42
+ | 8 examples, 4 failures |
43
+ | expected [14, "a"] to include an object be odd |
44
+ | expected [14, "a"] to include an object be a kind of Symbol |
45
+ | expected [14, "a"] to include an object be < 10 |
46
+ | expected [14, "a"] not to include an object eq "a" |
47
+
48
+ Scenario: Compound Matcher Usage
49
+ Given a file named "spec/compound_include_an_object_matcher_spec.rb" with:
50
+ """ruby
51
+ require 'spec_helper'
52
+
53
+ RSpec.describe [1, 'anything', 'something'] do
54
+ it { is_expected.to include_an_object( be_a(String).and include("thing") ) }
55
+ it { is_expected.to include_an_object( be_a(String).and end_with("g") ) }
56
+ it { is_expected.to include_an_object( start_with("s").or include("y") ) }
57
+ it { is_expected.not_to include_an_object( start_with("b").or include("b") ) }
58
+ end
59
+
60
+ RSpec.describe ['anything', 'something'] do
61
+ it { is_expected.to include_an_object( be_a(Integer).and include("thing") ) }
62
+ it { is_expected.to include_an_object( be_a(Integer).and end_with("z") ) }
63
+ it { is_expected.to include_an_object( start_with("z").or include("1") ) }
64
+ it { is_expected.not_to include_an_object( start_with("a").or include("some") ) }
65
+ end
66
+ """
67
+ When I run `rspec`
68
+ Then the output should contain all of these lines:
69
+ | 8 examples, 4 failures |
70
+ | expected ["anything", "something"] to include an object be a kind of Integer and include "thing" |
71
+ | expected ["anything", "something"] to include an object be a kind of Integer and end with "z" |
72
+ | expected ["anything", "something"] to include an object start with "z" or include "1" |
@@ -0,0 +1,110 @@
1
+ Feature: Check if directory has given sub directories
2
+
3
+ If you need to check if a given directory has given sub dirctories, you can
4
+ use the `have_sub_directory`-matcher.
5
+
6
+ ```ruby
7
+ require 'spec_helper'
8
+
9
+ RSpec.describe 'Check if directory has sub-directory', :type => :aruba do
10
+ let(:file) { 'file.txt' }
11
+ before(:each) { touch(file) }
12
+
13
+ it { expect(file).to be_an_existing_file }
14
+ end
15
+ ```
16
+
17
+ Background:
18
+ Given I use a fixture named "cli-app"
19
+
20
+ Scenario: Expect existing sub directory
21
+ Given a file named "spec/existing_file_spec.rb" with:
22
+ """
23
+ require 'spec_helper'
24
+
25
+ RSpec.describe 'Check if directory has sub-directory', :type => :aruba do
26
+ let(:directory) { 'dir.d' }
27
+ let(:sub_directory) { 'sub-dir.d' }
28
+
29
+ before(:each) { create_directory(File.join(directory, sub_directory)) }
30
+
31
+ it { expect(directory).to have_sub_directory sub_directory }
32
+ end
33
+ """
34
+ When I run `rspec`
35
+ Then the specs should all pass
36
+
37
+ Scenario: Expect multiple existing sub directories
38
+ Given a file named "spec/existing_file_spec.rb" with:
39
+ """
40
+ require 'spec_helper'
41
+
42
+ RSpec.describe 'Check if directory has sub-directory', :type => :aruba do
43
+ let(:directory) { 'dir.d' }
44
+ let(:sub_directories) { %w(sub-dir1.d sub-dir2.d) }
45
+
46
+ before(:each) do
47
+ sub_directories.each { |d| create_directory(File.join(directory, d)) }
48
+ end
49
+
50
+ it { expect(directory).to have_sub_directory sub_directories }
51
+ end
52
+ """
53
+ When I run `rspec`
54
+ Then the specs should all pass
55
+
56
+ Scenario: Expect non-existing sub directory
57
+ Given a file named "spec/existing_file_spec.rb" with:
58
+ """
59
+ require 'spec_helper'
60
+
61
+ RSpec.describe 'Check if directory has sub-directory', :type => :aruba do
62
+ let(:directory) { 'dir.d' }
63
+ let(:sub_directory) { 'sub-dir.d' }
64
+
65
+ before(:each) { create_directory(directory) }
66
+
67
+ it { expect(directory).not_to have_sub_directory sub_directory }
68
+ end
69
+ """
70
+ When I run `rspec`
71
+ Then the specs should all pass
72
+
73
+ Scenario: Expect multiple directories have sub directory
74
+ Given a file named "spec/existing_file_spec.rb" with:
75
+ """
76
+ require 'spec_helper'
77
+
78
+ RSpec.describe 'Check if directory has sub-directory', :type => :aruba do
79
+ let(:directories) { %w(dir1.d dir2.d) }
80
+ let(:sub_directory) { 'sub-dir.d' }
81
+
82
+ before(:each) do
83
+ directories.each { |d| create_directory(File.join(d, sub_directory)) }
84
+ end
85
+
86
+ it { expect(directories).to all have_sub_directory sub_directory }
87
+ end
88
+ """
89
+ When I run `rspec`
90
+ Then the specs should all pass
91
+
92
+ Scenario: Expect a least one directory has sub directory
93
+ Given a file named "spec/existing_file_spec.rb" with:
94
+ """
95
+ require 'spec_helper'
96
+
97
+ RSpec.describe 'Check if directory has sub-directory', :type => :aruba do
98
+ let(:directories) { %w(dir1.d dir2.d) }
99
+ let(:sub_directory) { 'sub-dir.d' }
100
+
101
+ before(:each) do
102
+ create_directory(File.join(directories.first, sub_directory))
103
+ end
104
+
105
+ it { expect(directories).to include a_directory_having_sub_directory sub_directory }
106
+ end
107
+ """
108
+ When I run `rspec`
109
+ Then the specs should all pass
110
+
@@ -0,0 +1,115 @@
1
+ Feature: Check if command can be found in PATH
2
+
3
+ If you need to check if a given command can be found in path, you can use the
4
+ `be_an_existing_executable`-matcher.
5
+
6
+ ```ruby
7
+ require 'spec_helper'
8
+
9
+ RSpec.describe 'Check if command can be found in PATH', :type => :aruba do
10
+ let(:file) { 'file.sh' }
11
+ before(:each) { touch(file) }
12
+ before(:each) { chmod(0755, file) }
13
+ before(:each) { prepend_environment_variable('PATH', format('%s:', expand_path('.')) }
14
+
15
+ it { expect(file).to be_an_existing_executable }
16
+ end
17
+ ```
18
+
19
+ Background:
20
+ Given I use a fixture named "cli-app"
21
+
22
+ Scenario: Expect single existing executable file
23
+ Given a file named "spec/existing_executable_spec.rb" with:
24
+ """
25
+ require 'spec_helper'
26
+
27
+ RSpec.describe 'Check if command can be found in PATH', :type => :aruba do
28
+ let(:file) { 'file.sh' }
29
+
30
+ before(:each) { touch(file) }
31
+ before(:each) { chmod(0755, file) }
32
+ before(:each) { prepend_environment_variable('PATH', format('%s:', expand_path('.'))) }
33
+
34
+ it { expect(file).to be_a_command_found_in_path }
35
+ end
36
+ """
37
+ When I run `rspec`
38
+ Then the specs should all pass
39
+
40
+ Scenario: Expect single non-existing executable file
41
+ Given a file named "spec/existing_executable_spec.rb" with:
42
+ """
43
+ require 'spec_helper'
44
+
45
+ RSpec.describe 'Check if command can be found in PATH', :type => :aruba do
46
+ let(:file) { 'file.sh' }
47
+
48
+ before(:each) { prepend_environment_variable('PATH', format('%s:', expand_path('.'))) }
49
+
50
+ it { expect(file).not_to be_a_command_found_in_path }
51
+ end
52
+ """
53
+ When I run `rspec`
54
+ Then the specs should all pass
55
+
56
+ Scenario: Expect single non-executable file
57
+ Given a file named "spec/existing_executable_spec.rb" with:
58
+ """
59
+ require 'spec_helper'
60
+
61
+ RSpec.describe 'Check if command can be found in PATH', :type => :aruba do
62
+ let(:file) { 'file.sh' }
63
+
64
+ before(:each) { touch(file) }
65
+ before(:each) { prepend_environment_variable('PATH', format('%s:', expand_path('.'))) }
66
+
67
+ it { expect(file).not_to be_a_command_found_in_path }
68
+ end
69
+ """
70
+ When I run `rspec`
71
+ Then the specs should all pass
72
+
73
+ Scenario: Expect multiple existing executable files
74
+ Given a file named "spec/existing_executable_spec.rb" with:
75
+ """
76
+ require 'spec_helper'
77
+
78
+ RSpec.describe 'Check if file exists and is an executable file', :type => :aruba do
79
+ let(:files) { %w(file1.sh file2.sh) }
80
+
81
+ before :each do
82
+ files.each do |f|
83
+ touch(f)
84
+ chmod(0755, f)
85
+ end
86
+ end
87
+
88
+ before(:each) { prepend_environment_variable('PATH', format('%s:', expand_path('.'))) }
89
+
90
+ it { expect(files).to all be_a_command_found_in_path }
91
+ end
92
+ """
93
+ When I run `rspec`
94
+ Then the specs should all pass
95
+
96
+ Scenario: Expect a least one existing executable file
97
+ Given a file named "spec/existing_executable_spec.rb" with:
98
+ """
99
+ require 'spec_helper'
100
+
101
+ RSpec.describe 'Check if file exists and is an executable file', :type => :aruba do
102
+ let(:files) { %w(file1.sh file2.sh) }
103
+
104
+ before :each do
105
+ touch(files.first)
106
+ chmod(0755, files.first)
107
+ end
108
+
109
+ before(:each) { prepend_environment_variable('PATH', format('%s:', expand_path('.'))) }
110
+
111
+ it { expect(files).to include a_command_found_in_path }
112
+ end
113
+ """
114
+ When I run `rspec`
115
+ Then the specs should all pass