diff options
| author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2022-09-05 12:55:12 +0200 |
|---|---|---|
| committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2022-09-06 17:46:45 +0200 |
| commit | cd73be9f726da55dc4efd2a03897a5c543b5334d (patch) | |
| tree | f68fb41b378910c4cf8381e08737d1b9abc477a1 /sources/shiboken6/ApiExtractor/tests/testmodifydocumentation.cpp | |
| parent | b42c3339158c4c677e16614e698db30a3643122f (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.cpp | 28 |
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 |
