aboutsummaryrefslogtreecommitdiff
path: root/clang/unittests/Driver
diff options
context:
space:
mode:
authorMartin Storsjö <martin@martin.st>2023-10-18 12:36:27 +0300
committerGitHub <noreply@github.com>2023-10-18 12:36:27 +0300
commitb4b35a5d2b4ee26bf79b8a92715dd200f3f9cc49 (patch)
tree2b0f5791f44057147aa69462d998ae62b87940ff /clang/unittests/Driver
parent48a53509e851c93f352c967da1feb1c8fb2abd9a (diff)
downloadllvm-b4b35a5d2b4ee26bf79b8a92715dd200f3f9cc49.zip
llvm-b4b35a5d2b4ee26bf79b8a92715dd200f3f9cc49.tar.gz
llvm-b4b35a5d2b4ee26bf79b8a92715dd200f3f9cc49.tar.bz2
[clang] [unittest] Add a test for Generic_GCC::GCCVersion::Parse (#69078)
This adds actual test cases for all the cases that are listed in a code comment in the implementation of this function; having such test coverage eases doing further modifications to the function.
Diffstat (limited to 'clang/unittests/Driver')
-rw-r--r--clang/unittests/Driver/CMakeLists.txt1
-rw-r--r--clang/unittests/Driver/GCCVersionTest.cpp52
2 files changed, 53 insertions, 0 deletions
diff --git a/clang/unittests/Driver/CMakeLists.txt b/clang/unittests/Driver/CMakeLists.txt
index e37c158..752037f 100644
--- a/clang/unittests/Driver/CMakeLists.txt
+++ b/clang/unittests/Driver/CMakeLists.txt
@@ -9,6 +9,7 @@ set(LLVM_LINK_COMPONENTS
add_clang_unittest(ClangDriverTests
DistroTest.cpp
DXCModeTest.cpp
+ GCCVersionTest.cpp
ToolChainTest.cpp
ModuleCacheTest.cpp
MultilibBuilderTest.cpp
diff --git a/clang/unittests/Driver/GCCVersionTest.cpp b/clang/unittests/Driver/GCCVersionTest.cpp
new file mode 100644
index 0000000..9ae335b
--- /dev/null
+++ b/clang/unittests/Driver/GCCVersionTest.cpp
@@ -0,0 +1,52 @@
+//===- unittests/Driver/GCCVersionTest.cpp --- GCCVersion parser tests ----===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// Unit tests for Generic_GCC::GCCVersion
+//
+//===----------------------------------------------------------------------===//
+
+#include "../../lib/Driver/ToolChains/Gnu.h"
+#include "gtest/gtest.h"
+
+using namespace clang;
+using namespace clang::driver;
+
+namespace {
+
+struct VersionParseTest {
+ std::string Text;
+
+ int Major, Minor, Patch;
+ std::string MajorStr, MinorStr, PatchSuffix;
+};
+
+const VersionParseTest TestCases[] = {
+ {"5", 5, -1, -1, "5", "", ""},
+ {"4.4", 4, 4, -1, "4", "4", ""},
+ {"4.4-patched", 4, 4, -1, "4", "4", "-patched"},
+ {"4.4.0", 4, 4, 0, "4", "4", ""},
+ {"4.4.x", 4, 4, -1, "4", "4", ""},
+ {"4.4.2-rc4", 4, 4, 2, "4", "4", "-rc4"},
+ {"4.4.x-patched", 4, 4, -1, "4", "4", ""},
+ {"not-a-version", -1, -1, -1, "", "", ""},
+};
+
+TEST(GCCVersionTest, Parse) {
+ for (const auto &TC : TestCases) {
+ auto V = toolchains::Generic_GCC::GCCVersion::Parse(TC.Text);
+ EXPECT_EQ(V.Text, TC.Text);
+ EXPECT_EQ(V.Major, TC.Major);
+ EXPECT_EQ(V.Minor, TC.Minor);
+ EXPECT_EQ(V.Patch, TC.Patch);
+ EXPECT_EQ(V.MajorStr, TC.MajorStr);
+ EXPECT_EQ(V.MinorStr, TC.MinorStr);
+ EXPECT_EQ(V.PatchSuffix, TC.PatchSuffix);
+ }
+}
+
+} // end anonymous namespace