1 //===- unittests/Driver/DistroTest.cpp --- ToolChains tests ---------------===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 // 9 // Unit tests for Distro detection. 10 // 11 //===----------------------------------------------------------------------===// 12 13 #include "clang/Driver/Distro.h" 14 #include "llvm/Support/Host.h" 15 #include "llvm/Support/VirtualFileSystem.h" 16 #include "llvm/Support/raw_ostream.h" 17 #include "gtest/gtest.h" 18 19 using namespace clang; 20 using namespace clang::driver; 21 22 namespace { 23 24 // The tests include all release-related files for each distribution 25 // in the VFS, in order to make sure that earlier tests do not 26 // accidentally result in incorrect distribution guess. 27 28 TEST(DistroTest, DetectUbuntu) { 29 llvm::vfs::InMemoryFileSystem UbuntuTrustyFileSystem; 30 // Ubuntu uses Debian Sid version. 31 UbuntuTrustyFileSystem.addFile("/etc/debian_version", 0, 32 llvm::MemoryBuffer::getMemBuffer("jessie/sid\n")); 33 UbuntuTrustyFileSystem.addFile("/etc/lsb-release", 0, 34 llvm::MemoryBuffer::getMemBuffer("DISTRIB_ID=Ubuntu\n" 35 "DISTRIB_RELEASE=14.04\n" 36 "DISTRIB_CODENAME=trusty\n" 37 "DISTRIB_DESCRIPTION=\"Ubuntu 14.04 LTS\"\n")); 38 UbuntuTrustyFileSystem.addFile("/etc/os-release", 0, 39 llvm::MemoryBuffer::getMemBuffer("NAME=\"Ubuntu\"\n" 40 "VERSION=\"14.04, Trusty Tahr\"\n" 41 "ID=ubuntu\n" 42 "ID_LIKE=debian\n" 43 "PRETTY_NAME=\"Ubuntu 14.04 LTS\"\n" 44 "VERSION_ID=\"14.04\"\n" 45 "HOME_URL=\"http://www.ubuntu.com/\"\n" 46 "SUPPORT_URL=\"http://help.ubuntu.com/\"\n" 47 "BUG_REPORT_URL=\"http://bugs.launchpad.net/ubuntu/\"\n")); 48 49 Distro UbuntuTrusty{UbuntuTrustyFileSystem, llvm::Triple("unknown-pc-linux")}; 50 ASSERT_EQ(Distro(Distro::UbuntuTrusty), UbuntuTrusty); 51 ASSERT_TRUE(UbuntuTrusty.IsUbuntu()); 52 ASSERT_FALSE(UbuntuTrusty.IsRedhat()); 53 ASSERT_FALSE(UbuntuTrusty.IsOpenSUSE()); 54 ASSERT_FALSE(UbuntuTrusty.IsDebian()); 55 ASSERT_FALSE(UbuntuTrusty.IsGentoo()); 56 57 Distro UbuntuTrusty2{UbuntuTrustyFileSystem, llvm::Triple("unknown-pc-windows")}; 58 ASSERT_EQ(Distro(Distro::UnknownDistro), UbuntuTrusty2); 59 60 llvm::vfs::InMemoryFileSystem UbuntuYakketyFileSystem; 61 UbuntuYakketyFileSystem.addFile("/etc/debian_version", 0, 62 llvm::MemoryBuffer::getMemBuffer("stretch/sid\n")); 63 UbuntuYakketyFileSystem.addFile("/etc/lsb-release", 0, 64 llvm::MemoryBuffer::getMemBuffer("DISTRIB_ID=Ubuntu\n" 65 "DISTRIB_RELEASE=16.10\n" 66 "DISTRIB_CODENAME=yakkety\n" 67 "DISTRIB_DESCRIPTION=\"Ubuntu 16.10\"\n")); 68 UbuntuYakketyFileSystem.addFile("/etc/os-release", 0, 69 llvm::MemoryBuffer::getMemBuffer("NAME=\"Ubuntu\"\n" 70 "VERSION=\"16.10 (Yakkety Yak)\"\n" 71 "ID=ubuntu\n" 72 "ID_LIKE=debian\n" 73 "PRETTY_NAME=\"Ubuntu 16.10\"\n" 74 "VERSION_ID=\"16.10\"\n" 75 "HOME_URL=\"http://www.ubuntu.com/\"\n" 76 "SUPPORT_URL=\"http://help.ubuntu.com/\"\n" 77 "BUG_REPORT_URL=\"http://bugs.launchpad.net/ubuntu/\"\n" 78 "PRIVACY_POLICY_URL=\"http://www.ubuntu.com/legal/terms-and-policies/privacy-policy\"\n" 79 "VERSION_CODENAME=yakkety\n" 80 "UBUNTU_CODENAME=yakkety\n")); 81 82 Distro UbuntuYakkety{UbuntuYakketyFileSystem, llvm::Triple("unknown-pc-linux")}; 83 ASSERT_EQ(Distro(Distro::UbuntuYakkety), UbuntuYakkety); 84 ASSERT_TRUE(UbuntuYakkety.IsUbuntu()); 85 ASSERT_FALSE(UbuntuYakkety.IsRedhat()); 86 ASSERT_FALSE(UbuntuYakkety.IsOpenSUSE()); 87 ASSERT_FALSE(UbuntuYakkety.IsDebian()); 88 ASSERT_FALSE(UbuntuYakkety.IsGentoo()); 89 } 90 91 TEST(DistroTest, DetectRedhat) { 92 llvm::vfs::InMemoryFileSystem Fedora25FileSystem; 93 Fedora25FileSystem.addFile("/etc/system-release-cpe", 0, 94 llvm::MemoryBuffer::getMemBuffer("cpe:/o:fedoraproject:fedora:25\n")); 95 // Both files are symlinks to fedora-release. 96 Fedora25FileSystem.addFile("/etc/system-release", 0, 97 llvm::MemoryBuffer::getMemBuffer("Fedora release 25 (Twenty Five)\n")); 98 Fedora25FileSystem.addFile("/etc/redhat-release", 0, 99 llvm::MemoryBuffer::getMemBuffer("Fedora release 25 (Twenty Five)\n")); 100 Fedora25FileSystem.addFile("/etc/fedora-release", 0, 101 llvm::MemoryBuffer::getMemBuffer("Fedora release 25 (Twenty Five)\n")); 102 Fedora25FileSystem.addFile("/etc/os-release", 0, 103 llvm::MemoryBuffer::getMemBuffer("NAME=Fedora\n" 104 "VERSION=\"25 (Twenty Five)\"\n" 105 "ID=fedora\n" 106 "VERSION_ID=25\n" 107 "PRETTY_NAME=\"Fedora 25 (Twenty Five)\"\n" 108 "ANSI_COLOR=\"0;34\"\n" 109 "CPE_NAME=\"cpe:/o:fedoraproject:fedora:25\"\n" 110 "HOME_URL=\"https://fedoraproject.org/\"\n" 111 "BUG_REPORT_URL=\"https://bugzilla.redhat.com/\"\n" 112 "REDHAT_BUGZILLA_PRODUCT=\"Fedora\"\n" 113 "REDHAT_BUGZILLA_PRODUCT_VERSION=25\n" 114 "REDHAT_SUPPORT_PRODUCT=\"Fedora\"\n" 115 "REDHAT_SUPPORT_PRODUCT_VERSION=25\n" 116 "PRIVACY_POLICY_URL=https://fedoraproject.org/wiki/Legal:PrivacyPolicy\n")); 117 Distro Fedora25{Fedora25FileSystem, llvm::Triple("unknown-pc-linux")}; 118 ASSERT_EQ(Distro(Distro::Fedora), Fedora25); 119 ASSERT_FALSE(Fedora25.IsUbuntu()); 120 ASSERT_TRUE(Fedora25.IsRedhat()); 121 ASSERT_FALSE(Fedora25.IsOpenSUSE()); 122 ASSERT_FALSE(Fedora25.IsDebian()); 123 ASSERT_FALSE(Fedora25.IsGentoo()); 124 125 llvm::vfs::InMemoryFileSystem CentOS7FileSystem; 126 CentOS7FileSystem.addFile("/etc/system-release-cpe", 0, 127 llvm::MemoryBuffer::getMemBuffer("cpe:/o:centos:centos:7\n")); 128 // Both files are symlinks to centos-release. 129 CentOS7FileSystem.addFile("/etc/system-release", 0, 130 llvm::MemoryBuffer::getMemBuffer("CentOS Linux release 7.2.1511 (Core) \n")); 131 CentOS7FileSystem.addFile("/etc/redhat-release", 0, 132 llvm::MemoryBuffer::getMemBuffer("CentOS Linux release 7.2.1511 (Core) \n")); 133 CentOS7FileSystem.addFile("/etc/centos-release", 0, 134 llvm::MemoryBuffer::getMemBuffer("CentOS Linux release 7.2.1511 (Core) \n")); 135 CentOS7FileSystem.addFile("/etc/centos-release-upstream", 0, 136 llvm::MemoryBuffer::getMemBuffer("Derived from Red Hat Enterprise Linux 7.2 (Source)\n")); 137 CentOS7FileSystem.addFile("/etc/os-release", 0, 138 llvm::MemoryBuffer::getMemBuffer("NAME=\"CentOS Linux\"\n" 139 "VERSION=\"7 (Core)\"\n" 140 "ID=\"centos\"\n" 141 "ID_LIKE=\"rhel fedora\"\n" 142 "VERSION_ID=\"7\"\n" 143 "PRETTY_NAME=\"CentOS Linux 7 (Core)\"\n" 144 "ANSI_COLOR=\"0;31\"\n" 145 "CPE_NAME=\"cpe:/o:centos:centos:7\"\n" 146 "HOME_URL=\"https://www.centos.org/\"\n" 147 "BUG_REPORT_URL=\"https://bugs.centos.org/\"\n" 148 "\n" 149 "CENTOS_MANTISBT_PROJECT=\"CentOS-7\"\n" 150 "CENTOS_MANTISBT_PROJECT_VERSION=\"7\"\n" 151 "REDHAT_SUPPORT_PRODUCT=\"centos\"\n" 152 "REDHAT_SUPPORT_PRODUCT_VERSION=\"7\"\n")); 153 154 Distro CentOS7{CentOS7FileSystem, llvm::Triple("unknown-pc-linux")}; 155 ASSERT_EQ(Distro(Distro::RHEL7), CentOS7); 156 ASSERT_FALSE(CentOS7.IsUbuntu()); 157 ASSERT_TRUE(CentOS7.IsRedhat()); 158 ASSERT_FALSE(CentOS7.IsOpenSUSE()); 159 ASSERT_FALSE(CentOS7.IsDebian()); 160 ASSERT_FALSE(CentOS7.IsGentoo()); 161 } 162 163 TEST(DistroTest, DetectOpenSUSE) { 164 llvm::vfs::InMemoryFileSystem OpenSUSELeap421FileSystem; 165 OpenSUSELeap421FileSystem.addFile("/etc/SuSE-release", 0, 166 llvm::MemoryBuffer::getMemBuffer("openSUSE 42.1 (x86_64)\n" 167 "VERSION = 42.1\n" 168 "CODENAME = Malachite\n" 169 "# /etc/SuSE-release is deprecated and will be removed in the future, use /etc/os-release instead\n")); 170 OpenSUSELeap421FileSystem.addFile("/etc/os-release", 0, 171 llvm::MemoryBuffer::getMemBuffer("NAME=\"openSUSE Leap\"\n" 172 "VERSION=\"42.1\"\n" 173 "VERSION_ID=\"42.1\"\n" 174 "PRETTY_NAME=\"openSUSE Leap 42.1 (x86_64)\"\n" 175 "ID=opensuse\n" 176 "ANSI_COLOR=\"0;32\"\n" 177 "CPE_NAME=\"cpe:/o:opensuse:opensuse:42.1\"\n" 178 "BUG_REPORT_URL=\"https://bugs.opensuse.org\"\n" 179 "HOME_URL=\"https://opensuse.org/\"\n" 180 "ID_LIKE=\"suse\"\n")); 181 182 Distro OpenSUSELeap421{OpenSUSELeap421FileSystem, llvm::Triple("unknown-pc-linux")}; 183 ASSERT_EQ(Distro(Distro::OpenSUSE), OpenSUSELeap421); 184 ASSERT_FALSE(OpenSUSELeap421.IsUbuntu()); 185 ASSERT_FALSE(OpenSUSELeap421.IsRedhat()); 186 ASSERT_TRUE(OpenSUSELeap421.IsOpenSUSE()); 187 ASSERT_FALSE(OpenSUSELeap421.IsDebian()); 188 ASSERT_FALSE(OpenSUSELeap421.IsGentoo()); 189 190 llvm::vfs::InMemoryFileSystem OpenSUSE132FileSystem; 191 OpenSUSE132FileSystem.addFile("/etc/SuSE-release", 0, 192 llvm::MemoryBuffer::getMemBuffer("openSUSE 13.2 (x86_64)\n" 193 "VERSION = 13.2\n" 194 "CODENAME = Harlequin\n" 195 "# /etc/SuSE-release is deprecated and will be removed in the future, use /etc/os-release instead\n")); 196 OpenSUSE132FileSystem.addFile("/etc/os-release", 0, 197 llvm::MemoryBuffer::getMemBuffer("NAME=openSUSE\n" 198 "VERSION=\"13.2 (Harlequin)\"\n" 199 "VERSION_ID=\"13.2\"\n" 200 "PRETTY_NAME=\"openSUSE 13.2 (Harlequin) (x86_64)\"\n" 201 "ID=opensuse\n" 202 "ANSI_COLOR=\"0;32\"\n" 203 "CPE_NAME=\"cpe:/o:opensuse:opensuse:13.2\"\n" 204 "BUG_REPORT_URL=\"https://bugs.opensuse.org\"\n" 205 "HOME_URL=\"https://opensuse.org/\"\n" 206 "ID_LIKE=\"suse\"\n")); 207 208 Distro OpenSUSE132{OpenSUSE132FileSystem, llvm::Triple("unknown-pc-linux")}; 209 ASSERT_EQ(Distro(Distro::OpenSUSE), OpenSUSE132); 210 ASSERT_FALSE(OpenSUSE132.IsUbuntu()); 211 ASSERT_FALSE(OpenSUSE132.IsRedhat()); 212 ASSERT_TRUE(OpenSUSE132.IsOpenSUSE()); 213 ASSERT_FALSE(OpenSUSE132.IsDebian()); 214 ASSERT_FALSE(OpenSUSE132.IsGentoo()); 215 216 llvm::vfs::InMemoryFileSystem SLES10FileSystem; 217 SLES10FileSystem.addFile("/etc/SuSE-release", 0, 218 llvm::MemoryBuffer::getMemBuffer("SUSE Linux Enterprise Server 10 (x86_64)\n" 219 "VERSION = 10\n" 220 "PATCHLEVEL = 4\n")); 221 SLES10FileSystem.addFile("/etc/lsb_release", 0, 222 llvm::MemoryBuffer::getMemBuffer("LSB_VERSION=\"core-2.0-noarch:core-3.0-noarch:core-2.0-x86_64:core-3.0-x86_64\"\n")); 223 224 // SLES10 is unsupported and therefore evaluates to unknown 225 Distro SLES10{SLES10FileSystem, llvm::Triple("unknown-pc-linux")}; 226 ASSERT_EQ(Distro(Distro::UnknownDistro), SLES10); 227 ASSERT_FALSE(SLES10.IsUbuntu()); 228 ASSERT_FALSE(SLES10.IsRedhat()); 229 ASSERT_FALSE(SLES10.IsOpenSUSE()); 230 ASSERT_FALSE(SLES10.IsDebian()); 231 ASSERT_FALSE(SLES10.IsGentoo()); 232 } 233 234 TEST(DistroTest, DetectDebian) { 235 llvm::vfs::InMemoryFileSystem DebianJessieFileSystem; 236 DebianJessieFileSystem.addFile("/etc/debian_version", 0, 237 llvm::MemoryBuffer::getMemBuffer("8.6\n")); 238 DebianJessieFileSystem.addFile("/etc/os-release", 0, 239 llvm::MemoryBuffer::getMemBuffer("PRETTY_NAME=\"Debian GNU/Linux 8 (jessie)\"\n" 240 "NAME=\"Debian GNU/Linux\"\n" 241 "VERSION_ID=\"8\"\n" 242 "VERSION=\"8 (jessie)\"\n" 243 "ID=debian\n" 244 "HOME_URL=\"http://www.debian.org/\"\n" 245 "SUPPORT_URL=\"http://www.debian.org/support\"\n" 246 "BUG_REPORT_URL=\"https://bugs.debian.org/\"\n")); 247 248 Distro DebianJessie{DebianJessieFileSystem, llvm::Triple("unknown-pc-linux")}; 249 ASSERT_EQ(Distro(Distro::DebianJessie), DebianJessie); 250 ASSERT_FALSE(DebianJessie.IsUbuntu()); 251 ASSERT_FALSE(DebianJessie.IsRedhat()); 252 ASSERT_FALSE(DebianJessie.IsOpenSUSE()); 253 ASSERT_TRUE(DebianJessie.IsDebian()); 254 ASSERT_FALSE(DebianJessie.IsGentoo()); 255 256 llvm::vfs::InMemoryFileSystem DebianStretchSidFileSystem; 257 DebianStretchSidFileSystem.addFile("/etc/debian_version", 0, 258 llvm::MemoryBuffer::getMemBuffer("stretch/sid\n")); 259 DebianStretchSidFileSystem.addFile("/etc/os-release", 0, 260 llvm::MemoryBuffer::getMemBuffer("PRETTY_NAME=\"Debian GNU/Linux stretch/sid\"\n" 261 "NAME=\"Debian GNU/Linux\"\n" 262 "ID=debian\n" 263 "HOME_URL=\"http://www.debian.org/\"\n" 264 "SUPPORT_URL=\"http://www.debian.org/support\"\n" 265 "BUG_REPORT_URL=\"https://bugs.debian.org/\"\n")); 266 267 Distro DebianStretchSid{DebianStretchSidFileSystem, llvm::Triple("unknown-pc-linux")}; 268 ASSERT_EQ(Distro(Distro::DebianStretch), DebianStretchSid); 269 ASSERT_FALSE(DebianStretchSid.IsUbuntu()); 270 ASSERT_FALSE(DebianStretchSid.IsRedhat()); 271 ASSERT_FALSE(DebianStretchSid.IsOpenSUSE()); 272 ASSERT_TRUE(DebianStretchSid.IsDebian()); 273 ASSERT_FALSE(DebianStretchSid.IsGentoo()); 274 } 275 276 TEST(DistroTest, DetectExherbo) { 277 llvm::vfs::InMemoryFileSystem ExherboFileSystem; 278 ExherboFileSystem.addFile("/etc/exherbo-release", 0, // (ASCII art) 279 llvm::MemoryBuffer::getMemBuffer("")); 280 ExherboFileSystem.addFile("/etc/os-release", 0, 281 llvm::MemoryBuffer::getMemBuffer("NAME=\"Exherbo\"\n" 282 "PRETTY_NAME=\"Exherbo Linux\"\n" 283 "ID=\"exherbo\"\n" 284 "ANSI_COLOR=\"0;32\"\n" 285 "HOME_URL=\"https://www.exherbo.org/\"\n" 286 "SUPPORT_URL=\"irc://irc.freenode.net/#exherbo\"\n" 287 "BUG_REPORT_URL=\"https://bugs.exherbo.org/\"\n")); 288 289 Distro Exherbo{ExherboFileSystem, llvm::Triple("unknown-pc-linux")}; 290 ASSERT_EQ(Distro(Distro::Exherbo), Exherbo); 291 ASSERT_FALSE(Exherbo.IsUbuntu()); 292 ASSERT_FALSE(Exherbo.IsRedhat()); 293 ASSERT_FALSE(Exherbo.IsOpenSUSE()); 294 ASSERT_FALSE(Exherbo.IsDebian()); 295 ASSERT_FALSE(Exherbo.IsGentoo()); 296 } 297 298 TEST(DistroTest, DetectArchLinux) { 299 llvm::vfs::InMemoryFileSystem ArchLinuxFileSystem; 300 ArchLinuxFileSystem.addFile("/etc/arch-release", 0, // (empty) 301 llvm::MemoryBuffer::getMemBuffer("")); 302 ArchLinuxFileSystem.addFile("/etc/os-release", 0, 303 llvm::MemoryBuffer::getMemBuffer("NAME=\"Arch Linux\"\n" 304 "ID=arch\n" 305 "PRETTY_NAME=\"Arch Linux\"\n" 306 "ANSI_COLOR=\"0;36\"\n" 307 "HOME_URL=\"https://www.archlinux.org/\"\n" 308 "SUPPORT_URL=\"https://bbs.archlinux.org/\"\n" 309 "BUG_REPORT_URL=\"https://bugs.archlinux.org/\"\n")); 310 311 Distro ArchLinux{ArchLinuxFileSystem, llvm::Triple("unknown-pc-linux")}; 312 ASSERT_EQ(Distro(Distro::ArchLinux), ArchLinux); 313 ASSERT_FALSE(ArchLinux.IsUbuntu()); 314 ASSERT_FALSE(ArchLinux.IsRedhat()); 315 ASSERT_FALSE(ArchLinux.IsOpenSUSE()); 316 ASSERT_FALSE(ArchLinux.IsDebian()); 317 ASSERT_FALSE(ArchLinux.IsGentoo()); 318 } 319 320 TEST(DistroTest, DetectGentoo) { 321 llvm::vfs::InMemoryFileSystem GentooFileSystem; 322 GentooFileSystem.addFile( 323 "/etc/gentoo-release", 0, 324 llvm::MemoryBuffer::getMemBuffer("Gentoo Base System release 2.6")); 325 GentooFileSystem.addFile( 326 "/etc/os-release", 0, 327 llvm::MemoryBuffer::getMemBuffer( 328 "NAME=Gentoo\n" 329 "ID=gentoo\n" 330 "PRETTY_NAME=\"Gentoo/Linux\"\n" 331 "ANSI_COLOR=\"1;32\"\n" 332 "HOME_URL=\"https://www.gentoo.org/\"\n" 333 "SUPPORT_URL=\"https://www.gentoo.org/support/\"\n" 334 "BUG_REPORT_URL=\"https://bugs.gentoo.org/\"\n")); 335 336 Distro Gentoo{GentooFileSystem, llvm::Triple("unknown-pc-linux")}; 337 ASSERT_EQ(Distro(Distro::Gentoo), Gentoo); 338 ASSERT_FALSE(Gentoo.IsUbuntu()); 339 ASSERT_FALSE(Gentoo.IsRedhat()); 340 ASSERT_FALSE(Gentoo.IsOpenSUSE()); 341 ASSERT_FALSE(Gentoo.IsDebian()); 342 ASSERT_TRUE(Gentoo.IsGentoo()); 343 } 344 345 TEST(DistroTest, DetectWindowsAndCrossCompile) { 346 347 class CountingFileSystem : public llvm::vfs::ProxyFileSystem { 348 public: 349 CountingFileSystem() : ProxyFileSystem(llvm::vfs::getRealFileSystem()) {} 350 351 llvm::ErrorOr<llvm::vfs::Status> status(const llvm::Twine &Path) override { 352 ++Count; 353 return llvm::vfs::ProxyFileSystem::status(Path); 354 } 355 356 llvm::ErrorOr<std::unique_ptr<llvm::vfs::File>> 357 openFileForRead(const llvm::Twine &Path) override { 358 ++Count; 359 return llvm::vfs::ProxyFileSystem::openFileForRead(Path); 360 } 361 362 unsigned Count{}; 363 }; 364 365 llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> RFS = 366 llvm::vfs::getRealFileSystem(); 367 llvm::Triple Host(llvm::sys::getProcessTriple()); 368 369 CountingFileSystem CFileSystem; 370 Distro LinuxDistro{CFileSystem, llvm::Triple("unknown-pc-linux")}; 371 if (Host.isOSWindows()) { 372 ASSERT_EQ(Distro(Distro::UnknownDistro), LinuxDistro); 373 ASSERT_GT(CFileSystem.Count, 0U); 374 } 375 376 Distro WinDistro{CFileSystem, llvm::Triple("unknown-pc-windows")}; 377 ASSERT_EQ(Distro(Distro::UnknownDistro), WinDistro); 378 ASSERT_GT(CFileSystem.Count, 0U); 379 380 // When running on Windows along with a real file system, ensure that no 381 // distro is returned if targeting Linux 382 if (Host.isOSWindows()) { 383 Distro LinuxRealDistro{*RFS, llvm::Triple("unknown-pc-linux")}; 384 ASSERT_EQ(Distro(Distro::UnknownDistro), LinuxRealDistro); 385 } 386 // When running on Linux, check if the distro is the same as the host when 387 // targeting Linux 388 if (Host.isOSLinux()) { 389 Distro HostDistro{*RFS, Host}; 390 Distro LinuxRealDistro{*RFS, llvm::Triple("unknown-pc-linux")}; 391 ASSERT_EQ(HostDistro, LinuxRealDistro); 392 } 393 394 Distro WinRealDistro{*RFS, llvm::Triple("unknown-pc-windows")}; 395 ASSERT_EQ(Distro(Distro::UnknownDistro), WinRealDistro); 396 } 397 398 } // end anonymous namespace 399