diff --git a/sources/CMakeLists.txt b/sources/CMakeLists.txt index 0d23497..e628d3d 100644 --- a/sources/CMakeLists.txt +++ b/sources/CMakeLists.txt @@ -80,5 +80,9 @@ if (BUILD_PLASMOIDS) add_subdirectory(desktop-panel) add_subdirectory(translations) endif () +if (BUILD_TESTING) + enable_testing() + add_subdirectory(test) +endif () include(packages-recipe.cmake) diff --git a/sources/libraries.cmake b/sources/libraries.cmake index 339bb58..9a9a052 100644 --- a/sources/libraries.cmake +++ b/sources/libraries.cmake @@ -2,18 +2,18 @@ find_package(Gettext REQUIRED) # main qt libraries -find_package(Qt5 5.6.0 REQUIRED COMPONENTS Core DBus Network Qml Widgets) +find_package(Qt5 5.6.0 REQUIRED COMPONENTS Core DBus Network Qml Test Widgets) add_definitions( ${Qt5Core_DEFINITIONS} ${Qt5DBus_DEFINITIONS} ${Qt5Network_DEFINITIONS} - ${Qt5Qml_DEFINITIONS} ${Qt5Widgets_DEFINITIONS} + ${Qt5Qml_DEFINITIONS} ${Qt5Test_DEFINITIONS} ${Qt5Widgets_DEFINITIONS} ) set(Qt_INCLUDE ${Qt5Core_INCLUDE_DIRS} ${Qt5DBus_INCLUDE_DIRS} ${Qt5Network_INCLUDE_DIRS} - ${Qt5Qml_INCLUDE_DIRS} ${Qt5Widgets_INCLUDE_DIRS} + ${Qt5Qml_INCLUDE_DIRS} ${Qt5Test_INCLUDE_DIRS} ${Qt5Widgets_INCLUDE_DIRS} ) set(Qt_LIBRARIES ${Qt5Core_LIBRARIES} ${Qt5DBus_LIBRARIES} ${Qt5Network_LIBRARIES} - ${Qt5Qml_LIBRARIES} ${Qt5Widgets_LIBRARIES} + ${Qt5Qml_LIBRARIES} ${Qt5Test_LIBRARIES} ${Qt5Widgets_LIBRARIES} ) # kf5 libraries diff --git a/sources/test/CMakeLists.txt b/sources/test/CMakeLists.txt new file mode 100644 index 0000000..e70c070 --- /dev/null +++ b/sources/test/CMakeLists.txt @@ -0,0 +1,23 @@ +set(SUBPROJECT awesomewidgets-test) +message(STATUS "Subproject ${SUBPROJECT}") + +# find qt test package +include_directories( + ${CMAKE_SOURCE_DIR} + ${CMAKE_BINARY_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/../${PROJECT_LIBRARY}/ + ${PROJECT_TRDPARTY_DIR} + ${Qt_INCLUDE} + ${Kf5_INCLUDE} + ${Qt5Test_INCLUDE_DIRS} +) + +# extscript +set (EXTSCRIPT_HEADERS testextscript.h) +set (EXTSCRIPT_SOURCES testextscript.cpp) +# qt5_wrap_cpp(EXTSCRIPT_MOC_SOURCES ${EXTSCRIPT_HEADERS}) +add_executable (${SUBPROJECT}-extscript ${EXTSCRIPT_HEADERS} ${EXTSCRIPT_SOURCES} ${EXTSCRIPT_MOC_SOURCES}) +target_link_libraries (${SUBPROJECT}-extscript ${PROJECT_LIBRARY} ${Qt_LIBRARIES} ${Qt5Test_LIBRARIES}) +add_test (NAME "ExtScript" COMMAND ${CMAKE_CURRENT_BINARY_DIR}/${SUBPROJECT}-extscript + "-o" "../Testing/output-extscript.log") + diff --git a/sources/test/testextscript.cpp b/sources/test/testextscript.cpp new file mode 100644 index 0000000..c6fe839 --- /dev/null +++ b/sources/test/testextscript.cpp @@ -0,0 +1,72 @@ +/*************************************************************************** + * This file is part of awesome-widgets * + * * + * awesome-widgets is free software: you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation, either version 3 of the * + * License, or (at your option) any later version. * + * * + * awesome-widgets is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with awesome-widgets. If not, see http://www.gnu.org/licenses/ * + ***************************************************************************/ + + +#include "testextscript.h" + +#include + +#include "extscript.h" +#include "version.h" + + +void TestExtScript::initTestCase() +{ + extScript = new ExtScript(nullptr); + extScript->setInterval(1); + extScript->setExecutable(QString("hello world")); + extScript->setRedirect(ExtScript::Redirect::stderr2stdout); + extScript->setPrefix(QString("echo")); + + while (true) + qDebug() <run(); +} + + +void TestExtScript::cleanupTestCase() +{ + delete extScript; +} + + +void TestExtScript::test_values() +{ + QCOMPARE(extScript->interval(), 1); + QCOMPARE(extScript->executable(), QString("hello world")); + QCOMPARE(extScript->prefix(), QString("echo")); +} + + +void TestExtScript::test_firstRun() +{ + QVariantHash firstValue = extScript->run(); + qDebug() << firstValue; + QTest::qSleep(20000); + QCOMPARE(firstValue[extScript->tag(QString("custom"))].toString(), QString("")); + QTest::qSleep(20000); +} + + +void TestExtScript::test_secondRun() +{ + QVariantHash secondValue = extScript->run(); + qDebug() << secondValue; + QCOMPARE(secondValue[extScript->tag(QString("custom"))].toString(), QString("hello world")); +} + + +QTEST_MAIN(TestExtScript); diff --git a/sources/test/testextscript.h b/sources/test/testextscript.h new file mode 100644 index 0000000..5422d76 --- /dev/null +++ b/sources/test/testextscript.h @@ -0,0 +1,46 @@ +/*************************************************************************** + * This file is part of awesome-widgets * + * * + * awesome-widgets is free software: you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation, either version 3 of the * + * License, or (at your option) any later version. * + * * + * awesome-widgets is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with awesome-widgets. If not, see http://www.gnu.org/licenses/ * + ***************************************************************************/ + + +#ifndef TESTEXTSCRIPT_H +#define TESTEXTSCRIPT_H + +#include +#include + + +class ExtScript; + +class TestExtScript : public QObject +{ + Q_OBJECT + +private slots: + // initialization + void initTestCase(); + void cleanupTestCase(); + // test + void test_values(); + void test_firstRun(); + void test_secondRun(); + +private: + ExtScript *extScript = nullptr; +}; + + +#endif /* TESTEXTSCRIPT_H */