diff options
author | Christian Kandeler <christian.kandeler@digia.com> | 2013-02-07 17:31:59 +0100 |
---|---|---|
committer | Joerg Bornemann <joerg.bornemann@digia.com> | 2013-02-08 17:29:16 +0100 |
commit | a0442f40968da79b4b0e50e665a8885b78769df7 (patch) | |
tree | 019f0f27456b57e49079221adaf3d48e277e2674 /tests/auto/buildgraph | |
parent | a9f9ea2dbfa327b7bf5e4247c073d2ba6eaef30b (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.pro | 7 | ||||
-rw-r--r-- | tests/auto/buildgraph/tst_buildgraph.cpp | 80 | ||||
-rw-r--r-- | tests/auto/buildgraph/tst_buildgraph.h | 56 |
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 |