diff options
author | Martin Storsjö <martin@martin.st> | 2023-10-18 12:36:27 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-18 12:36:27 +0300 |
commit | b4b35a5d2b4ee26bf79b8a92715dd200f3f9cc49 (patch) | |
tree | 2b0f5791f44057147aa69462d998ae62b87940ff /clang/unittests/Driver | |
parent | 48a53509e851c93f352c967da1feb1c8fb2abd9a (diff) | |
download | llvm-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.txt | 1 | ||||
-rw-r--r-- | clang/unittests/Driver/GCCVersionTest.cpp | 52 |
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 |