implement setenv/unsetenv (preparing for parallel cmdtest)

This commit is contained in:
Johan Holmberg
2012-07-02 09:25:26 +02:00
parent 35620124e5
commit ecc8675d1e
2 changed files with 19 additions and 1 deletions

@ -63,7 +63,7 @@ module Cmdtest
ORIG_CWD = Dir.pwd
attr_reader :_work_dir, :_cwd
attr_reader :_work_dir, :_cwd, :_env
def initialize(test_method, clog, runner)
@_test_method = test_method
@ -71,6 +71,7 @@ module Cmdtest
@_runner = runner
@_work_dir = Workdir.new(self, runner)
@_cwd = self.tmp_work_dir
@_env = Hash.new
@_in_cmd = false
@_comment_str = nil
@_env_path = @_runner.orig_env_path
@ -184,6 +185,18 @@ module Cmdtest
#------------------------------
def setenv(name, value)
@_env[name] = value
end
#------------------------------
def unsetenv(name)
@_env.delete(name)
end
#------------------------------
def current_directory
@_cwd
end

@ -75,6 +75,10 @@ module Cmdtest
File.join(@testcase.tmp_dir, "tmp-stderr.log")
end
def _ENV_strs(env)
env.keys.sort.map {|k| "export %s='%s'" % [k, env[k]] }
end
def _chdir_str(dir)
"cd #{dir}"
end
@ -101,6 +105,7 @@ module Cmdtest
def run_cmd(cmdline, env_path)
File.open(_tmp_command_sh, "w") do |f|
f.puts _ENV_strs(@testcase._env)
f.puts _chdir_str(@testcase._cwd)
f.puts _set_env_path_str(env_path)
f.puts _ruby_S(cmdline)