diff options
Diffstat (limited to 'tests/auto/installer/scriptengine/tst_scriptengine.cpp')
-rw-r--r-- | tests/auto/installer/scriptengine/tst_scriptengine.cpp | 74 |
1 files changed, 70 insertions, 4 deletions
diff --git a/tests/auto/installer/scriptengine/tst_scriptengine.cpp b/tests/auto/installer/scriptengine/tst_scriptengine.cpp index 830067af0..df8d1a8b7 100644 --- a/tests/auto/installer/scriptengine/tst_scriptengine.cpp +++ b/tests/auto/installer/scriptengine/tst_scriptengine.cpp @@ -1,17 +1,17 @@ /************************************************************************** ** -** Copyright (C) 2015 The Qt Company Ltd. +** Copyright (C) 2016 The Qt Company Ltd. ** Contact: http://www.qt.io/licensing/ ** ** This file is part of the Qt Installer Framework. ** -** $QT_BEGIN_LICENSE:LGPL$ +** $QT_BEGIN_LICENSE:LGPL21$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://qt.io/terms-conditions. For further +** and conditions see http://www.qt.io/terms-conditions. For further ** information use the contact form at http://www.qt.io/contact-us. ** ** GNU Lesser General Public License Usage @@ -27,13 +27,13 @@ ** rights. These rights are described in The Qt Company LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** -** ** $QT_END_LICENSE$ ** **************************************************************************/ #include <component.h> #include <errors.h> +#include <kdupdaterupdateoperationfactory.h> #include <packagemanagercore.h> #include <packagemanagergui.h> #include <scriptengine.h> @@ -157,6 +157,30 @@ signals: void emitted(); }; +class EmptyArgOperation : public KDUpdater::UpdateOperation +{ +public: + EmptyArgOperation() { + setName("EmptyArg"); + } + + void backup() {} + bool performOperation() { + return true; + } + bool undoOperation() { + return true; + } + bool testOperation() { + return true; + } + UpdateOperation *clone() const { + return 0; + } +}; + + +// -- tst_ScriptEngine class tst_ScriptEngine : public QObject { @@ -173,6 +197,10 @@ private slots: m_component->setValue("Default", "Script"); m_component->setValue(scName, "component.test.name"); + Component *component = new Component(&m_core); + component->setValue(scName, "component.test.addOperation"); + m_core.appendRootComponent(component); + m_scriptEngine = m_core.componentScriptEngine(); } @@ -459,6 +487,44 @@ private slots: QCOMPARE(enteringPage->invocationOrder(), expectedOrder); } + void testAddOperation_AddElevatedOperation() + { + using namespace KDUpdater; + UpdateOperationFactory &factory = UpdateOperationFactory::instance(); + factory.registerUpdateOperation<EmptyArgOperation>(QLatin1String("EmptyArg")); + + try { + m_core.setPackageManager(); + Component *component = m_core.componentByName("component.test.addOperation"); + component->loadComponentScript(":///data/addOperation.qs"); + + setExpectedScriptOutput("\"Component::createOperations()\""); + component->createOperations(); + + const OperationList operations = component->operations(); + QCOMPARE(operations.count(), 8); + + struct { + const char* args[3]; + const char* operator[](int i) const { + return args[i]; + } + } expectedArgs[] = { + { "Arg", "Arg2", "" }, { "Arg", "", "Arg3" }, { "", "Arg2", "Arg3" }, { "Arg", "Arg2", "" }, + { "eArg", "eArg2", "" }, { "eArg", "", "eArg3" }, { "", "eArg2", "eArg3" }, { "eArg", "eArg2", "" } + }; + + for (int i = 0; i < operations.count(); ++i) { + const QStringList arguments = operations[i]->arguments(); + QCOMPARE(arguments.count(), 3); + for (int j = 0; j < 3; ++j) + QCOMPARE(arguments[j], QString(expectedArgs[i][j])); + } + } catch (const QInstaller::Error &error) { + QFAIL(qPrintable(error.message())); + } + } + private: void setExpectedScriptOutput(const char *message) { |