diff --git a/tests/pressure-vessel/inside-runtime.py b/tests/pressure-vessel/inside-runtime.py index 64296e68ccf81c509aec85787779f7dfd84d3ae1..00792fcd7751b6d2a3081725037c0a5cc8626631 100755 --- a/tests/pressure-vessel/inside-runtime.py +++ b/tests/pressure-vessel/inside-runtime.py @@ -170,8 +170,13 @@ class TestInsideRuntime(BaseTest): 'LD_LIBRARY_PATH: %r', os.environ.get('LD_LIBRARY_PATH') ) + search = set() # type: typing.Set[str] + with open('/etc/ld.so.conf', 'r') as reader: for line in reader: + if line.startswith('/'): + search.add(line.rstrip('\n')) + logger.info('/etc/ld.so.conf: %r', line) if os.environ.get('TEST_INSIDE_RUNTIME_IS_SCOUT'): @@ -186,23 +191,56 @@ class TestInsideRuntime(BaseTest): self.assertIsNotNone(os.environ.get('LD_LIBRARY_PATH')) - parts = os.environ.get('LD_LIBRARY_PATH', '').split(':') + ldlp = os.environ.get('LD_LIBRARY_PATH', '').split(':') + search |= set(ldlp) if os.getenv('TEST_INSIDE_RUNTIME_IS_COPY'): - for path in parts: + # Only the aliases directories get into the LD_LIBRARY_PATH, + # not the directories containing SONAMEs + for path in ldlp: self.assertTrue(path.endswith('/aliases')) - else: - if ( - 'HOST_LD_LINUX_SO_REALPATH' in os.environ - and Path('/usr/lib/i386-linux-gnu').is_dir() - ): - self.assertIn('/overrides/lib/i386-linux-gnu', parts) - if ( - 'HOST_LD_LINUX_X86_64_SO_REALPATH' in os.environ - and Path('/usr/lib/x86_64-linux-gnu').is_dir() - ): - self.assertIn('/overrides/lib/x86_64-linux-gnu', parts) + if ( + 'HOST_LD_LINUX_SO_REALPATH' in os.environ + and Path('/usr/lib/i386-linux-gnu').is_dir() + ): + check_dir = '/overrides/lib/i386-linux-gnu' + + if not Path('/overrides').is_symlink(): + self.assertIn(check_dir, search) + self.assertIn(check_dir + '/aliases', ldlp) + + self.assertTrue(Path(check_dir).is_dir()) + self.assertTrue(Path(check_dir, 'aliases').is_dir()) + + if check_dir not in search: + check_dir = '/usr/lib/pressure-vessel' + check_dir + + self.assertTrue(Path(check_dir).is_dir()) + self.assertTrue(Path(check_dir, 'aliases').is_dir()) + self.assertIn(check_dir, search) + self.assertIn(check_dir + '/aliases', ldlp) + + if ( + 'HOST_LD_LINUX_X86_64_SO_REALPATH' in os.environ + and Path('/usr/lib/x86_64-linux-gnu').is_dir() + ): + check_dir = '/overrides/lib/x86_64-linux-gnu' + + if not Path('/overrides').is_symlink(): + self.assertIn(check_dir, search) + self.assertIn(check_dir + '/aliases', ldlp) + + self.assertTrue(Path(check_dir).is_dir()) + self.assertTrue(Path(check_dir, 'aliases').is_dir()) + + if check_dir not in search: + check_dir = '/usr/lib/pressure-vessel' + check_dir + + self.assertTrue(Path(check_dir).is_dir()) + self.assertTrue(Path(check_dir, 'aliases').is_dir()) + self.assertIn(check_dir, search) + self.assertIn(check_dir + '/aliases', ldlp) def test_overrides(self) -> None: if os.getenv('TEST_INSIDE_RUNTIME_IS_COPY'):