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,15 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe 'RSpec Integration', :type => :aruba do
4
+ describe 'Configuration' do
5
+ subject(:config) { aruba.config }
6
+
7
+ context 'when io_wait_timeout is 0.5', :io_wait_timeout => 0.5 do
8
+ it { expect(config.io_wait_timeout).to eq 0.5 }
9
+ end
10
+
11
+ context 'when io_wait_timeout is 0.1' do
12
+ it { expect(config.io_wait_timeout).to eq 0.1 }
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe Aruba::Runtime do
4
+ # describe '#fixtures_directory' do
5
+ # context 'when no fixtures directories exist' do
6
+ # it "should raise exception" do
7
+ # expect { api.fixtures_directory }.to raise_error
8
+ # end
9
+ # end
10
+ #
11
+ # context 'when "/features/fixtures"-directory exist' do
12
+ # before(:each) { api.create_directory('features/fixtures') }
13
+ #
14
+ # it { expect(api.fixtures_directory).to eq expand_path('features/fixtures') }
15
+ # end
16
+ #
17
+ # context 'when "/spec/fixtures"-directory exist' do
18
+ # before(:each) { api.create_directory('spec/fixtures') }
19
+ #
20
+ # it { expect(api.fixtures_directory).to eq expand_path('spec/fixtures') }
21
+ # end
22
+ #
23
+ # context 'when "/test/fixtures"-directory exist' do
24
+ # before(:each) { api.create_directory('test/fixtures') }
25
+ #
26
+ # it { expect(api.fixtures_directory.to_s).to eq expand_path('test/fixtures') }
27
+ # end
28
+ # end
29
+ end
@@ -0,0 +1,60 @@
1
+ require 'aruba/processes/spawn_process'
2
+
3
+ RSpec.describe Aruba::Processes::SpawnProcess do
4
+ subject(:process) { described_class.new(command, exit_timeout, io_wait, working_directory, environment, main_class) }
5
+
6
+ let(:command) { 'echo "yo"' }
7
+ let(:exit_timeout) { 1 }
8
+ let(:io_wait) { 1 }
9
+ let(:working_directory) { Dir.getwd }
10
+ let(:environment) { ENV.to_hash.dup }
11
+ let(:main_class) { nil }
12
+
13
+ describe "#stdout" do
14
+ before(:each) { process.start }
15
+ before(:each) { process.stop }
16
+
17
+ context 'when invoked once' do
18
+ it { expect(process.stdout).to eq "yo\n" }
19
+ end
20
+
21
+ context 'when invoked twice' do
22
+ it { 2.times { expect(process.stdout).to eq "yo\n" } }
23
+ end
24
+ end
25
+
26
+ describe "#stderr" do
27
+ let(:command) { 'fixtures/spawn_process/stderr.sh yo' }
28
+
29
+ before(:each) { process.start }
30
+ before(:each) { process.stop }
31
+
32
+ context 'when invoked once' do
33
+ it { expect(process.stderr).to eq "yo\n" }
34
+ end
35
+
36
+ context 'when invoked twice' do
37
+ it { 2.times { expect(process.stderr).to eq "yo\n" } }
38
+ end
39
+ end
40
+
41
+ describe "#stop" do
42
+ before(:each) { process.start }
43
+
44
+ context 'when stopped successfully' do
45
+ it { process.stop }
46
+ end
47
+ end
48
+
49
+ describe "#start" do
50
+ context "when process run succeeds" do
51
+ it { expect { process.start }.not_to raise_error }
52
+ end
53
+
54
+ context "when process run fails" do
55
+ let(:command) { 'does_not_exists' }
56
+
57
+ it { expect {process.start}.to raise_error Aruba::LaunchError }
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,68 @@
1
+ require 'aruba/event_bus/name_resolver'
2
+
3
+ describe Aruba::EventBus::NameResolver do
4
+ subject(:resolver) { described_class.new(default_name_space) }
5
+ let(:default_name_space) { 'Events' }
6
+ let(:resolved_name) { resolver.transform(original_name) }
7
+
8
+ before :each do
9
+ stub_const('Events::MyEvent', Class.new)
10
+ stub_const('Events::MyEvent', Class.new)
11
+ end
12
+
13
+ describe '#transform' do
14
+ context 'when name is string' do
15
+ context 'when simple' do
16
+ let(:original_name) { 'Events::MyEvent' }
17
+ it { expect(resolved_name).to eq Events::MyEvent }
18
+ end
19
+
20
+ context 'when prefixed' do
21
+ let(:original_name) { '::Events::MyEvent' }
22
+ it { expect(resolved_name).to eq Events::MyEvent }
23
+ end
24
+ end
25
+
26
+ context 'when name is class' do
27
+ context 'when simple' do
28
+ let(:original_name) { Events::MyEvent }
29
+ it { expect(resolved_name).to eq Events::MyEvent }
30
+ end
31
+
32
+ context 'when prefixed' do
33
+ let(:original_name) { ::Events::MyEvent }
34
+ it { expect(resolved_name).to eq Events::MyEvent }
35
+ end
36
+ end
37
+
38
+ context 'when name is symbol' do
39
+ let(:original_name) { :my_event }
40
+ it { expect(resolved_name).to eq Events::MyEvent }
41
+ end
42
+
43
+ context 'when namespace ...' do
44
+ before :each do
45
+ stub_const('MyLib::Events::MyEvent', Class.new)
46
+ end
47
+
48
+ context 'when is string' do
49
+ let!(:default_name_space) { 'MyLib::Events' }
50
+ let!(:original_name) { :my_event }
51
+
52
+ it { expect(resolved_name).to eq MyLib::Events::MyEvent }
53
+ end
54
+
55
+ context 'when is module' do
56
+ let!(:default_name_space) { MyLib::Events }
57
+ let!(:original_name) { :my_event }
58
+
59
+ it { expect(resolved_name).to eq MyLib::Events::MyEvent }
60
+ end
61
+ end
62
+
63
+ context 'when invalid' do
64
+ let(:original_name) { 1 }
65
+ it { expect { resolved_name }.to raise_error Aruba::EventNameResolveError, /Transforming "1"/ }
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,160 @@
1
+ require 'aruba/event_bus'
2
+
3
+ # rubocop:disable Style/Documentation
4
+ module Events
5
+ class TestEvent; end
6
+ class AnotherTestEvent; end
7
+ module MalformedTestEvent; end
8
+ end
9
+
10
+ class MyHandler
11
+ def call(*); end
12
+ end
13
+
14
+ class MyMalformedHandler; end
15
+ # rubocop:enable Style/Documentation
16
+
17
+ describe Aruba::EventBus do
18
+ subject(:bus) { described_class.new(name_resolver) }
19
+
20
+ let(:name_resolver) { instance_double('Events::NameResolver') }
21
+
22
+ let!(:event_klass) { Events::TestEvent }
23
+ let!(:event_name) { event_klass }
24
+ let!(:event_instance) { Events::TestEvent.new }
25
+
26
+ let!(:another_event_klass) { Events::AnotherTestEvent }
27
+ let!(:another_event_name) { another_event_klass }
28
+ let!(:another_event_instance) { Events::AnotherTestEvent.new }
29
+
30
+ describe '#notify' do
31
+ before(:each) do
32
+ allow(name_resolver).to receive(:transform).with(event_name).and_return(event_klass)
33
+ end
34
+
35
+ context 'when subscriber to event, the block is called and get\'s an instance of the event passed as payload' do
36
+ before :each do
37
+ bus.register(event_klass) do |event|
38
+ @received_payload = event
39
+ end
40
+
41
+ bus.notify event_instance
42
+ end
43
+
44
+ it { expect(@received_payload).to eq(event_instance) }
45
+ end
46
+
47
+ context 'when not subscriber to event' do
48
+ before :each do
49
+ @received_payload = false
50
+ bus.register(event_klass) { @received_payload = true }
51
+ bus.notify another_event_instance
52
+ end
53
+
54
+ it { expect(@received_payload).to eq(false) }
55
+ end
56
+
57
+ context 'when event is not an instance of event class' do
58
+ let!(:event_name) { :test_event }
59
+ let(:received_payload) { [] }
60
+
61
+ before :each do
62
+ bus.register(event_name, proc {})
63
+ end
64
+
65
+ it { expect { bus.notify event_klass }.to raise_error Aruba::NoEventError }
66
+ end
67
+ end
68
+
69
+ describe '#register' do
70
+ before(:each) do
71
+ allow(name_resolver).to receive(:transform).with(event_name).and_return(event_klass)
72
+ end
73
+
74
+ context 'when valid subscriber' do
75
+ context 'when multiple instances are given' do
76
+ let(:received_events) { [] }
77
+
78
+ before :each do
79
+ bus.register(Events::TestEvent) do |event|
80
+ received_events << event
81
+ end
82
+ bus.register(Events::TestEvent) do |event|
83
+ received_events << event
84
+ end
85
+
86
+ bus.notify event_instance
87
+ end
88
+
89
+ it { expect(received_events.length).to eq 2 }
90
+ it { expect(received_events).to all eq event_instance }
91
+ end
92
+
93
+ context 'when is string' do
94
+ let!(:event_name) { event_klass.to_s }
95
+ let(:received_payload) { [] }
96
+
97
+ before :each do
98
+ bus.register(event_klass.to_s) do |event|
99
+ received_payload << event
100
+ end
101
+
102
+ bus.notify event_instance
103
+ end
104
+
105
+ it { expect(received_payload).to include event_instance }
106
+ end
107
+
108
+ context 'when is symbol and event is defined in the default namespace given to NameResolver.new' do
109
+ let!(:event_name) { :test_event }
110
+ let(:received_payload) { [] }
111
+
112
+ before :each do
113
+ bus.register(event_name) do |event|
114
+ received_payload << event
115
+ end
116
+
117
+ bus.notify event_instance
118
+ end
119
+
120
+ it { expect(received_payload).to include event_instance }
121
+ end
122
+ end
123
+
124
+ context 'when valid custom handler' do
125
+ context 'when single event class' do
126
+ before(:each) do
127
+ allow(name_resolver).to receive(:transform).with(event_name).and_return(event_klass)
128
+ end
129
+
130
+ before :each do
131
+ bus.register(event_klass, MyHandler.new)
132
+ end
133
+
134
+ it { expect { bus.notify event_instance }.not_to raise_error }
135
+ end
136
+
137
+ context 'when list of event classes' do
138
+ before(:each) do
139
+ allow(name_resolver).to receive(:transform).with(event_name).and_return(event_klass)
140
+ allow(name_resolver).to receive(:transform).with(another_event_name).and_return(another_event_klass)
141
+ end
142
+
143
+ before :each do
144
+ bus.register([event_klass, another_event_klass], MyHandler.new)
145
+ end
146
+
147
+ it { expect { bus.notify event_instance }.not_to raise_error }
148
+ it { expect { bus.notify another_event_instance }.not_to raise_error }
149
+ end
150
+ end
151
+
152
+ context 'when malformed custom handler' do
153
+ it { expect { bus.register(event_klass, MyMalformedHandler.new) }.to raise_error ArgumentError }
154
+ end
155
+
156
+ context 'when no handler is given' do
157
+ it { expect { bus.register(event_klass) }.to raise_error ArgumentError }
158
+ end
159
+ end
160
+ end
@@ -0,0 +1,23 @@
1
+ # encoding: utf-8
2
+
3
+ $LOAD_PATH << ::File.expand_path('../../lib', __FILE__)
4
+
5
+ require 'simplecov'
6
+ SimpleCov.command_name 'rspec'
7
+ SimpleCov.start
8
+
9
+ # Pull in all of the gems including those in the `test` group
10
+ require 'bundler'
11
+ Bundler.require
12
+
13
+ # Loading support files
14
+ if RUBY_VERSION < '1.9'
15
+ Dir.glob(::File.expand_path('../support/*.rb', __FILE__)).each { |f| require File.join(File.dirname(f), File.basename(f, '.rb')) }
16
+ Dir.glob(::File.expand_path('../support/**/*.rb', __FILE__)).each { |f| require File.join(File.dirname(f), File.basename(f, '.rb')) }
17
+ else
18
+ Dir.glob(::File.expand_path('../support/*.rb', __FILE__)).each { |f| require_relative f }
19
+ Dir.glob(::File.expand_path('../support/**/*.rb', __FILE__)).each { |f| require_relative f }
20
+ end
21
+
22
+ # Avoid writing "describe LocalPac::MyClass do [..]" but "describe MyClass do [..]"
23
+ include Aruba
File without changes
@@ -0,0 +1,5 @@
1
+ require 'aruba/rspec'
2
+
3
+ Aruba.configure do |config|
4
+ config.activate_announcer_on_command_failure = [:stderr, :stdout, :command]
5
+ end
@@ -0,0 +1,3 @@
1
+ # Otherwise pry doesn't find it's RC file
2
+ # if ENV['HOME'] is mocked
3
+ ENV['PRYRC'] = File.expand_path('~/.pryrc')
@@ -0,0 +1,15 @@
1
+ require 'rspec/core'
2
+ require 'aruba/api'
3
+
4
+ RSpec.configure do |config|
5
+ config.filter_run :focus => true
6
+
7
+ config.run_all_when_everything_filtered = true
8
+
9
+ config.expect_with :rspec do |c|
10
+ c.syntax = :expect
11
+ end
12
+
13
+ config.include Aruba::Api
14
+ config.before(:each) { setup_aruba }
15
+ end
File without changes
@@ -0,0 +1,44 @@
1
+ module SpecHelpers
2
+ module Reporting
3
+ # Captures the given stream and returns it:
4
+ #
5
+ # stream = capture(:stdout) { puts 'notice' }
6
+ # stream # => "notice\n"
7
+ #
8
+ # stream = capture(:stderr) { warn 'error' }
9
+ # stream # => "error\n"
10
+ #
11
+ # even for subprocesses:
12
+ #
13
+ # stream = capture(:stdout) { system('echo notice') }
14
+ # stream # => "notice\n"
15
+ #
16
+ # stream = capture(:stderr) { system('echo error 1>&2') }
17
+ # stream # => "error\n"
18
+ def capture(stream)
19
+ stream = stream.to_s
20
+ captured_stream = Tempfile.new(stream)
21
+
22
+ # rubocop:disable Lint/Eval
23
+ stream_io = eval("$#{stream}")
24
+ # rubocop:enable Lint/Eval
25
+
26
+ origin_stream = stream_io.dup
27
+ stream_io.reopen(captured_stream)
28
+
29
+ yield
30
+
31
+ stream_io.rewind
32
+ return captured_stream.read
33
+ ensure
34
+ captured_stream.close
35
+ captured_stream.unlink
36
+ stream_io.reopen(origin_stream)
37
+ end
38
+ alias silence capture
39
+ end
40
+ end
41
+
42
+ RSpec.configure do |config|
43
+ config.include SpecHelpers::Reporting
44
+ end
File without changes
@@ -0,0 +1,35 @@
1
+ RSpec::Matchers.define :be_valid_option do |_|
2
+ match do |actual|
3
+ subject.option?(actual)
4
+ end
5
+
6
+ failure_message do |actual|
7
+ format("expected that \"%s\" is a valid option", actual)
8
+ end
9
+
10
+ failure_message_when_negated do |actual|
11
+ format("expected that \"%s\" is not a valid option", actual)
12
+ end
13
+ end
14
+
15
+ RSpec::Matchers.define :have_option_value do |expected|
16
+ match do |actual|
17
+ @old_actual = actual
18
+ @actual = if RUBY_VERSION < '1.9'
19
+ subject.send(actual.to_sym)
20
+ else
21
+ subject.public_send(actual.to_sym)
22
+ end
23
+ values_match? expected, @actual
24
+ end
25
+
26
+ diffable
27
+
28
+ failure_message do |_actual|
29
+ format(%(expected that option "%s" has value "%s"), @old_actual, expected)
30
+ end
31
+
32
+ failure_message_when_negated do |_actual|
33
+ format(%(expected that option "%s" does not have value "%s"), @old_actual, expected)
34
+ end
35
+ end