In Gentoo, we make use of Clang's recently-enhanced config file support
and add a default include to `clang` invocations using '-include ...'.
This breaks clang-python tests like so:
```
======================================================================
ERROR: test_includes (tests.cindex.test_translation_unit.TestTranslationUnit)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/var/tmp/portage/dev-python/clang-python-15.0.6/work/clang/bindings/python/tests/cindex/test_translation_unit.py", line 145, in test_includes
eq(i[0], i[1])
File "/var/tmp/portage/dev-python/clang-python-15.0.6/work/clang/bindings/python/tests/cindex/test_translation_unit.py", line 132, in eq
self.assert_normpaths_equal(expected[0], actual.source.name)
AttributeError: 'NoneType' object has no attribute 'name'
======================================================================
FAIL: test_inclusion_directive (tests.cindex.test_translation_unit.TestTranslationUnit)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/var/tmp/portage/dev-python/clang-python-15.0.6/work/clang/bindings/python/tests/cindex/test_translation_unit.py", line 157, in test_inclusion_directive
self.assert_normpaths_equal(i[0], i[1])
File "/var/tmp/portage/dev-python/clang-python-15.0.6/work/clang/bindings/python/tests/cindex/test_translation_unit.py", line 126, in assert_normpaths_equal
self.assertEqual(os.path.normpath(path1),
AssertionError: '/var/tmp/portage/dev-python/clang-python-1[58 chars]r1.h' != '/usr/include/gentoo/fortify.h'
- /var/tmp/portage/dev-python/clang-python-15.0.6/work/clang/bindings/python/tests/cindex/INPUTS/header1.h
+ /usr/include/gentoo/fortify.h
```
Disable using the default Clang configuration files on the system, like
we did for other tests.
Bug: https://bugs.gentoo.org/890204
Differential Revision: https://reviews.llvm.org/D141248
54 lines
1.8 KiB
CMake
54 lines
1.8 KiB
CMake
# Test target to run Python test suite from main build.
|
|
|
|
# Avoid configurations including '-include' from interfering with
|
|
# our tests by setting CLANG_NO_DEFAULT_CONFIG.
|
|
add_custom_target(check-clang-python
|
|
COMMAND ${CMAKE_COMMAND} -E env
|
|
CLANG_NO_DEFAULT_CONFIG=1
|
|
CLANG_LIBRARY_PATH=$<TARGET_FILE_DIR:libclang>
|
|
"${Python3_EXECUTABLE}" -m unittest discover
|
|
DEPENDS libclang
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/..)
|
|
|
|
set(RUN_PYTHON_TESTS TRUE)
|
|
set_target_properties(check-clang-python PROPERTIES FOLDER "Clang tests")
|
|
|
|
# Tests require libclang.so which is only built with LLVM_ENABLE_PIC=ON
|
|
if(NOT LLVM_ENABLE_PIC)
|
|
set(RUN_PYTHON_TESTS FALSE)
|
|
endif()
|
|
|
|
# Do not try to run if libclang was built with sanitizers because
|
|
# the sanitizer library will likely be loaded too late to perform
|
|
# interception and will then fail.
|
|
# We could use LD_PRELOAD/DYLD_INSERT_LIBRARIES but this isn't
|
|
# portable so its easier just to not run the tests when building
|
|
# with ASan.
|
|
if(NOT LLVM_USE_SANITIZER STREQUAL "")
|
|
set(RUN_PYTHON_TESTS FALSE)
|
|
endif()
|
|
|
|
# Tests fail on Windows, and need someone knowledgeable to fix.
|
|
# It's not clear whether it's a test or a valid binding problem.
|
|
if(WIN32)
|
|
set(RUN_PYTHON_TESTS FALSE)
|
|
endif()
|
|
|
|
# The Python FFI interface is broken on AIX: https://bugs.python.org/issue38628.
|
|
if(${CMAKE_SYSTEM_NAME} MATCHES "AIX")
|
|
set(RUN_PYTHON_TESTS FALSE)
|
|
endif()
|
|
|
|
# AArch64, Hexagon, and Sparc have known test failures that need to be
|
|
# addressed.
|
|
# SystemZ has broken Python/FFI interface:
|
|
# https://reviews.llvm.org/D52840#1265716
|
|
if(${LLVM_NATIVE_ARCH} MATCHES "^(AArch64|Hexagon|Sparc|SystemZ)$")
|
|
set(RUN_PYTHON_TESTS FALSE)
|
|
endif()
|
|
|
|
if(RUN_PYTHON_TESTS)
|
|
set_property(GLOBAL APPEND PROPERTY
|
|
LLVM_ALL_ADDITIONAL_TEST_TARGETS check-clang-python)
|
|
endif()
|