diff options
-rw-r--r-- | pym/portage/tests/bin/setup_env.py | 42 |
1 files changed, 26 insertions, 16 deletions
diff --git a/pym/portage/tests/bin/setup_env.py b/pym/portage/tests/bin/setup_env.py index aab210ee9..086bcd5f5 100644 --- a/pym/portage/tests/bin/setup_env.py +++ b/pym/portage/tests/bin/setup_env.py @@ -3,6 +3,8 @@ # Distributed under the terms of the GNU General Public License v2 # $Id$ +import tempfile + from portage import os from portage import shutil from portage.tests import TestCase @@ -12,25 +14,32 @@ from portage.const import PORTAGE_BIN_PATH bindir = os.path.join(os.path.dirname(os.path.dirname( os.path.abspath(__file__))), "..", "..", "..", "bin", "ebuild-helpers") -basedir = os.path.join(os.path.dirname(os.path.dirname( - os.path.abspath(__file__))), "bin", "root") -os.environ["D"] = os.path.join(basedir, "image") -os.environ["T"] = os.path.join(basedir, "temp") -os.environ["S"] = os.path.join(basedir, "workdir") -os.environ["PF"] = "portage-tests-0.09-r1" -os.environ["PATH"] = bindir + ":" + os.environ["PATH"] -os.environ["PORTAGE_BIN_PATH"] = PORTAGE_BIN_PATH +basedir = None +env = None def binTestsCleanup(): + global basedir + if basedir is None: + return if os.access(basedir, os.W_OK): shutil.rmtree(basedir) + basedir = None + def binTestsInit(): binTestsCleanup() - os.mkdir(basedir) - os.mkdir(os.environ["D"]) - os.mkdir(os.environ["T"]) - os.mkdir(os.environ["S"]) - os.chdir(os.environ["S"]) + global basedir, env + basedir = tempfile.mkdtemp() + env = os.environ.copy() + env["D"] = os.path.join(basedir, "image") + env["T"] = os.path.join(basedir, "temp") + env["S"] = os.path.join(basedir, "workdir") + env["PF"] = "portage-tests-0.09-r1" + env["PATH"] = bindir + ":" + env["PATH"] + env["PORTAGE_BIN_PATH"] = PORTAGE_BIN_PATH + os.mkdir(env["D"]) + os.mkdir(env["T"]) + os.mkdir(env["S"]) + os.chdir(env["S"]) class BinTestCase(TestCase): def __init__(self, methodName): @@ -43,7 +52,7 @@ class BinTestCase(TestCase): def _exists_in_D(path): # Note: do not use os.path.join() here, we assume D to end in / - return os.access(os.environ["D"] + path, os.W_OK) + return os.access(env["D"] + path, os.W_OK) def exists_in_D(path): if not _exists_in_D(path): raise TestCase.failureException @@ -54,9 +63,10 @@ def xexists_in_D(path): def portage_func(func, args, exit_status=0): # we don't care about the output of the programs, # just their exit value and the state of $D + global env f = open('/dev/null', 'wb') fd_pipes = {0:0,1:f.fileno(),2:f.fileno()} - spawn(func+" "+args, env=os.environ, fd_pipes=fd_pipes) + spawn([func] + args.split(), env=env, fd_pipes=fd_pipes) f.close() def create_portage_wrapper(bin): @@ -71,4 +81,4 @@ for bin in os.listdir(bindir): bin.startswith("new") or \ bin.startswith("prep") or \ bin in ["ecompress","ecompressdir","fowners","fperms"]: - globals()[bin] = create_portage_wrapper(bin) + globals()[bin] = create_portage_wrapper(os.path.join(bindir, bin)) |