aruba 0.9.0.pre → 0.9.0.pre2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|