From e29ef32ec02e01d51065962e0b0f88c70121b3de Mon Sep 17 00:00:00 2001 From: kh1 Date: Tue, 26 Mar 2013 13:10:09 +0100 Subject: Add strict and relaxed parsing to Settings class. * StrictParseMode -> creating binaries and repositories * RelaxedParseMode -> running the installer/updater itself Introduced parse modes to be able to use old settings (existing ones on user systems) with new binaries. Add and adjust autotest. Change-Id: I3f7c7357325661a1197400d8d8dc2a5ca8bed184 Reviewed-by: Karsten Heimrich --- .../installer/settings/data/unknown_element_config.xml | 1 + tests/auto/installer/settings/tst_settings.cpp | 18 ++++++++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) (limited to 'tests') diff --git a/tests/auto/installer/settings/data/unknown_element_config.xml b/tests/auto/installer/settings/data/unknown_element_config.xml index 0d97564e6..ee9e0ef1a 100644 --- a/tests/auto/installer/settings/data/unknown_element_config.xml +++ b/tests/auto/installer/settings/data/unknown_element_config.xml @@ -3,4 +3,5 @@ Your application 1.2.3 + Your application Installer diff --git a/tests/auto/installer/settings/tst_settings.cpp b/tests/auto/installer/settings/tst_settings.cpp index 1cc0fef00..be2643ec2 100644 --- a/tests/auto/installer/settings/tst_settings.cpp +++ b/tests/auto/installer/settings/tst_settings.cpp @@ -17,7 +17,8 @@ private slots: void loadEmptyConfig(); void loadNotExistingConfig(); void loadMalformedConfig(); - void loadUnknownElementConfig(); + void loadUnknownElementConfigInStrictParseMode(); + void loadUnknownElementConfigInRelaxedParseMode(); }; void tst_Settings::loadTutorialConfig() @@ -119,7 +120,7 @@ void tst_Settings::loadMalformedConfig() QFAIL("No exception thrown"); } -void tst_Settings::loadUnknownElementConfig() +void tst_Settings::loadUnknownElementConfigInStrictParseMode() { QTest::ignoreMessage(QtDebugMsg, "create Error-Exception: \"Error in :/data/unknown_element_config.xml, line 5, " "column 13: Unexpected element 'unknown'.\" "); @@ -133,6 +134,19 @@ void tst_Settings::loadUnknownElementConfig() QFAIL("No exception thrown"); } +void tst_Settings::loadUnknownElementConfigInRelaxedParseMode() +{ + QTest::ignoreMessage(QtWarningMsg, "\"Ignoring following settings reader error in " + ":/data/unknown_element_config.xml, line 5, column 13: \" "); + try { + Settings settings = Settings::fromFileAndPrefix(":/data/unknown_element_config.xml", ":/data", + Settings::RelaxedParseMode); + QCOMPARE(settings.title(), QLatin1String("Your application Installer")); + } catch (const Error &error) { + QFAIL(qPrintable(QString::fromLatin1("Got an exception in FaultTolerantParseMode: %1").arg(error.message()))); + } +} + QTEST_MAIN(tst_Settings) #include "tst_settings.moc" -- cgit v1.2.3 From 38f9a989339e26f8ffc382c37561c1c4304246d4 Mon Sep 17 00:00:00 2001 From: kh1 Date: Tue, 26 Mar 2013 14:19:11 +0100 Subject: For some reason QString include is now required to compile. Change-Id: I6717e985d1f3ba5559df3e250297373be9f9b7d5 Reviewed-by: Tim Jenssen --- .../tst_fakestopprocessforupdateoperation.cpp | 1 + tests/auto/installer/repository/tst_repository.cpp | 1 + tests/auto/installer/settings/tst_settings.cpp | 3 ++- 3 files changed, 4 insertions(+), 1 deletion(-) (limited to 'tests') diff --git a/tests/auto/installer/fakestopprocessforupdateoperation/tst_fakestopprocessforupdateoperation.cpp b/tests/auto/installer/fakestopprocessforupdateoperation/tst_fakestopprocessforupdateoperation.cpp index 1d23e1970..c8b314657 100644 --- a/tests/auto/installer/fakestopprocessforupdateoperation/tst_fakestopprocessforupdateoperation.cpp +++ b/tests/auto/installer/fakestopprocessforupdateoperation/tst_fakestopprocessforupdateoperation.cpp @@ -2,6 +2,7 @@ #include "packagemanagercore.h" #include +#include #include using namespace KDUpdater; diff --git a/tests/auto/installer/repository/tst_repository.cpp b/tests/auto/installer/repository/tst_repository.cpp index e3b7b74a6..380d9a9a2 100644 --- a/tests/auto/installer/repository/tst_repository.cpp +++ b/tests/auto/installer/repository/tst_repository.cpp @@ -1,5 +1,6 @@ #include "repository.h" +#include #include using namespace QInstaller; diff --git a/tests/auto/installer/settings/tst_settings.cpp b/tests/auto/installer/settings/tst_settings.cpp index be2643ec2..947e772d3 100644 --- a/tests/auto/installer/settings/tst_settings.cpp +++ b/tests/auto/installer/settings/tst_settings.cpp @@ -1,9 +1,10 @@ -#include #include "settings.h" #include "errors.h" #include "repository.h" #include +#include +#include using namespace QInstaller; -- cgit v1.2.3 From eedf73fac0b2e9af0623ef7df7e142ab30ee45af Mon Sep 17 00:00:00 2001 From: kh1 Date: Tue, 26 Mar 2013 14:19:18 +0100 Subject: Cleanup. Change-Id: I36406e3e32b04f7817ce049f9fa37910070688ce Reviewed-by: Niels Weber --- tests/auto/installer/settings/tst_settings.cpp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'tests') diff --git a/tests/auto/installer/settings/tst_settings.cpp b/tests/auto/installer/settings/tst_settings.cpp index 947e772d3..dff789d2b 100644 --- a/tests/auto/installer/settings/tst_settings.cpp +++ b/tests/auto/installer/settings/tst_settings.cpp @@ -24,8 +24,7 @@ private slots: void tst_Settings::loadTutorialConfig() { - Settings settings = - Settings::fromFileAndPrefix(":///data/tutorial_config.xml", ":///data"); + Settings settings = Settings::fromFileAndPrefix(":///data/tutorial_config.xml", ":///data"); // specified values QCOMPARE(settings.applicationName(), QLatin1String("Your application")); @@ -74,8 +73,7 @@ void tst_Settings::loadTutorialConfig() void tst_Settings::loadFullConfig() { QTest::ignoreMessage(QtWarningMsg, "Deprecated element 'Pages'. "); - Settings settings = - Settings::fromFileAndPrefix(":///data/full_config.xml", ":///data"); + Settings settings = Settings::fromFileAndPrefix(":///data/full_config.xml", ":///data"); } void tst_Settings::loadEmptyConfig() @@ -123,8 +121,8 @@ void tst_Settings::loadMalformedConfig() void tst_Settings::loadUnknownElementConfigInStrictParseMode() { - QTest::ignoreMessage(QtDebugMsg, "create Error-Exception: \"Error in :/data/unknown_element_config.xml, line 5, " - "column 13: Unexpected element 'unknown'.\" "); + QTest::ignoreMessage(QtDebugMsg, "create Error-Exception: \"Error in :/data/unknown_element_config.xml, " + "line 5, column 13: Unexpected element 'unknown'.\" "); try { Settings::fromFileAndPrefix(":/data/unknown_element_config.xml", ":/data"); } catch (const Error &error) { @@ -144,7 +142,7 @@ void tst_Settings::loadUnknownElementConfigInRelaxedParseMode() Settings::RelaxedParseMode); QCOMPARE(settings.title(), QLatin1String("Your application Installer")); } catch (const Error &error) { - QFAIL(qPrintable(QString::fromLatin1("Got an exception in FaultTolerantParseMode: %1").arg(error.message()))); + QFAIL(qPrintable(QString::fromLatin1("Got an exception in TolerantParseMode: %1").arg(error.message()))); } } -- cgit v1.2.3