summaryrefslogtreecommitdiff
path: root/unittests/Driver
diff options
context:
space:
mode:
authorMichal Gorny <mgorny@gentoo.org>2018-12-23 15:07:19 +0000
committerMichal Gorny <mgorny@gentoo.org>2018-12-23 15:07:19 +0000
commit40c9a5ffc3ed1bdc20243851b7a0d6eeecf28d5a (patch)
treee4fdce2f35f64469fae393f958fd7b6cf52319ac /unittests/Driver
parenta6eb16ed631365f3bbadd0450ab52746c151794d (diff)
downloadclang-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.cpp36
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