-
Notifications
You must be signed in to change notification settings - Fork 15.4k
[clang-doc] Add Mustache case to test for DR 131697 #170197
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
@llvm/pr-subscribers-clang-tools-extra Author: Erick Velez (evelez7) ChangesThe test for DR 131697 only requires that clang-doc doesn't crash. There Full diff: https://github.com/llvm/llvm-project/pull/170197.diff 2 Files Affected:
diff --git a/clang-tools-extra/clang-doc/Generators.cpp b/clang-tools-extra/clang-doc/Generators.cpp
index 667e5d5a318f0..5d76901b95833 100644
--- a/clang-tools-extra/clang-doc/Generators.cpp
+++ b/clang-tools-extra/clang-doc/Generators.cpp
@@ -84,27 +84,30 @@ Error MustacheGenerator::generateDocumentation(
return JSONGenerator.takeError();
}
- SmallString<128> JSONPath;
- sys::path::native(RootDir.str() + "/json", JSONPath);
+ SmallString<128> JSONDirPath(RootDir);
+ sys::path::append(JSONDirPath, "json");
+ if (auto EC = sys::fs::create_directories(JSONDirPath))
+ return createFileError(JSONDirPath, EC);
+ SmallString<128> DocsDirPath(RootDir);
+ 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 +137,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
|
6705300 to
fdf9479
Compare
f55da9f to
3589489
Compare
3589489 to
45b366a
Compare

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
docsdirectory is still created and assets are placed thereregardless of there being any Infos to document. Mustache didn't do
this, so now we create
docs/jsonanddocs/htmleven if there isnothing to document.