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,376 @@
1
+ Feature: Set environment variable via API-method
2
+
3
+ It is quite handy to modify the environment of a process. To make this
4
+ possible, `aruba` provides several methods. One of these is
5
+ `#set_environment_variable`. Using this sets the value of a
6
+ non-existing variable and overwrites an existing value. Each variable name
7
+ and each value is converted to a string. Otherwise `ruby` would complain
8
+ about an invalid argument. To make use of a variable you can either use `#run`
9
+ and the like or `#with_environment`. Besides setting a variable globally, you
10
+ can set one for a block of code only using `#with_environment`.
11
+
12
+ Background:
13
+ Given I use the fixture "cli-app"
14
+
15
+ Scenario: Non-existing variable
16
+ Given a file named "spec/environment_spec.rb" with:
17
+ """ruby
18
+ require 'spec_helper'
19
+
20
+ RSpec.describe 'Environment command', :type => :aruba do
21
+ before(:each) { set_environment_variable 'LONG_LONG_VARIABLE', '1' }
22
+
23
+ before(:each) { run('env') }
24
+ before(:each) { stop_all_commands }
25
+
26
+ it { expect(last_command_started.output).to include 'LONG_LONG_VARIABLE=1' }
27
+ end
28
+ """
29
+ When I run `rspec`
30
+ Then the specs should all pass
31
+
32
+ Scenario: Existing variable set from within the test
33
+ Given a file named "spec/environment_spec.rb" with:
34
+ """ruby
35
+ require 'spec_helper'
36
+
37
+ RSpec.describe 'Environment command', :type => :aruba do
38
+ before(:each) { set_environment_variable 'LONG_LONG_VARIABLE', '1' }
39
+ before(:each) { set_environment_variable 'LONG_LONG_VARIABLE', '2' }
40
+
41
+ before(:each) { run('env') }
42
+ before(:each) { stop_all_commands }
43
+
44
+ it { expect(last_command_started.output).to include 'LONG_LONG_VARIABLE=2' }
45
+ end
46
+ """
47
+ When I run `rspec`
48
+ Then the specs should all pass
49
+
50
+
51
+ Scenario: Existing variable set by some outer parent process
52
+
53
+ Given a file named "spec/environment_spec.rb" with:
54
+ """ruby
55
+ require 'spec_helper'
56
+
57
+ ENV['REALLY_LONG_LONG_VARIABLE'] = '1'
58
+
59
+ RSpec.describe 'Environment command', :type => :aruba do
60
+ before(:each) { set_environment_variable 'REALLY_LONG_LONG_VARIABLE', '2' }
61
+
62
+ before(:each) { run('env') }
63
+ before(:each) { stop_all_commands }
64
+
65
+ it { expect(last_command_started.output).to include 'REALLY_LONG_LONG_VARIABLE=2' }
66
+ it { expect(ENV['REALLY_LONG_LONG_VARIABLE']).to eq '1' }
67
+ end
68
+ """
69
+ When I run `rspec`
70
+ Then the specs should all pass
71
+
72
+ Scenario: Set variable via ENV
73
+
74
+ Given a file named "spec/environment_spec.rb" with:
75
+ """ruby
76
+ require 'spec_helper'
77
+
78
+ RSpec.describe 'Environment command', :type => :aruba do
79
+ before(:each) { ENV['REALLY_LONG_LONG_VARIABLE'] = '2' }
80
+
81
+ before(:each) { run('env') }
82
+ before(:each) { stop_all_commands }
83
+
84
+ it { expect(last_command_started.output).to include 'REALLY_LONG_LONG_VARIABLE=2' }
85
+ end
86
+ """
87
+ When I run `rspec`
88
+ Then the specs should all pass
89
+
90
+ Scenario: Existing variable set in before block in RSpec
91
+
92
+ Setting environment variables with `#set_environment_variable('VAR', 'value')` takes
93
+ precedence before setting variables with `ENV['VAR'] = 'value'`.
94
+
95
+ Given a file named "spec/environment_spec.rb" with:
96
+ """ruby
97
+ require 'spec_helper'
98
+
99
+ RSpec.describe 'Environment command', :type => :aruba do
100
+ before(:each) { set_environment_variable 'REALLY_LONG_LONG_VARIABLE', '1' }
101
+ before(:each) { ENV['REALLY_LONG_LONG_VARIABLE'] = '2' }
102
+
103
+ before(:each) { run('env') }
104
+ before(:each) { stop_all_commands }
105
+
106
+ it { expect(last_command_started.output).to include 'REALLY_LONG_LONG_VARIABLE=1' }
107
+ end
108
+ """
109
+ When I run `rspec`
110
+ Then the specs should all pass
111
+
112
+ Scenario: Run some ruby code in code with previously set environment
113
+
114
+ The `#with_environment`-block makes the change environment temporary
115
+ avaiable for the code run within the block.
116
+
117
+ Given a file named "spec/environment_spec.rb" with:
118
+ """ruby
119
+ require 'spec_helper'
120
+
121
+ ENV['REALLY_LONG_LONG_VARIABLE'] = '1'
122
+
123
+ RSpec.describe 'Environment command', :type => :aruba do
124
+ before(:each) { set_environment_variable 'REALLY_LONG_LONG_VARIABLE', '2' }
125
+
126
+ before(:each) { run('env') }
127
+ before(:each) { stop_all_commands }
128
+
129
+ it do
130
+ with_environment do
131
+ expect(ENV['REALLY_LONG_LONG_VARIABLE']).to eq '2'
132
+ end
133
+ end
134
+
135
+ it { expect(ENV['REALLY_LONG_LONG_VARIABLE']).to eq '1' }
136
+
137
+ end
138
+ """
139
+ When I run `rspec`
140
+ Then the specs should all pass
141
+
142
+ Scenario: Run some ruby code with local environment
143
+
144
+ If you need to set some environment variables only for the given block.
145
+ Pass it an `Hash` containing the environment variables.
146
+
147
+ Given a file named "spec/environment_spec.rb" with:
148
+ """ruby
149
+ require 'spec_helper'
150
+
151
+ ENV['REALLY_LONG_LONG_VARIABLE'] = '1'
152
+
153
+ RSpec.describe 'Environment command', :type => :aruba do
154
+ before(:each) { set_environment_variable 'REALLY_LONG_LONG_VARIABLE', '2' }
155
+
156
+ before(:each) { run('env') }
157
+ before(:each) { stop_all_commands }
158
+
159
+ it do
160
+ with_environment 'REALLY_LONG_LONG_VARIABLE' => '3' do
161
+ expect(ENV['REALLY_LONG_LONG_VARIABLE']).to eq '3'
162
+ end
163
+ end
164
+
165
+ it { expect(ENV['REALLY_LONG_LONG_VARIABLE']).to eq '1' }
166
+ end
167
+ """
168
+ When I run `rspec`
169
+ Then the specs should all pass
170
+
171
+ Scenario: Nested setup with rspec
172
+
173
+ It doesn't matter if you define an environment variable in some outer
174
+ scope, when you are using `RSpec`.
175
+
176
+ Given a file named "spec/environment_spec.rb" with:
177
+ """ruby
178
+ require 'spec_helper'
179
+
180
+ RSpec.describe 'Environment command', :type => :aruba do
181
+ before(:each) { set_environment_variable 'LONG_LONG_VARIABLE', '1' }
182
+
183
+ describe 'Method XX' do
184
+ before(:each) { run('env') }
185
+ before(:each) { stop_all_commands }
186
+
187
+ it { expect(last_command_started.output).to include 'LONG_LONG_VARIABLE=1' }
188
+ end
189
+
190
+ describe 'Method YY' do
191
+ before(:each) { set_environment_variable 'LONG_LONG_VARIABLE', '2' }
192
+
193
+ before(:each) { run('env') }
194
+ before(:each) { stop_all_commands }
195
+
196
+ it { expect(last_command_started.output).to include 'LONG_LONG_VARIABLE=2' }
197
+ end
198
+ end
199
+ """
200
+ When I run `rspec`
201
+ Then the specs should all pass
202
+
203
+ Scenario: When an error occures the ENV is not polluted
204
+ Given a file named "spec/environment_spec.rb" with:
205
+ """ruby
206
+ require 'spec_helper'
207
+
208
+ ENV['REALLY_LONG_LONG_VARIABLE'] = '1'
209
+
210
+ RSpec.describe 'Environment command', :type => :aruba do
211
+ before(:each) { set_environment_variable 'REALLY_LONG_LONG_VARIABLE', '2' }
212
+
213
+ before(:each) { run('env') }
214
+ before(:each) { stop_all_commands }
215
+
216
+ it do
217
+ begin
218
+ with_environment 'REALLY_LONG_LONG_VARIABLE' => '3' do
219
+ fail
220
+ end
221
+ rescue StandardError
222
+ end
223
+
224
+ expect(ENV['REALLY_LONG_LONG_VARIABLE']).to eq '1'
225
+ end
226
+
227
+ it { expect(ENV['REALLY_LONG_LONG_VARIABLE']).to eq '1' }
228
+ end
229
+ """
230
+ When I run `rspec`
231
+ Then the specs should all pass
232
+
233
+ Scenario: Run some ruby code with nested environment blocks
234
+
235
+ It is possible to use a `#with_environment`-block with a
236
+ `#with_environment`-block. Each previously set variable is available with
237
+ the most inner block.
238
+
239
+ Given a file named "spec/environment_spec.rb" with:
240
+ """ruby
241
+ require 'spec_helper'
242
+
243
+ ENV['LONG_LONG_VARIABLE'] = '1'
244
+ ENV['REALLY_LONG_LONG_VARIABLE'] = '1'
245
+
246
+ RSpec.describe 'Environment command', :type => :aruba do
247
+ it do
248
+ with_environment 'REALLY_LONG_LONG_VARIABLE' => 2 do
249
+ with_environment 'LONG_LONG_VARIABLE' => 3 do
250
+ expect(ENV['LONG_LONG_VARIABLE']).to eq '3'
251
+ expect(ENV['REALLY_LONG_LONG_VARIABLE']).to eq '2'
252
+ end
253
+ end
254
+ end
255
+
256
+ it { expect(ENV['REALLY_LONG_LONG_VARIABLE']).to eq '1' }
257
+ end
258
+ """
259
+ When I run `rspec`
260
+ Then the specs should all pass
261
+
262
+ Scenario: Re-use `#with_environment` for multiple `RSpec`-`it`-blocks
263
+
264
+ If you chose to run wrap examples via `RSpec`'s `around`-hook, make sure you
265
+ use `before(:context) {}` instead of `before(:each)` to set an environment
266
+ variable. Only then the `before`-hook is run before the `around`-hook is
267
+ run.
268
+
269
+ Given a file named "spec/environment_spec.rb" with:
270
+ """ruby
271
+ require 'spec_helper'
272
+
273
+ RSpec.describe 'Environment command', :type => :aruba do
274
+ # Please mind :context. This is run BEFORE the `around`-hook
275
+ before(:context) { set_environment_variable 'REALLY_LONG_LONG_VARIABLE', '1' }
276
+
277
+ context 'when no arguments are given' do
278
+ around(:each) do |example|
279
+ with_environment do
280
+ example.run
281
+ end
282
+ end
283
+
284
+ it { expect(ENV['REALLY_LONG_LONG_VARIABLE']).to eq '1' }
285
+
286
+ before(:each) { run('env') }
287
+ before(:each) { stop_all_commands }
288
+
289
+ it { expect(last_command_started.output).to include 'REALLY_LONG_LONG_VARIABLE=1' }
290
+ end
291
+
292
+ context 'when arguments given' do
293
+ around(:each) do |example|
294
+ with_environment 'LONG_LONG_VARIABLE' => 2 do
295
+ example.run
296
+ end
297
+ end
298
+
299
+ it { expect(ENV['LONG_LONG_VARIABLE']).to eq '2' }
300
+
301
+ before(:each) { run('env') }
302
+ before(:each) { stop_all_commands }
303
+
304
+ it { expect(last_command_started.output).to include 'REALLY_LONG_LONG_VARIABLE=1' }
305
+ end
306
+ end
307
+ """
308
+ When I run `rspec`
309
+ Then the specs should all pass
310
+
311
+ @unsupported-on-platform-windows
312
+ Scenario: Mixed-Case variable
313
+ Given a file named "spec/environment_spec.rb" with:
314
+ """ruby
315
+ require 'spec_helper'
316
+
317
+ RSpec.describe 'Environment command', :type => :aruba do
318
+ before(:each) { set_environment_variable 'long_LONG_VARIABLE', '1' }
319
+
320
+ before(:each) { run('env') }
321
+ before(:each) { stop_all_commands }
322
+
323
+ it { expect(last_command_started.output).to include 'long_LONG_VARIABLE=1' }
324
+ end
325
+ """
326
+ When I run `rspec`
327
+ Then the specs should all pass
328
+
329
+ @unsupported-on-platform-unix
330
+ @unsupported-on-platform-mac
331
+ Scenario: Mixed-Case variable
332
+ Given a file named "spec/environment_spec.rb" with:
333
+ """ruby
334
+ require 'spec_helper'
335
+
336
+ RSpec.describe 'Environment command', :type => :aruba do
337
+ before(:each) { set_environment_variable 'long_LONG_VARIABLE', '1' }
338
+
339
+ before(:each) { run('env') }
340
+ before(:each) { stop_all_commands }
341
+
342
+ it { expect(last_command_started.output).to include 'LONG_LONG_VARIABLE=1' }
343
+ end
344
+ """
345
+ When I run `rspec`
346
+ Then the specs should all pass
347
+
348
+ Scenario: External ruby file / ruby gem modifying ENV
349
+
350
+ There are some Rubygems around which need to modify ENV['NODE_PATH'] like
351
+ [`ruby-stylus`](https://github.com/forgecrafted/ruby-stylus/blob/e7293362dc8cbf550f7c317d721ba6b9087e8833/lib/stylus.rb#L168).
352
+ This is supported by aruba as well.
353
+
354
+ Given a file named "spec/environment_spec.rb" with:
355
+ """ruby
356
+ require 'spec_helper'
357
+
358
+ $LOAD_PATH << File.expand_path('../../lib', __FILE__)
359
+
360
+ RSpec.describe 'Environment command', :type => :aruba do
361
+ before(:each) do
362
+ require 'my_library'
363
+ end
364
+
365
+ before(:each) { run('env') }
366
+ before(:each) { stop_all_commands }
367
+
368
+ it { expect(last_command_started.output).to include 'LONG_LONG_VARIABLE=1' }
369
+ end
370
+ """
371
+ And a file named "lib/my_library.rb" with:
372
+ """
373
+ ENV['LONG_LONG_VARIABLE'] = '1'
374
+ """
375
+ When I run `rspec`
376
+ Then the specs should all pass
@@ -0,0 +1,184 @@
1
+ Feature: Change current working directory
2
+
3
+ If you need to run some code in a different directory you can use the `cd`
4
+ command. It comes in two flavors:
5
+
6
+ \* First can simply use `cd 'some-dir'`
7
+ \* Second can use the block notation `cd('some-dir') { Dir.getwd }`
8
+
9
+ If you chose to use the latter one, the result of your block is returned. The
10
+ current working directory is only changed for the code inside the block -
11
+ it's use is side effect free.
12
+
13
+ Background:
14
+ Given I use a fixture named "cli-app"
15
+
16
+ Scenario: Existing directory
17
+ Given a file named "spec/cd_spec.rb" with:
18
+ """ruby
19
+ require 'spec_helper'
20
+
21
+ RSpec.describe 'cd to directory', :type => :aruba do
22
+ before(:each) do
23
+ create_directory 'new_dir.d'
24
+ cd 'new_dir.d'
25
+ end
26
+
27
+ before(:each) { run_simple 'pwd' }
28
+
29
+ it { expect(last_command_started.output).to include 'new_dir.d' }
30
+ end
31
+ """
32
+ When I run `rspec`
33
+ Then the specs should all pass
34
+
35
+ Scenario: Non-Existing directory
36
+ Given a file named "spec/cd_spec.rb" with:
37
+ """ruby
38
+ require 'spec_helper'
39
+
40
+ RSpec.describe 'cd to directory', :type => :aruba do
41
+ before(:each) { cd 'new_dir.d' }
42
+ before(:each) { run_simple 'pwd' }
43
+
44
+ it { expect(last_command_started.output).to include 'new_dir.d' }
45
+ it { expect(last_command_started).to be_executed_in_time }
46
+ end
47
+ """
48
+ When I run `rspec`
49
+ Then the specs should not pass
50
+
51
+ Scenario: With block in it-block
52
+ Given a file named "spec/cd_spec.rb" with:
53
+ """ruby
54
+ require 'spec_helper'
55
+
56
+ RSpec.describe 'cd to directory', :type => :aruba do
57
+ before(:each) do
58
+ create_directory 'new_dir.d/subdir.d'
59
+ end
60
+
61
+ it do
62
+ cd('new_dir.d/subdir.d') { expect(Dir.getwd).to include 'new_dir.d/subdir.d' }
63
+ end
64
+ end
65
+ """
66
+ When I run `rspec`
67
+ Then the specs should all pass
68
+
69
+ Scenario: With block in before-block
70
+
71
+ Running `cd` with a block does not change:
72
+
73
+ \* The current directory - `Dir.getwd`
74
+ \* Aruba's current directory
75
+
76
+ Given a file named "spec/cd_spec.rb" with:
77
+ """ruby
78
+ require 'spec_helper'
79
+
80
+ RSpec.describe 'cd to directory', :type => :aruba do
81
+ before(:each) do
82
+ create_directory 'new_dir.d/subdir.d'
83
+ end
84
+
85
+ before :each do
86
+ cd('new_dir.d/subdir.d') do
87
+ # you code
88
+ end
89
+ end
90
+
91
+ it { expect(Dir.getwd).not_to include 'new_dir.d/subdir.d' }
92
+ it { expect(expand_path('.')).not_to include 'new_dir.d/subdir.d' }
93
+ end
94
+ """
95
+ When I run `rspec`
96
+ Then the specs should all pass
97
+
98
+ Scenario: The result of the block is returned
99
+
100
+ If you need to run some code in a different directory, you can also use the
101
+ block-notation of `cd`.
102
+
103
+ Given a file named "spec/cd_spec.rb" with:
104
+ """ruby
105
+ require 'spec_helper'
106
+
107
+ RSpec.describe 'cd to directory', :type => :aruba do
108
+ before(:each) do
109
+ create_directory 'new_dir.d/subdir.d'
110
+ end
111
+
112
+ before :each do
113
+ @my_output = cd('new_dir.d/subdir.d') { Dir.getwd }
114
+ end
115
+
116
+ it { expect(@my_output).to include 'new_dir.d/subdir.d' }
117
+ end
118
+ """
119
+ When I run `rspec`
120
+ Then the specs should all pass
121
+
122
+ Scenario: It changes the PWD- and OLDPWD-ENV-variable for a given block
123
+
124
+ If you need to run some code in a different directory, you can also use the
125
+ block-notation of `cd`.
126
+
127
+ Given a file named "spec/cd_spec.rb" with:
128
+ """ruby
129
+ require 'spec_helper'
130
+
131
+ RSpec.describe 'cd to directory', :type => :aruba do
132
+ before(:each) do
133
+ create_directory 'new_dir.d'
134
+ end
135
+
136
+ before :each do
137
+ cd('new_dir.d/') do
138
+ @pwd = ENV['PWD']
139
+ @oldpwd = ENV['OLDPWD']
140
+ end
141
+ end
142
+
143
+ it { expect(@pwd).to end_with 'new_dir.d' }
144
+ it { expect(@oldpwd).to end_with 'cli-app' }
145
+ end
146
+ """
147
+ When I run `rspec`
148
+ Then the specs should all pass
149
+
150
+ Scenario: Nested cd calls
151
+
152
+ If you need to run some code in a different directory, you can also use the
153
+ block-notation of `cd`.
154
+
155
+ Given a file named "spec/cd_spec.rb" with:
156
+ """ruby
157
+ require 'spec_helper'
158
+
159
+ RSpec.describe 'cd to directory', :type => :aruba do
160
+ before(:each) do
161
+ create_directory 'new_dir.d/subdir.d'
162
+ end
163
+
164
+ before :each do
165
+ cd('new_dir.d') do
166
+ @oldpwd_1 = ENV['OLDPWD']
167
+ @pwd_1 = ENV['PWD']
168
+
169
+ cd('subdir.d') do
170
+ @oldpwd_2 = ENV['OLDPWD']
171
+ @pwd_2 = ENV['PWD']
172
+ end
173
+ end
174
+ end
175
+
176
+ it { expect(@oldpwd_1).to be_end_with 'cli-app' }
177
+ it { expect(@pwd_1).to be_end_with 'new_dir.d' }
178
+
179
+ it { expect(@oldpwd_2).to be_end_with 'new_dir.d' }
180
+ it { expect(@pwd_2).to be_end_with 'subdir.d' }
181
+ end
182
+ """
183
+ When I run `rspec`
184
+ Then the specs should all pass