diff options
Diffstat (limited to 'run_unittests.py')
-rwxr-xr-x | run_unittests.py | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/run_unittests.py b/run_unittests.py index b2b2557..ad3d2a3 100755 --- a/run_unittests.py +++ b/run_unittests.py @@ -4655,6 +4655,34 @@ class WindowsTests(BasePlatformTests): def test_link_environment_variable_rust(self): self._check_ld('link', 'rust', 'link') + def test_pefile_checksum(self): + try: + import pefile + except ImportError: + if is_ci(): + raise + raise unittest.SkipTest('pefile module not found') + testdir = os.path.join(self.common_test_dir, '6 linkshared') + self.init(testdir) + self.build() + # Test that binaries have a non-zero checksum + env = get_fake_env() + cc = env.detect_c_compiler(MachineChoice.HOST) + cc_id = cc.get_id() + ld_id = cc.get_linker_id() + dll = glob(os.path.join(self.builddir, '*mycpplib.dll'))[0] + exe = os.path.join(self.builddir, 'cppprog.exe') + for f in (dll, exe): + pe = pefile.PE(f) + msg = 'PE file: {!r}, compiler: {!r}, linker: {!r}'.format(f, cc_id, ld_id) + if cc_id == 'clang-cl': + # Latest clang-cl tested (7.0) does not write checksums out + self.assertFalse(pe.verify_checksum(), msg=msg) + else: + # Verify that a valid checksum was written by all other compilers + self.assertTrue(pe.verify_checksum(), msg=msg) + + @unittest.skipUnless(is_osx(), "requires Darwin") class DarwinTests(BasePlatformTests): ''' |