diff options
author | Michal Gorny <mgorny@gentoo.org> | 2018-12-23 15:07:19 +0000 |
---|---|---|
committer | Michal Gorny <mgorny@gentoo.org> | 2018-12-23 15:07:19 +0000 |
commit | 40c9a5ffc3ed1bdc20243851b7a0d6eeecf28d5a (patch) | |
tree | e4fdce2f35f64469fae393f958fd7b6cf52319ac /unittests/Driver | |
parent | a6eb16ed631365f3bbadd0450ab52746c151794d (diff) | |
download | clang-40c9a5ffc3ed1bdc20243851b7a0d6eeecf28d5a.tar.gz |
[Distro] Support detecting Gentoo
Add support for distinguishing plain Gentoo distribution, and a unit
test for it. This is going to be used to introduce distro-specific
customizations in the driver code; most notably, it is going to be used
to disable -faddrsig.
Differential Revision: https://reviews.llvm.org/D56024
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@350027 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'unittests/Driver')
-rw-r--r-- | unittests/Driver/DistroTest.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/unittests/Driver/DistroTest.cpp b/unittests/Driver/DistroTest.cpp index 5a23392e8c..bc1863c429 100644 --- a/unittests/Driver/DistroTest.cpp +++ b/unittests/Driver/DistroTest.cpp @@ -51,6 +51,7 @@ TEST(DistroTest, DetectUbuntu) { ASSERT_FALSE(UbuntuTrusty.IsRedhat()); ASSERT_FALSE(UbuntuTrusty.IsOpenSUSE()); ASSERT_FALSE(UbuntuTrusty.IsDebian()); + ASSERT_FALSE(UbuntuTrusty.IsGentoo()); llvm::vfs::InMemoryFileSystem UbuntuYakketyFileSystem; UbuntuYakketyFileSystem.addFile("/etc/debian_version", 0, @@ -80,6 +81,7 @@ TEST(DistroTest, DetectUbuntu) { ASSERT_FALSE(UbuntuYakkety.IsRedhat()); ASSERT_FALSE(UbuntuYakkety.IsOpenSUSE()); ASSERT_FALSE(UbuntuYakkety.IsDebian()); + ASSERT_FALSE(UbuntuYakkety.IsGentoo()); } TEST(DistroTest, DetectRedhat) { @@ -114,6 +116,7 @@ TEST(DistroTest, DetectRedhat) { ASSERT_TRUE(Fedora25.IsRedhat()); ASSERT_FALSE(Fedora25.IsOpenSUSE()); ASSERT_FALSE(Fedora25.IsDebian()); + ASSERT_FALSE(Fedora25.IsGentoo()); llvm::vfs::InMemoryFileSystem CentOS7FileSystem; CentOS7FileSystem.addFile("/etc/system-release-cpe", 0, @@ -150,6 +153,7 @@ TEST(DistroTest, DetectRedhat) { ASSERT_TRUE(CentOS7.IsRedhat()); ASSERT_FALSE(CentOS7.IsOpenSUSE()); ASSERT_FALSE(CentOS7.IsDebian()); + ASSERT_FALSE(CentOS7.IsGentoo()); } TEST(DistroTest, DetectOpenSUSE) { @@ -177,6 +181,7 @@ TEST(DistroTest, DetectOpenSUSE) { ASSERT_FALSE(OpenSUSELeap421.IsRedhat()); ASSERT_TRUE(OpenSUSELeap421.IsOpenSUSE()); ASSERT_FALSE(OpenSUSELeap421.IsDebian()); + ASSERT_FALSE(OpenSUSELeap421.IsGentoo()); llvm::vfs::InMemoryFileSystem OpenSUSE132FileSystem; OpenSUSE132FileSystem.addFile("/etc/SuSE-release", 0, @@ -202,6 +207,7 @@ TEST(DistroTest, DetectOpenSUSE) { ASSERT_FALSE(OpenSUSE132.IsRedhat()); ASSERT_TRUE(OpenSUSE132.IsOpenSUSE()); ASSERT_FALSE(OpenSUSE132.IsDebian()); + ASSERT_FALSE(OpenSUSE132.IsGentoo()); llvm::vfs::InMemoryFileSystem SLES10FileSystem; SLES10FileSystem.addFile("/etc/SuSE-release", 0, @@ -218,6 +224,7 @@ TEST(DistroTest, DetectOpenSUSE) { ASSERT_FALSE(SLES10.IsRedhat()); ASSERT_FALSE(SLES10.IsOpenSUSE()); ASSERT_FALSE(SLES10.IsDebian()); + ASSERT_FALSE(SLES10.IsGentoo()); } TEST(DistroTest, DetectDebian) { @@ -240,6 +247,7 @@ TEST(DistroTest, DetectDebian) { ASSERT_FALSE(DebianJessie.IsRedhat()); ASSERT_FALSE(DebianJessie.IsOpenSUSE()); ASSERT_TRUE(DebianJessie.IsDebian()); + ASSERT_FALSE(DebianJessie.IsGentoo()); llvm::vfs::InMemoryFileSystem DebianStretchSidFileSystem; DebianStretchSidFileSystem.addFile("/etc/debian_version", 0, @@ -258,6 +266,7 @@ TEST(DistroTest, DetectDebian) { ASSERT_FALSE(DebianStretchSid.IsRedhat()); ASSERT_FALSE(DebianStretchSid.IsOpenSUSE()); ASSERT_TRUE(DebianStretchSid.IsDebian()); + ASSERT_FALSE(DebianStretchSid.IsGentoo()); } TEST(DistroTest, DetectExherbo) { @@ -279,6 +288,7 @@ TEST(DistroTest, DetectExherbo) { ASSERT_FALSE(Exherbo.IsRedhat()); ASSERT_FALSE(Exherbo.IsOpenSUSE()); ASSERT_FALSE(Exherbo.IsDebian()); + ASSERT_FALSE(Exherbo.IsGentoo()); } TEST(DistroTest, DetectArchLinux) { @@ -300,6 +310,32 @@ TEST(DistroTest, DetectArchLinux) { ASSERT_FALSE(ArchLinux.IsRedhat()); ASSERT_FALSE(ArchLinux.IsOpenSUSE()); ASSERT_FALSE(ArchLinux.IsDebian()); + ASSERT_FALSE(ArchLinux.IsGentoo()); +} + +TEST(DistroTest, DetectGentoo) { + llvm::vfs::InMemoryFileSystem GentooFileSystem; + GentooFileSystem.addFile( + "/etc/gentoo-release", 0, + llvm::MemoryBuffer::getMemBuffer("Gentoo Base System release 2.6")); + GentooFileSystem.addFile( + "/etc/os-release", 0, + llvm::MemoryBuffer::getMemBuffer( + "NAME=Gentoo\n" + "ID=gentoo\n" + "PRETTY_NAME=\"Gentoo/Linux\"\n" + "ANSI_COLOR=\"1;32\"\n" + "HOME_URL=\"https://www.gentoo.org/\"\n" + "SUPPORT_URL=\"https://www.gentoo.org/support/\"\n" + "BUG_REPORT_URL=\"https://bugs.gentoo.org/\"\n")); + + Distro Gentoo{GentooFileSystem}; + ASSERT_EQ(Distro(Distro::Gentoo), Gentoo); + ASSERT_FALSE(Gentoo.IsUbuntu()); + ASSERT_FALSE(Gentoo.IsRedhat()); + ASSERT_FALSE(Gentoo.IsOpenSUSE()); + ASSERT_FALSE(Gentoo.IsDebian()); + ASSERT_TRUE(Gentoo.IsGentoo()); } } // end anonymous namespace |