aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken6/ApiExtractor/tests/testmodifydocumentation.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2022-09-05 12:55:12 +0200
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2022-09-06 17:46:45 +0200
commitcd73be9f726da55dc4efd2a03897a5c543b5334d (patch)
treef68fb41b378910c4cf8381e08737d1b9abc477a1 /sources/shiboken6/ApiExtractor/tests/testmodifydocumentation.cpp
parentb42c3339158c4c677e16614e698db30a3643122f (diff)
shiboken6: Fix documentation injection for added functions with parameter names
Documentation modifications were matched by function signatures, which failed for added function signatures with parameter names (@). To fix this, store documentation modifications in AddedFunction similar to what is done for normal modifications. Task-number: PYSIDE-2025 Change-Id: I0b3a8c2a066c028da6feb394905510892e85e47d Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
Diffstat (limited to 'sources/shiboken6/ApiExtractor/tests/testmodifydocumentation.cpp')
-rw-r--r--sources/shiboken6/ApiExtractor/tests/testmodifydocumentation.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/sources/shiboken6/ApiExtractor/tests/testmodifydocumentation.cpp b/sources/shiboken6/ApiExtractor/tests/testmodifydocumentation.cpp
index 05fd3bf6b..6c10dcbef 100644
--- a/sources/shiboken6/ApiExtractor/tests/testmodifydocumentation.cpp
+++ b/sources/shiboken6/ApiExtractor/tests/testmodifydocumentation.cpp
@@ -4,6 +4,7 @@
#include "testmodifydocumentation.h"
#include "testutil.h"
#include <abstractmetalang.h>
+#include <abstractmetafunction.h>
#include <documentation.h>
#include <modifications.h>
#include <complextypeentry.h>
@@ -78,6 +79,33 @@ R"(<?xml version="1.0"?>
QCOMPARE(actualDocSimplified, expectedDocSimplified);
}
+void TestModifyDocumentation::testInjectAddedFunctionDocumentation()
+{
+ const char cppCode[] ="class A {};\n";
+ const char xmlCode[] = R"XML(
+<typesystem package="Foo">
+ <value-type name='A'>
+ <add-function signature="foo(int@parameter_name@)">
+ <inject-documentation format="target" mode="append">
+ Injected documentation of added function foo.
+ </inject-documentation>
+ </add-function>
+ </value-type>
+</typesystem>
+)XML";
+ QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode));
+ QVERIFY(!builder.isNull());
+ AbstractMetaClass *classA = AbstractMetaClass::findClass(builder->classes(), u"A");
+ QVERIFY(classA);
+ const auto f = classA->findFunction(u"foo");
+ QVERIFY(!f.isNull());
+ QVERIFY(f->isUserAdded());
+ auto docMods = f->addedFunctionDocModifications();
+ QCOMPARE(docMods.size(), 1);
+ const QString code = docMods.constFirst().code();
+ QVERIFY(code.contains(u"Injected documentation of added function foo."));
+}
+
// We expand QTEST_MAIN macro but using QCoreApplication instead of QApplication
// because this test needs an event loop but can't use QApplication to avoid a crash
// on our ARMEL/FRAMANTLE buildbot