aboutsummaryrefslogtreecommitdiff
path: root/run_unittests.py
diff options
context:
space:
mode:
Diffstat (limited to 'run_unittests.py')
-rwxr-xr-xrun_unittests.py27
1 files changed, 25 insertions, 2 deletions
diff --git a/run_unittests.py b/run_unittests.py
index 6a1f5df..663a3ca 100755
--- a/run_unittests.py
+++ b/run_unittests.py
@@ -1195,6 +1195,12 @@ class BasePlatformTests(unittest.TestCase):
'''
self.assertEqual(PurePath(path1), PurePath(path2))
+ def assertPathListEqual(self, pathlist1, pathlist2):
+ self.assertEquals(len(pathlist1), len(pathlist2))
+ worklist = list(zip(pathlist1, pathlist2))
+ for i in worklist:
+ self.assertPathEqual(i[0], i[1])
+
def assertPathBasenameEqual(self, path, basename):
msg = '{!r} does not end with {!r}'.format(path, basename)
# We cannot use os.path.basename because it returns '' when the path
@@ -1462,8 +1468,25 @@ class AllPlatformTests(BasePlatformTests):
intro = self.introspect('--targets')
if intro[0]['type'] == 'executable':
intro = intro[::-1]
- self.assertPathEqual(intro[0]['install_filename'], '/usr/lib/libstat.a')
- self.assertPathEqual(intro[1]['install_filename'], '/usr/bin/prog' + exe_suffix)
+ self.assertPathListEqual(intro[0]['install_filename'], ['/usr/lib/libstat.a'])
+ self.assertPathListEqual(intro[1]['install_filename'], ['/usr/bin/prog' + exe_suffix])
+
+ def test_install_introspection_multiple_outputs(self):
+ '''
+ Tests that the Meson introspection API exposes multiple install filenames correctly without crashing
+ https://github.com/mesonbuild/meson/pull/4555
+ '''
+ if self.backend is not Backend.ninja:
+ raise unittest.SkipTest('{!r} backend can\'t install files'.format(self.backend.name))
+ testdir = os.path.join(self.common_test_dir, '145 custom target multiple outputs')
+ self.init(testdir)
+ intro = self.introspect('--targets')
+ if intro[0]['type'] == 'executable':
+ intro = intro[::-1]
+ self.assertPathListEqual(intro[0]['install_filename'], ['/usr/include/diff.h', '/usr/bin/diff.sh'])
+ self.assertPathListEqual(intro[1]['install_filename'], ['/opt/same.h', '/opt/same.sh'])
+ self.assertPathListEqual(intro[2]['install_filename'], ['/usr/include/first.h'])
+ self.assertPathListEqual(intro[3]['install_filename'], ['/usr/bin/second.sh'])
def test_uninstall(self):
exename = os.path.join(self.installdir, 'usr/bin/prog' + exe_suffix)