diff options
author | Luca Di Sera <luca.disera@qt.io> | 2023-05-10 16:29:48 +0200 |
---|---|---|
committer | Luca Di Sera <luca.disera@qt.io> | 2023-05-11 11:17:21 +0200 |
commit | 453fa4ca39c93f31d496d856babda17b919d6cec (patch) | |
tree | 460662fc03e25a23d401d65bb8e225e03c453289 /src | |
parent | d927a87b765681dc7fb1bf2ba81a113000141d7b (diff) | |
download | qttools-453fa4ca39c93f31d496d856babda17b919d6cec.tar.gz |
QDoc: Move catch_conversions under src
QDoc employs a very small support library, "catch_conversions", to
provide better output for certain types when used with the Catch2
testing framework, which QDoc uses for some of its tests.
"catch_conversions" was currently kept under "tests/auto/qdoc" and its
headers were included and used directly by its sibling tests by relative
paths.
Due to a certain restructuring that is happening in QDoc, with one of
the goals, among others, being to increase the locality of QDoc-related
code under "src/qdoc", the "catch_conversions" support library is now
moved under "src/qdoc".
To allow code that depended on it to keep their usages without requiring
the addition of some relative paths from the "tests" directory to the
"src" directory, a library target, "Qt::QDocCatchConversionsPrivate" was
created for the support library.
The target can be linked-to to gain access to the
previously-directly-used headers, with include path
"catch_conversions/.*".
To allow for this specific include path to work, the internal directory
structure for "catch_conversions" was slightly modified with the
addition of some intermediate directories in between its root and the
library headers.
Targets under "tests/auto/qdoc" that used the dependency now link to it
instead. Hence, their "CMakeLists.txt" files were modified to avoid
using the dependency as an include directory and instead use
"Qt::QDocCatchConversionsPrivate" as a library.
The inclusions of the of the "catch_conversions" headers in
relevant sources was modified to respect the new "catch_conversions/.*"
path.
The root "CMakeLists.txt" file under "src/qdoc" was modified to add the
relevant library as a subdirectory.
Change-Id: Iec24ca3877a48a42a55ff406309813aa083ab23f
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Topi Reiniƶ <topi.reinio@qt.io>
Diffstat (limited to 'src')
5 files changed, 70 insertions, 0 deletions
diff --git a/src/qdoc/CMakeLists.txt b/src/qdoc/CMakeLists.txt index bcd7c46bb..11f947e01 100644 --- a/src/qdoc/CMakeLists.txt +++ b/src/qdoc/CMakeLists.txt @@ -2,6 +2,7 @@ # SPDX-License-Identifier: BSD-3-Clause add_subdirectory(catch) +add_subdirectory(catch_conversions) if(QT_FEATURE_qdoc AND QT_FEATURE_clangcpp) add_subdirectory(qdoc) diff --git a/src/qdoc/catch_conversions/CMakeLists.txt b/src/qdoc/catch_conversions/CMakeLists.txt new file mode 100644 index 000000000..e19514c01 --- /dev/null +++ b/src/qdoc/catch_conversions/CMakeLists.txt @@ -0,0 +1,10 @@ +qt_internal_add_module(QDocCatchConversionsPrivate + HEADER_MODULE + EXTERNAL_HEADERS_DIR src +) + +qt_internal_extend_target(QDocCatchConversionsPrivate + PUBLIC_INCLUDE_DIRECTORIES + $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src> + $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/QtQDocCatchConversionsPrivate> +) diff --git a/src/qdoc/catch_conversions/src/catch_conversions/qdoc_catch_conversions.h b/src/qdoc/catch_conversions/src/catch_conversions/qdoc_catch_conversions.h new file mode 100644 index 000000000..ef0cb2cef --- /dev/null +++ b/src/qdoc/catch_conversions/src/catch_conversions/qdoc_catch_conversions.h @@ -0,0 +1,24 @@ +// Copyright (C) 2021 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 + +#pragma once + +#include "qt_catch_conversions.h" + +#include <boundaries/filesystem/directorypath.h> +#include <boundaries/filesystem/filepath.h> +#include <boundaries/filesystem/resolvedfile.h> + +#include <ostream> + +inline std::ostream& operator<<(std::ostream& os, const DirectoryPath& dirpath) { + return os << dirpath.value().toStdString(); +} + +inline std::ostream& operator<<(std::ostream& os, const FilePath& filepath) { + return os << filepath.value().toStdString(); +} + +inline std::ostream& operator<<(std::ostream& os, const ResolvedFile& resolved_file) { + return os << "ResolvedFile{ query: " << resolved_file.get_query().toStdString() << ", " << "filepath: " << resolved_file.get_path() << " }"; +} diff --git a/src/qdoc/catch_conversions/src/catch_conversions/qt_catch_conversions.h b/src/qdoc/catch_conversions/src/catch_conversions/qt_catch_conversions.h new file mode 100644 index 000000000..68abf5fb0 --- /dev/null +++ b/src/qdoc/catch_conversions/src/catch_conversions/qt_catch_conversions.h @@ -0,0 +1,19 @@ +// Copyright (C) 2021 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 + +#pragma once + +#include "std_catch_conversions.h" + +#include <ostream> + +#include <QChar> +#include <QString> + +inline std::ostream& operator<<(std::ostream& os, const QChar& character) { + return os << QString{character}.toStdString(); +} + +inline std::ostream& operator<<(std::ostream& os, const QString& string) { + return os << string.toStdString(); +} diff --git a/src/qdoc/catch_conversions/src/catch_conversions/std_catch_conversions.h b/src/qdoc/catch_conversions/src/catch_conversions/std_catch_conversions.h new file mode 100644 index 000000000..be8fa65d7 --- /dev/null +++ b/src/qdoc/catch_conversions/src/catch_conversions/std_catch_conversions.h @@ -0,0 +1,16 @@ +// Copyright (C) 2021 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 + +#pragma once + +#include <ostream> +#include <optional> + +template<typename T> +inline std::ostream& operator<<(std::ostream& os, const std::optional<T>& optional) { + os << "std::optional{\n\t"; + if (optional) os << optional.value(); + else os <<"nullopt"; + + return os << "\n};"; +} |