Skip to content

Commit

Permalink
tests: merge build of tests within main build
Browse files Browse the repository at this point in the history
Instead of a separate CMakeLists.txt for the tests, make them built
together with the rest of the main project. This behaviour is off
by default, and can be enabled using ENABLE_TESTING.

Furthermore, the testing facilities of cmake are now used, so ctest
(invoked by `make test`) knows about the sqlb-unittests. Thus, adapt
the Travis build steps, building the main sources and executing the
tests twice, one for sqlite and one for sqlcipher.
  • Loading branch information
pinotree committed May 3, 2015
1 parent f11acc0 commit 57f2622
Show file tree
Hide file tree
Showing 4 changed files with 80 additions and 92 deletions.
13 changes: 5 additions & 8 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,19 +9,16 @@ before_install:
- sudo apt-get install -qq libqt4-dev libsqlite3-dev libsqlcipher-dev

script:
- mkdir tests/build
- mkdir build
- mkdir build_cipher
- cd tests/build
- cmake ..
- make
- ./sqlb-unittests
- cd ../../build
- cmake ..
- cd build
- cmake -DENABLE_TESTING=ON ..
- make
- ctest -V
- cd ../build_cipher
- cmake -Dsqlcipher=1 ..
- cmake -DENABLE_TESTING=ON -Dsqlcipher=1 ..
- make
- ctest -V

matrix:
fast_finish: true
10 changes: 10 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ project(sqlitebrowser)
cmake_minimum_required(VERSION 2.8.7)

OPTION(USE_QT5 FALSE "Build with qt5")
OPTION(ENABLE_TESTING FALSE "Enable the unit tests")

if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "Release")
Expand Down Expand Up @@ -42,6 +43,10 @@ else()
add_definitions(${QT_DEFINITIONS})
endif()

if(ENABLE_TESTING)
enable_testing()
endif()

set(SQLB_HDR
src/gen_version.h
src/sqlitetypes.h
Expand Down Expand Up @@ -260,6 +265,11 @@ install(TARGETS ${PROJECT_NAME}
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib)


if(ENABLE_TESTING)
add_subdirectory(src/tests)
endif()

if(UNIX AND NOT APPLE)
install(FILES src/icons/${PROJECT_NAME}.png
DESTINATION share/icons/hicolor/256x256/apps/)
Expand Down
65 changes: 65 additions & 0 deletions src/tests/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
if(USE_QT5)
else()
find_package(Qt4 COMPONENTS QtTest REQUIRED)
include("${QT_USE_FILE}")
add_definitions(${QT_DEFINITIONS})
endif()

set(SQLB_UNITTESTS_SRC
../sqlitedb.cpp
../sqlitetablemodel.cpp
../sqlitetypes.cpp
../csvparser.cpp
../grammar/Sqlite3Lexer.cpp
../grammar/Sqlite3Parser.cpp
../PreferencesDialog.cpp
TestImport.cpp
testsqlobjects.cpp
TestMain.cpp
../FileDialog.cpp
)

set(SQLB_UNITTESTS_HDR
../grammar/sqlite3TokenTypes.hpp
../grammar/Sqlite3Lexer.hpp
../grammar/Sqlite3Parser.hpp
../csvparser.h
../sqlitetypes.h)

set(SQLB_UNITTESTS_FORMS
../PreferencesDialog.ui)

set(SQLB_UNITTESTS_MOC_HDR
../sqlitedb.h
../sqlitetablemodel.h
../PreferencesDialog.h
TestImport.h
testsqlobjects.h
../FileDialog.h
)

if(sqlcipher)
list(APPEND SQLB_UNITTESTS_SRC ../CipherDialog.cpp)
list(APPEND SQLB_UNITTESTS_FORMS ../CipherDialog.ui)
list(APPEND SQLB_UNITTESTS_MOC_HDR ../CipherDialog.h)
endif()

if(USE_QT5)
QT5_WRAP_UI(SQLB_UNITTESTS_FORM_HDR ${SQLB_UNITTESTS_FORMS})
else()
QT4_WRAP_CPP(SQLB_UNITTESTS_MOC ${SQLB_UNITTESTS_MOC_HDR})
QT4_WRAP_UI(SQLB_UNITTESTS_FORM_HDR ${SQLB_UNITTESTS_FORMS})
endif()

include_directories("${CMAKE_CURRENT_BINARY_DIR}" "${ANTLR_DIR}" ..)

add_executable(sqlb-unittests ${SQLB_UNITTESTS_MOC} ${SQLB_UNITTESTS_HDR} ${SQLB_UNITTESTS_SRC} ${SQLB_UNITTESTS_FORM_HDR})

if(USE_QT5)
qt5_use_modules(sqlb-unittests Test Widgets Gui)
set(QT_LIBRARIES "")
endif()

add_dependencies(sqlb-unittests antlr)
target_link_libraries(sqlb-unittests antlr ${QT_LIBRARIES} ${LIBSQLITE})
add_test(sqlb-unittests sqlb-unittests)
84 changes: 0 additions & 84 deletions tests/CMakeLists.txt

This file was deleted.

0 comments on commit 57f2622

Please sign in to comment.