GUITESTS: Add tests for loading project files.

This commit is contained in:
Kimmo Varis 2011-06-16 14:24:33 +03:00
parent 08ab764f63
commit b66b8a31cc
7 changed files with 159 additions and 1 deletions

View File

@ -10,6 +10,7 @@ include($$PWD/../../lib/lib.pri)
# GUI # GUI
SOURCES += ../../erroritem.cpp \ SOURCES += ../../erroritem.cpp \
../../projectfile.cpp \
../../report.cpp \ ../../report.cpp \
../../translationhandler.cpp \ ../../translationhandler.cpp \
../../xmlreport.cpp \ ../../xmlreport.cpp \
@ -17,6 +18,7 @@ SOURCES += ../../erroritem.cpp \
../../xmlreportv2.cpp ../../xmlreportv2.cpp
HEADERS += ../../erroritem.h \ HEADERS += ../../erroritem.h \
../../projectfile.h \
../../report.h \ ../../report.h \
../../translationhandler.h \ ../../translationhandler.h \
../../xmlreport.h \ ../../xmlreport.h \

View File

@ -0,0 +1,15 @@
TEMPLATE = app
TARGET = test-projectfile
DEPENDPATH += .
INCLUDEPATH += .
OBJECTS_DIR = ../build
MOC_DIR = ../build
include(../common.pri)
DEFINES += SRCDIR=\\\"$$PWD\\\"
# tests
SOURCES += testprojectfile.cpp
HEADERS += testprojectfile.h

View File

@ -0,0 +1,75 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2011 Daniel Marjamäki and Cppcheck team.
*
* 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 3 of the License, or
* (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <QtTest>
#include <QObject>
#include "testprojectfile.h"
#include "projectfile.h"
void TestProjectFile::loadInexisting()
{
const QString filepath(QString(SRCDIR) + "/../projectfiles/foo.cppcheck");
ProjectFile pfile(filepath);
QCOMPARE(false, pfile.Read());
}
void TestProjectFile::loadSimple()
{
const QString filepath(QString(SRCDIR) + "/../projectfiles/simple.cppcheck");
ProjectFile pfile(filepath);
QVERIFY(pfile.Read());
QCOMPARE(pfile.GetRootPath(), QString("../.."));
QStringList includes = pfile.GetIncludeDirs();
QCOMPARE(includes.size(), 2);
QCOMPARE(includes[0], QString("lib/"));
QCOMPARE(includes[1], QString("cli/"));
QStringList paths = pfile.GetCheckPaths();
QCOMPARE(paths.size(), 2);
QCOMPARE(paths[0], QString("gui/"));
QCOMPARE(paths[1], QString("test/"));
QStringList ignores = pfile.GetIgnoredPaths();
QCOMPARE(ignores.size(), 1);
QCOMPARE(ignores[0], QString("gui/temp/"));
QStringList defines = pfile.GetDefines();
QCOMPARE(defines.size(), 1);
QCOMPARE(defines[0], QString("FOO"));
}
void TestProjectFile::loadSimpleNoroot()
{
const QString filepath(QString(SRCDIR) + "/../projectfiles/simple_noroot.cppcheck");
ProjectFile pfile(filepath);
QVERIFY(pfile.Read());
QCOMPARE(pfile.GetRootPath(), QString());
QStringList includes = pfile.GetIncludeDirs();
QCOMPARE(includes.size(), 2);
QCOMPARE(includes[0], QString("lib/"));
QCOMPARE(includes[1], QString("cli/"));
QStringList paths = pfile.GetCheckPaths();
QCOMPARE(paths.size(), 2);
QCOMPARE(paths[0], QString("gui/"));
QCOMPARE(paths[1], QString("test/"));
QStringList ignores = pfile.GetIgnoredPaths();
QCOMPARE(ignores.size(), 1);
QCOMPARE(ignores[0], QString("gui/temp/"));
QStringList defines = pfile.GetDefines();
QCOMPARE(defines.size(), 1);
QCOMPARE(defines[0], QString("FOO"));
}
QTEST_MAIN(TestProjectFile)

View File

@ -0,0 +1,30 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2011 Daniel Marjamäki and Cppcheck team.
*
* 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 3 of the License, or
* (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <QtTest>
#include <QObject>
class TestProjectFile: public QObject
{
Q_OBJECT
private slots:
void loadInexisting();
void loadSimple();
void loadSimpleNoroot();
};

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="1">
<root name="../.."/>
<includedir>
<dir name="lib/"/>
<dir name="cli/"/>
</includedir>
<paths>
<dir name="gui/"/>
<dir name="test/"/>
</paths>
<ignore>
<path name="gui/temp/"/>
</ignore>
<defines>
<define name="FOO" />
</defines>
</project>

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="1">
<includedir>
<dir name="lib/"/>
<dir name="cli/"/>
</includedir>
<paths>
<dir name="gui/"/>
<dir name="test/"/>
</paths>
<ignore>
<path name="gui/temp/"/>
</ignore>
<defines>
<define name="FOO" />
</defines>
</project>

View File

@ -1,7 +1,8 @@
CONFIG += ordered CONFIG += ordered
TEMPLATE = subdirs TEMPLATE = subdirs
SUBDIRS = translationhandler \ SUBDIRS = projectfile \
translationhandler \
xmlreport \ xmlreport \
xmlreportv1 \ xmlreportv1 \
xmlreportv2 xmlreportv2