aboutsummaryrefslogtreecommitdiff
path: root/munit.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2016-09-17 21:48:41 +0300
committerJussi Pakkanen <jpakkane@gmail.com>2016-10-08 07:34:39 -0400
commit4dc798dc7e878f082746c900a9bf0e7c31fe738f (patch)
treecbe1bc854a6d69563cc2c1f2babb9fd1eb4ec2f9 /munit.py
parent9fdec2d23f5209148da6279d8b3893dfbc682af3 (diff)
downloadmeson-4dc798dc7e878f082746c900a9bf0e7c31fe738f.zip
meson-4dc798dc7e878f082746c900a9bf0e7c31fe738f.tar.gz
meson-4dc798dc7e878f082746c900a9bf0e7c31fe738f.tar.bz2
Check that soname matches the filename. Closes #785.
Diffstat (limited to 'munit.py')
-rwxr-xr-xmunit.py31
1 files changed, 26 insertions, 5 deletions
diff --git a/munit.py b/munit.py
index f2651d8..10c4242 100755
--- a/munit.py
+++ b/munit.py
@@ -15,26 +15,47 @@
import unittest, os, shutil
import subprocess
+import re
+
+def get_soname(fname):
+ # HACK, fix to not use shell.
+ raw_out = subprocess.check_output(['readelf', '-a', fname])
+ pattern = re.compile(b'soname: \[(.*?)\]')
+ for line in raw_out.split(b'\n'):
+ m = pattern.search(line)
+ if m is not None:
+ return m.group(1)
class LinuxlikeTests(unittest.TestCase):
def setUp(self):
super().setUp()
src_root = os.path.split(__file__)[0]
+ self.builddir = 'unittestdir' # fixme to be unique
self.meson_command = [os.path.join(src_root, 'meson.py')]
- self.ninja_command = ['ninja']
+ self.ninja_command = ['ninja', '-C', self.builddir]
self.common_test_dir = os.path.join(src_root, 'test cases/common')
- self.builddir = 'unittestdir' # fixme to be unique
os.mkdir(self.builddir)
def tearDown(self):
shutil.rmtree(self.builddir)
super().tearDown()
- def test_simple(self):
- testdir = os.path.join(self.common_test_dir, '1 trivial')
+ def test_basic_soname(self):
+ testdir = os.path.join(self.common_test_dir, '4 shared')
+ subprocess.check_call(self.meson_command + [testdir, self.builddir])
+ subprocess.check_call(self.ninja_command)
+ lib1 = os.path.join(self.builddir, 'libmylib.so')
+ soname = get_soname(lib1)
+ self.assertEqual(soname, b'libmylib.so')
+
+ def test_custom_soname(self):
+ testdir = os.path.join(self.common_test_dir, '27 library versions')
subprocess.check_call(self.meson_command + [testdir, self.builddir])
- subprocess.check_call(self.ninja_command, cwd=self.builddir)
+ subprocess.check_call(self.ninja_command)
+ lib1 = os.path.join(self.builddir, 'prefixsomelib.suffix')
+ soname = get_soname(lib1)
+ self.assertEqual(soname, b'prefixsomelib.suffix')
if __name__ == '__main__':
unittest.main()