From 453fa4ca39c93f31d496d856babda17b919d6cec Mon Sep 17 00:00:00 2001 From: Luca Di Sera Date: Wed, 10 May 2023 16:29:48 +0200 Subject: QDoc: Move catch_conversions under src MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Reviewed-by: Qt CI Bot Reviewed-by: Topi Reiniƶ --- src/qdoc/CMakeLists.txt | 1 + src/qdoc/catch_conversions/CMakeLists.txt | 10 +++++++++ .../src/catch_conversions/qdoc_catch_conversions.h | 24 ++++++++++++++++++++++ .../src/catch_conversions/qt_catch_conversions.h | 19 +++++++++++++++++ .../src/catch_conversions/std_catch_conversions.h | 16 +++++++++++++++ 5 files changed, 70 insertions(+) create mode 100644 src/qdoc/catch_conversions/CMakeLists.txt create mode 100644 src/qdoc/catch_conversions/src/catch_conversions/qdoc_catch_conversions.h create mode 100644 src/qdoc/catch_conversions/src/catch_conversions/qt_catch_conversions.h create mode 100644 src/qdoc/catch_conversions/src/catch_conversions/std_catch_conversions.h (limited to 'src') 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 + $ + $ +) 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 +#include +#include + +#include + +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 + +#include +#include + +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 +#include + +template +inline std::ostream& operator<<(std::ostream& os, const std::optional& optional) { + os << "std::optional{\n\t"; + if (optional) os << optional.value(); + else os <<"nullopt"; + + return os << "\n};"; +} -- cgit v1.2.1