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

View File

@@ -1,31 +1,43 @@
isEmpty(GOOGLETEST_DIR):GOOGLETEST_DIR=$$(GOOGLETEST_DIR) isEmpty(GOOGLETEST_DIR):GOOGLETEST_DIR=$$(GOOGLETEST_DIR)
isEmpty(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} 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): { !isEmpty(GOOGLETEST_DIR): {
GTEST_SRCDIR = $$GOOGLETEST_DIR/googletest GTEST_SRCDIR = $$GOOGLETEST_DIR/googletest
GMOCK_SRCDIR = $$GOOGLETEST_DIR/googlemock 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)) requires(exists($$GTEST_SRCDIR):exists($$GMOCK_SRCDIR))
!exists($$GOOGLETEST_DIR):message("No googletest src dir found - set GOOGLETEST_DIR to enable.")
@if "%{GTestCXX11}" == "true" @if "%{GTestCXX11}" == "true"
DEFINES += \\ DEFINES += \\
GTEST_LANG_CXX11 GTEST_LANG_CXX11
@endif @endif
INCLUDEPATH *= \\ !isEmpty(GTEST_SRCDIR) {
$$GTEST_SRCDIR \\ INCLUDEPATH *= \\
$$GTEST_SRCDIR/include \\ $$GTEST_SRCDIR \\
$$GMOCK_SRCDIR \\ $$GTEST_SRCDIR/include
$$GMOCK_SRCDIR/include
SOURCES += \\ SOURCES += \\
$$GTEST_SRCDIR/src/gtest-all.cc \\ $$GTEST_SRCDIR/src/gtest-all.cc
$$GMOCK_SRCDIR/src/gmock-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" @if "%{TestFrameWork}" == "GTest"
property string googletestDir: { property string googletestDir: {
if (typeof Environment.getEnv("GOOGLETEST_DIR") === 'undefined') { if (typeof Environment.getEnv("GOOGLETEST_DIR") === 'undefined') {
console.warn("Using googletest src dir specified at Qt Creator wizard") if ("%{GTestRepository}" === "" && googleCommon.getGTestDir(qbs, undefined) !== "") {
console.log("set GOOGLETEST_DIR as environment variable or Qbs property to get rid of this message") 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}" return "%{GTestRepository}"
} else { } else {
return Environment.getEnv("GOOGLETEST_DIR") return Environment.getEnv("GOOGLETEST_DIR")

View File

@@ -62,22 +62,35 @@ find_package(Threads REQUIRED)
if ($ENV{GOOGLETEST_DIR}) if ($ENV{GOOGLETEST_DIR})
set(GOOGLETEST_DIR $ENV{GOOGLETEST_DIR}) set(GOOGLETEST_DIR $ENV{GOOGLETEST_DIR})
else () 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}") set(GOOGLETEST_DIR "%{GTestRepository}")
endif () endif ()
if (EXISTS ${GOOGLETEST_DIR}) if (EXISTS ${GOOGLETEST_DIR})
set(GTestSrc ${GOOGLETEST_DIR}/googletest) set(GTestSrc ${GOOGLETEST_DIR}/googletest)
set(GMockSrc ${GOOGLETEST_DIR}/googlemock) 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 () else ()
message( FATAL_ERROR "No googletest src dir found - set GOOGLETEST_DIR to enable!") message( FATAL_ERROR "No googletest src dir found - set GOOGLETEST_DIR to enable!")
endif () 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} add_executable(%{TestCaseName} %{MainCppName} %{TestCaseFileWithHeaderSuffix}
${GTestSrc}/src/gtest-all.cc ${GTestFiles})
${GMockSrc}/src/gmock-all.cc)
add_test(%{TestCaseName} COMMAND %{TestCaseName}) add_test(%{TestCaseName} COMMAND %{TestCaseName})
target_link_libraries(%{TestCaseName} PRIVATE Threads::Threads) target_link_libraries(%{TestCaseName} PRIVATE Threads::Threads)

View File

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