CMakeLists.txt | 12 +++++- cmake/SelectQtVersion.cmake | 43 +++++++++++++++++++++++++ examples/qt/ExampleTestCases.cpp | 48 +++++++++++++-------------- examples/qt/ExampleTestCases.h | 32 ++++++++---------- examples/qt/Main.cpp | 18 ++++------ examples/qt/qt_example.pro | 67 +++++++++++---------------------------- include/CMakeLists.txt | 12 ++++++ src/CMakeLists.txt | 4 ++ src/qttestrunner/CMakeLists.txt | 43 +++++++++++++++++++++++++ 9 files changed, 175 insertions(+), 104 deletions(-)
New commits: commit f9374cf4589f8128be6962238bbcaff4e16720cb Author: Bernhard Sessler <bernh...@burnsen.de> Date: Sun Dec 22 15:16:50 2013 +0100 src/qttestrunner: Add CMake build system This will allow building the qt test runner by using the CMake build system. The new CMake option 'CPPUNIT_BUILD_QT_TESTRUNNER' (OFF by default) can be used to build the test runner (switch these options ON and OFF by running the CMake built-in 'edit_cache' build target, e.g. using Linux / GNU make this would be 'make edit_cache', NMake based build systems would run 'nmake edit_cache'). Change-Id: Ifead1e2cd9162c74b8a212daf93f4bbad9f6c1f3 Signed-off-by: Bernhard Sessler <bernh...@burnsen.de> Reviewed-on: https://gerrit.libreoffice.org/7184 Reviewed-by: Markus Mohrhard <markus.mohrh...@googlemail.com> Tested-by: Markus Mohrhard <markus.mohrh...@googlemail.com> diff --git a/CMakeLists.txt b/CMakeLists.txt index 97baafe..0427289 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,6 +4,9 @@ cmake_minimum_required(VERSION 2.8.7) # Add project specific CMake module path list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin") +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib") +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib") # Perform platform and compiler feature checks include(PlatformChecks) @@ -12,13 +15,18 @@ include(PlatformChecks) include(Versioning) # Build options -option(BUILD_SHARED_LIBS "Build cppunit as shared or static library" ON) -option(CPPUNIT_BUILD_APIDOC "Adds a build target for generating the API documentation" OFF) +option(BUILD_SHARED_LIBS "Build cppunit as shared or static library" ON) +option(CPPUNIT_BUILD_APIDOC "Adds a build target for generating the API documentation" OFF) +option(CPPUNIT_BUILD_QT_TESTRUNNER "Build the Qt test runner library" OFF) if(BUILD_SHARED_LIBS AND WIN32) add_definitions(-DCPPUNIT_BUILD_DLL) endif() +if(CPPUNIT_BUILD_QT_TESTRUNNER) + include(SelectQtVersion) +endif() + # Include paths include_directories("${CMAKE_CURRENT_SOURCE_DIR}/include") include_directories("${CMAKE_CURRENT_BINARY_DIR}/include") diff --git a/cmake/SelectQtVersion.cmake b/cmake/SelectQtVersion.cmake new file mode 100644 index 0000000..4cfb4d5 --- /dev/null +++ b/cmake/SelectQtVersion.cmake @@ -0,0 +1,43 @@ +## +# Projectname - Redmine:Administration +# Author - Bernhard Sessler <bernhard.sess...@corscience.de> +# Description - Depending on the variable WITH_QT5 search either for Qt5 or Qt4 libs +# +# (c) 2013, Corscience GmbH & Co. KG +## + +if(NOT WITH_QT) + set(WITH_QT 5) +endif() + +# Find Qt5 +if(WITH_QT EQUAL 5) + set(QT5_REQUIRED_MODULES Widgets) + + find_package(Qt5 REQUIRED COMPONENTS ${QT5_REQUIRED_MODULES}) + + foreach(_submodule ${QT5_REQUIRED_MODULES}) + include_directories(${Qt5${_submodule}_INCLUDE_DIRS}) + list(APPEND QT_LIBRARIES ${Qt5${_submodule}_LIBRARIES}) + endforeach() + + set(QT_LIBRARIES_FOUND ${Qt5Widgets_FOUND}) + +# Find Qt4 +elseif(WITH_QT EQUAL 4) + set(QT4_REQUIRED_MODULES QtCore QtGui) + + find_package(Qt4 REQUIRED COMPONENTS ${QT4_REQUIRED_MODULES}) + include(${QT_USE_FILE}) + + foreach(_submodule ${QT4_REQUIRED_MODULES}) + string(TOUPPER _submodule _var) + list(APPEND QT_LIBRARIES ${QT_${_var}_LIBRARY}) + endforeach() + + set(QT_LIBRARIES_FOUND ${QT_QTGUI_FOUND}) + +# Unsupported version +else() + message(SEND_ERROR "Unsupported Qt version specified. Set WITH_QT to either 4 or 5") +endif() diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt index 142eeda..4e30800 100644 --- a/include/CMakeLists.txt +++ b/include/CMakeLists.txt @@ -2,4 +2,14 @@ configure_file(config-auto.h.in "${CMAKE_CURRENT_BINARY_DIR}/cppunit/config-auto.h") install(FILES "${CMAKE_CURRENT_BINARY_DIR}/cppunit/config-auto.h" DESTINATION include/cppunit) -install(DIRECTORY cppunit DESTINATION include FILES_MATCHING PATTERN "*.h") +install(DIRECTORY cppunit + DESTINATION include + FILES_MATCHING PATTERN "*.h" + PATTERN "ui/qt" EXCLUDE + PATTERN "ui/mfc" EXCLUDE) + +if(CPPUNIT_BUILD_QT_TESTRUNNER) + install(DIRECTORY cppunit/ui/qt + DESTINATION include/cppunit/ui + FILES_MATCHING PATTERN "*.h") +endif() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 4a72b2e..cc89dcb 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1 +1,5 @@ add_subdirectory(cppunit) + +if(CPPUNIT_BUILD_QT_TESTRUNNER) + add_subdirectory(qttestrunner) +endif() diff --git a/src/qttestrunner/CMakeLists.txt b/src/qttestrunner/CMakeLists.txt new file mode 100644 index 0000000..a3a0a16 --- /dev/null +++ b/src/qttestrunner/CMakeLists.txt @@ -0,0 +1,43 @@ +# Include the current binary dir, so files produced by moc can be found +include_directories(${CMAKE_CURRENT_BINARY_DIR}) + +# Common source files +set(qttestrunner_SOURCES + QtTestFailure.cpp + QtTestListener.cpp + QtTestRunner.cpp + TestBrowser.cpp + TestFailureTableModel.cpp + TestRunnerThread.cpp + TestRunnerWindow.cpp + TestRunnerWindowPrivate.cpp +) + +set(qttestrunner_FORMS + TestRunnerWindow.ui + TestBrowser.ui +) + +if(WITH_QT EQUAL 4) + qt4_wrap_ui(qttestrunner_UI_MOC ${qttestrunner_FORMS}) +elseif(WITH_QT EQUAL 5) + qt5_wrap_ui(qttestrunner_UI_MOC ${qttestrunner_FORMS}) +endif() + +# Create the test runner executable +add_library(cppunit-qttestrunner ${qttestrunner_SOURCES} ${qttestrunner_UI_MOC}) +target_link_libraries(cppunit-qttestrunner cppunit ${QT_LIBRARIES}) +set_target_properties(cppunit-qttestrunner PROPERTIES + AUTOMOC ON + VERSION ${CPPUNIT_SOVERSION_MAJOR}.${CPPUNIT_SOVERSION_MINOR}.${CPPUNIT_SOVERSION_PATCH} + SOVERSION ${CPPUNIT_SOVERSION_MAJOR}) + +if(WIN32) + set_target_properties(cppunit-qttestrunner DEBUG_POSTFIX "d") +endif() + +# Create install target +install(TARGETS cppunit-qttestrunner + LIBRARY DESTINATION lib COMPONENT testrunners + ARCHIVE DESTINATION lib COMPONENT testrunners + RUNTIME DESTINATION bin COMPONENT testrunners) commit 6004a179ff2dae204df2f20e4dc5b0d92b36a1cf Author: Bernhard Sessler <bernh...@burnsen.de> Date: Sun Dec 22 15:13:54 2013 +0100 examples: Port qt test runner example to Qt4 / Qt5 Change-Id: Ide48092bc7205581d03ec31d31d6d071d4ccc3d5 Signed-off-by: Bernhard Sessler <bernh...@burnsen.de> Reviewed-on: https://gerrit.libreoffice.org/7183 Reviewed-by: Markus Mohrhard <markus.mohrh...@googlemail.com> Tested-by: Markus Mohrhard <markus.mohrh...@googlemail.com> diff --git a/examples/qt/ExampleTestCases.cpp b/examples/qt/ExampleTestCases.cpp index edd67b0..891f12c 100644 --- a/examples/qt/ExampleTestCases.cpp +++ b/examples/qt/ExampleTestCases.cpp @@ -1,41 +1,41 @@ #include "ExampleTestCases.h" -CPPUNIT_TEST_SUITE_REGISTRATION( ExampleTestCases ); +CPPUNIT_TEST_SUITE_REGISTRATION(ExampleTestCases); -void ExampleTestCases::example () +void ExampleTestCases::example() { - CPPUNIT_ASSERT_DOUBLES_EQUAL (1.0, 1.1, 0.05); - CPPUNIT_ASSERT (1 == 0); - CPPUNIT_ASSERT (1 == 1); + CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, 1.1, 0.05); + CPPUNIT_ASSERT(1 == 0); + CPPUNIT_ASSERT(1 == 1); } -void ExampleTestCases::anotherExample () +void ExampleTestCases::anotherExample() { - CPPUNIT_ASSERT (1 == 2); + CPPUNIT_ASSERT(1 == 2); } -void ExampleTestCases::setUp () +void ExampleTestCases::setUp() { - m_value1 = 2.0; - m_value2 = 3.0; + m_value1 = 2.0; + m_value2 = 3.0; } -void ExampleTestCases::testAdd () +void ExampleTestCases::testAdd() { - double result = m_value1 + m_value2; - CPPUNIT_ASSERT (result == 6.0); + double result = m_value1 + m_value2; + CPPUNIT_ASSERT(result == 6.0); } -void ExampleTestCases::testEquals () +void ExampleTestCases::testEquals() { - std::auto_ptr<long> l1 (new long (12)); - std::auto_ptr<long> l2 (new long (12)); - - CPPUNIT_ASSERT_EQUAL (12, 12); - CPPUNIT_ASSERT_EQUAL (12L, 12L); - CPPUNIT_ASSERT_EQUAL (*l1, *l2); - - CPPUNIT_ASSERT (12L == 12L); - CPPUNIT_ASSERT_EQUAL (12, 13); - CPPUNIT_ASSERT_DOUBLES_EQUAL (12.0, 11.99, 0.5); + std::auto_ptr<long> l1(new long(12)); + std::auto_ptr<long> l2(new long(12)); + + CPPUNIT_ASSERT_EQUAL(12, 12); + CPPUNIT_ASSERT_EQUAL(12L, 12L); + CPPUNIT_ASSERT_EQUAL(*l1, *l2); + + CPPUNIT_ASSERT(12L == 12L); + CPPUNIT_ASSERT_EQUAL(12, 13); + CPPUNIT_ASSERT_DOUBLES_EQUAL(12.0, 11.99, 0.5); } diff --git a/examples/qt/ExampleTestCases.h b/examples/qt/ExampleTestCases.h index 4c40b8e..1aba838 100644 --- a/examples/qt/ExampleTestCases.h +++ b/examples/qt/ExampleTestCases.h @@ -4,35 +4,31 @@ #include <cppunit/TestFixture.h> #include <cppunit/extensions/HelperMacros.h> -/* +/* * A test case that is designed to produce * example errors and failures. - * */ - class ExampleTestCases : public CPPUNIT_NS::TestFixture { - CPPUNIT_TEST_SUITE( ExampleTestCases ); - CPPUNIT_TEST( example ); - CPPUNIT_TEST( anotherExample ); - CPPUNIT_TEST( testAdd ); - CPPUNIT_TEST( testEquals ); - CPPUNIT_TEST_SUITE_END(); + CPPUNIT_TEST_SUITE(ExampleTestCases); + CPPUNIT_TEST(example); + CPPUNIT_TEST(anotherExample); + CPPUNIT_TEST(testAdd); + CPPUNIT_TEST(testEquals); + CPPUNIT_TEST_SUITE_END(); protected: + double m_value1; + double m_value2; - double m_value1; - double m_value2; public: - - void setUp (); + void setUp(); protected: - - void example (); - void anotherExample (); - void testAdd (); - void testEquals (); + void example(); + void anotherExample(); + void testAdd(); + void testEquals(); }; #endif diff --git a/examples/qt/Main.cpp b/examples/qt/Main.cpp index e650040..450acc4 100644 --- a/examples/qt/Main.cpp +++ b/examples/qt/Main.cpp @@ -1,19 +1,15 @@ -#include <qapplication.h> +#include <QApplication> + #include <cppunit/ui/qt/TestRunner.h> #include <cppunit/extensions/TestFactoryRegistry.h> - int main( int argc, char** argv ) { - QApplication app( argc, argv ); + QApplication app(argc, argv); - //CPPUNIT_NS::QtUi::TestRunner runner; - - CPPUNIT_NS::QtTestRunner runner; - - runner.addTest( CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest() ); - runner.run( true ); + CPPUNIT_NS::QtTestRunner runner; + runner.addTest(CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest()); + runner.run(true); - return 0; + return app.exec(); } - diff --git a/examples/qt/qt_example.pro b/examples/qt/qt_example.pro index c93f76e..7f5994f 100644 --- a/examples/qt/qt_example.pro +++ b/examples/qt/qt_example.pro @@ -1,68 +1,49 @@ #---------------------------------------------------------------------- # File: qt_example.pro # Purpose: qmake config file for the QtTestRunner example. -# The program is built with the QtTestRunner debug staticlib. +# The program is built with the QtTestRunner shared library in +# both debug and release configs. # Set the CONFIG variable accordingly to build it differently. #---------------------------------------------------------------------- -TEMPLATE = app -LANGUAGE = C++ -TARGET = qt_example - -# Get rid of possibly predefined options - -CONFIG -= debug -CONFIG -= release +QT += core gui -CONFIG += qt warn_on debug use_static - -#CONFIG += qt warn_on release use_static -#CONFIG += qt warn_on debug use_dll -#CONFIG += qt warn_on release use_dll +greaterThan(QT_MAJOR_VERSION, 4): QT += widgets +TARGET = qt_example +TEMPLATE = app -CPPUNIT_LIB_DIR = ../../lib # Location of libraries +CONFIG += use_dll +#CONFIG += use_static +CONFIG += warn_on #---------------------------------------------------------------------- # MS Windows #---------------------------------------------------------------------- win32 { - # Suppress program database creation (should better be done - # in the qmake spec file) - QMAKE_CXXFLAGS_DEBUG += /Z7 - QMAKE_CXXFLAGS_DEBUG -= -Gm - QMAKE_CXXFLAGS_DEBUG -= -Zi -} - -win32 { use_dll { DEFINES += QTTESTRUNNER_DLL debug { - OBJECTS_DIR = DebugDLL - LIBS += $${CPPUNIT_LIB_DIR}\cppunitd_dll.lib - LIBS += $${CPPUNIT_LIB_DIR}\qttestrunnerd_dll.lib + LIBS += cppunitd_dll.lib + LIBS += cppunit-qttestrunnerd_dll.lib } release { - OBJECTS_DIR = ReleaseDLL - LIBS += $${CPPUNIT_LIB_DIR}\cppunit_dll.lib - LIBS += $${CPPUNIT_LIB_DIR}\qttestrunner_dll.lib + LIBS += cppunit_dll.lib + LIBS += cppunit-qttestrunner_dll.lib } } use_static { debug { - OBJECTS_DIR = Debug - LIBS += $${CPPUNIT_LIB_DIR}\cppunitd.lib - LIBS += $${CPPUNIT_LIB_DIR}\qttestrunnerd.lib + LIBS += cppunitd.lib + LIBS += cppunit-qttestrunnerd.lib } release { - OBJECTS_DIR = Release - LIBS += $${CPPUNIT_LIB_DIR}\cppunit.lib - LIBS += $${CPPUNIT_LIB_DIR}\qttestrunner.lib + LIBS += cppunit.lib + LIBS += cppunit-qttestrunner.lib } } - DESTDIR = $${OBJECTS_DIR} } #---------------------------------------------------------------------- @@ -70,18 +51,8 @@ win32 { #---------------------------------------------------------------------- unix { - debug { - OBJECTS_DIR = .obj_debug - use_static: LIBS += -L$${CPPUNIT_LIB_DIR} -lqttestrunnerd - use_dll: LIBS += -L$${CPPUNIT_LIB_DIR} -lqttestrunnerd_shared - LIBS += -L$${CPPUNIT_LIB_DIR} -lcppunit - } - release { - OBJECTS_DIR = .obj_release - use_static: LIBS += -L$${CPPUNIT_LIB_DIR} -lqttestrunner - use_dll: LIBS += -L$${CPPUNIT_LIB_DIR} -lqttestrunner_shared - LIBS += -L$${CPPUNIT_LIB_DIR} -lcppunit - } + LIBS += -lcppunit-qttestrunner + LIBS += -lcppunit } #---------------------------------------------------------------------- _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits