diff --git a/clang-tools-extra/clang-doc/assets/namespace-template.mustache b/clang-tools-extra/clang-doc/assets/namespace-template.mustache index 12dc93069d1cf..1a44ed3c3cccd 100644 --- a/clang-tools-extra/clang-doc/assets/namespace-template.mustache +++ b/clang-tools-extra/clang-doc/assets/namespace-template.mustache @@ -23,23 +23,79 @@
- Content + {{#Enums}} +
+

Enumerations

+
+ {{#Obj}} + {{>EnumPartial}} + {{/Obj}} +
+
+ {{/Enums}} + {{#Record}} +
+

Inner Classes

+ +
+ {{/Record}}
diff --git a/clang-tools-extra/test/clang-doc/mustache-index.cpp b/clang-tools-extra/test/clang-doc/mustache-index.cpp new file mode 100644 index 0000000000000..cad4cc8b6931a --- /dev/null +++ b/clang-tools-extra/test/clang-doc/mustache-index.cpp @@ -0,0 +1,75 @@ +// RUN: rm -rf %t && mkdir -p %t +// RUN: clang-doc --format=mustache --output=%t --executor=standalone %s +// RUN: FileCheck %s < %t/GlobalNamespace/index.html + +enum Color { + RED, + BLUE, + GREEN +}; + +class Foo; + +// CHECK: +// CHECK-NEXT: +// CHECK: +// CHECK-NEXT: + +// CHECK:
+// CHECK-NEXT:

Enumerations

+// CHECK-NEXT:
+// CHECK-NEXT:
+// CHECK-NEXT:
+// CHECK-NEXT:
+// CHECK-NEXT:                      
+// CHECK-NEXT:                          enum Color
+// CHECK-NEXT:                      
+// CHECK-NEXT:                  
+// CHECK-NEXT:
+// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: +// CHECK: +// CHECK-NEXT: +// CHECK-NEXT:
NameValue
RED0
BLUE1
GREEN2
+// CHECK-NEXT:
+// CHECK-NEXT: Defined at line 5 of file {{.*}}mustache-index.cpp +// CHECK-NEXT:
+// CHECK-NEXT:
+// CHECK-NEXT:
+// CHECK-NEXT:
+ +// CHECK:
+// CHECK-NEXT:

Inner Classes

+// CHECK-NEXT: +// CHECK-NEXT:
diff --git a/clang-tools-extra/test/clang-doc/mustache-separate-namespace.cpp b/clang-tools-extra/test/clang-doc/mustache-separate-namespace.cpp new file mode 100644 index 0000000000000..ec29b2449169b --- /dev/null +++ b/clang-tools-extra/test/clang-doc/mustache-separate-namespace.cpp @@ -0,0 +1,13 @@ +// RUN: rm -rf %t && mkdir -p %t +// RUN: clang-doc --format=mustache --output=%t --executor=standalone %s +// RUN: FileCheck %s < %t/MyNamespace/index.html + +namespace MyNamespace { + class Foo; +} + +// CHECK: diff --git a/clang-tools-extra/unittests/clang-doc/HTMLMustacheGeneratorTest.cpp b/clang-tools-extra/unittests/clang-doc/HTMLMustacheGeneratorTest.cpp index 95acd363a958e..32b0846a02dba 100644 --- a/clang-tools-extra/unittests/clang-doc/HTMLMustacheGeneratorTest.cpp +++ b/clang-tools-extra/unittests/clang-doc/HTMLMustacheGeneratorTest.cpp @@ -87,29 +87,6 @@ TEST(HTMLMustacheGeneratorTest, createResources) { } } -TEST(HTMLMustacheGeneratorTest, generateDocs) { - auto G = getHTMLMustacheGenerator(); - assert(G && "Could not find HTMLMustacheGenerator"); - ClangDocContext CDCtx = getClangDocContext(); - - unittest::TempDir RootTestDirectory("generateDocsTest", /*Unique=*/true); - CDCtx.OutDirectory = RootTestDirectory.path(); - -#if ENABLE_LOCAL_TEST - // FIXME: We can't read files during unit tests. Migrate to lit once - // tool support lands. - getMustacheHtmlFiles(CLANG_DOC_TEST_ASSET_DIR, CDCtx); - - EXPECT_THAT_ERROR(G->generateDocs(RootTestDirectory.path(), {}, CDCtx), - Succeeded()) - << "Failed to generate docs."; -#else - EXPECT_THAT_ERROR(G->generateDocs(RootTestDirectory.path(), {}, CDCtx), - Failed()) - << "Failed to generate docs."; -#endif -} - TEST(HTMLGeneratorTest, emitFunctionHTML) { #if ENABLE_LOCAL_TEST auto G = getHTMLMustacheGenerator(); @@ -160,50 +137,6 @@ TEST(HTMLGeneratorTest, emitFunctionHTML) { #endif } -TEST(HTMLMustacheGeneratorTest, emitEnumHTML) { -#if ENABLE_LOCAL_TEST - auto G = getHTMLMustacheGenerator(); - assert(G && "Could not find HTMLMustacheGenerator"); - ClangDocContext CDCtx = getClangDocContext(); - std::string Buffer; - llvm::raw_string_ostream Actual(Buffer); - - unittest::TempDir RootTestDirectory("emitEnumHTML", - /*Unique=*/true); - CDCtx.OutDirectory = RootTestDirectory.path(); - - getMustacheHtmlFiles(CLANG_DOC_TEST_ASSET_DIR, CDCtx); - - // FIXME: This is a terrible hack, since we can't initialize the templates - // directly. We'll need to update the interfaces so that we can call - // SetupTemplateFiles() from outsize of HTMLMustacheGenerator.cpp - EXPECT_THAT_ERROR(G->generateDocs(RootTestDirectory.path(), {}, CDCtx), - Succeeded()) - << "Failed to generate docs."; - - CDCtx.RepositoryUrl = "http://www.repository.com"; - - EnumInfo I; - I.Name = "e"; - I.Namespace.emplace_back(EmptySID, "A", InfoType::IT_namespace); - - I.DefLoc = Location(10, 10, "test.cpp", true); - I.Loc.emplace_back(12, 12, "test.cpp"); - - I.Members.emplace_back("X"); - I.Scoped = true; - - auto Err = G->generateDocForInfo(&I, Actual, CDCtx); - assert(!Err); - - std::string Expected = R"raw(IT_enum -)raw"; - - // FIXME: Enums are not handled yet. - EXPECT_EQ(Expected, Actual.str()); -#endif -} - TEST(HTMLMustacheGeneratorTest, emitCommentHTML) { #if ENABLE_LOCAL_TEST auto G = getHTMLMustacheGenerator();