diff options
Diffstat (limited to 'tier1/kconfig/autotests/test_kconf_update.cpp')
-rw-r--r-- | tier1/kconfig/autotests/test_kconf_update.cpp | 553 |
1 files changed, 0 insertions, 553 deletions
diff --git a/tier1/kconfig/autotests/test_kconf_update.cpp b/tier1/kconfig/autotests/test_kconf_update.cpp deleted file mode 100644 index 8fae1c74..00000000 --- a/tier1/kconfig/autotests/test_kconf_update.cpp +++ /dev/null @@ -1,553 +0,0 @@ -/* This file is part of the KDE libraries - Copyright 2010 Canonical Ltd - Author: Aurélien Gâteau <aurelien.gateau@canonical.com> - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License (LGPL) as published by the Free Software Foundation; - either version 2 of the License, or (at your option) any later - version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ -#include "test_kconf_update.h" - -// Qt -#include <QFile> -#include <QDir> -#include <QSharedPointer> -#include <QtCore/QProcess> -#include <qtemporaryfile.h> -#include <qstandardpaths.h> -#include "config-kconf.h" - -#include <qtest.h> - -// QT5 TODO QTEST_GUILESS_MAIN(TestKConfUpdate) -QTEST_MAIN(TestKConfUpdate) - -static void writeFile(const QString &path, const QString &content) -{ - QFile file(path); - bool ok = file.open(QIODevice::WriteOnly); - Q_UNUSED(ok) // silence warnings - Q_ASSERT(ok); - file.write(content.toUtf8()); -} - -static QString readFile(const QString &path) -{ - QFile file(path); - bool ok = file.open(QIODevice::ReadOnly); - Q_UNUSED(ok) // silence warnings - Q_ASSERT(ok); - return QString::fromUtf8(file.readAll()); -} - -static QTemporaryFile* writeUpdFile(const QString &content) -{ - QTemporaryFile* file = new QTemporaryFile(QDir::tempPath() + QLatin1String("/test_kconf_update_XXXXXX.upd")); - bool ok = file->open(); - Q_UNUSED(ok) // silence warnings - Q_ASSERT(ok); - file->write(content.toUtf8()); - file->flush(); - return file; -} - -static void runKConfUpdate(const QString &updPath) -{ - QString exePath = KCONF_UPDATE_BINARY_DIR "/kconf_update"; - QVERIFY(QFile::exists(exePath)); - QProcess::execute(exePath, QStringList() << "--debug" << updPath); -} - -void TestKConfUpdate::test_data() -{ - QTest::addColumn<QString>("updContent"); - QTest::addColumn<QString>("oldConfName"); - QTest::addColumn<QString>("oldConfContent"); - QTest::addColumn<QString>("newConfName"); - QTest::addColumn<QString>("expectedNewConfContent"); - QTest::addColumn<QString>("expectedOldConfContent"); - - QTest::newRow("moveKeysSameFile") - << - "File=testrc\n" - "Group=group\n" - "Key=old,new\n" - "Options=overwrite\n" - << - "testrc" - << - "[group]\n" - "old=value\n" - << - "testrc" - << - "[$Version]\n" - "update_info=%1\n" - "\n" - "[group]\n" - "new=value\n" - << - "" - ; - QTest::newRow("moveKeysOtherFile") - << - "File=oldrc,newrc\n" - "Group=group1,group2\n" - "Key=old,new\n" - "Options=overwrite\n" - << - "oldrc" - << - "[group1]\n" - "old=value\n" - "[stay]\n" - "foo=bar\n" - << - "newrc" - << - "[$Version]\n" - "update_info=%1\n" - "\n" - "[group2]\n" - "new=value\n" - << - "[$Version]\n" - "update_info=%1\n" - "\n" - "[stay]\n" - "foo=bar\n" - ; - QTest::newRow("allKeys") - << - "File=testrc\n" - "Group=group1,group2\n" - "AllKeys\n" - << - "testrc" - << - "[group1]\n" - "key1=value1\n" - "key2=value2\n" - "\n" - "[stay]\n" - "foo=bar\n" - << - "testrc" - << - "[$Version]\n" - "update_info=%1\n" - "\n" - "[group2]\n" - "key1=value1\n" - "key2=value2\n" - "\n" - "[stay]\n" - "foo=bar\n" - << - "" - ; - QTest::newRow("allKeysSubGroup") - << - "File=testrc\n" - "Group=[group][sub1],[group][sub2]\n" - "AllKeys\n" - << - "testrc" - << - "[group][sub1]\n" - "key1=value1\n" - "key2=value2\n" - "\n" - "[group][sub1][subsub]\n" - "key3=value3\n" - "key4=value4\n" - "\n" - "[stay]\n" - "foo=bar\n" - << - "testrc" - << - "[$Version]\n" - "update_info=%1\n" - "\n" - "[group][sub2]\n" - "key1=value1\n" - "key2=value2\n" - "\n" - "[group][sub2][subsub]\n" - "key3=value3\n" - "key4=value4\n" - "\n" - "[stay]\n" - "foo=bar\n" - << - "" - ; - QTest::newRow("removeGroup") - << - "File=testrc\n" - "RemoveGroup=remove\n" - << - "testrc" - << - "[keep]\n" - "key=value\n" - "" - "[remove]\n" - "key=value\n" - << - "testrc" - << - "[$Version]\n" - "update_info=%1\n" - "\n" - "[keep]\n" - "key=value\n" - << - "" - ; - QTest::newRow("moveKeysSameFileDontExist") - << - "File=testrc\n" - "Group=group,group2\n" - "Key=key1\n" - "Key=key2\n" - << - "testrc" - << - "[group]\n" - "key1=value1\n" - "key3=value3\n" - << - "testrc" - << - "[$Version]\n" - "update_info=%1\n" - "\n" - "[group]\n" - "key3=value3\n" - "\n" - "[group2]\n" - "key1=value1\n" - << - "" - ; -} - -void TestKConfUpdate::test() -{ - QFETCH(QString, updContent); - QFETCH(QString, oldConfName); - QFETCH(QString, oldConfContent); - QFETCH(QString, newConfName); - QFETCH(QString, expectedNewConfContent); - QFETCH(QString, expectedOldConfContent); - - // Prepend the Id= field to the upd content - updContent = QString("Id=%1\n").arg(QTest::currentDataTag()) + updContent; - - QString oldConfPath = QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation) + QLatin1Char('/') + oldConfName; - QString newConfPath = QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation) + QLatin1Char('/') + newConfName; - - QFile::remove(oldConfPath); - QFile::remove(newConfPath); - - writeFile(oldConfPath, oldConfContent); - QSharedPointer<QTemporaryFile> updFile(writeUpdFile(updContent)); - runKConfUpdate(updFile->fileName()); - - QString updateInfo = QString("%1:%2") - .arg(updFile->fileName().section('/', -1)) - .arg(QTest::currentDataTag()); - - QString newConfContentAfter = readFile(newConfPath); - expectedNewConfContent = expectedNewConfContent.arg(updateInfo); - QCOMPARE(newConfContentAfter, expectedNewConfContent); - - if (oldConfName != newConfName) { - QString oldConfContentAfter = readFile(oldConfPath); - expectedOldConfContent = expectedOldConfContent.arg(updateInfo); - QCOMPARE(oldConfContentAfter, expectedOldConfContent); - } -} - -void TestKConfUpdate::testScript_data() -{ - QTest::addColumn<QString>("updContent"); - QTest::addColumn<QString>("updScript"); - QTest::addColumn<QString>("oldConfContent"); - QTest::addColumn<QString>("expectedNewConfContent"); - - QTest::newRow("delete-key") - << - "File=testrc\n" - "Group=group\n" - "Script=test.sh,sh\n" - << - "echo '# DELETE deprecated'\n" - << - "[group]\n" - "deprecated=foo\n" - "valid=bar\n" - << - "[$Version]\n" - "update_info=%1\n" - "\n" - "[group]\n" - "valid=bar\n" - ; - - QTest::newRow("delete-key2") - << - "File=testrc\n" - "Script=test.sh,sh\n" - << - "echo '# DELETE [group]deprecated'\n" - "echo '# DELETE [group][sub]deprecated2'\n" - << - "[group]\n" - "deprecated=foo\n" - "valid=bar\n" - "\n" - "[group][sub]\n" - "deprecated2=foo\n" - "valid2=bar\n" - << - "[$Version]\n" - "update_info=%1\n" - "\n" - "[group]\n" - "valid=bar\n" - "\n" - "[group][sub]\n" - "valid2=bar\n" - ; - - QTest::newRow("delete-group") - << - "File=testrc\n" - "Script=test.sh,sh\n" - << - "echo '# DELETEGROUP [group1]'\n" - "echo '# DELETEGROUP [group2][sub]'\n" - << - "[group1]\n" - "key=value\n" - "\n" - "[group2]\n" - "valid=bar\n" - "\n" - "[group2][sub]\n" - "key=value\n" - << - "[$Version]\n" - "update_info=%1\n" - "\n" - "[group2]\n" - "valid=bar\n" - ; - - QTest::newRow("delete-group2") - << - "File=testrc\n" - "Group=group\n" - "Script=test.sh,sh\n" - << - "echo '# DELETEGROUP'\n" - << - "[group]\n" - "key=value\n" - "\n" - "[group2]\n" - "valid=bar\n" - << - "[$Version]\n" - "update_info=%1\n" - "\n" - "[group2]\n" - "valid=bar\n" - ; - - QTest::newRow("new-key") - << - "File=testrc\n" - "Script=test.sh,sh\n" - << - "echo '[group]'\n" - "echo 'new=value'\n" - << - "[group]\n" - "valid=bar\n" - << - "[$Version]\n" - "update_info=%1\n" - "\n" - "[group]\n" - "new=value\n" - "valid=bar\n" - ; - - QTest::newRow("modify-key-no-overwrite") - << - "File=testrc\n" - "Script=test.sh,sh\n" - << - "echo '[group]'\n" - "echo 'existing=new'\n" - << - "[group]\n" - "existing=old\n" - << - "[$Version]\n" - "update_info=%1\n" - "\n" - "[group]\n" - "existing=old\n" - ; - - QTest::newRow("modify-key-overwrite") - << - "File=testrc\n" - "Options=overwrite\n" - "Script=test.sh,sh\n" - << - "echo '[group]'\n" - "echo 'existing=new'\n" - << - "[group]\n" - "existing=old\n" - << - "[$Version]\n" - "update_info=%1\n" - "\n" - "[group]\n" - "existing=new\n" - ; - - QTest::newRow("new-key-in-subgroup") - << - "File=testrc\n" - "Script=test.sh,sh\n" - << - "echo '[group][sub]'\n" - "echo 'new=value2'\n" - << - "[group][sub]\n" - "existing=foo\n" - << - "[$Version]\n" - "update_info=%1\n" - "\n" - "[group][sub]\n" - "existing=foo\n" - "new=value2\n" - ; - - QTest::newRow("new-key-in-subgroup2") - << - "File=testrc\n" - "Script=test.sh,sh\n" - << - "echo '[group][sub]'\n" - "echo 'new=value3'\n" - << - "[group][sub]\n" - "existing=foo\n" - << - "[$Version]\n" - "update_info=%1\n" - "\n" - "[group][sub]\n" - "existing=foo\n" - "new=value3\n" - ; - - QTest::newRow("filter") - << - "File=testrc\n" - "Script=test.sh,sh\n" - << - "echo '# DELETE [group]changed'\n" - "sed s/value/VALUE/\n" - << - "[group]\n" - "changed=value\n" - "unchanged=value\n" - << - "[$Version]\n" - "update_info=%1\n" - "\n" - "[group]\n" - "changed=VALUE\n" - "unchanged=value\n" - ; - - QTest::newRow("filter-subgroup") - << - "File=testrc\n" - "Script=test.sh,sh\n" - << - "echo '# DELETE [group][sub]changed'\n" - "sed s/value/VALUE/\n" - << - "[group]\n" - "unchanged=value\n" - "\n" - "[group][sub]\n" - "changed=value\n" - "unchanged=value\n" - << - "[$Version]\n" - "update_info=%1\n" - "\n" - "[group]\n" - "unchanged=value\n" - "\n" - "[group][sub]\n" - "changed=VALUE\n" - "unchanged=value\n" - ; -} - -void TestKConfUpdate::testScript() -{ - QFETCH(QString, updContent); - QFETCH(QString, updScript); - QFETCH(QString, oldConfContent); - QFETCH(QString, expectedNewConfContent); - - // Prepend the Id= field to the upd content - updContent = QString("Id=%1\n").arg(QTest::currentDataTag()) + updContent; - - QSharedPointer<QTemporaryFile> updFile(writeUpdFile(updContent)); - - const QString scriptDir = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + "/kconf_update"; - QVERIFY(QDir().mkpath(scriptDir)); - QString scriptPath = scriptDir + "/test.sh"; - writeFile(scriptPath, updScript); - - QString confPath = QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation) + QLatin1Char('/') + "testrc"; - writeFile(confPath, oldConfContent); - - runKConfUpdate(updFile->fileName()); - - QString updateInfo = QString("%1:%2") - .arg(updFile->fileName().section('/', -1)) - .arg(QTest::currentDataTag()); - QString newConfContent = readFile(confPath); - expectedNewConfContent = expectedNewConfContent.arg(updateInfo); - QCOMPARE(newConfContent, expectedNewConfContent); -} - |