Skip to content

Commit

Permalink
[clang] [unittest] Add a test for Generic_GCC::GCCVersion::Parse (llv…
Browse files Browse the repository at this point in the history
…m#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.
  • Loading branch information
mstorsjo authored Oct 18, 2023
1 parent 48a5350 commit b4b35a5
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 0 deletions.
1 change: 1 addition & 0 deletions clang/unittests/Driver/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ set(LLVM_LINK_COMPONENTS
add_clang_unittest(ClangDriverTests
DistroTest.cpp
DXCModeTest.cpp
GCCVersionTest.cpp
ToolChainTest.cpp
ModuleCacheTest.cpp
MultilibBuilderTest.cpp
Expand Down
52 changes: 52 additions & 0 deletions clang/unittests/Driver/GCCVersionTest.cpp
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit b4b35a5

Please sign in to comment.