示例#1
0
void TestUpdater::updateToV2()
{
    Updater u;
    u.setLocalRepository(testOutputUpdate);
    QCOMPARE(u.localRevision(), QString("1"));
    u.setTmpDirectory(testOutputUpdateTmp);
    u.setRemoteRepository("file:///" + dataRepoToV2 + "/");
    {
        QSignalSpy spy(&u, SIGNAL(checkForUpdatesFinished(bool)));
        u.checkForUpdates();
        QVERIFY(spy.wait());
        QVERIFY2(u.state() == Updater::UpdateRequired, u.errorString().toLatin1());
    }
    {
        QSignalSpy spyWarnings(&u, SIGNAL(warning(Warning)));
        QSignalSpy spy(&u, SIGNAL(updateFinished(bool)));
        u.update();
        QVERIFY(spy.wait());
        QCOMPARE(spy.size(), 1);
        QCOMPARE(spy[0].size(), 1);
        QCOMPARE(spy[0][0].toBool(), true);
        QVERIFY2(u.state() == Updater::Uptodate, u.errorString().toLatin1());
        QCOMPARE(u.localRevision(), QString("2"));
        QCOMPARE(spyWarnings.size(), 0);
    }
    try{
        (TestUtils::assertFileEquals(testOutputUpdate + "/dir2/patch_same.txt", dataDir + "/rev2/dir2/patch_same.txt"));
        (TestUtils::assertFileEquals(testOutputUpdate + "/path_diff.txt", dataDir + "/rev2/path_diff.txt"));
        (TestUtils::assertFileEquals(testOutputUpdate + "/path_diff2.txt", dataDir + "/rev2/path_diff2.txt"));
        (TestUtils::assertFileEquals(testOutputUpdate + "/add.txt", dataDir + "/rev2/add.txt"));
        (TestUtils::assertFileEquals(testOutputUpdate + "/empty_dir", dataDir + "/rev2/empty_dir"));
    } catch(std::exception &msg) {
        QFAIL(msg.what());
    }
    QVERIFY(!QFile::exists(testOutputUpdate + "/rmfile.txt"));
    QVERIFY(!QFileInfo(testOutputUpdate + "/dirs/empty_dir2").isDir());
    QCOMPARE(QDir(testOutputUpdateTmp).entryList(QDir::NoDotAndDotDot).count(), 0);
}