diff options
author | Marvin Scholz <epirat07@gmail.com> | 2022-03-30 17:47:02 +0200 |
---|---|---|
committer | Marvin Scholz <epirat07@gmail.com> | 2022-03-31 10:55:55 +0200 |
commit | 9e597ce905aa2b426e87f590a671b6726c09f075 (patch) | |
tree | 654138f59992d7cd2e7600464fecffdc9d435abe | |
parent | 89620dc8e7f04c35dba6df10d4d6dc3e23facd91 (diff) | |
download | meson-9e597ce905aa2b426e87f590a671b6726c09f075.zip meson-9e597ce905aa2b426e87f590a671b6726c09f075.tar.gz meson-9e597ce905aa2b426e87f590a671b6726c09f075.tar.bz2 |
unittests: add underscore prefix tests
Tests the two new detection methods for the underscore prefix
against what is detected in the binary. Contrary to the in-the-wild
failures, we can trust the binary here as we do not get any additional
flags that influence the binary contents in this test environment.
-rw-r--r-- | unittests/allplatformstests.py | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/unittests/allplatformstests.py b/unittests/allplatformstests.py index 8a7fcd7..25d6305 100644 --- a/unittests/allplatformstests.py +++ b/unittests/allplatformstests.py @@ -1546,6 +1546,43 @@ class AllPlatformTests(BasePlatformTests): self.build() self.run_tests() + def get_convincing_fake_env_and_cc(self) -> None: + ''' + Return a fake env and C compiler with the fake env + machine info properly detected using that compiler. + ''' + env = get_fake_env('', self.builddir, self.prefix) + cc = detect_c_compiler(env, MachineChoice.HOST) + # Detect machine info + env.machines.host = mesonbuild.environment.detect_machine_info({'c':cc}) + return (env, cc) + + def test_underscore_prefix_detection_list(self) -> None: + ''' + Test the underscore detection hardcoded lookup list + against what was detected in the binary. + ''' + env, cc = self.get_convincing_fake_env_and_cc() + expected_uscore = cc._symbols_have_underscore_prefix_searchbin(env) + list_uscore = cc._symbols_have_underscore_prefix_list(env) + if list_uscore is not None: + self.assertEqual(list_uscore, expected_uscore) + else: + raise SkipTest('No match in underscore prefix list for this platform.') + + def test_underscore_prefix_detection_define(self) -> None: + ''' + Test the underscore detection based on compiler-defined preprocessor macro + against what was detected in the binary. + ''' + env, cc = self.get_convincing_fake_env_and_cc() + expected_uscore = cc._symbols_have_underscore_prefix_searchbin(env) + define_uscore = cc._symbols_have_underscore_prefix_define(env) + if define_uscore is not None: + self.assertEqual(define_uscore, expected_uscore) + else: + raise SkipTest('Did not find the underscore prefix define __USER_LABEL_PREFIX__') + @skipIfNoPkgconfig def test_pkgconfig_static(self): ''' |