Author: Jonas Devlieghere Date: 2022-07-11T16:35:51-07:00 New Revision: 9097920ebabb6ab29f94e4051572c42459edcda8
URL: https://github.com/llvm/llvm-project/commit/9097920ebabb6ab29f94e4051572c42459edcda8 DIFF: https://github.com/llvm/llvm-project/commit/9097920ebabb6ab29f94e4051572c42459edcda8.diff LOG: [lldb] Add a test to prefer exact triple matches in platform selection Add a test that ensures we always prioritize exact triple matches when creating platforms. This is a regression test for a (now resolved) bug that that resulted in the remote tvOS platform being selected for a tvOS simulator binary because the ArchSpecs are compatible. Added: Modified: lldb/unittests/Platform/PlatformAppleSimulatorTest.cpp Removed: ################################################################################ diff --git a/lldb/unittests/Platform/PlatformAppleSimulatorTest.cpp b/lldb/unittests/Platform/PlatformAppleSimulatorTest.cpp index 7cb07cbe55d35..f30edfb9541ae 100644 --- a/lldb/unittests/Platform/PlatformAppleSimulatorTest.cpp +++ b/lldb/unittests/Platform/PlatformAppleSimulatorTest.cpp @@ -9,6 +9,9 @@ #include "gtest/gtest.h" #include "Plugins/Platform/MacOSX/PlatformAppleSimulator.h" +#include "Plugins/Platform/MacOSX/PlatformRemoteAppleTV.h" +#include "Plugins/Platform/MacOSX/PlatformRemoteAppleWatch.h" +#include "Plugins/Platform/MacOSX/PlatformRemoteiOS.h" #include "TestingSupport/SubsystemRAII.h" #include "lldb/Host/FileSystem.h" #include "lldb/Host/HostInfo.h" @@ -18,7 +21,8 @@ using namespace lldb; using namespace lldb_private; class PlatformAppleSimulatorTest : public ::testing::Test { - SubsystemRAII<FileSystem, HostInfo, PlatformAppleSimulator> + SubsystemRAII<FileSystem, HostInfo, PlatformAppleSimulator, PlatformRemoteiOS, + PlatformRemoteAppleTV, PlatformRemoteAppleWatch> subsystems; }; @@ -64,4 +68,31 @@ TEST_F(PlatformAppleSimulatorTest, TestHostPlatformToSim) { } } +TEST_F(PlatformAppleSimulatorTest, TestPlatformSelectionOrder) { + static const ArchSpec platform_arch( + HostInfo::GetArchitecture(HostInfo::eArchKindDefault)); + + const llvm::Triple::OSType sim_platforms[] = { + llvm::Triple::IOS, + llvm::Triple::TvOS, + llvm::Triple::WatchOS, + }; + + PlatformList list; + list.GetOrCreate("remote-ios"); + list.GetOrCreate("remote-tvos"); + list.GetOrCreate("remote-watchos"); + + for (auto sim : sim_platforms) { + ArchSpec arch = platform_arch; + arch.GetTriple().setOS(sim); + arch.GetTriple().setEnvironment(llvm::Triple::Simulator); + + Status error; + auto platform_sp = list.GetOrCreate(arch, {}, nullptr, error); + EXPECT_TRUE(platform_sp); + EXPECT_TRUE(platform_sp->GetName().contains("simulator")); + } +} + #endif _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits