[clang-tools-extra] 1d84c89 - [clang-doc] Add Mustache case to test for DR 131697 (#170197)
via cfe-commits
cfe-commits at lists.llvm.org
Thu Dec 4 10:08:04 PST 2025
Author: Erick Velez
Date: 2025-12-04T10:08:00-08:00
New Revision: 1d84c891e10aecd83e66f18fc4f23ef8c1430ad0
URL: https://github.com/llvm/llvm-project/commit/1d84c891e10aecd83e66f18fc4f23ef8c1430ad0
DIFF: https://github.com/llvm/llvm-project/commit/1d84c891e10aecd83e66f18fc4f23ef8c1430ad0.diff
LOG: [clang-doc] Add Mustache case to test for DR 131697 (#170197)
The test for DR 131697 only requires that clang-doc doesn't crash. There
is no documentation created. However, when using Mustache, clang-doc
still expects certain
paths to exist, like the directory where assets are placed. In legacy
HTML, the `docs` directory is still created and assets are placed there
regardless of there being any Infos to document. Mustache didn't do
this, so now we create `docs/json` and `docs/html` even if there is
nothing to document.
Added:
Modified:
clang-tools-extra/clang-doc/Generators.cpp
clang-tools-extra/test/clang-doc/DR-131697.cpp
Removed:
################################################################################
diff --git a/clang-tools-extra/clang-doc/Generators.cpp b/clang-tools-extra/clang-doc/Generators.cpp
index 667e5d5a318f0..9ae2677dcc8f4 100644
--- a/clang-tools-extra/clang-doc/Generators.cpp
+++ b/clang-tools-extra/clang-doc/Generators.cpp
@@ -84,27 +84,33 @@ Error MustacheGenerator::generateDocumentation(
return JSONGenerator.takeError();
}
- SmallString<128> JSONPath;
- sys::path::native(RootDir.str() + "/json", JSONPath);
+ SmallString<128> JSONDirPath(RootDir);
+ SmallString<128> DocsDirPath(RootDir);
+ {
+ TimeTraceScope TS("Create Output Directories");
+ sys::path::append(JSONDirPath, "json");
+ if (auto EC = sys::fs::create_directories(JSONDirPath))
+ return createFileError(JSONDirPath, EC);
+ sys::path::append(DocsDirPath, DirName);
+ if (auto EC = sys::fs::create_directories(DocsDirPath))
+ return createFileError(DocsDirPath, EC);
+ }
{
llvm::TimeTraceScope TS("Iterate JSON files");
std::error_code EC;
- sys::fs::recursive_directory_iterator JSONIter(JSONPath, EC);
+ sys::fs::recursive_directory_iterator JSONIter(JSONDirPath, EC);
std::vector<json::Value> JSONFiles;
JSONFiles.reserve(Infos.size());
if (EC)
return createStringError("Failed to create directory iterator.");
- SmallString<128> DocsDirPath(RootDir.str() + '/' + DirName);
- sys::path::native(DocsDirPath);
- if (auto EC = sys::fs::create_directories(DocsDirPath))
- return createFileError(DocsDirPath, EC);
while (JSONIter != sys::fs::recursive_directory_iterator()) {
// create the same directory structure in the docs format dir
if (JSONIter->type() == sys::fs::file_type::directory_file) {
SmallString<128> DocsClonedPath(JSONIter->path());
- sys::path::replace_path_prefix(DocsClonedPath, JSONPath, DocsDirPath);
+ sys::path::replace_path_prefix(DocsClonedPath, JSONDirPath,
+ DocsDirPath);
if (auto EC = sys::fs::create_directories(DocsClonedPath)) {
return createFileError(DocsClonedPath, EC);
}
@@ -134,7 +140,7 @@ Error MustacheGenerator::generateDocumentation(
std::error_code FileErr;
SmallString<128> DocsFilePath(JSONIter->path());
- sys::path::replace_path_prefix(DocsFilePath, JSONPath, DocsDirPath);
+ sys::path::replace_path_prefix(DocsFilePath, JSONDirPath, DocsDirPath);
sys::path::replace_extension(DocsFilePath, DirName);
raw_fd_ostream InfoOS(DocsFilePath, FileErr, sys::fs::OF_None);
if (FileErr)
diff --git a/clang-tools-extra/test/clang-doc/DR-131697.cpp b/clang-tools-extra/test/clang-doc/DR-131697.cpp
index 9025bbf910813..06168e6642f62 100644
--- a/clang-tools-extra/test/clang-doc/DR-131697.cpp
+++ b/clang-tools-extra/test/clang-doc/DR-131697.cpp
@@ -1,6 +1,7 @@
// RUN: rm -rf %t && mkdir -p %t
// RUN: split-file %s %t
// RUN: clang-doc -format=html %t/compile_commands.json %t/main.cpp
+// RUN: clang-doc -format=mustache %t/compile_commands.json %t/main.cpp
//--- main.cpp
More information about the cfe-commits
mailing list