From 45f47a0caa98df075a7f3b48f78e0a91a1c42ba4 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Thu, 10 Oct 2024 14:47:23 +0200 Subject: [PATCH] ClangTools: Do not run tests with x86/32 bit MSVC kits According to observations, clazy stumbles over system headers in that case. Change-Id: I824571caeceb4ee7a201a2bfa797d1795eb972b6 Reviewed-by: David Schulz --- .../clangtools/clangtoolsunittests.cpp | 27 ++++++++++++------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/src/plugins/clangtools/clangtoolsunittests.cpp b/src/plugins/clangtools/clangtoolsunittests.cpp index 04ebed009db..a5bf4f10ef6 100644 --- a/src/plugins/clangtools/clangtoolsunittests.cpp +++ b/src/plugins/clangtools/clangtoolsunittests.cpp @@ -40,19 +40,26 @@ namespace Internal { void ClangToolsUnitTests::initTestCase() { - const QList allKits = KitManager::kits(); - if (allKits.count() == 0) - QSKIP("This test requires at least one kit to be present"); + m_kit = findOr(KitManager::kits(), nullptr, [](Kit *k) { + if (!k->isValid()) + return false; + if (!QtSupport::QtKitAspect::qtVersion(k)) + return false; + const Toolchain * const toolchain = ToolchainKitAspect::cxxToolchain(k); + if (!toolchain) + return false; - m_kit = findOr(allKits, nullptr, [](Kit *k) { - return k->isValid() && QtSupport::QtKitAspect::qtVersion(k) != nullptr; + // Wo observe clazy failures with x86/32bit MSVC kits. + if (toolchain->typeId() == ProjectExplorer::Constants::MSVC_TOOLCHAIN_TYPEID + && toolchain->targetAbi().architecture() == Abi::X86Architecture + && toolchain->targetAbi().wordWidth() != Abi::hostAbi().wordWidth()) { + return false; + } + + return true; }); if (!m_kit) - QSKIP("This test requires at least one valid kit with a valid Qt"); - - const Toolchain * const toolchain = ToolchainKitAspect::cxxToolchain(m_kit); - if (!toolchain) - QSKIP("This test requires that there is a kit with a toolchain."); + QSKIP("This test requires at least one valid kit with a valid Qt and a suitable toolchain."); if (!Core::ICore::clangExecutable(CLANG_BINDIR)) QSKIP("No clang suitable for analyzing found");