diff --git a/lib/cmdtest/testcase.rb b/lib/cmdtest/testcase.rb index 553d43b..5bf38bf 100644 --- a/lib/cmdtest/testcase.rb +++ b/lib/cmdtest/testcase.rb @@ -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 diff --git a/lib/cmdtest/workdir.rb b/lib/cmdtest/workdir.rb index 809f386..52721f5 100644 --- a/lib/cmdtest/workdir.rb +++ b/lib/cmdtest/workdir.rb @@ -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)