aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNirbheek Chauhan <nirbheek@centricular.com>2020-01-12 22:49:43 +0530
committerNirbheek Chauhan <nirbheek.chauhan@gmail.com>2020-01-22 19:34:05 +0530
commitbd17c9ad4f75dde2dd65a06d7cba0dec7ee09c15 (patch)
treeae79cef2b92faae210f354b8b08e04242706d286
parentb293852d079f2ef873f757d72739e9e79195c1ec (diff)
downloadmeson-bd17c9ad4f75dde2dd65a06d7cba0dec7ee09c15.zip
meson-bd17c9ad4f75dde2dd65a06d7cba0dec7ee09c15.tar.gz
meson-bd17c9ad4f75dde2dd65a06d7cba0dec7ee09c15.tar.bz2
tests: Add a unit test for checksums
Adds a CI dependency on the `pefile` python module.
-rw-r--r--azure-pipelines.yml6
-rw-r--r--ci/azure-steps.yml2
-rwxr-xr-xrun_unittests.py28
3 files changed, 33 insertions, 3 deletions
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index b7f2a77..cb44159 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -124,8 +124,8 @@ jobs:
displayName: Install Dependencies
- script: |
set PATH=%CYGWIN_ROOT%\bin;%SYSTEMROOT%\system32
- env.exe -- python3 -m pip --disable-pip-version-check install pytest-xdist
- displayName: pip install pytest-xdist
+ env.exe -- python3 -m pip --disable-pip-version-check install pefile pytest-xdist
+ displayName: pip install pefile pytest-xdist
- script: |
set BOOST_ROOT=
set PATH=%CYGWIN_ROOT%\bin;%SYSTEMROOT%\system32
@@ -188,7 +188,9 @@ jobs:
mingw-w64-$(MSYS2_ARCH)-python2 ^
mingw-w64-$(MSYS2_ARCH)-python3 ^
mingw-w64-$(MSYS2_ARCH)-python3-setuptools ^
+ mingw-w64-$(MSYS2_ARCH)-python3-pip ^
%TOOLCHAIN%
+ %MSYS2_ROOT%\usr\bin\bash -lc "python3 -m pip --disable-pip-version-check install pefile"
displayName: Install Dependencies
- powershell: |
# https://github.com/mesonbuild/meson/issues/5807
diff --git a/ci/azure-steps.yml b/ci/azure-steps.yml
index ff34c45..ef31208 100644
--- a/ci/azure-steps.yml
+++ b/ci/azure-steps.yml
@@ -152,7 +152,7 @@ steps:
python --version
# Needed for running unit tests in parallel.
- python -m pip --disable-pip-version-check install --upgrade pytest-xdist
+ python -m pip --disable-pip-version-check install --upgrade pefile pytest-xdist
echo ""
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):
'''