xref: /llvm-project/lldb/unittests/Utility/XcodeSDKTest.cpp (revision 3b6a8f823bf873aa74cdb738f517e7333e20de7a)
11e05d7b3SAdrian Prantl //===-- XcodeSDKTest.cpp --------------------------------------------------===//
21e05d7b3SAdrian Prantl //
31e05d7b3SAdrian Prantl // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
41e05d7b3SAdrian Prantl // See https://llvm.org/LICENSE.txt for license information.
51e05d7b3SAdrian Prantl // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
61e05d7b3SAdrian Prantl //
71e05d7b3SAdrian Prantl //===----------------------------------------------------------------------===//
81e05d7b3SAdrian Prantl 
91e05d7b3SAdrian Prantl #include "gtest/gtest.h"
101e05d7b3SAdrian Prantl 
111e05d7b3SAdrian Prantl #include "lldb/Utility/FileSpec.h"
121e05d7b3SAdrian Prantl #include "lldb/Utility/XcodeSDK.h"
131e05d7b3SAdrian Prantl 
141e05d7b3SAdrian Prantl #include "llvm/ADT/StringRef.h"
1562c7f035SArchibald Elliott #include "llvm/TargetParser/Triple.h"
161e05d7b3SAdrian Prantl 
171e05d7b3SAdrian Prantl #include <tuple>
181e05d7b3SAdrian Prantl 
191e05d7b3SAdrian Prantl using namespace lldb_private;
201e05d7b3SAdrian Prantl 
TEST(XcodeSDKTest,ParseTest)211e05d7b3SAdrian Prantl TEST(XcodeSDKTest, ParseTest) {
221e05d7b3SAdrian Prantl   EXPECT_EQ(XcodeSDK::GetAnyMacOS().GetType(), XcodeSDK::MacOSX);
231e05d7b3SAdrian Prantl   EXPECT_EQ(XcodeSDK("MacOSX.sdk").GetType(), XcodeSDK::MacOSX);
241e05d7b3SAdrian Prantl   EXPECT_EQ(XcodeSDK("iPhoneSimulator.sdk").GetType(), XcodeSDK::iPhoneSimulator);
251e05d7b3SAdrian Prantl   EXPECT_EQ(XcodeSDK("iPhoneOS.sdk").GetType(), XcodeSDK::iPhoneOS);
261e05d7b3SAdrian Prantl   EXPECT_EQ(XcodeSDK("AppleTVSimulator.sdk").GetType(), XcodeSDK::AppleTVSimulator);
271e05d7b3SAdrian Prantl   EXPECT_EQ(XcodeSDK("AppleTVOS.sdk").GetType(), XcodeSDK::AppleTVOS);
281e05d7b3SAdrian Prantl   EXPECT_EQ(XcodeSDK("WatchSimulator.sdk").GetType(), XcodeSDK::WatchSimulator);
291e05d7b3SAdrian Prantl   EXPECT_EQ(XcodeSDK("WatchOS.sdk").GetType(), XcodeSDK::watchOS);
30*3b6a8f82SJonas Devlieghere   EXPECT_EQ(XcodeSDK("XRSimulator.sdk").GetType(), XcodeSDK::XRSimulator);
31*3b6a8f82SJonas Devlieghere   EXPECT_EQ(XcodeSDK("XROS.sdk").GetType(), XcodeSDK::XROS);
321e05d7b3SAdrian Prantl   EXPECT_EQ(XcodeSDK("Linux.sdk").GetType(), XcodeSDK::Linux);
331e05d7b3SAdrian Prantl   EXPECT_EQ(XcodeSDK("MacOSX.sdk").GetVersion(), llvm::VersionTuple());
341e05d7b3SAdrian Prantl   EXPECT_EQ(XcodeSDK("MacOSX10.9.sdk").GetVersion(), llvm::VersionTuple(10, 9));
351e05d7b3SAdrian Prantl   EXPECT_EQ(XcodeSDK("MacOSX10.15.4.sdk").GetVersion(), llvm::VersionTuple(10, 15));
3679feafa5SAdrian Prantl   EXPECT_EQ(XcodeSDK("MacOSX.sdk").IsAppleInternalSDK(), false);
3779feafa5SAdrian Prantl   EXPECT_EQ(XcodeSDK("MacOSX10.15.Internal.sdk").GetType(), XcodeSDK::MacOSX);
3879feafa5SAdrian Prantl   EXPECT_EQ(XcodeSDK("MacOSX10.15.Internal.sdk").GetVersion(),
3979feafa5SAdrian Prantl             llvm::VersionTuple(10, 15));
4079feafa5SAdrian Prantl   EXPECT_EQ(XcodeSDK("MacOSX10.15.Internal.sdk").IsAppleInternalSDK(), true);
411e05d7b3SAdrian Prantl   EXPECT_EQ(XcodeSDK().GetType(), XcodeSDK::unknown);
421e05d7b3SAdrian Prantl   EXPECT_EQ(XcodeSDK().GetVersion(), llvm::VersionTuple());
431e05d7b3SAdrian Prantl }
441e05d7b3SAdrian Prantl 
TEST(XcodeSDKTest,MergeTest)451e05d7b3SAdrian Prantl TEST(XcodeSDKTest, MergeTest) {
461e05d7b3SAdrian Prantl   XcodeSDK sdk("MacOSX.sdk");
471e05d7b3SAdrian Prantl   sdk.Merge(XcodeSDK("WatchOS.sdk"));
481e05d7b3SAdrian Prantl   // This doesn't make any particular sense and shouldn't happen in practice, we
491e05d7b3SAdrian Prantl   // just want to guarantee a well-defined behavior when choosing one
501e05d7b3SAdrian Prantl   // SDK to fit all CUs in an lldb::Module.
511e05d7b3SAdrian Prantl   // -> The higher number wins.
521e05d7b3SAdrian Prantl   EXPECT_EQ(sdk.GetType(), XcodeSDK::watchOS);
531e05d7b3SAdrian Prantl   sdk.Merge(XcodeSDK("WatchOS1.1.sdk"));
541e05d7b3SAdrian Prantl   EXPECT_EQ(sdk.GetVersion(), llvm::VersionTuple(1, 1));
551e05d7b3SAdrian Prantl   sdk.Merge(XcodeSDK("WatchOS2.0.sdk"));
561e05d7b3SAdrian Prantl   EXPECT_EQ(sdk.GetVersion(), llvm::VersionTuple(2, 0));
5779feafa5SAdrian Prantl   sdk.Merge(XcodeSDK("WatchOS1.1.Internal.sdk"));
5879feafa5SAdrian Prantl   EXPECT_EQ(sdk.GetVersion(), llvm::VersionTuple(2, 0));
5979feafa5SAdrian Prantl   EXPECT_EQ(sdk.IsAppleInternalSDK(), true);
6079feafa5SAdrian Prantl   XcodeSDK empty;
6179feafa5SAdrian Prantl   empty.Merge(XcodeSDK("MacOSX10.14.Internal.sdk"));
6279feafa5SAdrian Prantl   EXPECT_EQ(empty.GetString(), llvm::StringRef("MacOSX10.14.Internal.sdk"));
631e05d7b3SAdrian Prantl }
641e05d7b3SAdrian Prantl 
65b9c7e276SAdrian Prantl #ifndef _WIN32
TEST(XcodeSDKTest,SDKSupportsModules)661e05d7b3SAdrian Prantl TEST(XcodeSDKTest, SDKSupportsModules) {
671e05d7b3SAdrian Prantl   std::string base = "/Applications/Xcode.app/Contents/Developer/Platforms/";
681e05d7b3SAdrian Prantl   EXPECT_TRUE(XcodeSDK::SDKSupportsModules(
691e05d7b3SAdrian Prantl       XcodeSDK::Type::iPhoneSimulator,
701e05d7b3SAdrian Prantl       FileSpec(
711e05d7b3SAdrian Prantl           base +
721e05d7b3SAdrian Prantl           "iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.0.sdk")));
7379feafa5SAdrian Prantl   EXPECT_TRUE(XcodeSDK::SDKSupportsModules(
7479feafa5SAdrian Prantl       XcodeSDK::Type::iPhoneSimulator,
7579feafa5SAdrian Prantl       FileSpec(base + "iPhoneSimulator.platform/Developer/SDKs/"
7679feafa5SAdrian Prantl                       "iPhoneSimulator12.0.Internal.sdk")));
771e05d7b3SAdrian Prantl   EXPECT_FALSE(XcodeSDK::SDKSupportsModules(
781e05d7b3SAdrian Prantl       XcodeSDK::Type::iPhoneSimulator,
791e05d7b3SAdrian Prantl       FileSpec(
801e05d7b3SAdrian Prantl           base +
811e05d7b3SAdrian Prantl           "iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.2.sdk")));
821e05d7b3SAdrian Prantl   EXPECT_TRUE(XcodeSDK::SDKSupportsModules(
831e05d7b3SAdrian Prantl       XcodeSDK::Type::MacOSX,
841e05d7b3SAdrian Prantl       FileSpec(base + "MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk")));
851e05d7b3SAdrian Prantl   EXPECT_FALSE(XcodeSDK::SDKSupportsModules(
861e05d7b3SAdrian Prantl       XcodeSDK::Type::MacOSX,
871e05d7b3SAdrian Prantl       FileSpec(base + "MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk")));
881e05d7b3SAdrian Prantl }
89b9c7e276SAdrian Prantl #endif
901e05d7b3SAdrian Prantl 
TEST(XcodeSDKTest,SDKSupportsSwift)91dec1c94eSAdrian Prantl TEST(XcodeSDKTest, SDKSupportsSwift) {
92dec1c94eSAdrian Prantl   EXPECT_TRUE(XcodeSDK("iPhoneSimulator12.0.sdk").SupportsSwift());
93dec1c94eSAdrian Prantl   EXPECT_TRUE(XcodeSDK("iPhoneSimulator12.0.Internal.sdk").SupportsSwift());
94dec1c94eSAdrian Prantl   EXPECT_FALSE(XcodeSDK("iPhoneSimulator7.2.sdk").SupportsSwift());
95dec1c94eSAdrian Prantl   EXPECT_TRUE(XcodeSDK("MacOSX10.10.sdk").SupportsSwift());
96dec1c94eSAdrian Prantl   EXPECT_FALSE(XcodeSDK("MacOSX10.9.sdk").SupportsSwift());
97dec1c94eSAdrian Prantl   EXPECT_TRUE(XcodeSDK("Linux.sdk").SupportsSwift());
98dec1c94eSAdrian Prantl   EXPECT_TRUE(XcodeSDK("MacOSX.sdk").SupportsSwift());
99dec1c94eSAdrian Prantl   EXPECT_FALSE(XcodeSDK("EverythingElse.sdk").SupportsSwift());
100dec1c94eSAdrian Prantl }
101dec1c94eSAdrian Prantl 
TEST(XcodeSDKTest,GetCanonicalNameAndConstruct)102ae920a81SAdrian Prantl TEST(XcodeSDKTest, GetCanonicalNameAndConstruct) {
10379feafa5SAdrian Prantl   XcodeSDK::Info info;
10479feafa5SAdrian Prantl   info.type = XcodeSDK::Type::MacOSX;
10579feafa5SAdrian Prantl   EXPECT_EQ("macosx", XcodeSDK::GetCanonicalName(info));
106ae920a81SAdrian Prantl   EXPECT_EQ(XcodeSDK(info).Parse(), info);
10779feafa5SAdrian Prantl 
10879feafa5SAdrian Prantl   info.type = XcodeSDK::Type::iPhoneSimulator;
10979feafa5SAdrian Prantl   EXPECT_EQ("iphonesimulator", XcodeSDK::GetCanonicalName(info));
110ae920a81SAdrian Prantl   EXPECT_EQ(XcodeSDK(info).Parse(), info);
11179feafa5SAdrian Prantl 
11279feafa5SAdrian Prantl   info.type = XcodeSDK::Type::iPhoneOS;
11379feafa5SAdrian Prantl   EXPECT_EQ("iphoneos", XcodeSDK::GetCanonicalName(info));
114ae920a81SAdrian Prantl   EXPECT_EQ(XcodeSDK(info).Parse(), info);
11579feafa5SAdrian Prantl 
11679feafa5SAdrian Prantl   info.type = XcodeSDK::Type::AppleTVSimulator;
11779feafa5SAdrian Prantl   EXPECT_EQ("appletvsimulator", XcodeSDK::GetCanonicalName(info));
118ae920a81SAdrian Prantl   EXPECT_EQ(XcodeSDK(info).Parse(), info);
11979feafa5SAdrian Prantl 
12079feafa5SAdrian Prantl   info.type = XcodeSDK::Type::AppleTVOS;
12179feafa5SAdrian Prantl   EXPECT_EQ("appletvos", XcodeSDK::GetCanonicalName(info));
122ae920a81SAdrian Prantl   EXPECT_EQ(XcodeSDK(info).Parse(), info);
12379feafa5SAdrian Prantl 
12479feafa5SAdrian Prantl   info.type = XcodeSDK::Type::WatchSimulator;
12579feafa5SAdrian Prantl   EXPECT_EQ("watchsimulator", XcodeSDK::GetCanonicalName(info));
126ae920a81SAdrian Prantl   EXPECT_EQ(XcodeSDK(info).Parse(), info);
12779feafa5SAdrian Prantl 
12879feafa5SAdrian Prantl   info.type = XcodeSDK::Type::watchOS;
12979feafa5SAdrian Prantl   EXPECT_EQ("watchos", XcodeSDK::GetCanonicalName(info));
130ae920a81SAdrian Prantl   EXPECT_EQ(XcodeSDK(info).Parse(), info);
13179feafa5SAdrian Prantl 
132*3b6a8f82SJonas Devlieghere   info.type = XcodeSDK::Type::XRSimulator;
133*3b6a8f82SJonas Devlieghere   EXPECT_EQ("xrsimulator", XcodeSDK::GetCanonicalName(info));
134*3b6a8f82SJonas Devlieghere   EXPECT_EQ(XcodeSDK(info).Parse(), info);
135*3b6a8f82SJonas Devlieghere 
136*3b6a8f82SJonas Devlieghere   info.type = XcodeSDK::Type::XROS;
137*3b6a8f82SJonas Devlieghere   EXPECT_EQ("xros", XcodeSDK::GetCanonicalName(info));
138*3b6a8f82SJonas Devlieghere   EXPECT_EQ(XcodeSDK(info).Parse(), info);
139*3b6a8f82SJonas Devlieghere 
14079feafa5SAdrian Prantl   info.type = XcodeSDK::Type::Linux;
14179feafa5SAdrian Prantl   EXPECT_EQ("linux", XcodeSDK::GetCanonicalName(info));
142ae920a81SAdrian Prantl   EXPECT_EQ(XcodeSDK(info).Parse(), info);
14379feafa5SAdrian Prantl 
14479feafa5SAdrian Prantl   info.type = XcodeSDK::Type::unknown;
14579feafa5SAdrian Prantl   EXPECT_EQ("", XcodeSDK::GetCanonicalName(info));
146ae920a81SAdrian Prantl   EXPECT_EQ(XcodeSDK(info).Parse(), info);
14779feafa5SAdrian Prantl 
14879feafa5SAdrian Prantl   info.internal = true;
14979feafa5SAdrian Prantl   info.type = XcodeSDK::Type::MacOSX;
15079feafa5SAdrian Prantl   EXPECT_EQ("macosx.internal", XcodeSDK::GetCanonicalName(info));
151ae920a81SAdrian Prantl   EXPECT_EQ(XcodeSDK(info).Parse(), info);
15279feafa5SAdrian Prantl 
15379feafa5SAdrian Prantl   info.type = XcodeSDK::Type::iPhoneSimulator;
15479feafa5SAdrian Prantl   EXPECT_EQ("iphonesimulator.internal", XcodeSDK::GetCanonicalName(info));
155ae920a81SAdrian Prantl   EXPECT_EQ(XcodeSDK(info).Parse(), info);
15679feafa5SAdrian Prantl 
15779feafa5SAdrian Prantl   info.type = XcodeSDK::Type::iPhoneOS;
15879feafa5SAdrian Prantl   EXPECT_EQ("iphoneos.internal", XcodeSDK::GetCanonicalName(info));
159ae920a81SAdrian Prantl   EXPECT_EQ(XcodeSDK(info).Parse(), info);
16079feafa5SAdrian Prantl 
16179feafa5SAdrian Prantl   info.type = XcodeSDK::Type::AppleTVSimulator;
16279feafa5SAdrian Prantl   EXPECT_EQ("appletvsimulator.internal", XcodeSDK::GetCanonicalName(info));
163ae920a81SAdrian Prantl   EXPECT_EQ(XcodeSDK(info).Parse(), info);
16479feafa5SAdrian Prantl 
16579feafa5SAdrian Prantl   info.type = XcodeSDK::Type::AppleTVOS;
16679feafa5SAdrian Prantl   EXPECT_EQ("appletvos.internal", XcodeSDK::GetCanonicalName(info));
167ae920a81SAdrian Prantl   EXPECT_EQ(XcodeSDK(info).Parse(), info);
16879feafa5SAdrian Prantl 
16979feafa5SAdrian Prantl   info.type = XcodeSDK::Type::WatchSimulator;
17079feafa5SAdrian Prantl   EXPECT_EQ("watchsimulator.internal", XcodeSDK::GetCanonicalName(info));
171ae920a81SAdrian Prantl   EXPECT_EQ(XcodeSDK(info).Parse(), info);
17279feafa5SAdrian Prantl 
17379feafa5SAdrian Prantl   info.type = XcodeSDK::Type::watchOS;
17479feafa5SAdrian Prantl   EXPECT_EQ("watchos.internal", XcodeSDK::GetCanonicalName(info));
175ae920a81SAdrian Prantl   EXPECT_EQ(XcodeSDK(info).Parse(), info);
17679feafa5SAdrian Prantl 
177*3b6a8f82SJonas Devlieghere   info.type = XcodeSDK::Type::XRSimulator;
178*3b6a8f82SJonas Devlieghere   EXPECT_EQ("xrsimulator.internal", XcodeSDK::GetCanonicalName(info));
179*3b6a8f82SJonas Devlieghere   EXPECT_EQ(XcodeSDK(info).Parse(), info);
180*3b6a8f82SJonas Devlieghere 
181*3b6a8f82SJonas Devlieghere   info.type = XcodeSDK::Type::XROS;
182*3b6a8f82SJonas Devlieghere   EXPECT_EQ("xros.internal", XcodeSDK::GetCanonicalName(info));
183*3b6a8f82SJonas Devlieghere   EXPECT_EQ(XcodeSDK(info).Parse(), info);
18479feafa5SAdrian Prantl   info.type = XcodeSDK::Type::MacOSX;
18579feafa5SAdrian Prantl   info.version = llvm::VersionTuple(10, 9);
18679feafa5SAdrian Prantl   EXPECT_EQ("macosx10.9.internal", XcodeSDK::GetCanonicalName(info));
187ae920a81SAdrian Prantl   EXPECT_EQ(XcodeSDK(info).Parse(), info);
18879feafa5SAdrian Prantl 
18979feafa5SAdrian Prantl   info.type = XcodeSDK::Type::iPhoneOS;
19079feafa5SAdrian Prantl   info.version = llvm::VersionTuple(7, 0);
19179feafa5SAdrian Prantl   EXPECT_EQ("iphoneos7.0.internal", XcodeSDK::GetCanonicalName(info));
192ae920a81SAdrian Prantl   EXPECT_EQ(XcodeSDK(info).Parse(), info);
1931e05d7b3SAdrian Prantl }
1946e95d51eSAdrian Prantl 
TEST(XcodeSDKTest,GetSDKTypeForTriple)1956e95d51eSAdrian Prantl TEST(XcodeSDKTest, GetSDKTypeForTriple) {
1966e95d51eSAdrian Prantl   EXPECT_EQ(
1976e95d51eSAdrian Prantl       XcodeSDK::GetSDKTypeForTriple(llvm::Triple("x86_64-apple-macosx10.14")),
1986e95d51eSAdrian Prantl       XcodeSDK::Type::MacOSX);
1996e95d51eSAdrian Prantl   EXPECT_EQ(XcodeSDK::GetSDKTypeForTriple(llvm::Triple("x86_64-apple-darwin")),
2006e95d51eSAdrian Prantl             XcodeSDK::Type::MacOSX);
2016e95d51eSAdrian Prantl   EXPECT_EQ(XcodeSDK::GetSDKTypeForTriple(
2026e95d51eSAdrian Prantl                 llvm::Triple("x86_64-apple-ios13.4-simulator")),
2036e95d51eSAdrian Prantl             XcodeSDK::Type::iPhoneSimulator);
2046e95d51eSAdrian Prantl   EXPECT_EQ(XcodeSDK::GetSDKTypeForTriple(llvm::Triple("arm64-apple-ios13.4")),
2056e95d51eSAdrian Prantl             XcodeSDK::Type::iPhoneOS);
2066e95d51eSAdrian Prantl   EXPECT_EQ(XcodeSDK::GetSDKTypeForTriple(
2076e95d51eSAdrian Prantl                 llvm::Triple("x86_64-apple-ios13.4-macabi")),
2086e95d51eSAdrian Prantl             XcodeSDK::Type::MacOSX);
2096e95d51eSAdrian Prantl   EXPECT_EQ(XcodeSDK::GetSDKTypeForTriple(
2106e95d51eSAdrian Prantl                 llvm::Triple("x86_64-apple-tvos-simulator")),
2116e95d51eSAdrian Prantl             XcodeSDK::Type::AppleTVSimulator);
2126e95d51eSAdrian Prantl   EXPECT_EQ(XcodeSDK::GetSDKTypeForTriple(llvm::Triple("arm64-apple-tvos")),
2136e95d51eSAdrian Prantl             XcodeSDK::Type::AppleTVOS);
2146e95d51eSAdrian Prantl   EXPECT_EQ(XcodeSDK::GetSDKTypeForTriple(
2156e95d51eSAdrian Prantl                 llvm::Triple("x86_64-apple-watchos-simulator")),
2166e95d51eSAdrian Prantl             XcodeSDK::Type::WatchSimulator);
2176e95d51eSAdrian Prantl   EXPECT_EQ(XcodeSDK::GetSDKTypeForTriple(llvm::Triple("arm64-apple-watchos")),
2186e95d51eSAdrian Prantl             XcodeSDK::Type::watchOS);
219*3b6a8f82SJonas Devlieghere   EXPECT_EQ(XcodeSDK::GetSDKTypeForTriple(
220*3b6a8f82SJonas Devlieghere                 llvm::Triple("arm64e-apple-xros-simulator")),
221*3b6a8f82SJonas Devlieghere             XcodeSDK::Type::XRSimulator);
222*3b6a8f82SJonas Devlieghere   EXPECT_EQ(XcodeSDK::GetSDKTypeForTriple(llvm::Triple("arm64e-apple-xros")),
223*3b6a8f82SJonas Devlieghere             XcodeSDK::Type::XROS);
2246e95d51eSAdrian Prantl   EXPECT_EQ(XcodeSDK::GetSDKTypeForTriple(llvm::Triple("x86_64-unknown-linux")),
2256e95d51eSAdrian Prantl             XcodeSDK::Type::Linux);
2266e95d51eSAdrian Prantl   EXPECT_EQ(XcodeSDK::GetSDKTypeForTriple(llvm::Triple("i386-unknown-netbsd")),
2276e95d51eSAdrian Prantl             XcodeSDK::Type::unknown);
2286e95d51eSAdrian Prantl }
2293d7b926dSAdrian Prantl 
TEST(XcodeSDKTest,FindXcodeContentsDirectoryInPath)2303d7b926dSAdrian Prantl TEST(XcodeSDKTest, FindXcodeContentsDirectoryInPath) {
2313d7b926dSAdrian Prantl   std::string standard =
2323d7b926dSAdrian Prantl       "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/"
2333d7b926dSAdrian Prantl       "Developer/SDKs/MacOSX.sdk";
2343d7b926dSAdrian Prantl   EXPECT_EQ("/Applications/Xcode.app/Contents",
2353d7b926dSAdrian Prantl             XcodeSDK::FindXcodeContentsDirectoryInPath(standard));
2363d7b926dSAdrian Prantl 
2373d7b926dSAdrian Prantl   std::string standard_version =
2383d7b926dSAdrian Prantl       "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/"
2393d7b926dSAdrian Prantl       "Developer/SDKs/MacOSX10.15.sdk";
2403d7b926dSAdrian Prantl   EXPECT_EQ("/Applications/Xcode.app/Contents",
2413d7b926dSAdrian Prantl             XcodeSDK::FindXcodeContentsDirectoryInPath(standard_version));
2423d7b926dSAdrian Prantl 
2433d7b926dSAdrian Prantl   std::string beta = "/Applications/Xcode-beta.app/Contents/Developer/"
2443d7b926dSAdrian Prantl                      "Platforms/MacOSX.platform/"
2453d7b926dSAdrian Prantl                      "Developer/SDKs/MacOSX10.15.sdk";
2463d7b926dSAdrian Prantl   EXPECT_EQ("/Applications/Xcode-beta.app/Contents",
2473d7b926dSAdrian Prantl             XcodeSDK::FindXcodeContentsDirectoryInPath(beta));
2483d7b926dSAdrian Prantl 
2493d7b926dSAdrian Prantl   std::string no_app =
2503d7b926dSAdrian Prantl       "/Applications/Xcode/Contents/Developer/Platforms/MacOSX.platform/"
2513d7b926dSAdrian Prantl       "Developer/SDKs/MacOSX10.15.sdk";
2523d7b926dSAdrian Prantl   EXPECT_EQ("", XcodeSDK::FindXcodeContentsDirectoryInPath(no_app));
2533d7b926dSAdrian Prantl 
2543d7b926dSAdrian Prantl   std::string no_contents =
2553d7b926dSAdrian Prantl       "/Applications/Xcode.app/Developer/Platforms/MacOSX.platform/"
2563d7b926dSAdrian Prantl       "Developer/SDKs/MacOSX10.15.sdk";
2573d7b926dSAdrian Prantl   EXPECT_EQ("", XcodeSDK::FindXcodeContentsDirectoryInPath(no_contents));
2583d7b926dSAdrian Prantl 
2593d7b926dSAdrian Prantl   std::string no_capitalization =
2603d7b926dSAdrian Prantl       "/Applications/Xcode.app/contents/Developer/Platforms/MacOSX.platform/"
2613d7b926dSAdrian Prantl       "Developer/SDKs/MacOSX10.15.sdk";
2623d7b926dSAdrian Prantl   EXPECT_EQ("", XcodeSDK::FindXcodeContentsDirectoryInPath(no_capitalization));
2633d7b926dSAdrian Prantl }
264