From ef3d4aa1eefd0798a49372903415f7aa779bf718 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Sat, 8 Sep 2007 07:01:39 +0000 Subject: Bug #190268 - Avoid unwanted sandbox violations in src_test(). - Allow SANDBOX_* variables to pass through. - Don't try to create an sandbox instance inside a test case in order to interaction with SANDBOX_* variables in src_test(). (trunk r7759) svn path=/main/branches/2.1.2/; revision=7760 --- pym/portage.py | 3 +-- tests/portage/test_spawn.py | 10 +++++++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/pym/portage.py b/pym/portage.py index a4fb9a9e5..28e54af7b 100644 --- a/pym/portage.py +++ b/pym/portage.py @@ -1313,8 +1313,7 @@ class config: # Blacklist vars that could interfere with portage internals. for blacklisted in "CATEGORY", "PKGUSE", "PORTAGE_CONFIGROOT", \ - "ROOT", "SANDBOX_DENY", "SANDBOX_PREDICT", "SANDBOX_READ", \ - "SANDBOX_WRITE": + "ROOT": for cfg in self.lookuplist: cfg.pop(blacklisted, None) del blacklisted, cfg diff --git a/tests/portage/test_spawn.py b/tests/portage/test_spawn.py index a2a2571c7..5a8010621 100644 --- a/tests/portage/test_spawn.py +++ b/tests/portage/test_spawn.py @@ -16,8 +16,16 @@ class SpawnTestCase(TestCase): os.close(fd) null_fd = os.open('/dev/null', os.O_RDWR) test_string = 2 * "blah blah blah\n" + # Test cases are unique because they run inside src_test() which + # may or may not already be running within a sandbox. Interaction + # with SANDBOX_* variables may trigger unwanted sandbox violations + # that are only reproducible with certain combinations of sandbox, + # usersandbox, and userpriv FEATURES. Attempts to filter SANDBOX_* + # variables can interfere with a currently running sandbox + # instance. Therefore, use free=1 here to avoid potential + # interactions (see bug #190268). spawn("echo -n '%s'" % test_string, settings, logfile=logfile, - fd_pipes={0:sys.stdin.fileno(), 1:null_fd, 2:null_fd}) + free=1, fd_pipes={0:sys.stdin.fileno(), 1:null_fd, 2:null_fd}) os.close(null_fd) f = open(logfile, 'r') log_content = f.read() -- cgit v1.2.3-1-g7c22