diff options
author | Orlando Wingbrant <orlando@widesite.org> | 2019-10-20 15:16:28 +0200 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2019-10-23 22:37:45 +0300 |
commit | 9ee9a1e1b25784c2d1ac93cae319dfbed43a67fc (patch) | |
tree | e6014d53ad72491ff82359551d1311c6cb81a30f /run_unittests.py | |
parent | ae9723a5c1ef8fb8c46b4e07a91882644a85e389 (diff) | |
download | meson-9ee9a1e1b25784c2d1ac93cae319dfbed43a67fc.zip meson-9ee9a1e1b25784c2d1ac93cae319dfbed43a67fc.tar.gz meson-9ee9a1e1b25784c2d1ac93cae319dfbed43a67fc.tar.bz2 |
Fix for issue #4499, multiple entries per file in install-log.txt
Diffstat (limited to 'run_unittests.py')
-rwxr-xr-x | run_unittests.py | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/run_unittests.py b/run_unittests.py index 3bec8c0..80b23b7 100755 --- a/run_unittests.py +++ b/run_unittests.py @@ -1975,6 +1975,33 @@ class AllPlatformTests(BasePlatformTests): self.assertPathListEqual(intro[2]['install_filename'], ['/usr/include/first.h', None]) self.assertPathListEqual(intro[3]['install_filename'], [None, '/usr/bin/second.sh']) + def test_install_log_content(self): + ''' + Tests that the install-log.txt is consistent with the installed files and directories. + Specifically checks that the log file only contains one entry per file/directory. + https://github.com/mesonbuild/meson/issues/4499 + ''' + testdir = os.path.join(self.common_test_dir, '62 install subdir') + self.init(testdir) + self.install() + installpath = Path(self.installdir) + # Find installed files and directories + expected = {installpath: 0} + for name in installpath.rglob('*'): + expected[name] = 0 + # Find logged files and directories + with Path(self.builddir, 'meson-logs', 'install-log.txt').open() as f: + logged = list(map(lambda l: Path(l.strip()), + filter(lambda l: not l.startswith('#'), + f.readlines()))) + for name in logged: + self.assertTrue(name in expected, 'Log contains extra entry {}'.format(name)) + expected[name] += 1 + + for name, count in expected.items(): + self.assertGreater(count, 0, 'Log is missing entry for {}'.format(name)) + self.assertLess(count, 2, 'Log has multiple entries for {}'.format(name)) + def test_uninstall(self): exename = os.path.join(self.installdir, 'usr/bin/prog' + exe_suffix) testdir = os.path.join(self.common_test_dir, '8 install') |