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,126 @@
1
+ require 'fileutils'
2
+
3
+ if(ENV['ARUBA_REPORT_DIR'])
4
+ require 'aruba/platform'
5
+ Aruba.platform.deprecated 'The use of "aruba/reporting" is deprecated. This functionality will be removed with "1.0.0"'
6
+
7
+ ENV['ARUBA_REPORT_TEMPLATES'] ||= File.dirname(__FILE__) + '/../../templates'
8
+
9
+ require 'fileutils'
10
+ require 'erb'
11
+ require 'cgi'
12
+ require 'bcat/ansi'
13
+ require 'rdiscount'
14
+ require 'aruba/spawn_process'
15
+
16
+ module Aruba
17
+ module Reporting
18
+ class << self
19
+ def reports
20
+ @reports ||= Hash.new do |hash, feature|
21
+ hash[feature] = []
22
+ end
23
+ end
24
+ end
25
+
26
+ def pygmentize(file)
27
+ pygmentize = Processes::SpawnProcess.new(%{pygmentize -f html -O encoding=utf-8 "#{file}"}, 3, 0.5, Dir.getwd)
28
+ pygmentize.run! do |p|
29
+ exit_status = p.stop(false)
30
+ if(exit_status == 0)
31
+ p.stdout(false)
32
+ elsif(p.stderr(false) =~ /no lexer/) # Pygment's didn't recognize it
33
+ IO.read(file)
34
+ else
35
+ STDERR.puts "\e[31m#{p.stderr} - is pygments installed?\e[0m"
36
+ exit $CHILD_STATUS.exitstatus
37
+ end
38
+ end
39
+ end
40
+
41
+ def title
42
+ @scenario.title
43
+ end
44
+
45
+ def description
46
+ unescaped_description = @scenario.description.gsub(/^(\s*)\\/, '\1')
47
+ markdown = RDiscount.new(unescaped_description)
48
+ markdown.to_html
49
+ end
50
+
51
+ def commands
52
+ @commands || []
53
+ end
54
+
55
+ def output
56
+ aruba.config.keep_ansi = true # We want the output coloured!
57
+ escaped_stdout = CGI.escapeHTML(all_stdout)
58
+ html = Bcat::ANSI.new(escaped_stdout).to_html
59
+ Bcat::ANSI::STYLES.each do |name, style|
60
+ html.gsub!(/style='#{style}'/, %{class="xterm_#{name}"})
61
+ end
62
+ html
63
+ end
64
+
65
+ def report
66
+ erb = ERB.new(template('main.erb'), nil, '-')
67
+ erb.result(binding)
68
+ end
69
+
70
+ def files
71
+ erb = ERB.new(template('files.erb'), nil, '-')
72
+ file = current_directory
73
+ erb.result(binding)
74
+ end
75
+
76
+ def again(erb, erbout, file)
77
+ erbout.concat(erb.result(binding))
78
+ end
79
+
80
+ def children(dir)
81
+ Dir["#{dir}/*"].sort
82
+ end
83
+
84
+ def template(path)
85
+ IO.read(File.join(ENV['ARUBA_REPORT_TEMPLATES'], path))
86
+ end
87
+
88
+ def depth
89
+ File.dirname(@scenario.feature.file).split('/').length
90
+ end
91
+
92
+ def index
93
+ erb = ERB.new(template('index.erb'), nil, '-')
94
+ erb.result(binding)
95
+ end
96
+
97
+ def index_title
98
+ "Examples"
99
+ end
100
+ end
101
+ end
102
+ World(Aruba::Reporting)
103
+
104
+ After do |scenario|
105
+ @scenario = scenario
106
+ html_file = "#{scenario.feature.file}:#{scenario.line}.html"
107
+ report_file = File.join(ENV['ARUBA_REPORT_DIR'], html_file)
108
+ _mkdir(File.dirname(report_file))
109
+ File.open(report_file, 'w') do |io|
110
+ io.write(report)
111
+ end
112
+
113
+ Aruba::Reporting.reports[scenario.feature] << [scenario, html_file]
114
+
115
+ FileUtils.cp_r(File.join(ENV['ARUBA_REPORT_TEMPLATES'], '.'), ENV['ARUBA_REPORT_DIR'])
116
+ Dir["#{ENV['ARUBA_REPORT_DIR']}/**/*.erb"].each{|f| FileUtils.rm(f)}
117
+ end
118
+
119
+ at_exit do
120
+ index_file = File.join(ENV['ARUBA_REPORT_DIR'], "index.html")
121
+ extend(Aruba::Reporting)
122
+ File.open(index_file, 'w') do |io|
123
+ io.write(index)
124
+ end
125
+ end
126
+ end
@@ -0,0 +1,107 @@
1
+ require 'rspec/core'
2
+
3
+ require 'aruba'
4
+ require 'aruba/api'
5
+ require 'aruba/version'
6
+
7
+ if Aruba::VERSION >= '1.0.0'
8
+ Aruba.configure do |config|
9
+ config.working_directory = 'tmp/rspec'
10
+ end
11
+ end
12
+
13
+ RSpec.configure do |config|
14
+ config.include Aruba::Api, :type => :aruba
15
+
16
+ # Setup environment for aruba
17
+ config.around :each do |example|
18
+ if self.class.include? Aruba::Api
19
+ restore_env
20
+ setup_aruba
21
+ end
22
+
23
+ example.run
24
+
25
+ next unless self.class.include? Aruba::Api
26
+ stop_all_commands
27
+ end
28
+
29
+ if Aruba::VERSION >= '1.0.0'
30
+ config.around :each do |example|
31
+ Aruba.platform.with_environment do
32
+ example.run
33
+ end
34
+ end
35
+ end
36
+
37
+ config.before :each do |example|
38
+ next unless self.class.include? Aruba::Api
39
+
40
+ example.metadata.each { |k, v| aruba.config.set_if_option(k, v) }
41
+ end
42
+
43
+ # Activate announcers based on rspec metadata
44
+ config.before :each do |example|
45
+ next unless self.class.include?(Aruba::Api)
46
+
47
+ if example.metadata[:announce_environment]
48
+ Aruba.platform.deprecated 'announce_environment is deprecated. Use announce_changed_environment instead'
49
+
50
+ aruba.announcer.activate(:changed_environment)
51
+ end
52
+
53
+ aruba.announcer.activate(:full_environment) if example.metadata[:announce_full_environment]
54
+ aruba.announcer.activate(:changed_environment) if example.metadata[:announce_changed_environment]
55
+
56
+ if example.metadata[:announce_modified_environment]
57
+ Aruba.platform.deprecated 'announce_modified_environment is deprecated. Use announce_changed_environment instead'
58
+
59
+ aruba.announcer.activate(:changed_environment)
60
+ end
61
+
62
+ aruba.announcer.activate(:command) if example.metadata[:announce_command]
63
+ aruba.announcer.activate(:directory) if example.metadata[:announce_directory]
64
+ aruba.announcer.activate(:full_environment) if example.metadata[:announce_full_environment]
65
+ aruba.announcer.activate(:stderr) if example.metadata[:announce_stderr]
66
+ aruba.announcer.activate(:stdout) if example.metadata[:announce_stdout]
67
+ aruba.announcer.activate(:stop_signal) if example.metadata[:announce_stop_signal]
68
+ aruba.announcer.activate(:timeout) if example.metadata[:announce_timeout]
69
+ aruba.announcer.activate(:wait_time) if example.metadata[:announce_wait_time]
70
+ aruba.announcer.activate(:command_content) if example.metadata[:announce_command_content]
71
+ aruba.announcer.activate(:command_filesystem_status) if example.metadata[:announce_command_filesystem_status]
72
+
73
+ if example.metadata[:announce_output]
74
+ aruba.announcer.activate(:stderr)
75
+ aruba.announcer.activate(:stdout)
76
+ end
77
+
78
+ if example.metadata[:announce]
79
+ aruba.announcer.activate(:changed_environment)
80
+ aruba.announcer.activate(:command)
81
+ aruba.announcer.activate(:directory)
82
+ aruba.announcer.activate(:environment)
83
+ aruba.announcer.activate(:full_environment)
84
+ aruba.announcer.activate(:stderr)
85
+ aruba.announcer.activate(:stdout)
86
+ aruba.announcer.activate(:stop_signal)
87
+ aruba.announcer.activate(:timeout)
88
+ aruba.announcer.activate(:wait_time)
89
+ aruba.announcer.activate(:command_content)
90
+ aruba.announcer.activate(:command_filesystem_status)
91
+ end
92
+ end
93
+
94
+ # Modify PATH to include project/bin
95
+ config.before :each do
96
+ next unless self.class.include? Aruba::Api
97
+
98
+ prepend_environment_variable 'PATH', aruba.config.command_search_paths.join(':') + ':'
99
+ end
100
+
101
+ # Use configured home directory as HOME
102
+ config.before :each do |example|
103
+ next unless self.class.include? Aruba::Api
104
+
105
+ set_environment_variable 'HOME', aruba.config.home_directory
106
+ end
107
+ end
@@ -0,0 +1,96 @@
1
+ require 'aruba/config'
2
+ require 'aruba/aruba_path'
3
+ require 'aruba/config_wrapper'
4
+ require 'aruba/events'
5
+ require 'aruba/event_bus'
6
+
7
+ module Aruba
8
+ # Runtime of aruba
9
+ #
10
+ # Most methods are considered private. Please look for `(private)` in the
11
+ # attribute descriptions. Only a few like `#current_directory`,
12
+ # '#root_directory` and `#config` are considered to be part of the public
13
+ # API.
14
+ class Runtime
15
+ # @!attribute [r] current_directory
16
+ # Returns the current working directory
17
+ #
18
+ # @!attribute [r] root_directory
19
+ # Returns the root directory of aruba
20
+ attr_reader :current_directory, :root_directory
21
+
22
+ # @!attribute [r] config
23
+ # Access configuration of aruba
24
+ #
25
+ # @!attribute [r] environment
26
+ # Access environment of aruba (private)
27
+ #
28
+ # @!attribute [r] logger
29
+ # Logger of aruba (private)
30
+ #
31
+ # @!attribute [r] command_monitor
32
+ # Handler started commands (private)
33
+ #
34
+ # @!attribute [r] announcer
35
+ # Announce information
36
+ #
37
+ # @!attribute [r] event_bus
38
+ # Handle events (private)
39
+ #
40
+ attr_accessor :config, :environment, :logger, :command_monitor, :announcer, :event_bus
41
+
42
+ def initialize(opts = {})
43
+ @event_bus = EventBus.new(EventBus::NameResolver.new(Aruba::Events))
44
+ @announcer = opts.fetch(:announcer, Aruba.platform.announcer.new)
45
+ @config = opts.fetch(:config, ConfigWrapper.new(Aruba.config.make_copy, @event_bus))
46
+ @environment = opts.fetch(:environment, Aruba.platform.environment_variables.new)
47
+ @current_directory = ArubaPath.new(@config.working_directory)
48
+ @root_directory = ArubaPath.new(@config.root_directory)
49
+
50
+ @environment.update(@config.command_runtime_environment)
51
+
52
+ @command_monitor = if Aruba::VERSION < '1'
53
+ opts.fetch(:command_monitor, Aruba.platform.command_monitor.new(:announcer => @announcer))
54
+ else
55
+ opts.fetch(:command_monitor, Aruba.platform.command_monitor.new)
56
+ end
57
+
58
+ @logger = opts.fetch(:logger, Aruba.platform.logger.new)
59
+ @logger.mode = @config.log_level
60
+
61
+ @setup_done = false
62
+ end
63
+
64
+ # @private
65
+ #
66
+ # Setup of aruba is finshed. Should be used only internally.
67
+ def setup_done
68
+ @setup_done = true
69
+ end
70
+
71
+ # @private
72
+ #
73
+ # Has aruba already been setup. Should be used only internally.
74
+ def setup_already_done?
75
+ @setup_done == true
76
+ end
77
+
78
+ # The path to the directory which contains fixtures
79
+ # You might want to overwrite this method to place your data else where.
80
+ #
81
+ # @return [ArubaPath]
82
+ # The directory to where your fixtures are stored
83
+ def fixtures_directory
84
+ unless @fixtures_directory
85
+ candidates = config.fixtures_directories.map { |dir| File.join(root_directory, dir) }
86
+ @fixtures_directory = candidates.find { |d| Aruba.platform.directory? d }
87
+
88
+ fail "No existing fixtures directory found in #{candidates.map { |d| format('"%s"', d) }.join(', ')}. " unless @fixtures_directory
89
+ end
90
+
91
+ fail %(Fixtures directory "#{@fixtures_directory}" is not a directory) unless Aruba.platform.directory?(@fixtures_directory)
92
+
93
+ ArubaPath.new(@fixtures_directory)
94
+ end
95
+ end
96
+ end
@@ -0,0 +1,90 @@
1
+ module Aruba
2
+ class Setup
3
+ private
4
+
5
+ attr_reader :runtime
6
+
7
+ public
8
+
9
+ def initialize(runtime)
10
+ @runtime = runtime
11
+ end
12
+
13
+ def call
14
+ return if runtime.setup_already_done?
15
+
16
+ working_directory
17
+ events
18
+
19
+ runtime.setup_done
20
+
21
+ self
22
+ end
23
+
24
+ private
25
+
26
+ def working_directory
27
+ Aruba.platform.rm File.join(runtime.config.root_directory, runtime.config.working_directory), :force => true
28
+ Aruba.platform.mkdir File.join(runtime.config.root_directory, runtime.config.working_directory)
29
+ Aruba.platform.chdir runtime.config.root_directory
30
+ end
31
+
32
+ # rubocop:disable Metrics/MethodLength
33
+ def events
34
+ runtime.event_bus.register(
35
+ :command_started,
36
+ proc do |event|
37
+ runtime.announcer.announce :command, event.entity.commandline
38
+ runtime.announcer.announce :timeout, 'exit', event.entity.exit_timeout
39
+ runtime.announcer.announce :timeout, 'io wait', event.entity.io_wait_timeout
40
+ runtime.announcer.announce :wait_time, 'startup wait time', event.entity.startup_wait_time
41
+ runtime.announcer.announce :full_environment, event.entity.environment
42
+ end
43
+ )
44
+
45
+ runtime.event_bus.register(
46
+ :command_started,
47
+ proc do |event|
48
+ runtime.command_monitor.register_command event.entity
49
+ runtime.command_monitor.last_command_started = event.entity
50
+ end
51
+ )
52
+
53
+ runtime.event_bus.register(
54
+ :command_stopped,
55
+ proc do |event|
56
+ runtime.announcer.announce(:stdout) { event.entity.stdout }
57
+ runtime.announcer.announce(:stderr) { event.entity.stderr }
58
+ runtime.announcer.announce(:command_content) { event.entity.content }
59
+ runtime.announcer.announce(:command_filesystem_status) { event.entity.filesystem_status }
60
+ end
61
+ )
62
+
63
+ runtime.event_bus.register(
64
+ :command_stopped,
65
+ proc do |event|
66
+ runtime.command_monitor.last_command_stopped = event.entity
67
+ end
68
+ )
69
+
70
+ runtime.event_bus.register(
71
+ [:changed_environment_variable, :added_environment_variable, :deleted_environment_variable],
72
+ proc do |event|
73
+ runtime.announcer.announce :changed_environment, event.entity[:changed][:name], event.entity[:changed][:value]
74
+ runtime.announcer.announce :environment, event.entity[:changed][:name], event.entity[:changed][:value]
75
+ end
76
+ )
77
+
78
+ runtime.event_bus.register(
79
+ :changed_working_directory,
80
+ proc { |event| runtime.announcer.announce :directory, event.entity[:new] }
81
+ )
82
+
83
+ runtime.event_bus.register(
84
+ :changed_configuration,
85
+ proc { |event| runtime.announcer.announce :configuration, event.entity[:changed][:name], event.entity[:changed][:value] }
86
+ )
87
+ end
88
+ # rubocop:enable Metrics/MethodLength
89
+ end
90
+ end
@@ -0,0 +1,11 @@
1
+ require 'aruba/processes/spawn_process'
2
+
3
+ module Aruba
4
+ class SpawnProcess < Aruba::Processes::SpawnProcess
5
+ def initialize(*args)
6
+ warn('The use of "Aruba::SpawnProcess" is deprecated. Use "Aruba::Processes::SpawnProcess" instead.')
7
+
8
+ super
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,3 @@
1
+ module Aruba
2
+ VERSION = '0.14.2'.freeze
3
+ end
@@ -0,0 +1,28 @@
1
+ #!/bin/bash
2
+
3
+ set -e
4
+
5
+ info_msg="\e[0;32m[INFO]\e[0;30m"
6
+ error_msg="\e[0;31mFAILED\e[0;30m"
7
+
8
+ function output_error_log {
9
+ [[ -f error.log ]] && ( cat error.log >&2; rm error.log)
10
+ }
11
+
12
+ echo -ne "$info_msg Checking if ruby installed? "
13
+ which 'ruby' >/dev/null 2>error.log || ( echo -e "$error_msg\n\nCould not find \`ruby\`. Please install ruby or add it to PATH"; output_error_log; exit 1 )
14
+ echo OK
15
+
16
+ echo -ne "$info_msg Checking if bash installed? "
17
+ which 'bash' >/dev/null 2>error.log || ( echo -e "$error_msg\n\nCould not find \`bash\`. Please install bash or add it to PATH"; output_error_log; exit 1 )
18
+ echo OK
19
+
20
+ echo -ne "$info_msg Checking if zsh installed? "
21
+ which 'zsh' >/dev/null 2>error.log || ( echo -e "$error_msg\n\nCould not find \`zsh\`. Please install zsh or add it to PATH"; output_error_log; exit 1 )
22
+ echo OK
23
+
24
+ echo -e "$info_msg rubygem \"bundler\" "
25
+ gem install bundler
26
+
27
+ echo -e "$info_msg \"bundle install\" "
28
+ bundle install $*