aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/buildgraph
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@digia.com>2013-02-07 17:31:59 +0100
committerJoerg Bornemann <joerg.bornemann@digia.com>2013-02-08 17:29:16 +0100
commita0442f40968da79b4b0e50e665a8885b78769df7 (patch)
tree019f0f27456b57e49079221adaf3d48e277e2674 /tests/auto/buildgraph
parenta9f9ea2dbfa327b7bf5e4247c073d2ba6eaef30b (diff)
Build a shared library.
We don't want our code to be duplicated in memory for each application that uses it, so the library should not be linked statically. Some ramifications worth mentioning: - The unit tests had to be moved into the library, because otherwise we would need to export random internal symbols. This is why the patch appears so big. A follow-up patch should probably make compilation of tests optional, so the library can be deployed without unneeded code. - The DESTDIR of the auto test executables is now the same as the one of all other executables, so they can all use the dll on Windows without additional setup. - Some internal symbols were exported, namely: a) Logging-related stuff. This allows us to use a uniform logging approach in the library and in our command-line tools; I consider this acceptable. b) A handful of classes and functions currently needed by certain command-line tools. These seem more questionable to me and we should probably find a different way to implement the respective functionality. Change-Id: I9cd21e12cd622b55cf62f5e04ad398734410ede1 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Diffstat (limited to 'tests/auto/buildgraph')
-rw-r--r--tests/auto/buildgraph/buildgraph.pro7
-rw-r--r--tests/auto/buildgraph/tst_buildgraph.cpp80
-rw-r--r--tests/auto/buildgraph/tst_buildgraph.h56
3 files changed, 9 insertions, 134 deletions
diff --git a/tests/auto/buildgraph/buildgraph.pro b/tests/auto/buildgraph/buildgraph.pro
index 2e9dc3bdf..b86d36b6e 100644
--- a/tests/auto/buildgraph/buildgraph.pro
+++ b/tests/auto/buildgraph/buildgraph.pro
@@ -1,14 +1,13 @@
TEMPLATE = app
TARGET = tst_buildgraph
-DESTDIR = ./
+DESTDIR = ../../../bin
INCLUDEPATH += ../../../src/lib/
DEFINES += SRCDIR=\\\"$$PWD/\\\"
QT = core testlib
CONFIG += depend_includepath testcase
-
-HEADERS += \
- tst_buildgraph.h
+CONFIG += console
+CONFIG -= app_bundle
SOURCES += \
tst_buildgraph.cpp
diff --git a/tests/auto/buildgraph/tst_buildgraph.cpp b/tests/auto/buildgraph/tst_buildgraph.cpp
index 1d49dd779..e44b9b1e8 100644
--- a/tests/auto/buildgraph/tst_buildgraph.cpp
+++ b/tests/auto/buildgraph/tst_buildgraph.cpp
@@ -26,83 +26,15 @@
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
****************************************************************************/
-#include "tst_buildgraph.h"
-
#include <app/shared/logging/consolelogger.h>
-#include <buildgraph/artifact.h>
-#include <buildgraph/buildproduct.h>
-#include <buildgraph/cycledetector.h>
-#include <language/language.h>
-#include <tools/error.h>
+#include <buildgraph/tst_buildgraph.h>
+#include <QCoreApplication>
#include <QtTest>
-using namespace qbs;
-using namespace qbs::Internal;
-
-void TestBuildGraph::initTestCase()
-{
-}
-
-void TestBuildGraph::cleanupTestCase()
-{
- qDeleteAll(m_artifacts);
-}
-
-
-static bool cycleDetected(const BuildProductConstPtr &product)
-{
- try {
- CycleDetector(ConsoleLogger::instance()).visitProduct(product);
- return false;
- } catch (const Error &) {
- return true;
- }
-}
-
-BuildProductConstPtr TestBuildGraph::productWithDirectCycle()
-{
- Artifact * const root = new Artifact;
- Artifact * const child = new Artifact;
- m_artifacts << root << child;
- root->children.insert(child);
- child->children.insert(root);
- const BuildProductPtr product = BuildProduct::create();
- product->targetArtifacts.insert(root);
- return product;
-}
-
-BuildProductConstPtr TestBuildGraph::productWithLessDirectCycle()
+int main(int argc, char *argv[])
{
- Artifact * const root = new Artifact;
- Artifact * const child = new Artifact;
- Artifact * const grandchild = new Artifact;
- m_artifacts << root << child << grandchild;
- root->children.insert(child);
- child->children.insert(grandchild);
- grandchild->children.insert(root);
- const BuildProductPtr product = BuildProduct::create();
- product->targetArtifacts << root;
- return product;
+ QCoreApplication app(argc, argv);
+ qbs::Internal::TestBuildGraph tbg(ConsoleLogger::instance().logSink());
+ return QTest::qExec(&tbg, argc, argv);
}
-
-// root appears as a child, but in a different tree
-BuildProductConstPtr TestBuildGraph::productWithNoCycle()
-{
- Artifact * const root = new Artifact;
- Artifact * const root2 = new Artifact;
- m_artifacts << root << root2;
- root2->children.insert(root);
- const BuildProductPtr product = BuildProduct::create();
- product->targetArtifacts << root << root2;
- return product;
-}
-
-void TestBuildGraph::testCycle()
-{
- QVERIFY(cycleDetected(productWithDirectCycle()));
- QVERIFY(cycleDetected(productWithLessDirectCycle()));
- QVERIFY(!cycleDetected(productWithNoCycle()));
-}
-
-QTEST_MAIN(TestBuildGraph)
diff --git a/tests/auto/buildgraph/tst_buildgraph.h b/tests/auto/buildgraph/tst_buildgraph.h
deleted file mode 100644
index 4656c759b..000000000
--- a/tests/auto/buildgraph/tst_buildgraph.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the Qt Build Suite.
-**
-** 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 Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-****************************************************************************/
-#ifndef TST_BUILDGRAPH_H
-#define TST_BUILDGRAPH_H
-
-#include <buildgraph/forward_decls.h>
-
-#include <QList>
-#include <QObject>
-
-class TestBuildGraph : public QObject
-{
- Q_OBJECT
-public:
-
-private slots:
- void initTestCase();
- void cleanupTestCase();
- void testCycle();
-
-private:
- qbs::Internal::BuildProductConstPtr productWithDirectCycle();
- qbs::Internal::BuildProductConstPtr productWithLessDirectCycle();
- qbs::Internal::BuildProductConstPtr productWithNoCycle();
-
- QList<qbs::Internal::Artifact *> m_artifacts;
-};
-
-
-#endif // TST_BUILDGRAPH_H