diff options
author | Daniel Mensinger <daniel@mensinger-ka.de> | 2018-12-20 22:03:55 +0100 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2018-12-20 23:03:55 +0200 |
commit | 6864ed60dddf68e1e035194e50088649599a8d04 (patch) | |
tree | df088857512d9ae763a345093e67b1d184ce8dee /run_unittests.py | |
parent | 9b13fb367250444377200911bf50918b7abf2676 (diff) | |
download | meson-6864ed60dddf68e1e035194e50088649599a8d04.zip meson-6864ed60dddf68e1e035194e50088649599a8d04.tar.gz meson-6864ed60dddf68e1e035194e50088649599a8d04.tar.bz2 |
mintro: Bug fix for determine_installed_path for multiple target outputs
Diffstat (limited to 'run_unittests.py')
-rwxr-xr-x | run_unittests.py | 27 |
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) |