brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.3 KiB · 56b984c Raw
76 lines · cpp
1//===-- TidyProviderTests.cpp - Clang tidy configuration provider tests ---===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "Feature.h"10#include "TestFS.h"11#include "TidyProvider.h"12#include "llvm/Testing/Support/SupportHelpers.h"13#include "gtest/gtest.h"14 15namespace clang {16namespace clangd {17 18namespace {19 20TEST(TidyProvider, NestedDirectories) {21  MockFS FS;22  FS.Files[testPath(".clang-tidy")] = R"yaml(23  Checks: 'llvm-*'24  CheckOptions:25    TestKey: 126)yaml";27  FS.Files[testPath("sub1/.clang-tidy")] = R"yaml(28  Checks: 'misc-*'29  CheckOptions:30    TestKey: 231)yaml";32  FS.Files[testPath("sub1/sub2/.clang-tidy")] = R"yaml(33  Checks: 'bugprone-*'34  CheckOptions:35    TestKey: 336  InheritParentConfig: true37)yaml";38 39  TidyProvider Provider = provideClangTidyFiles(FS);40 41  auto BaseOptions = getTidyOptionsForFile(Provider, testPath("File.cpp"));42  ASSERT_TRUE(BaseOptions.Checks.has_value());43  EXPECT_EQ(*BaseOptions.Checks, "llvm-*");44  EXPECT_EQ(BaseOptions.CheckOptions.lookup("TestKey").Value, "1");45 46  auto Sub1Options = getTidyOptionsForFile(Provider, testPath("sub1/File.cpp"));47  ASSERT_TRUE(Sub1Options.Checks.has_value());48  EXPECT_EQ(*Sub1Options.Checks, "misc-*");49  EXPECT_EQ(Sub1Options.CheckOptions.lookup("TestKey").Value, "2");50 51  auto Sub2Options =52      getTidyOptionsForFile(Provider, testPath("sub1/sub2/File.cpp"));53  ASSERT_TRUE(Sub2Options.Checks.has_value());54  EXPECT_EQ(*Sub2Options.Checks, "misc-*,bugprone-*");55  EXPECT_EQ(Sub2Options.CheckOptions.lookup("TestKey").Value, "3");56}57 58TEST(TidyProvider, IsFastTidyCheck) {59  EXPECT_THAT(isFastTidyCheck("misc-const-correctness"), llvm::ValueIs(false));60  EXPECT_THAT(isFastTidyCheck("bugprone-suspicious-include"),61              llvm::ValueIs(true));62  // Linked in (ParsedASTTests.cpp) but not measured.63  EXPECT_EQ(isFastTidyCheck("replay-preamble-check"), std::nullopt);64}65 66#if CLANGD_TIDY_CHECKS67TEST(TidyProvider, IsValidCheck) {68  EXPECT_TRUE(isRegisteredTidyCheck("bugprone-argument-comment"));69  EXPECT_FALSE(isRegisteredTidyCheck("bugprone-argument-clinic"));70}71#endif72 73} // namespace74} // namespace clangd75} // namespace clang76