161e22cd85cd4c84fff391da67018c92bf21a8e19Gregory Szorcimport os.path
261e22cd85cd4c84fff391da67018c92bf21a8e19Gregory Szorcimport unittest
361e22cd85cd4c84fff391da67018c92bf21a8e19Gregory Szorc
461e22cd85cd4c84fff391da67018c92bf21a8e19Gregory SzorcPOSSIBLE_TEST_BINARIES = [
561e22cd85cd4c84fff391da67018c92bf21a8e19Gregory Szorc    'libreadline.so.5',
661e22cd85cd4c84fff391da67018c92bf21a8e19Gregory Szorc    'libreadline.so.6',
761e22cd85cd4c84fff391da67018c92bf21a8e19Gregory Szorc]
861e22cd85cd4c84fff391da67018c92bf21a8e19Gregory Szorc
961e22cd85cd4c84fff391da67018c92bf21a8e19Gregory SzorcPOSSIBLE_TEST_BINARY_PATHS = [
10a8d873e178d45024db9c0ef6a25c6867424785f7Anders Waldenborg    '/usr/lib/debug',
1161e22cd85cd4c84fff391da67018c92bf21a8e19Gregory Szorc    '/lib',
1261e22cd85cd4c84fff391da67018c92bf21a8e19Gregory Szorc    '/usr/lib',
1361e22cd85cd4c84fff391da67018c92bf21a8e19Gregory Szorc    '/usr/local/lib',
14a8d873e178d45024db9c0ef6a25c6867424785f7Anders Waldenborg    '/lib/i386-linux-gnu',
1561e22cd85cd4c84fff391da67018c92bf21a8e19Gregory Szorc]
1661e22cd85cd4c84fff391da67018c92bf21a8e19Gregory Szorc
1761e22cd85cd4c84fff391da67018c92bf21a8e19Gregory Szorcclass TestBase(unittest.TestCase):
1861e22cd85cd4c84fff391da67018c92bf21a8e19Gregory Szorc    def get_test_binary(self):
1961e22cd85cd4c84fff391da67018c92bf21a8e19Gregory Szorc        """Helper to obtain a test binary for object file testing.
2061e22cd85cd4c84fff391da67018c92bf21a8e19Gregory Szorc
2161e22cd85cd4c84fff391da67018c92bf21a8e19Gregory Szorc        FIXME Support additional, highly-likely targets or create one
2261e22cd85cd4c84fff391da67018c92bf21a8e19Gregory Szorc        ourselves.
2361e22cd85cd4c84fff391da67018c92bf21a8e19Gregory Szorc        """
2461e22cd85cd4c84fff391da67018c92bf21a8e19Gregory Szorc        for d in POSSIBLE_TEST_BINARY_PATHS:
2561e22cd85cd4c84fff391da67018c92bf21a8e19Gregory Szorc            for lib in POSSIBLE_TEST_BINARIES:
2661e22cd85cd4c84fff391da67018c92bf21a8e19Gregory Szorc                path = os.path.join(d, lib)
2761e22cd85cd4c84fff391da67018c92bf21a8e19Gregory Szorc
2861e22cd85cd4c84fff391da67018c92bf21a8e19Gregory Szorc                if os.path.exists(path):
2961e22cd85cd4c84fff391da67018c92bf21a8e19Gregory Szorc                    return path
3061e22cd85cd4c84fff391da67018c92bf21a8e19Gregory Szorc
3161e22cd85cd4c84fff391da67018c92bf21a8e19Gregory Szorc        raise Exception('No suitable test binaries available!')
32359595413071ff706b484a875a23a4a7d1508f50Anders Waldenborg    get_test_binary.__test__ = False
33