aruba 0.9.0.pre → 0.9.0.pre2
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.
- checksums.yaml +4 -4
- data/Gemfile +8 -3
- data/History.md +61 -19
- data/README.md +10 -6
- data/TODO.md +6 -1
- data/cucumber.yml +10 -6
- data/features/.nav +72 -0
- data/features/announce.feature +203 -0
- data/features/api/command/extract_text.feature +10 -0
- data/features/api/command/run.feature +6 -6
- data/features/api/command/stop_all_commands.feature +53 -0
- data/features/api/command/terminate_all_commands.feature +53 -0
- data/features/api/command/unescape_text.feature +12 -0
- data/features/api/command/which.feature +3 -3
- data/features/api/core/expand_path.feature +4 -4
- data/features/api/environment/append_environment_variable.feature +18 -8
- data/features/api/environment/prepend_environment_variable.feature +18 -8
- data/features/api/environment/set_environment_variable.feature +33 -16
- data/features/api/filesystem/cd.feature +23 -13
- data/features/api/filesystem/create_directory.feature +2 -2
- data/features/api/filesystem/disk_usage.feature +7 -6
- data/features/api/filesystem/does_exist.feature +2 -2
- data/features/api/filesystem/is_absolute.feature +2 -2
- data/features/api/filesystem/is_directory.feature +2 -2
- data/features/api/filesystem/is_file.feature +2 -2
- data/features/api/filesystem/is_relative.feature +2 -2
- data/features/api/filesystem/move.feature +119 -0
- data/features/cli/console.feature +3 -3
- data/features/commands/debug_command.feature +93 -0
- data/features/commands/environment_variables.feature +64 -0
- data/features/commands/flushing.feature +74 -0
- data/features/commands/interactive.feature +90 -0
- data/features/commands/output/all_output.feature +445 -0
- data/features/commands/output/stdout.feature +66 -0
- data/features/configuration/exit_timeout.feature +5 -5
- data/features/configuration/fixtures_directories.feature +3 -3
- data/features/configuration/fixtures_path_prefix.feature +1 -1
- data/features/configuration/home_directory.feature +4 -4
- data/features/configuration/io_timeout.feature +2 -2
- data/features/configuration/keep_ansi.feature +2 -2
- data/features/configuration/log_level.feature +3 -3
- data/features/configuration/physical_block_size.feature +3 -3
- data/features/configuration/usage.feature +159 -0
- data/features/core/cleanup_aruba_directory.feature +52 -0
- data/features/development/build.feature +16 -0
- data/features/development/test.feature +24 -0
- data/features/file_system_commands.feature +12 -12
- data/features/getting_started/supported_programming_languages.feature +89 -0
- data/features/hooks/after/command.feature +1 -1
- data/features/hooks/before/command.feature +2 -2
- data/features/matchers/collection/include_an_object.feature +72 -0
- data/features/matchers/timeouts.feature +2 -2
- data/features/output.feature +60 -181
- data/features/step_definitions/aruba_dev_steps.rb +17 -10
- data/features/step_definitions/hooks.rb +11 -0
- data/features/steps/commands/exit_statuses.feature +3 -3
- data/features/steps/commands/run.feature +0 -15
- data/features/steps/filesystem/copy.feature +45 -0
- data/features/steps/filesystem/create_directory.feature +47 -0
- data/features/steps/filesystem/create_file.feature +53 -0
- data/features/steps/filesystem/file_content.feature +1 -1
- data/features/steps/filesystem/move.feature +45 -0
- data/features/steps/filesystem/overwrite_file.feature +72 -0
- data/features/steps/filesystem/use_fixture.feature +77 -0
- data/features/usage/install.feature +8 -0
- data/{features/fixtures → fixtures}/cli-app/.gitignore +0 -0
- data/{features/fixtures → fixtures}/cli-app/.rspec +0 -0
- data/{features/fixtures → fixtures}/cli-app/README.md +0 -0
- data/{features/fixtures → fixtures}/cli-app/Rakefile +0 -0
- data/{features/fixtures → fixtures}/cli-app/bin/cli +0 -0
- data/{features/fixtures → fixtures}/cli-app/cli-app.gemspec +0 -0
- data/{features/fixtures → fixtures}/cli-app/features/support/env.rb +0 -0
- data/{features/fixtures → fixtures}/cli-app/lib/cli/app.rb +0 -0
- data/fixtures/cli-app/lib/cli/app/suppress_simple_cov_output.rb +15 -0
- data/{features/fixtures → fixtures}/cli-app/lib/cli/app/version.rb +0 -0
- data/{features/fixtures/empty-app → fixtures/cli-app}/script/console +3 -3
- data/{features/fixtures → fixtures}/cli-app/spec/spec_helper.rb +0 -0
- data/{features/fixtures → fixtures}/cli-app/spec/support/aruba.rb +0 -0
- data/{features/fixtures → fixtures}/copy/file.txt +0 -0
- data/{features/fixtures → fixtures}/empty-app/.gitignore +0 -0
- data/{features/fixtures → fixtures}/empty-app/.rspec +0 -0
- data/{features/fixtures → fixtures}/empty-app/README.md +0 -0
- data/{features/fixtures → fixtures}/empty-app/Rakefile +0 -0
- data/{features/fixtures → fixtures}/empty-app/bin/cli +0 -0
- data/{features/fixtures → fixtures}/empty-app/cli-app.gemspec +0 -0
- data/{features/fixtures → fixtures}/empty-app/lib/cli/app.rb +0 -0
- data/{features/fixtures → fixtures}/empty-app/lib/cli/app/version.rb +0 -0
- data/{features/fixtures/cli-app → fixtures/empty-app}/script/console +3 -3
- data/{features/fixtures → fixtures}/empty-app/spec/spec_helper.rb +0 -0
- data/{features/fixtures → fixtures}/fixtures-app/test.txt +0 -0
- data/fixtures/getting-started-app/.gitignore +4 -0
- data/fixtures/getting-started-app/Gemfile +4 -0
- data/fixtures/getting-started-app/README.md +3 -0
- data/fixtures/getting-started-app/features/support/env.rb +1 -0
- data/{features/fixtures → fixtures}/spawn_process/stderr.sh +0 -0
- data/lib/aruba/announcer.rb +6 -2
- data/lib/aruba/api.rb +0 -16
- data/lib/aruba/api/command.rb +64 -266
- data/lib/aruba/api/core.rb +24 -26
- data/lib/aruba/api/deprecated.rb +370 -12
- data/lib/aruba/api/filesystem.rb +64 -15
- data/lib/aruba/aruba_path.rb +4 -0
- data/lib/aruba/config.rb +1 -1
- data/lib/aruba/cucumber.rb +5 -449
- data/lib/aruba/cucumber/command.rb +378 -0
- data/lib/aruba/cucumber/core.rb +29 -0
- data/lib/aruba/cucumber/environment.rb +30 -0
- data/lib/aruba/cucumber/file.rb +210 -0
- data/lib/aruba/cucumber/hooks.rb +11 -14
- data/lib/aruba/cucumber/rvm.rb +3 -0
- data/lib/aruba/matchers/base/base_matcher.rb +94 -0
- data/lib/aruba/matchers/collection.rb +1 -0
- data/lib/aruba/matchers/collection/all_objects.rb +2 -0
- data/lib/aruba/matchers/collection/include_an_object.rb +120 -0
- data/lib/aruba/matchers/command/be_successfully_executed.rb +3 -3
- data/lib/aruba/matchers/command/have_exit_status.rb +2 -11
- data/lib/aruba/matchers/command/have_finished_in_time.rb +5 -5
- data/lib/aruba/matchers/command/have_output.rb +46 -0
- data/lib/aruba/matchers/command/have_output_on_stderr.rb +42 -0
- data/lib/aruba/matchers/command/have_output_on_stdout.rb +42 -0
- data/lib/aruba/matchers/command/have_output_size.rb +28 -0
- data/lib/aruba/matchers/directory/be_an_existing_directory.rb +1 -1
- data/lib/aruba/matchers/file/be_an_existing_file.rb +1 -1
- data/lib/aruba/matchers/file/have_file_content.rb +1 -1
- data/lib/aruba/matchers/file/have_file_size.rb +2 -2
- data/lib/aruba/matchers/file/have_same_file_content.rb +1 -1
- data/lib/aruba/matchers/path/have_permissions.rb +1 -1
- data/lib/aruba/platforms/aruba_file_creator.rb +2 -3
- data/lib/aruba/platforms/aruba_fixed_size_file_creator.rb +2 -3
- data/lib/aruba/platforms/determine_disk_usage.rb +23 -0
- data/lib/aruba/platforms/determine_file_size.rb +13 -0
- data/lib/aruba/platforms/disk_usage_calculator.rb +11 -0
- data/lib/aruba/platforms/local_environment.rb +15 -0
- data/lib/aruba/platforms/unix_environment_variables.rb +1 -1
- data/lib/aruba/platforms/unix_platform.rb +35 -14
- data/lib/aruba/process_monitor.rb +53 -7
- data/lib/aruba/processes/basic_process.rb +25 -5
- data/lib/aruba/processes/debug_process.rb +27 -25
- data/lib/aruba/processes/in_process.rb +7 -22
- data/lib/aruba/processes/spawn_process.rb +74 -31
- data/lib/aruba/rspec.rb +1 -6
- data/lib/aruba/version.rb +1 -1
- data/script/console +0 -1
- data/spec/aruba/api/environment/restore_env_spec.rb +65 -0
- data/spec/aruba/api/environment/set_env_spec.rb +42 -0
- data/spec/aruba/api/filesystem/file_size_spec.rb +28 -0
- data/spec/aruba/api_spec.rb +10 -7
- data/spec/aruba/matchers/command/have_output_size_spec.rb +25 -0
- data/spec/aruba/matchers/command_spec.rb +135 -4
- data/spec/aruba/spawn_process_spec.rb +1 -1
- metadata +107 -65
- data/.nav +0 -12
- data/features/debug.feature +0 -15
- data/features/fixtures/cli-app/spec/cli/app_spec.rb +0 -7
- data/features/flushing.feature +0 -26
- data/features/interactive.feature +0 -66
- data/features/no_clobber.feature +0 -25
- data/lib/aruba/disk_usage_calculator.rb +0 -7
@@ -11,50 +11,52 @@ module Aruba
|
|
11
11
|
|
12
12
|
# rubocop:disable Metrics/MethodLength
|
13
13
|
# rubocop:disable Metrics/CyclomaticComplexity
|
14
|
-
def
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
if RUBY_VERSION < '1.9'
|
20
|
-
begin
|
21
|
-
old_env = ENV.to_hash.dup
|
22
|
-
ENV.update environment
|
23
|
-
|
24
|
-
Dir.chdir @working_directory do
|
25
|
-
@exit_status = system(@cmd) ? 0 : 1
|
26
|
-
end
|
27
|
-
ensure
|
28
|
-
ENV.clear
|
29
|
-
ENV.update old_env
|
14
|
+
def start
|
15
|
+
Dir.chdir @working_directory do
|
16
|
+
Aruba.platform.with_environment(environment) do
|
17
|
+
@exit_status = system(command, *arguments) ? 0 : 1
|
30
18
|
end
|
31
|
-
elsif RUBY_VERSION < '2'
|
32
|
-
Dir.chdir @working_directory do
|
33
|
-
@exit_status = system(environment, @cmd) ? 0 : 1
|
34
|
-
end
|
35
|
-
else
|
36
|
-
@exit_status = system(environment, @cmd, :chdir => @working_directory) ? 0 : 1
|
37
19
|
end
|
38
20
|
end
|
39
21
|
# rubocop:enable Metrics/CyclomaticComplexity
|
40
22
|
# rubocop:enable Metrics/MethodLength
|
41
23
|
|
24
|
+
# Return stdin
|
25
|
+
#
|
26
|
+
# @return [NilClass]
|
27
|
+
# Nothing
|
42
28
|
def stdin(*); end
|
43
29
|
|
30
|
+
# Return stdout
|
31
|
+
#
|
32
|
+
# @return [String]
|
33
|
+
# A predefined string to make users aware they are using the DebugProcess
|
44
34
|
def stdout(*)
|
45
|
-
''
|
35
|
+
'This is the debug launcher on STDOUT. If this output is unexpected, please check your setup.'
|
46
36
|
end
|
47
37
|
|
38
|
+
# Return stderr
|
39
|
+
#
|
40
|
+
# @return [String]
|
41
|
+
# A predefined string to make users aware they are using the DebugProcess
|
48
42
|
def stderr(*)
|
49
|
-
''
|
43
|
+
'This is the debug launcher on STDERR. If this output is unexpected, please check your setup.'
|
50
44
|
end
|
51
45
|
|
52
|
-
|
46
|
+
# Write to nothing
|
47
|
+
def write(*); end
|
48
|
+
|
49
|
+
# Close nothing
|
50
|
+
def close_io(*); end
|
51
|
+
|
52
|
+
# Stop process
|
53
|
+
def stop(*)
|
53
54
|
@stopped = true
|
54
55
|
|
55
56
|
@exit_status
|
56
57
|
end
|
57
58
|
|
59
|
+
# Terminate process
|
58
60
|
def terminate(*)
|
59
61
|
stop
|
60
62
|
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'shellwords'
|
2
2
|
require 'stringio'
|
3
3
|
require 'aruba/processes/basic_process'
|
4
|
+
require 'aruba/platform'
|
4
5
|
|
5
6
|
module Aruba
|
6
7
|
module Processes
|
@@ -29,6 +30,7 @@ module Aruba
|
|
29
30
|
attr_accessor :main_class
|
30
31
|
end
|
31
32
|
|
33
|
+
# @private
|
32
34
|
attr_reader :main_class
|
33
35
|
|
34
36
|
def initialize(cmd, exit_timeout, io_wait, working_directory, environment = ENV.to_hash.dup, main_class = nil)
|
@@ -42,13 +44,13 @@ module Aruba
|
|
42
44
|
super
|
43
45
|
end
|
44
46
|
|
45
|
-
def
|
47
|
+
def start
|
46
48
|
fail "You need to call aruba.config.main_class = YourMainClass" unless main_class
|
47
49
|
|
48
50
|
Dir.chdir @working_directory do
|
49
51
|
before_run
|
50
52
|
|
51
|
-
|
53
|
+
Aruba.platform.with_environment environment.merge('PWD' => @working_directory) do
|
52
54
|
main_class.new(@argv, @stdin, @stdout, @stderr, @kernel).execute!
|
53
55
|
end
|
54
56
|
|
@@ -58,7 +60,7 @@ module Aruba
|
|
58
60
|
end
|
59
61
|
end
|
60
62
|
|
61
|
-
def stop(
|
63
|
+
def stop(*)
|
62
64
|
@stopped = true
|
63
65
|
@exit_status = @kernel.exitstatus
|
64
66
|
end
|
@@ -67,11 +69,11 @@ module Aruba
|
|
67
69
|
@stdin.string
|
68
70
|
end
|
69
71
|
|
70
|
-
def stdout
|
72
|
+
def stdout(*)
|
71
73
|
@stdout.string
|
72
74
|
end
|
73
75
|
|
74
|
-
def stderr
|
76
|
+
def stderr(*)
|
75
77
|
@stderr.string
|
76
78
|
end
|
77
79
|
|
@@ -88,23 +90,6 @@ module Aruba
|
|
88
90
|
def terminate
|
89
91
|
stop
|
90
92
|
end
|
91
|
-
|
92
|
-
private
|
93
|
-
|
94
|
-
def in_environment(env = {}, &block)
|
95
|
-
if RUBY_VERSION <= '1.9.3'
|
96
|
-
old_env = ENV.to_hash
|
97
|
-
else
|
98
|
-
old_env = ENV.to_h
|
99
|
-
end
|
100
|
-
|
101
|
-
ENV.update(environment).update(env)
|
102
|
-
|
103
|
-
block.call if block_given?
|
104
|
-
ensure
|
105
|
-
ENV.clear
|
106
|
-
ENV.update old_env
|
107
|
-
end
|
108
93
|
end
|
109
94
|
end
|
110
95
|
end
|
@@ -30,11 +30,9 @@ module Aruba
|
|
30
30
|
def initialize(cmd, exit_timeout, io_wait, working_directory, environment = ENV.to_hash.dup, main_class = nil)
|
31
31
|
super
|
32
32
|
|
33
|
-
@exit_timeout = exit_timeout
|
34
|
-
@io_wait = io_wait
|
35
33
|
@process = nil
|
36
|
-
@
|
37
|
-
@
|
34
|
+
@stdout_cache = nil
|
35
|
+
@stderr_cache = nil
|
38
36
|
end
|
39
37
|
|
40
38
|
# Run the command
|
@@ -44,9 +42,10 @@ module Aruba
|
|
44
42
|
#
|
45
43
|
# rubocop:disable Metrics/MethodLength
|
46
44
|
# rubocop:disable Metrics/CyclomaticComplexity
|
47
|
-
def
|
45
|
+
def start
|
48
46
|
# gather fully qualified path
|
49
|
-
cmd = which(command)
|
47
|
+
cmd = Aruba.platform.which(command, environment['PATH'])
|
48
|
+
|
50
49
|
# rubocop:disable Metrics/LineLength
|
51
50
|
fail LaunchError, %(Command "#{command}" not found in PATH-variable "#{environment['PATH']}".) if cmd.nil?
|
52
51
|
# rubocop:enable Metrics/LineLength
|
@@ -54,22 +53,25 @@ module Aruba
|
|
54
53
|
cmd = Aruba.platform.command_string.new(cmd)
|
55
54
|
|
56
55
|
@process = ChildProcess.build(*[cmd.to_a, arguments].flatten)
|
57
|
-
@
|
58
|
-
@
|
56
|
+
@stdout_file = Tempfile.new("aruba-stdout")
|
57
|
+
@stderr_file = Tempfile.new("aruba-stderr")
|
59
58
|
@exit_status = nil
|
60
|
-
@duplex
|
59
|
+
@duplex = true
|
61
60
|
|
62
61
|
before_run
|
63
62
|
|
64
|
-
@process.
|
65
|
-
@process.io.
|
63
|
+
@process.leader = true
|
64
|
+
@process.io.stdout = @stdout_file
|
65
|
+
@process.io.stderr = @stderr_file
|
66
66
|
@process.duplex = @duplex
|
67
67
|
@process.cwd = @working_directory
|
68
68
|
|
69
69
|
@process.environment.update(environment)
|
70
70
|
|
71
71
|
begin
|
72
|
-
|
72
|
+
Aruba.platform.with_environment(environment) do
|
73
|
+
@process.start
|
74
|
+
end
|
73
75
|
rescue ChildProcess::LaunchError => e
|
74
76
|
raise LaunchError, "It tried to start #{cmd}. " + e.message
|
75
77
|
end
|
@@ -81,35 +83,75 @@ module Aruba
|
|
81
83
|
# rubocop:enable Metrics/MethodLength
|
82
84
|
# rubocop:enable Metrics/CyclomaticComplexity
|
83
85
|
|
86
|
+
# Access to stdout of process
|
84
87
|
def stdin
|
88
|
+
return if @process.nil?
|
89
|
+
|
85
90
|
@process.io.stdin
|
86
91
|
end
|
87
92
|
|
88
|
-
|
89
|
-
|
93
|
+
# Access to stdout of process
|
94
|
+
#
|
95
|
+
# @param [Hash] opts
|
96
|
+
# Options
|
97
|
+
#
|
98
|
+
# @option [Integer] wait_for_io
|
99
|
+
# Wait for IO to be finished
|
100
|
+
#
|
101
|
+
# @return [String]
|
102
|
+
# The content of stdout
|
103
|
+
def stdout(opts = {})
|
104
|
+
return @stdout_cache if @process.nil?
|
105
|
+
|
106
|
+
wait_for_io = opts.fetch(:wait_for_io, @io_wait)
|
107
|
+
|
108
|
+
wait_for_io wait_for_io do
|
90
109
|
@process.io.stdout.flush
|
91
|
-
|
92
|
-
end
|
110
|
+
open(@stdout_file.path).read
|
111
|
+
end
|
93
112
|
end
|
94
113
|
|
95
|
-
|
96
|
-
|
114
|
+
# Access to stderr of process
|
115
|
+
#
|
116
|
+
# @param [Hash] opts
|
117
|
+
# Options
|
118
|
+
#
|
119
|
+
# @option [Integer] wait_for_io
|
120
|
+
# Wait for IO to be finished
|
121
|
+
#
|
122
|
+
# @return [String]
|
123
|
+
# The content of stderr
|
124
|
+
def stderr(opts = {})
|
125
|
+
return @stderr_cache if @process.nil?
|
126
|
+
|
127
|
+
wait_for_io = opts.fetch(:wait_for_io, @io_wait)
|
128
|
+
|
129
|
+
wait_for_io wait_for_io do
|
97
130
|
@process.io.stderr.flush
|
98
|
-
|
99
|
-
end
|
131
|
+
open(@stderr_file.path).read
|
132
|
+
end
|
100
133
|
end
|
101
134
|
|
102
135
|
def read_stdout
|
103
|
-
|
104
|
-
stdout
|
136
|
+
# rubocop:disable Metrics/LineLength
|
137
|
+
Aruba.platform.deprecated('The use of "#read_stdout" is deprecated. Use "#stdout" instead. To reduce the time to wait for io, pass `:wait_for_io => 0` or some suitable for your use case')
|
138
|
+
# rubocop:enable Metrics/LineLength
|
139
|
+
|
140
|
+
stdout(:wait_for_io => 0)
|
105
141
|
end
|
106
142
|
|
107
143
|
def write(input)
|
144
|
+
return if @process.nil?
|
145
|
+
|
108
146
|
@process.io.stdin.write(input)
|
109
147
|
@process.io.stdin.flush
|
148
|
+
|
149
|
+
self
|
110
150
|
end
|
111
151
|
|
112
152
|
def close_io(name)
|
153
|
+
return if @process.nil?
|
154
|
+
|
113
155
|
if RUBY_VERSION < '1.9'
|
114
156
|
@process.io.send(name.to_sym).close
|
115
157
|
else
|
@@ -152,10 +194,11 @@ module Aruba
|
|
152
194
|
|
153
195
|
private
|
154
196
|
|
155
|
-
def wait_for_io(&block)
|
156
|
-
return
|
197
|
+
def wait_for_io(time_to_wait, &block)
|
198
|
+
return if @process.nil?
|
199
|
+
|
200
|
+
sleep time_to_wait
|
157
201
|
|
158
|
-
sleep @io_wait
|
159
202
|
yield
|
160
203
|
end
|
161
204
|
|
@@ -165,15 +208,15 @@ module Aruba
|
|
165
208
|
end
|
166
209
|
|
167
210
|
def close_and_cache_out
|
168
|
-
@
|
169
|
-
@
|
170
|
-
@
|
211
|
+
@stdout_cache = read @stdout_file
|
212
|
+
@stdout_file.close
|
213
|
+
@stdout_file = nil
|
171
214
|
end
|
172
215
|
|
173
216
|
def close_and_cache_err
|
174
|
-
@
|
175
|
-
@
|
176
|
-
@
|
217
|
+
@stderr_cache = read @stderr_file
|
218
|
+
@stderr_file.close
|
219
|
+
@stderr_file = nil
|
177
220
|
end
|
178
221
|
end
|
179
222
|
end
|
data/lib/aruba/rspec.rb
CHANGED
@@ -25,17 +25,12 @@ RSpec.configure do |config|
|
|
25
25
|
|
26
26
|
if Aruba::VERSION >= '1.0.0'
|
27
27
|
config.around :each do |example|
|
28
|
-
|
29
|
-
old_env = ENV.to_hash.dup
|
28
|
+
Aruba.platform.with_environment do
|
30
29
|
example.run
|
31
|
-
ensure
|
32
|
-
ENV.clear
|
33
|
-
ENV.update old_env
|
34
30
|
end
|
35
31
|
end
|
36
32
|
end
|
37
33
|
|
38
|
-
# Use rspec metadata as option for aruba
|
39
34
|
config.before :each do |example|
|
40
35
|
next unless self.class.include? Aruba::Api
|
41
36
|
|
data/lib/aruba/version.rb
CHANGED
data/script/console
CHANGED
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe 'Command Environment' do
|
4
|
+
include_context 'uses aruba API'
|
5
|
+
|
6
|
+
around do |example|
|
7
|
+
Aruba.platform.with_environment do
|
8
|
+
example.run
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
describe '#restore_env' do
|
13
|
+
context 'when non-existing variable' do
|
14
|
+
before :each do
|
15
|
+
ENV.delete 'LONG_LONG_ENV_VARIABLE'
|
16
|
+
end
|
17
|
+
|
18
|
+
context 'when set single' do
|
19
|
+
before :each do
|
20
|
+
@aruba.set_env 'LONG_LONG_ENV_VARIABLE', '1'
|
21
|
+
@aruba.restore_env
|
22
|
+
end
|
23
|
+
|
24
|
+
it { expect(ENV).not_to be_key 'LONG_LONG_ENV_VARIABLE' }
|
25
|
+
end
|
26
|
+
|
27
|
+
context 'when set multiple times' do
|
28
|
+
before :each do
|
29
|
+
@aruba.set_env 'LONG_LONG_ENV_VARIABLE', '1'
|
30
|
+
@aruba.set_env 'LONG_LONG_ENV_VARIABLE', '2'
|
31
|
+
@aruba.set_env 'LONG_LONG_ENV_VARIABLE', '3'
|
32
|
+
@aruba.restore_env
|
33
|
+
end
|
34
|
+
|
35
|
+
it { expect(ENV).not_to be_key 'LONG_LONG_ENV_VARIABLE' }
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
context 'when existing variable from outer context' do
|
40
|
+
before :each do
|
41
|
+
ENV['LONG_LONG_ENV_VARIABLE'] = '0'
|
42
|
+
end
|
43
|
+
|
44
|
+
context 'when set single time' do
|
45
|
+
before :each do
|
46
|
+
@aruba.set_env 'LONG_LONG_ENV_VARIABLE', '1'
|
47
|
+
@aruba.restore_env
|
48
|
+
end
|
49
|
+
|
50
|
+
it { expect(ENV['LONG_LONG_ENV_VARIABLE']).to eq '0' }
|
51
|
+
end
|
52
|
+
|
53
|
+
context 'when set multiple times' do
|
54
|
+
before :each do
|
55
|
+
@aruba.set_env 'LONG_LONG_ENV_VARIABLE', '1'
|
56
|
+
@aruba.set_env 'LONG_LONG_ENV_VARIABLE', '2'
|
57
|
+
@aruba.set_env 'LONG_LONG_ENV_VARIABLE', '3'
|
58
|
+
@aruba.restore_env
|
59
|
+
end
|
60
|
+
|
61
|
+
it { expect(ENV['LONG_LONG_ENV_VARIABLE']).to eq '0' }
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe 'Command Environment' do
|
4
|
+
include_context 'uses aruba API'
|
5
|
+
|
6
|
+
around do |example|
|
7
|
+
Aruba.platform.with_environment do
|
8
|
+
example.run
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
describe '#set_env' do
|
13
|
+
context 'when non-existing variable' do
|
14
|
+
before :each do
|
15
|
+
ENV.delete('LONG_LONG_ENV_VARIABLE')
|
16
|
+
end
|
17
|
+
|
18
|
+
context 'when string' do
|
19
|
+
before :each do
|
20
|
+
@aruba.set_env 'LONG_LONG_ENV_VARIABLE', '1'
|
21
|
+
end
|
22
|
+
|
23
|
+
it { expect(ENV['LONG_LONG_ENV_VARIABLE']).to eq '1' }
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
context 'when existing variable set by aruba' do
|
28
|
+
before :each do
|
29
|
+
@aruba.set_env 'LONG_LONG_ENV_VARIABLE', '1'
|
30
|
+
@aruba.set_env 'LONG_LONG_ENV_VARIABLE', '2'
|
31
|
+
end
|
32
|
+
|
33
|
+
it { expect(ENV['LONG_LONG_ENV_VARIABLE']).to eq '2' }
|
34
|
+
end
|
35
|
+
|
36
|
+
context 'when existing variable by outer context' do
|
37
|
+
before :each do
|
38
|
+
ENV['LONG_LONG_ENV_VARIABLE'] = '1'
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|