aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarvin Scholz <epirat07@gmail.com>2022-03-30 17:47:02 +0200
committerMarvin Scholz <epirat07@gmail.com>2022-03-31 10:55:55 +0200
commit9e597ce905aa2b426e87f590a671b6726c09f075 (patch)
tree654138f59992d7cd2e7600464fecffdc9d435abe
parent89620dc8e7f04c35dba6df10d4d6dc3e23facd91 (diff)
downloadmeson-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.py37
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):
'''