diff --git a/CMakeLists.txt b/CMakeLists.txt index 82c906b54..4cb740777 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -434,6 +434,7 @@ ENDIF(WIN32) # make sub-directories ADD_SUBDIRECTORY(src) ADD_SUBDIRECTORY(plugins) +ADD_SUBDIRECTORY(tests) ADD_SUBDIRECTORY(data) ADD_SUBDIRECTORY(doc) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 596f3b270..308726e95 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -65,12 +65,16 @@ ENDIF() ADD_DEFINITIONS("-std=c++0x") ADD_EXECUTABLE(lmms + core/main.cpp ${LMMS_SRCS} ${LMMS_INCLUDES} ${LMMS_UI_OUT} ${LMMS_ER_H} "${WINRC}" ) +SET_TARGET_PROPERTIES(lmms PROPERTIES + ENABLE_EXPORTS ON +) SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${LMMS_ER_H} ${LMMS_UI_OUT} lmmsconfig.h lmms.1.gz") @@ -130,7 +134,7 @@ ENDFOREACH(_item ${qm_targets}) IF(LMMS_BUILD_WIN32) SET_TARGET_PROPERTIES(lmms PROPERTIES LINK_FLAGS "${LINK_FLAGS} -mwindows" - ENABLE_EXPORTS ON) + ) ADD_CUSTOM_COMMAND(TARGET lmms POST_BUILD COMMAND "${STRIP}" "$") INSTALL(TARGETS lmms RUNTIME DESTINATION "${BIN_DIR}") diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index c59cd6680..ae23ae6d9 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -30,7 +30,6 @@ set(LMMS_SRCS core/LadspaControl.cpp core/LadspaManager.cpp core/LfoController.cpp - core/main.cpp core/MemoryHelper.cpp core/MemoryManager.cpp core/MeterModel.cpp diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt new file mode 100644 index 000000000..377063751 --- /dev/null +++ b/tests/CMakeLists.txt @@ -0,0 +1,15 @@ +INCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}") +INCLUDE_DIRECTORIES("${CMAKE_CURRENT_BINARY_DIR}") +INCLUDE_DIRECTORIES("${CMAKE_SOURCE_DIR}/include") + +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --std=c++11") + +SET(CMAKE_AUTOMOC ON) + +ADD_EXECUTABLE(tests + EXCLUDE_FROM_ALL + main.cpp + QTestSuite +) +TARGET_LINK_LIBRARIES(tests ${QT_LIBRARIES} ${QT_QTTEST_LIBRARY}) +TARGET_LINK_LIBRARIES(tests lmms) diff --git a/tests/QTestSuite.cpp b/tests/QTestSuite.cpp new file mode 100644 index 000000000..a5a49fd20 --- /dev/null +++ b/tests/QTestSuite.cpp @@ -0,0 +1,19 @@ +#include "QTestSuite.h" + +QList QTestSuite::m_suites; + +QTestSuite::QTestSuite(QObject *parent) : QObject(parent) +{ + m_suites << this; +} + +QTestSuite::~QTestSuite() +{ + m_suites.removeAll(this); +} + +QList QTestSuite::suites() +{ + return m_suites; +} + diff --git a/tests/QTestSuite.h b/tests/QTestSuite.h new file mode 100644 index 000000000..05ae1fb66 --- /dev/null +++ b/tests/QTestSuite.h @@ -0,0 +1,21 @@ +#ifndef QTESTSUITE_H +#define QTESTSUITE_H + +#include +#include +#include + +class QTestSuite : public QObject +{ + Q_OBJECT +public: + explicit QTestSuite(QObject *parent = 0); + ~QTestSuite(); + + static QList suites(); + +private: + static QList m_suites; +}; + +#endif // QTESTSUITE_H diff --git a/tests/main.cpp b/tests/main.cpp new file mode 100644 index 000000000..1f3e95355 --- /dev/null +++ b/tests/main.cpp @@ -0,0 +1,13 @@ +#include "QTestSuite.h" + +#include + +#include + +int main(int argc, char* argv[]) +{ + for (QTestSuite*& suite : QTestSuite::suites()) + { + QTest::qExec(suite, argc, argv); + } +}