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,24 @@
1
+ # Aruba
2
+ module Aruba
3
+ # In config wrapper
4
+ #
5
+ # Used to make the configuration read only if one needs to access an
6
+ # configuration option from with `Aruba::Config`.
7
+ #
8
+ # @private
9
+ class InConfigWrapper
10
+ attr_reader :config
11
+ private :config
12
+
13
+ def initialize(config)
14
+ @config = config.dup
15
+ end
16
+
17
+ def method_missing(name, *args)
18
+ fail ArgumentError, 'Options take no argument' if args.count > 0
19
+ fail UnknownOptionError, %(Option "#{name}" is unknown. Please use only earlier defined options) unless config.key? name
20
+
21
+ config[name]
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,14 @@
1
+ require 'aruba/processes/in_process'
2
+ require 'aruba/platform'
3
+
4
+ # Aruba
5
+ module Aruba
6
+ # @deprecated
7
+ class InProcess < Aruba::Processes::InProcess
8
+ def initialize(*args)
9
+ Aruba.platform.deprecated('The use of "Aruba::InProcess" is deprecated. Use "Aruba::Processes::InProcess" instead.')
10
+
11
+ super
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,222 @@
1
+ require 'thor/group'
2
+ require 'thor/actions'
3
+
4
+ # Aruba
5
+ module Aruba
6
+ # Initializers
7
+ #
8
+ # Initialize project with aruba configuration files
9
+ module Initializers
10
+ # Common initializer
11
+ #
12
+ # @private
13
+ class CommonInitializer < Thor::Group
14
+ include Thor::Actions
15
+
16
+ # Add gem to gemfile
17
+ def add_gem
18
+ file = 'Gemfile'
19
+ creator = if File.exist? file
20
+ :append_to_file
21
+ else
22
+ :create_file
23
+ end
24
+
25
+ content = if File.exist? file
26
+ %(gem 'aruba', '~> #{Aruba::VERSION}')
27
+ else
28
+ %(source 'https://rubygems.org'\ngem 'aruba', '~> #{Aruba::VERSION}'\n)
29
+ end
30
+ send creator, file, content
31
+ end
32
+ end
33
+ end
34
+ end
35
+
36
+ # Aruba
37
+ module Aruba
38
+ # Initializers
39
+ module Initializers
40
+ # Default Initializer
41
+ #
42
+ # This handles invalid values for initializer.
43
+ #
44
+ # @private
45
+ class FailingInitializer
46
+ class << self
47
+ def match?(*)
48
+ true
49
+ end
50
+
51
+ def start(*)
52
+ fail ArgumentError, %(Unknown test framework. Please use one of :rspec, :cucumber or :minitest)
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
58
+
59
+ # Aruba
60
+ module Aruba
61
+ # Initializer
62
+ module Initializers
63
+ # Add aruba + rspec to project
64
+ #
65
+ # @private
66
+ class RSpecInitializer < Thor::Group
67
+ include Thor::Actions
68
+
69
+ no_commands do
70
+ def self.match?(framework)
71
+ :rspec == framework.downcase.to_sym
72
+ end
73
+ end
74
+
75
+ def create_helper
76
+ file = 'spec/spec_helper.rb'
77
+ creator = if File.exist? file
78
+ :append_to_file
79
+ else
80
+ :create_file
81
+ end
82
+
83
+ send creator, file, <<-EOS
84
+ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
85
+
86
+ if RUBY_VERSION < '1.9.3'
87
+ ::Dir.glob(::File.expand_path('../support/*.rb', __FILE__)).each { |f| require File.join(File.dirname(f), File.basename(f, '.rb')) }
88
+ ::Dir.glob(::File.expand_path('../support/**/*.rb', __FILE__)).each { |f| require File.join(File.dirname(f), File.basename(f, '.rb')) }
89
+ else
90
+ ::Dir.glob(::File.expand_path('../support/*.rb', __FILE__)).each { |f| require_relative f }
91
+ ::Dir.glob(::File.expand_path('../support/**/*.rb', __FILE__)).each { |f| require_relative f }
92
+ end
93
+ EOS
94
+ end
95
+
96
+ def create_support_file
97
+ create_file 'spec/support/aruba.rb', <<-EOS
98
+ require 'aruba/rspec'
99
+ EOS
100
+ end
101
+ end
102
+ end
103
+ end
104
+
105
+ # Aruba
106
+ module Aruba
107
+ # Initializer
108
+ module Initializers
109
+ # Add aruba + aruba to project
110
+ #
111
+ # @private
112
+ class CucumberInitializer < Thor::Group
113
+ include Thor::Actions
114
+
115
+ no_commands do
116
+ def self.match?(framework)
117
+ :cucumber == framework.downcase.to_sym
118
+ end
119
+ end
120
+
121
+ def create_support_file
122
+ create_file 'features/support/aruba.rb', <<-EOS
123
+ require 'aruba/cucumber'
124
+ EOS
125
+ end
126
+ end
127
+ end
128
+ end
129
+
130
+ # Aruba
131
+ module Aruba
132
+ # Initializer
133
+ module Initializers
134
+ # Add aruba + minitest to project
135
+ #
136
+ # @private
137
+ class MiniTestInitializer < Thor::Group
138
+ include Thor::Actions
139
+
140
+ no_commands do
141
+ def self.match?(framework)
142
+ :minitest == framework.downcase.to_sym
143
+ end
144
+ end
145
+
146
+ def create_helper
147
+ file = 'test/test_helper.rb'
148
+ creator = if File.exist? file
149
+ :append_to_file
150
+ else
151
+ :create_file
152
+ end
153
+
154
+ send creator, file, <<-EOS
155
+ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
156
+
157
+ if RUBY_VERSION < '1.9.3'
158
+ ::Dir.glob(::File.expand_path('../support/*.rb', __FILE__)).each { |f| require File.join(File.dirname(f), File.basename(f, '.rb')) }
159
+ ::Dir.glob(::File.expand_path('../support/**/*.rb', __FILE__)).each { |f| require File.join(File.dirname(f), File.basename(f, '.rb')) }
160
+ else
161
+ ::Dir.glob(::File.expand_path('../support/*.rb', __FILE__)).each { |f| require_relative f }
162
+ ::Dir.glob(::File.expand_path('../support/**/*.rb', __FILE__)).each { |f| require_relative f }
163
+ end
164
+ EOS
165
+ end
166
+
167
+ def create_example
168
+ create_file 'test/use_aruba_with_minitest.rb', <<-EOS
169
+ $LOAD_PATH.unshift File.expand_path('../test', __FILE__)
170
+
171
+ require 'test_helper'
172
+ require 'minitest/autorun'
173
+ require 'aruba/api'
174
+
175
+ class FirstRun < Minitest::Test
176
+ include Aruba::Api
177
+
178
+ def setup
179
+ aruba_setup
180
+ end
181
+ end
182
+ EOS
183
+ end
184
+ end
185
+ end
186
+ end
187
+
188
+ # Aruba
189
+ module Aruba
190
+ # The whole initializer
191
+ #
192
+ # This one uses the specific initializers to generate the needed files.
193
+ #
194
+ # @private
195
+ class Initializer
196
+ private
197
+
198
+ attr_reader :initializers
199
+
200
+ public
201
+
202
+ def initialize
203
+ @initializers = []
204
+ @initializers << Initializers::RSpecInitializer
205
+ @initializers << Initializers::CucumberInitializer
206
+ @initializers << Initializers::MiniTestInitializer
207
+ @initializers << Initializers::FailingInitializer
208
+ end
209
+
210
+ # Create files etc.
211
+ def call(test_framework)
212
+ begin
213
+ initializers.find { |i| i.match? test_framework }.start [], {}
214
+ rescue ArgumentError => e
215
+ $stderr.puts e.message
216
+ exit 0
217
+ end
218
+
219
+ Initializers::CommonInitializer.start [], {}
220
+ end
221
+ end
222
+ end
@@ -0,0 +1,4 @@
1
+ require 'aruba/platform'
2
+ Aruba.platform.deprecated('The use of "aruba/jruby" is deprecated. Use "aruba/config/jruby" instead')
3
+
4
+ require 'aruba/config/jruby'
@@ -0,0 +1,96 @@
1
+ require 'aruba/matchers/base/object_formatter'
2
+
3
+ # Aruba
4
+ module Aruba
5
+ # Matchers
6
+ module Matchers
7
+ # Base Matcher
8
+ class BaseMatcher
9
+ # @api private
10
+ # Used to detect when no arg is passed to `initialize`.
11
+ # `nil` cannot be used because it's a valid value to pass.
12
+ UNDEFINED = Object.new.freeze
13
+
14
+ # @private
15
+ attr_reader :actual, :expected, :rescued_exception
16
+
17
+ def initialize(expected = UNDEFINED)
18
+ @expected = expected unless UNDEFINED.equal?(expected)
19
+ end
20
+
21
+ # @api private
22
+ # Indicates if the match is successful. Delegates to `match`, which
23
+ # should be defined on a subclass. Takes care of consistently
24
+ # initializing the `actual` attribute.
25
+ def matches?(actual)
26
+ @actual = actual
27
+ match(expected, actual)
28
+ end
29
+
30
+ def iterable?
31
+ @actual.respond_to?(:each_with_index)
32
+ end
33
+
34
+ # @private
35
+ module HashFormatting
36
+ # `{ :a => 5, :b => 2 }.inspect` produces:
37
+ #
38
+ # {:a=>5, :b=>2}
39
+ #
40
+ # ...but it looks much better as:
41
+ #
42
+ # {:a => 5, :b => 2}
43
+ #
44
+ # This is idempotent and safe to run on a string multiple times.
45
+ def improve_hash_formatting(inspect_string)
46
+ inspect_string.gsub(/(\S)=>(\S)/, '\1 => \2')
47
+ end
48
+ module_function :improve_hash_formatting
49
+ end
50
+
51
+ include HashFormatting
52
+
53
+ # @api private
54
+ # Provides default implementations of failure messages, based on the `description`.
55
+ module DefaultFailureMessages
56
+ # @api private
57
+ # Provides a good generic failure message. Based on `description`.
58
+ # When subclassing, if you are not satisfied with this failure message
59
+ # you often only need to override `description`.
60
+ # @return [String]
61
+ def failure_message
62
+ "expected #{description_of @actual} to #{description}"
63
+ end
64
+
65
+ # @api private
66
+ # Provides a good generic negative failure message. Based on `description`.
67
+ # When subclassing, if you are not satisfied with this failure message
68
+ # you often only need to override `description`.
69
+ # @return [String]
70
+ def failure_message_when_negated
71
+ "expected #{description_of @actual} not to #{description}"
72
+ end
73
+
74
+ # @private
75
+ # rubocop:disable Style/PredicateName
76
+ def self.has_default_failure_messages?(matcher)
77
+ matcher.method(:failure_message).owner == self &&
78
+ matcher.method(:failure_message_when_negated).owner == self
79
+ rescue NameError
80
+ false
81
+ end
82
+ # rubocop:enable Style/PredicateName
83
+ end
84
+
85
+ include DefaultFailureMessages
86
+
87
+ # Returns the description of the given object in a way that is
88
+ # aware of composed matchers. If the object is a matcher with
89
+ # a `description` method, returns the description; otherwise
90
+ # returns `object.inspect`.
91
+ def description_of(object)
92
+ Aruba::Matchers::ObjectFormatter.format(object)
93
+ end
94
+ end
95
+ end
96
+ end
@@ -0,0 +1,114 @@
1
+ # Aruba
2
+ module Aruba
3
+ # Matchers
4
+ module Matchers
5
+ # Provide additional output details beyond what `inspect` provides when
6
+ # printing Time, DateTime, or BigDecimal
7
+ #
8
+ # @private
9
+ module ObjectFormatter
10
+ # @api private
11
+ def self.format(object)
12
+ prepare_for_inspection(object).inspect
13
+ end
14
+
15
+ # rubocop:disable MethodLength
16
+ # rubocop:disable Metrics/CyclomaticComplexity
17
+
18
+ # @private
19
+ # Prepares the provided object to be formatted by wrapping it as needed
20
+ # in something that, when `inspect` is called on it, will produce the
21
+ # desired output.
22
+ #
23
+ # This allows us to apply the desired formatting to hash/array data structures
24
+ # at any level of nesting, simply by walking that structure and replacing items
25
+ # with custom items that have `inspect` defined to return the desired output
26
+ # for that item. Then we can just use `Array#inspect` or `Hash#inspect` to
27
+ # format the entire thing.
28
+ def self.prepare_for_inspection(object)
29
+ case object
30
+ when Array
31
+ return object.map { |o| prepare_for_inspection(o) }
32
+ when Hash
33
+ return prepare_hash(object)
34
+ when Time
35
+ inspection = format_time(object)
36
+ else
37
+ if defined?(DateTime) && DateTime === object
38
+ inspection = format_date_time(object)
39
+ elsif defined?(BigDecimal) && BigDecimal === object
40
+ inspection = "#{object.to_s 'F'} (#{object.inspect})"
41
+ elsif RSpec::Support.is_a_matcher?(object) && object.respond_to?(:description)
42
+ inspection = object.description
43
+ else
44
+ return DelegatingInspector.new(object)
45
+ end
46
+ end
47
+
48
+ InspectableItem.new(inspection)
49
+ end
50
+ # rubocop:enable Metrics/CyclomaticComplexity
51
+ # rubocop:enable MethodLength
52
+
53
+ # @private
54
+ def self.prepare_hash(input)
55
+ input.each_with_object({}) do |(k, v), hash|
56
+ hash[prepare_for_inspection(k)] = prepare_for_inspection(v)
57
+ end
58
+ end
59
+
60
+ TIME_FORMAT = "%Y-%m-%d %H:%M:%S".freeze
61
+
62
+ if Time.method_defined?(:nsec)
63
+ # @private
64
+ def self.format_time(time)
65
+ time.strftime("#{TIME_FORMAT}.#{format('%09d', time.nsec)} %z")
66
+ end
67
+ else # for 1.8.7
68
+ # @private
69
+ def self.format_time(time)
70
+ time.strftime("#{TIME_FORMAT}.#{format('%06d', time.usec)} %z")
71
+ end
72
+ end
73
+
74
+ DATE_TIME_FORMAT = "%a, %d %b %Y %H:%M:%S.%N %z".freeze
75
+
76
+ # ActiveSupport sometimes overrides inspect. If `ActiveSupport` is
77
+ # defined use a custom format string that includes more time precision.
78
+ # @private
79
+ def self.format_date_time(date_time)
80
+ if defined?(ActiveSupport)
81
+ date_time.strftime(DATE_TIME_FORMAT)
82
+ else
83
+ date_time.inspect
84
+ end
85
+ end
86
+
87
+ # @private
88
+ InspectableItem = Struct.new(:inspection) do
89
+ def inspect
90
+ inspection
91
+ end
92
+
93
+ def pretty_print(pp)
94
+ pp.text inspection
95
+ end
96
+ end
97
+
98
+ # @private
99
+ DelegatingInspector = Struct.new(:object) do
100
+ def inspect
101
+ if defined?(::Delegator) && ::Delegator === object
102
+ "#<#{object.class}(#{ObjectFormatter.format(object.__getobj__)})>"
103
+ else
104
+ object.inspect
105
+ end
106
+ end
107
+
108
+ def pretty_print(pp)
109
+ pp.text inspect
110
+ end
111
+ end
112
+ end
113
+ end
114
+ end