From 6ec89bec0a2f06365dc18bda6e95b6c253c19227 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Tue, 23 Feb 2016 01:13:47 +0100 Subject: Fix QFINDTESTDATA when using cmake ninja generator The Qt CI does not have ninja, but the autotest can be used for manual regression finding. cd qtbase/tests/auto/cmake qmake make check cd build cmake . -DHAVE_NINJA=ON ctest -R FINDTESTDATA Change-Id: Ic3f3748f6ab04e37fa5287c59486e5cd46dcabb4 Reviewed-by: Stephen Kelly --- src/testlib/Qt5TestConfigExtras.cmake.in | 5 ++ tests/auto/cmake/CMakeLists.txt | 18 +++++++ tests/auto/cmake/test_QFINDTESTDATA/CMakeLists.txt | 11 +++++ .../cmake/test_QFINDTESTDATA/tests/CMakeLists.txt | 4 ++ tests/auto/cmake/test_QFINDTESTDATA/tests/main.cpp | 55 ++++++++++++++++++++++ .../cmake/test_QFINDTESTDATA/tests/testdata.txt | 1 + 6 files changed, 94 insertions(+) create mode 100644 src/testlib/Qt5TestConfigExtras.cmake.in create mode 100644 tests/auto/cmake/test_QFINDTESTDATA/CMakeLists.txt create mode 100644 tests/auto/cmake/test_QFINDTESTDATA/tests/CMakeLists.txt create mode 100644 tests/auto/cmake/test_QFINDTESTDATA/tests/main.cpp create mode 100644 tests/auto/cmake/test_QFINDTESTDATA/tests/testdata.txt diff --git a/src/testlib/Qt5TestConfigExtras.cmake.in b/src/testlib/Qt5TestConfigExtras.cmake.in new file mode 100644 index 0000000000..2a575958ae --- /dev/null +++ b/src/testlib/Qt5TestConfigExtras.cmake.in @@ -0,0 +1,5 @@ + +set_property(TARGET Qt5::Test + APPEND PROPERTY + INTERFACE_COMPILE_DEFINITIONS QT_TESTCASE_BUILDDIR=\\\"\${CMAKE_BINARY_DIR}\\\" +) diff --git a/tests/auto/cmake/CMakeLists.txt b/tests/auto/cmake/CMakeLists.txt index 5248f75a84..1abbef0d68 100644 --- a/tests/auto/cmake/CMakeLists.txt +++ b/tests/auto/cmake/CMakeLists.txt @@ -68,6 +68,24 @@ expect_fail(test_wrap_cpp_options) expect_pass(test_platform_defs_include) expect_pass(test_qtmainwin_library) +if (HAVE_NINJA) + make_directory("${CMAKE_CURRENT_SOURCE_DIR}/test_QFINDTESTDATA/build") + add_test(test_QFINDTESTDATA ${CMAKE_CTEST_COMMAND} + --build-and-test + "${CMAKE_CURRENT_SOURCE_DIR}/test_QFINDTESTDATA" + # Build in a subdir of the source dir. + # This causes Ninja to use relative paths. + "${CMAKE_CURRENT_SOURCE_DIR}/test_QFINDTESTDATA/build" + --build-generator Ninja + --build-options "-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}" + ) + add_test(NAME run_test_QFINDTESTDATA COMMAND sh -c "cd \"${CMAKE_SOURCE_DIR}/test_QFINDTESTDATA/build/tests\" && ./test_QFINDTESTDATA -v2") + + set_property(TEST run_test_QFINDTESTDATA + PROPERTY DEPENDS test_QFINDTESTDATA + ) +endif() + if (NOT NO_DBUS) expect_pass(test_dbus_module) endif() diff --git a/tests/auto/cmake/test_QFINDTESTDATA/CMakeLists.txt b/tests/auto/cmake/test_QFINDTESTDATA/CMakeLists.txt new file mode 100644 index 0000000000..e56c3c5eb9 --- /dev/null +++ b/tests/auto/cmake/test_QFINDTESTDATA/CMakeLists.txt @@ -0,0 +1,11 @@ + +cmake_minimum_required(VERSION 2.8.11) + +project(test_QFINDTESTDATA) + +find_package(Qt5Test REQUIRED) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +add_subdirectory(tests) diff --git a/tests/auto/cmake/test_QFINDTESTDATA/tests/CMakeLists.txt b/tests/auto/cmake/test_QFINDTESTDATA/tests/CMakeLists.txt new file mode 100644 index 0000000000..dfe321982a --- /dev/null +++ b/tests/auto/cmake/test_QFINDTESTDATA/tests/CMakeLists.txt @@ -0,0 +1,4 @@ + +add_executable(test_QFINDTESTDATA WIN32 main.cpp) + +target_link_libraries(test_QFINDTESTDATA Qt5::Test) diff --git a/tests/auto/cmake/test_QFINDTESTDATA/tests/main.cpp b/tests/auto/cmake/test_QFINDTESTDATA/tests/main.cpp new file mode 100644 index 0000000000..0a5b6acd32 --- /dev/null +++ b/tests/auto/cmake/test_QFINDTESTDATA/tests/main.cpp @@ -0,0 +1,55 @@ +/**************************************************************************** +** +** Copyright (C) 2016 Stephen Kelly +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** 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 The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/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 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include +#include + +class TestClass : public QObject +{ + Q_OBJECT +public: + TestClass(QObject* parent = 0) {} + +private slots: + void doTest(); +}; + +void TestClass::doTest() +{ + QFile f(QFINDTESTDATA("testdata.txt")); + QVERIFY(f.open(QFile::ReadOnly)); + QCOMPARE(f.readAll().trimmed(), QByteArrayLiteral("This is a test.")); +} + +QTEST_MAIN(TestClass) +#include "main.moc" diff --git a/tests/auto/cmake/test_QFINDTESTDATA/tests/testdata.txt b/tests/auto/cmake/test_QFINDTESTDATA/tests/testdata.txt new file mode 100644 index 0000000000..484ba93ef5 --- /dev/null +++ b/tests/auto/cmake/test_QFINDTESTDATA/tests/testdata.txt @@ -0,0 +1 @@ +This is a test. -- cgit v1.2.3