From 12520e83009fb8bd694d9768801875558bcc6321 Mon Sep 17 00:00:00 2001 From: Kent Hansen Date: Fri, 17 Feb 2012 22:45:08 +0100 Subject: [PATCH] Port badxml autotest to QMetaObjectBuilder The meta-object format is going to change for Qt5. Use QMOB to insulate the badxml test from such changes. (It just so happens that the QFAIL("a failure") statement is still on line 109 after the refactoring, so the expected_badxml.* files' location tags did not have to be changed.) Change-Id: I04421d13c4df71c8004fa71cafc4823a59079a41 Reviewed-by: Thiago Macieira Reviewed-by: Rohan McGovern Reviewed-by: Jason McDonald --- tests/auto/testlib/selftests/badxml/badxml.pro | 2 +- tests/auto/testlib/selftests/badxml/tst_badxml.cpp | 30 +++++++++++----------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/tests/auto/testlib/selftests/badxml/badxml.pro b/tests/auto/testlib/selftests/badxml/badxml.pro index 5eaa1c3..7b3b0f7 100644 --- a/tests/auto/testlib/selftests/badxml/badxml.pro +++ b/tests/auto/testlib/selftests/badxml/badxml.pro @@ -1,5 +1,5 @@ SOURCES += tst_badxml.cpp -QT = core testlib +QT = core-private testlib mac:CONFIG -= app_bundle CONFIG -= debug_and_release_target diff --git a/tests/auto/testlib/selftests/badxml/tst_badxml.cpp b/tests/auto/testlib/selftests/badxml/tst_badxml.cpp index 1a143e5..2fb9e5e 100644 --- a/tests/auto/testlib/selftests/badxml/tst_badxml.cpp +++ b/tests/auto/testlib/selftests/badxml/tst_badxml.cpp @@ -42,6 +42,7 @@ #include #include +#include /* This test makes a testlog containing lots of characters which have a special meaning in @@ -73,27 +74,26 @@ class EmptyClass : public tst_BadXml class tst_BadXmlSub : public tst_BadXml { public: + tst_BadXmlSub() + : className("tst_BadXml"), mo(0) {} + ~tst_BadXmlSub() { qFree(mo); } + const QMetaObject* metaObject() const; - static char const* className; + QByteArray className; +private: + QMetaObject *mo; }; -char const* tst_BadXmlSub::className = "tst_BadXml"; const QMetaObject* tst_BadXmlSub::metaObject() const { - const QMetaObject& empty = EmptyClass::staticMetaObject; - static QMetaObject mo = { - { empty.d.superdata, empty.d.stringdata, empty.d.data, empty.d.extradata } - }; - static char currentClassName[1024]; - qstrcpy(currentClassName, className); - int len = qstrlen(className); - currentClassName[len] = 0; - currentClassName[len+1] = 0; - - mo.d.stringdata = currentClassName; - - return &mo; + if (!mo || (mo->className() != className)) { + qFree(mo); + QMetaObjectBuilder builder(&EmptyClass::staticMetaObject); + builder.setClassName(className); + const_cast(this)->mo = builder.toMetaObject(); + } + return mo; } /* -- 2.7.4