AutoTest: Wizard: Soften condition for gtest repository

Make the need for the googletest repository optional. The user
may have gtest installed inside the system instead.

Change-Id: I4959878fa893d6b8ed53fd612934d7cd4504a6b7
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
Christian Stenger
2019-08-21 13:54:19 +02:00
parent 45cd20c4a0
commit 90189ec3d1
5 changed files with 55 additions and 24 deletions

View File

@@ -13,12 +13,13 @@
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
**/
var File = require("qbs.File")
var FileInfo = require("qbs.FileInfo")
function getGTestDir(qbs, str) {
if (!str) {
if (qbs.hostOS.contains("linux"))
return "/usr/include/gtest";
if (qbs.hostOS.contains("linux") && File.exists("/usr/src/gtest"))
return "/usr/src/gtest";
} else {
return FileInfo.joinPaths(str, "googletest");
}
@@ -27,8 +28,8 @@ function getGTestDir(qbs, str) {
function getGMockDir(qbs, str) {
if (!str) {
if (qbs.hostOS.contains("linux"))
return "/usr/include/gmock";
if (qbs.hostOS.contains("linux") && File.exists("/usr/src/gmock"))
return "/usr/src/gmock";
} else {
return FileInfo.joinPaths(str, "googlemock");
}

View File

@@ -1,31 +1,43 @@
isEmpty(GOOGLETEST_DIR):GOOGLETEST_DIR=$$(GOOGLETEST_DIR)
isEmpty(GOOGLETEST_DIR) {
warning("Using googletest src dir specified at Qt Creator wizard")
message("set GOOGLETEST_DIR as environment variable or qmake variable to get rid of this message")
GOOGLETEST_DIR = %{GTestRepository}
!isEmpty(GOOGLETEST_DIR) {
warning("Using googletest src dir specified at Qt Creator wizard")
message("set GOOGLETEST_DIR as environment variable or qmake variable to get rid of this message")
}
}
!isEmpty(GOOGLETEST_DIR): {
GTEST_SRCDIR = $$GOOGLETEST_DIR/googletest
GMOCK_SRCDIR = $$GOOGLETEST_DIR/googlemock
} else: unix {
exists(/usr/src/gtest):GTEST_SRCDIR=/usr/src/gtest
exists(/usr/src/gmock):GMOCK_SRCDIR=/usr/src/gmock
!isEmpty(GTEST_SRCDIR): message("Using gtest from system")
}
requires(exists($$GTEST_SRCDIR):exists($$GMOCK_SRCDIR))
!exists($$GOOGLETEST_DIR):message("No googletest src dir found - set GOOGLETEST_DIR to enable.")
@if "%{GTestCXX11}" == "true"
DEFINES += \\
GTEST_LANG_CXX11
@endif
INCLUDEPATH *= \\
$$GTEST_SRCDIR \\
$$GTEST_SRCDIR/include \\
$$GMOCK_SRCDIR \\
$$GMOCK_SRCDIR/include
!isEmpty(GTEST_SRCDIR) {
INCLUDEPATH *= \\
$$GTEST_SRCDIR \\
$$GTEST_SRCDIR/include
SOURCES += \\
$$GTEST_SRCDIR/src/gtest-all.cc \\
$$GMOCK_SRCDIR/src/gmock-all.cc
SOURCES += \\
$$GTEST_SRCDIR/src/gtest-all.cc
}
!isEmpty(GMOCK_SRCDIR) {
INCLUDEPATH *= \\
$$GMOCK_SRCDIR \\
$$GMOCK_SRCDIR/include
SOURCES += \\
$$GMOCK_SRCDIR/src/gmock-all.cc
}

View File

@@ -26,8 +26,12 @@ CppApplication {
@if "%{TestFrameWork}" == "GTest"
property string googletestDir: {
if (typeof Environment.getEnv("GOOGLETEST_DIR") === 'undefined') {
console.warn("Using googletest src dir specified at Qt Creator wizard")
console.log("set GOOGLETEST_DIR as environment variable or Qbs property to get rid of this message")
if ("%{GTestRepository}" === "" && googleCommon.getGTestDir(qbs, undefined) !== "") {
console.warn("Using googletest from system")
} else {
console.warn("Using googletest src dir specified at Qt Creator wizard")
console.log("set GOOGLETEST_DIR as environment variable or Qbs property to get rid of this message")
}
return "%{GTestRepository}"
} else {
return Environment.getEnv("GOOGLETEST_DIR")

View File

@@ -62,22 +62,35 @@ find_package(Threads REQUIRED)
if ($ENV{GOOGLETEST_DIR})
set(GOOGLETEST_DIR $ENV{GOOGLETEST_DIR})
else ()
message(WARNING "Using googletest src dir specified at Qt Creator wizard")
if (NOT "%{GTestRepository}" STREQUAL "")
message(WARNING "Using googletest src dir specified at Qt Creator wizard")
endif ()
set(GOOGLETEST_DIR "%{GTestRepository}")
endif ()
if (EXISTS ${GOOGLETEST_DIR})
set(GTestSrc ${GOOGLETEST_DIR}/googletest)
set(GMockSrc ${GOOGLETEST_DIR}/googlemock)
elseif (UNIX AND EXISTS /usr/src/gtest)
set(GTestSrc /usr/src/gtest)
message(WARNING "Using gtest from system")
if (EXISTS /usr/src/gmock)
set(GMockSrc /usr/src/gmock)
endif ()
else ()
message( FATAL_ERROR "No googletest src dir found - set GOOGLETEST_DIR to enable!")
endif ()
set(GTestFiles ${GTestSrc}/src/gtest-all.cc)
set(GTestIncludes ${GTestSrc} ${GTestSrc}/include)
if (NOT ${GMockSrc} STREQUAL "")
list(APPEND GTestFiles ${GMockSrc}/src/gmock-all.cc)
list(APPEND GTestIncludes ${GMockSrc} ${GMockSrc}/include)
endif ()
include_directories(${GTestSrc} ${GTestSrc}/include ${GMockSrc} ${GMockSrc}/include)
include_directories(${GTestIncludes})
add_executable(%{TestCaseName} %{MainCppName} %{TestCaseFileWithHeaderSuffix}
${GTestSrc}/src/gtest-all.cc
${GMockSrc}/src/gmock-all.cc)
${GTestFiles})
add_test(%{TestCaseName} COMMAND %{TestCaseName})
target_link_libraries(%{TestCaseName} PRIVATE Threads::Threads)

View File

@@ -149,8 +149,9 @@
},
{
"name": "GTestRepository",
"trDisplayName": "Googletest repository:",
"trDisplayName": "Googletest source directory (optional):",
"visible": "%{JS: value('TestFrameWork') === 'GTest'}",
"mandatory": false,
"type": "PathChooser",
"data": {
"kind": "existingDirectory"
@@ -158,7 +159,7 @@
},
{
"name": "BoostIncDir",
"trDisplayName": "Boost include dir (optional):",
"trDisplayName": "Boost include directory (optional):",
"visible": "%{JS: value('TestFrameWork') == 'BoostTest'}",
"mandatory": false,
"type": "PathChooser",