Share code between installed and non-installed soname tests

pull/1247/head
Nirbheek Chauhan 8 years ago
parent 0ac965cc10
commit d5952531c7
  1. 58
      run_unittests.py

@ -292,88 +292,54 @@ class LinuxlikeTests(unittest.TestCase):
return line.split('[')[1].split(']')[0] return line.split('[')[1].split(']')[0]
raise RuntimeError('Readelf gave no SONAME.') raise RuntimeError('Readelf gave no SONAME.')
def test_soname(self): def _test_soname_impl(self, libpath, install):
testdir = os.path.join(self.unit_test_dir, '1 soname') testdir = os.path.join(self.unit_test_dir, '1 soname')
self.init(testdir) self.init(testdir)
self.build() self.build()
if install:
self.install()
# File without aliases set. # File without aliases set.
nover = os.path.join(self.builddir, 'libnover.so') nover = os.path.join(libpath, 'libnover.so')
self.assertTrue(os.path.exists(nover)) self.assertTrue(os.path.exists(nover))
self.assertFalse(os.path.islink(nover)) self.assertFalse(os.path.islink(nover))
self.assertEqual(self.get_soname(nover), 'libnover.so') self.assertEqual(self.get_soname(nover), 'libnover.so')
self.assertEqual(len(glob(nover[:-3] + '*')), 1) self.assertEqual(len(glob(nover[:-3] + '*')), 1)
# File with version set # File with version set
verset = os.path.join(self.builddir, 'libverset.so') verset = os.path.join(libpath, 'libverset.so')
self.assertTrue(os.path.exists(verset + '.4.5.6')) self.assertTrue(os.path.exists(verset + '.4.5.6'))
self.assertEqual(os.readlink(verset), 'libverset.so.4') self.assertEqual(os.readlink(verset), 'libverset.so.4')
self.assertEqual(self.get_soname(verset), 'libverset.so.4') self.assertEqual(self.get_soname(verset), 'libverset.so.4')
self.assertEqual(len(glob(verset[:-3] + '*')), 3) self.assertEqual(len(glob(verset[:-3] + '*')), 3)
# File with soversion set # File with soversion set
soverset = os.path.join(self.builddir, 'libsoverset.so') soverset = os.path.join(libpath, 'libsoverset.so')
self.assertTrue(os.path.exists(soverset + '.1.2.3')) self.assertTrue(os.path.exists(soverset + '.1.2.3'))
self.assertEqual(os.readlink(soverset), 'libsoverset.so.1.2.3') self.assertEqual(os.readlink(soverset), 'libsoverset.so.1.2.3')
self.assertEqual(self.get_soname(soverset), 'libsoverset.so.1.2.3') self.assertEqual(self.get_soname(soverset), 'libsoverset.so.1.2.3')
self.assertEqual(len(glob(soverset[:-3] + '*')), 2) self.assertEqual(len(glob(soverset[:-3] + '*')), 2)
# File with version and soversion set to same values # File with version and soversion set to same values
settosame = os.path.join(self.builddir, 'libsettosame.so') settosame = os.path.join(libpath, 'libsettosame.so')
self.assertTrue(os.path.exists(settosame + '.7.8.9')) self.assertTrue(os.path.exists(settosame + '.7.8.9'))
self.assertEqual(os.readlink(settosame), 'libsettosame.so.7.8.9') self.assertEqual(os.readlink(settosame), 'libsettosame.so.7.8.9')
self.assertEqual(self.get_soname(settosame), 'libsettosame.so.7.8.9') self.assertEqual(self.get_soname(settosame), 'libsettosame.so.7.8.9')
self.assertEqual(len(glob(settosame[:-3] + '*')), 2) self.assertEqual(len(glob(settosame[:-3] + '*')), 2)
# File with version and soversion set to different values # File with version and soversion set to different values
bothset = os.path.join(self.builddir, 'libbothset.so') bothset = os.path.join(libpath, 'libbothset.so')
self.assertTrue(os.path.exists(bothset + '.1.2.3')) self.assertTrue(os.path.exists(bothset + '.1.2.3'))
self.assertEqual(os.readlink(bothset), 'libbothset.so.1.2.3') self.assertEqual(os.readlink(bothset), 'libbothset.so.1.2.3')
self.assertEqual(os.readlink(bothset + '.1.2.3'), 'libbothset.so.4.5.6') self.assertEqual(os.readlink(bothset + '.1.2.3'), 'libbothset.so.4.5.6')
self.assertEqual(self.get_soname(bothset), 'libbothset.so.1.2.3') self.assertEqual(self.get_soname(bothset), 'libbothset.so.1.2.3')
self.assertEqual(len(glob(bothset[:-3] + '*')), 3) self.assertEqual(len(glob(bothset[:-3] + '*')), 3)
def test_installed_soname(self): def test_soname(self):
testdir = os.path.join(self.unit_test_dir, '1 soname') self._test_soname_impl(self.builddir, False)
self.init(testdir)
self.build()
self.install()
# File without aliases set.
nover = self.installdir + os.path.join(self.libdir, 'libnover.so')
self.assertTrue(os.path.exists(nover))
self.assertFalse(os.path.islink(nover))
self.assertEqual(self.get_soname(nover), 'libnover.so')
self.assertEqual(len(glob(nover[:-3] + '*')), 1)
# File with version set
verset = self.installdir + os.path.join(self.libdir, 'libverset.so')
self.assertTrue(os.path.exists(verset + '.4.5.6'))
self.assertEqual(os.readlink(verset), 'libverset.so.4')
self.assertEqual(self.get_soname(verset), 'libverset.so.4')
self.assertEqual(len(glob(verset[:-3] + '*')), 3)
# File with soversion set
soverset = self.installdir + os.path.join(self.libdir, 'libsoverset.so')
self.assertTrue(os.path.exists(soverset + '.1.2.3'))
self.assertEqual(os.readlink(soverset), 'libsoverset.so.1.2.3')
self.assertEqual(self.get_soname(soverset), 'libsoverset.so.1.2.3')
self.assertEqual(len(glob(soverset[:-3] + '*')), 2)
# File with version and soversion set to same values
settosame = self.installdir + os.path.join(self.libdir, 'libsettosame.so')
self.assertTrue(os.path.exists(settosame + '.7.8.9'))
self.assertEqual(os.readlink(settosame), 'libsettosame.so.7.8.9')
self.assertEqual(self.get_soname(settosame), 'libsettosame.so.7.8.9')
self.assertEqual(len(glob(settosame[:-3] + '*')), 2)
# File with version and soversion set to different values def test_installed_soname(self):
bothset = self.installdir + os.path.join(self.libdir, 'libbothset.so') self._test_soname_impl(self.installdir + self.libdir, True)
self.assertTrue(os.path.exists(bothset + '.1.2.3'))
self.assertEqual(os.readlink(bothset), 'libbothset.so.1.2.3')
self.assertEqual(os.readlink(bothset + '.1.2.3'), 'libbothset.so.4.5.6')
self.assertEqual(self.get_soname(bothset), 'libbothset.so.1.2.3')
self.assertEqual(len(glob(bothset[:-3] + '*')), 3)
def test_compiler_check_flags_order(self): def test_compiler_check_flags_order(self):
''' '''

Loading…
Cancel
Save