def test_circular_dependencies(self): binary = 'bin/foo' binary_deps = ['libbar.so', 'libc.so'] lib_dir = 'LIB' def get_deps(lib_path): _DEPS_MAP = { 'LIB/ld.so.1': [], 'LIB/libbar.so': ['libzoo.so'], 'LIB/libzoo.so': ['libbar.so', 'libc.so'], } return _DEPS_MAP.get(lib_path, None) visited_libs = set() error = dm.verify_elf_dependencies(binary, lib_dir, binary_deps, get_deps, visited_libs) self.assertFalse(error) self.assertSetEqual(visited_libs, {'LIB/libbar.so', 'LIB/libzoo.so', 'LIB/ld.so.1'})
def test_missing_dependencies(self): binary = 'bin/foo' binary_deps = ['libbar.so', 'libc.so'] lib_dir = 'LIB' def get_deps(lib_path): _DEPS_MAP = { 'LIB/ld.so.1': [], 'LIB/libbar.so': ['libzoo.so'], 'LIB/libzoo.so': ['libmissing.so', 'libc.so'], } return _DEPS_MAP.get(lib_path, None) visited_libs = set() error = dm.verify_elf_dependencies(binary, lib_dir, binary_deps, get_deps, visited_libs) expected_error = [ '%s missing dependency %s/libmissing.so' % (binary, lib_dir) ] self.assertListEqual(error, expected_error) self.assertSetEqual(visited_libs, {'LIB/libbar.so', 'LIB/libzoo.so', 'LIB/ld.so.1'})