implement setenv/unsetenv (preparing for parallel cmdtest)
This commit is contained in:
lib/cmdtest
@ -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)
|
||||
|
Reference in New Issue
Block a user