kde-extraapps/kdevplatform/plugins/cvs/tests/cvstest.cpp
2015-07-26 14:23:17 +03:00

148 lines
3.9 KiB
C++

/***************************************************************************
* Copyright 2007 Robert Gruber <rgruber@users.sourceforge.net> *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#include "cvstest.h"
#include <qtest_kde.h>
#include <QtTest/QtTest>
#include <KUrl>
#include <kio/netaccess.h>
#include <cvsjob.h>
#include <cvsproxy.h>
#include <tests/autotestshell.h>
#include <tests/testcore.h>
#define CVSTEST_BASEDIR "/tmp/kdevcvs_testdir/"
#define CVS_REPO CVSTEST_BASEDIR "repo/"
#define CVS_IMPORT CVSTEST_BASEDIR "import/"
#define CVS_TESTFILE_NAME "testfile"
#define CVS_CHECKOUT CVSTEST_BASEDIR "working/"
void CvsTest::initTestCase()
{
KDevelop::AutoTestShell::init();
KDevelop::TestCore::initialize(KDevelop::Core::NoUi);
m_proxy = new CvsProxy;
// If the basedir for this cvs test exists from a
// previous run; remove it...
cleanup();
}
void CvsTest::cleanupTestCase()
{
KDevelop::TestCore::shutdown();
delete m_proxy;
}
void CvsTest::init()
{
// Now create the basic directory structure
QDir tmpdir("/tmp");
tmpdir.mkdir(CVSTEST_BASEDIR);
tmpdir.mkdir(CVS_REPO);
tmpdir.mkdir(CVS_IMPORT);
}
void CvsTest::cleanup()
{
if ( QFileInfo(CVSTEST_BASEDIR).exists() )
KIO::NetAccess::del(KUrl(QString(CVSTEST_BASEDIR)), 0);
}
void CvsTest::repoInit()
{
// make job that creates the local repository
CvsJob* j = new CvsJob(0);
QVERIFY( j );
j->setDirectory(CVSTEST_BASEDIR);
*j << "cvs" << "-d" << CVS_REPO << "init";
// try to start the job
QVERIFY( j->exec() );
//check if the CVSROOT directory in the new local repository exists now
QVERIFY( QFileInfo(QString(CVS_REPO "/CVSROOT")).exists() );
}
void CvsTest::importTestData()
{
// create a file so we don't import an empty dir
QFile f(CVS_IMPORT "" CVS_TESTFILE_NAME);
if(f.open(QIODevice::WriteOnly)) {
QTextStream input( &f );
input << "HELLO WORLD";
}
f.flush();
CvsJob* j = m_proxy->import(KUrl(CVS_IMPORT), CVS_REPO,
"test", "vendor", "release",
"test import message");
QVERIFY( j );
// try to start the job
QVERIFY( j->exec() );
//check if the directory has been added to the repository
QString testdir(CVS_REPO "/test");
QVERIFY( QFileInfo(testdir).exists() );
//check if the file has been added to the repository
QString testfile(CVS_REPO "/test/" CVS_TESTFILE_NAME ",v");
QVERIFY( QFileInfo(testfile).exists() );
}
void CvsTest::checkoutTestData()
{
CvsJob* j = m_proxy->checkout(KUrl(CVS_CHECKOUT), CVS_REPO, "test");
QVERIFY( j );
// try to start the job
QVERIFY( j->exec() );
//check if the directory is there
QString testdir(CVS_CHECKOUT);
QVERIFY( QFileInfo(testdir).exists() );
//check if the file is there
QString testfile(CVS_CHECKOUT "" CVS_TESTFILE_NAME);
QVERIFY( QFileInfo(testfile).exists() );
}
void CvsTest::testInitAndImport()
{
repoInit();
importTestData();
checkoutTestData();
}
void CvsTest::testLogFolder()
{
repoInit();
importTestData();
checkoutTestData();
QString testdir(CVS_CHECKOUT);
KDevelop::VcsRevision rev = KDevelop::VcsRevision::createSpecialRevision(KDevelop::VcsRevision::Head);
CvsJob* job = m_proxy->log(KUrl(testdir), rev);
QVERIFY(job);
}
QTEST_KDEMAIN(CvsTest, GUI)
#include "moc_cvstest.cpp"