summaryrefslogtreecommitdiffstats
path: root/tests/auto/installer/scriptengine/tst_scriptengine.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/installer/scriptengine/tst_scriptengine.cpp')
-rw-r--r--tests/auto/installer/scriptengine/tst_scriptengine.cpp74
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)
{