cmake - Increase test pass rate on Windows

This commit is contained in:
RobGowin 2016-01-27 14:50:51 -06:00 committed by Geert Janssens
parent 17033c64d8
commit 6e50516c1d
8 changed files with 115 additions and 86 deletions

View File

@ -91,7 +91,10 @@ IF(GNC_BUILD_AS_INSTALL)
ENDIF()
SET(SHELL_FROM_ENV $ENV{SHELL})
SET(SHELL bin/bash)
SET(SHELL /bin/bash)
IF (WIN32)
SET(SHELL ${CMAKE_PREFIX_PATH}/mingw/msys/1.0/bin/bash.exe)
ENDIF()
IF (SHELL_FROM_ENV) # Replacing this with IF ($ENV{SHELL}) doesn't work.
SET(SHELL ${SHELL_FROM_ENV})
ENDIF()
@ -224,16 +227,10 @@ IF (GUILE2_FOUND) # found guile-2.0
ADD_DEFINITIONS (-DHAVE_GUILE20)
SET(HAVE_GUILE2 TRUE)
SET(GUILE_EFFECTIVE_VERSION 2.0)
# We also need to look up the executable
FIND_PROGRAM (GUILE_EXECUTABLE guile)
FIND_PROGRAM (GUILD_EXECUTABLE guild)
SET(GUILE_INCLUDE_DIRS ${GUILE2_INCLUDE_DIRS})
SET(GUILE_LDFLAGS ${GUILE2_LDFLAGS})
IF (NOT GUILE_EXECUTABLE)
MESSAGE (SEND_ERROR "The guile executable was not found, but is required. Please set GUILE_EXECUTABLE.")
ENDIF (NOT GUILE_EXECUTABLE)
FIND_PROGRAM (GUILD_EXECUTABLE guild)
IF (NOT GUILD_EXECUTABLE)
MESSAGE (SEND_ERROR "The guild executable was not found, but is required. Please set GUILD_EXECUTABLE.")
ENDIF (NOT GUILD_EXECUTABLE)
@ -245,13 +242,18 @@ ELSE()
MESSAGE (SEND_ERROR "Neither guile 1.8 nor guile 2.0 where find. Please set PKG_CONFIG_PATH one of these is found.")
ENDIF(NOT GUILE1_FOUND)
SET(GUILE_INCLUDE_DIRS ${GUILE1_INCLUDE_DIRS})
SET(GUILE_LDFLAGS ${GUILE1_LDFLAGS})
SET(HAVE_GUILE1 TRUE)
SET(GUILE_EFFECTIVE_VERSION 1.8)
SET(GUILE_INCLUDE_DIRS ${GUILE1_INCLUDE_DIRS})
SET(GUILE_LDFLAGS ${GUILE1_LDFLAGS})
MESSAGE(STATUS "Using guile-1.8.x")
ENDIF()
FIND_PROGRAM (GUILE_EXECUTABLE guile)
IF (NOT GUILE_EXECUTABLE)
MESSAGE (SEND_ERROR "The guile executable was not found, but is required. Please set GUILE_EXECUTABLE.")
ENDIF (NOT GUILE_EXECUTABLE)
# Qt
IF (WITH_CUTECASH)
SET (QT_MIN_VERSION "4.5.0")
@ -402,7 +404,7 @@ ADD_CUSTOM_TARGET(check
scm-test-core scm-test-report-system scm-standard-reports-2
scm-test-standard-reports foo gncmodfoo baz gncmodbaz
bar gncmodbar gncmod_agedver gncmod_incompatdep
gncmod_futuremodsys
gncmod_futuremodsys test-core-guile
)
IF (NOT WIN32)
ADD_DEPENDENCIES(check gncmod-backend-xml-link)

View File

@ -20,12 +20,15 @@ SET(test_dbi_backend_SOURCES
test-dbi-stuff.c
)
GNC_ADD_TEST(test-backend-dbi "${test_dbi_backend_SOURCES}"
BACKEND_DBI_TEST_INCLUDE_DIRS BACKEND_DBI_TEST_LIBS
)
# This test does not work on Win32
IF (NOT WIN32)
GNC_ADD_TEST(test-backend-dbi "${test_dbi_backend_SOURCES}"
BACKEND_DBI_TEST_INCLUDE_DIRS BACKEND_DBI_TEST_LIBS
)
TARGET_COMPILE_DEFINITIONS(test-backend-dbi PRIVATE
TEST_MYSQL_URL=\"${TEST_MYSQL_URL}\"
TEST_PGSQL_URL=\"${TEST_PGSQL_URL}\"
DBI_TEST_XML_FILENAME=\"${CMAKE_CURRENT_SOURCE_DIR}/test-dbi.xml\"
)
TARGET_COMPILE_DEFINITIONS(test-backend-dbi PRIVATE
TEST_MYSQL_URL=\"${TEST_MYSQL_URL}\"
TEST_PGSQL_URL=\"${TEST_PGSQL_URL}\"
DBI_TEST_XML_FILENAME=\"${CMAKE_CURRENT_SOURCE_DIR}/test-dbi.xml\"
)
ENDIF()

View File

@ -1,4 +1,42 @@
FUNCTION(GET_GUILE_ENV)
SET(_GNC_MODULE_PATH ${CMAKE_BINARY_DIR}/lib:${CMAKE_BINARY_DIR}/lib/gnucash)
IF (WIN32)
SET(_GNC_MODULE_PATH ${CMAKE_BINARY_DIR}/bin)
ENDIF()
SET(env "")
LIST(APPEND env "GNC_UNINSTALLED=yes")
LIST(APPEND env "GNC_BUILDDIR=${CMAKE_BINARY_DIR}")
LIST(APPEND env "GUILE_WARN_DEPRECATED=no")
LIST(APPEND env "GNC_MODULE_PATH=${_GNC_MODULE_PATH}")
IF (APPLE)
LIST(APPEND env "DYLD_LIBRARY_PATH=${_GNC_MODULE_PATH}")
ENDIF()
IF (UNIX)
LIST(APPEND env LD_LIBRARY_PATH=${_GNC_MODULE_PATH})
ENDIF()
IF (NOT WIN32)
LIST(APPEND env "GUILE_LOAD_COMPILED_PATH=${CMAKE_BINARY_DIR}/lib/gnucash/scm/ccache/2.0")
ENDIF()
SET(guile_load_paths "")
LIST(APPEND guile_load_paths ${CMAKE_CURRENT_SOURCE_DIR}/mod-foo)
LIST(APPEND guile_load_paths ${CMAKE_CURRENT_SOURCE_DIR}/mod-bar)
LIST(APPEND guile_load_paths ${CMAKE_CURRENT_SOURCE_DIR}/mod-baz)
IF (WIN32)
LIST(APPEND guile_load_paths ${CMAKE_BINARY_DIR}/share/gnucash/scm)
ENDIF()
SET(guile_load_path "${guile_load_paths}")
IF (WIN32)
STRING(REPLACE ";" "\\\\;" GUILE_LOAD_PATH "${guile_load_path}")
ELSE()
STRING(REPLACE ";" ":" GUILE_LOAD_PATH "${guile_load_path}")
ENDIF()
LIST(APPEND env "GUILE_LOAD_PATH=${GUILE_LOAD_PATH}")
SET(GUILE_ENV ${env} PARENT_SCOPE)
ENDFUNCTION()
FUNCTION(GNC_ADD_TEST _TARGET _SOURCE_FILES TEST_INCLUDE_VAR_NAME TEST_LIBS_VAR_NAME)
SET(HAVE_ENV_VARS FALSE)
IF (${ARGC} GREATER 4)
@ -14,7 +52,7 @@ FUNCTION(GNC_ADD_TEST _TARGET _SOURCE_FILES TEST_INCLUDE_VAR_NAME TEST_LIBS_VAR_
IF (${HAVE_ENV_VARS})
SET(CMAKE_COMMAND_TMP "")
IF (${CMAKE_VERSION} VERSION_GREATER 3.1)
SET(CMAKE_COMMAND_TMP ${CMAKE_COMMAND} -E env)
SET(CMAKE_COMMAND_TMP ${CMAKE_COMMAND} -E env "${ARGN}")
ENDIF()
ADD_TEST(${_TARGET} ${CMAKE_COMMAND_TMP}
${CMAKE_BINARY_DIR}/bin/${_TARGET}
@ -27,16 +65,9 @@ FUNCTION(GNC_ADD_TEST _TARGET _SOURCE_FILES TEST_INCLUDE_VAR_NAME TEST_LIBS_VAR_
ENDFUNCTION()
FUNCTION(GNC_ADD_TEST_WITH_GUILE _TARGET _SOURCE_FILES TEST_INCLUDE_VAR_NAME TEST_LIBS_VAR_NAME)
SET(_GNC_MODULE_PATH ${CMAKE_BINARY_DIR}/lib:${CMAKE_BINARY_DIR}/lib/gnucash)
GET_GUILE_ENV()
GNC_ADD_TEST(${_TARGET} "${_SOURCE_FILES}" "${TEST_INCLUDE_VAR_NAME}" "${TEST_LIBS_VAR_NAME}"
GNC_UNINSTALLED=yes
GNC_BUILDDIR=${CMAKE_BINARY_DIR}
GUILE_WARN_DEPRECATED=no
GNC_MODULE_PATH=${_GNC_MODULE_PATH}
DYLD_LIBRARY_PATH=${_GNC_MODULE_PATH}
LD_LIBRARY_PATH=${_GNC_MODULE_PATH}
GUILE_LOAD_COMPILED_PATH=${CMAKE_BINARY_DIR}/lib/gnucash/scm/ccache/2.0
${ARGN}
"${GUILE_ENV};${ARGN}"
)
ENDFUNCTION()
@ -46,19 +77,9 @@ FUNCTION(GNC_ADD_SCHEME_TEST _TARGET _SOURCE_FILE)
IF (${CMAKE_VERSION} VERSION_GREATER 3.1)
SET(CMAKE_COMMAND_TMP ${CMAKE_COMMAND} -E env)
ENDIF()
SET(_GNC_MODULE_PATH ${CMAKE_BINARY_DIR}/lib:${CMAKE_BINARY_DIR}/lib/gnucash)
SET(GUILE_ENV
GNC_UNINSTALLED=yes
GNC_BUILDDIR=${CMAKE_BINARY_DIR}
GUILE_WARN_DEPRECATED=no
GNC_MODULE_PATH=${_GNC_MODULE_PATH}
DYLD_LIBRARY_PATH=${_GNC_MODULE_PATH}
LD_LIBRARY_PATH=${_GNC_MODULE_PATH}
GUILE_LOAD_COMPILED_PATH=${CMAKE_BINARY_DIR}/lib/gnucash/scm/ccache/2.0
${ARGN}
)
ADD_TEST(${_TARGET} ${CMAKE_COMMAND_TMP}
${GUILE_EXECUTABLE} --debug -l ${CMAKE_CURRENT_SOURCE_DIR}/${_SOURCE_FILE} -c "(exit (run-test))"
)
SET_TESTS_PROPERTIES(${_TARGET} PROPERTIES ENVIRONMENT "${GUILE_ENV}")
GET_GUILE_ENV()
SET_TESTS_PROPERTIES(${_TARGET} PROPERTIES ENVIRONMENT "${GUILE_ENV};${ARGN}")
ENDFUNCTION()

View File

@ -42,8 +42,11 @@ SET(test_engine_SOURCES
utest-Transaction.c
)
ADD_ENGINE_TEST(test-engine "${test_engine_SOURCES}")
TARGET_COMPILE_OPTIONS(test-engine PRIVATE -Wno-write-strings)
# This test does not run on Win32
IF (NOT WIN32)
ADD_ENGINE_TEST(test-engine "${test_engine_SOURCES}")
TARGET_COMPILE_OPTIONS(test-engine PRIVATE -Wno-write-strings)
ENDIF()
ADD_ENGINE_TEST(test-account-object test-account-object.c)
ADD_ENGINE_TEST(test-group-vs-book test-group-vs-book.c)
@ -63,6 +66,7 @@ ADD_ENGINE_TEST(test-vendor test-vendor.c)
############################
# This is a C test that needs GUILE environment variables set.
# It does not pass on Win32.
GNC_ADD_TEST_WITH_GUILE(test-scm-query test-scm-query.c ENGINE_TEST_INCLUDE_DIRS ENGINE_TEST_LIBS)
############################

View File

@ -1,6 +1,4 @@
# TESTCOUNTS: { dir: gnc-module/test, test_count: 12 }
ADD_SUBDIRECTORY(mod-foo)
ADD_SUBDIRECTORY(mod-bar)
ADD_SUBDIRECTORY(mod-baz)
@ -21,45 +19,30 @@ MACRO(ADD_GNC_MODULE_TEST _TARGET _SOURCE_FILES)
GNC_ADD_TEST(${_TARGET} "${_SOURCE_FILES}" GNC_MODULE_TEST_INCLUDE_DIRS GNC_MODULE_TEST_LIBS)
ENDMACRO()
SET(_GNC_MODULE_PATH ${CMAKE_BINARY_DIR}/lib:${CMAKE_BINARY_DIR}/lib/gnucash)
SET(GUILE_ENV
GNC_UNINSTALLED=yes
GNC_BUILDDIR=${CMAKE_BINARY_DIR}
GUILE_WARN_DEPRECATED=no
GNC_MODULE_PATH=${_GNC_MODULE_PATH}
DYLD_LIBRARY_PATH=${_GNC_MODULE_PATH}
LD_LIBRARY_PATH=${_GNC_MODULE_PATH}
GUILE_LOAD_COMPILED_PATH=${CMAKE_BINARY_DIR}/lib/gnucash/scm/ccache/2.0
)
FUNCTION(RUN_TEST_WITH_GUILE _TARGET _SOURCE_FILE)
GET_GUILE_ENV()
SET(CMAKE_COMMAND_TMP "")
IF (${CMAKE_VERSION} VERSION_GREATER 3.1)
SET(CMAKE_COMMAND_TMP ${CMAKE_COMMAND} -E env)
SET(CMAKE_COMMAND_TMP ${CMAKE_COMMAND} -E env "${GUILE_ENV}")
ENDIF()
ADD_TEST(NAME ${_TARGET}
COMMAND ${CMAKE_COMMAND_TMP}
${GUILE_EXECUTABLE} -s ${_SOURCE_FILE}
)
SET_TESTS_PROPERTIES(${_TARGET} PROPERTIES ENVIRONMENT "${GUILE_ENV};${ARGN}")
ENDFUNCTION()
GNC_ADD_TEST_WITH_GUILE(test-load-c test-load-c.c GNC_MODULE_TEST_INCLUDE_DIRS GNC_MODULE_TEST_LIBS
GUILE_LOAD_PATH=${CMAKE_CURRENT_SOURCE_DIR}/mod-foo
)
GNC_ADD_TEST_WITH_GUILE(test-load-c test-load-c.c GNC_MODULE_TEST_INCLUDE_DIRS GNC_MODULE_TEST_LIBS)
RUN_TEST_WITH_GUILE(test-load-scm ${CMAKE_CURRENT_SOURCE_DIR}/test-load-scm.in)
RUN_TEST_WITH_GUILE(test-load-deps ${CMAKE_CURRENT_SOURCE_DIR}/test-load-deps.in)
RUN_TEST_WITH_GUILE(test-load-scm ${CMAKE_CURRENT_SOURCE_DIR}/test-load-scm.in
GUILE_LOAD_PATH=${CMAKE_CURRENT_SOURCE_DIR}/mod-foo
)
RUN_TEST_WITH_GUILE(test-load-deps ${CMAKE_CURRENT_SOURCE_DIR}/test-load-deps.in
GUILE_LOAD_PATH=${CMAKE_CURRENT_SOURCE_DIR}/mod-foo:${CMAKE_CURRENT_SOURCE_DIR}/mod-baz
)
RUN_TEST_WITH_GUILE(test-scm-init ${CMAKE_CURRENT_SOURCE_DIR}/test-scm-init.in)
RUN_TEST_WITH_GUILE(test-scm-multi ${CMAKE_CURRENT_SOURCE_DIR}/test-scm-multi.in
GUILE_LOAD_PATH=${CMAKE_CURRENT_SOURCE_DIR}/mod-foo:${CMAKE_CURRENT_SOURCE_DIR}/mod-bar
)
RUN_TEST_WITH_GUILE(test-scm-multi ${CMAKE_CURRENT_SOURCE_DIR}/test-scm-multi.in)
RUN_TEST_WITH_GUILE(test-scm-dynload ${CMAKE_CURRENT_SOURCE_DIR}/test-scm-dynload.in)
GNC_ADD_TEST_WITH_GUILE(test-modsysver test-modsysver.c
@ -72,9 +55,13 @@ GNC_ADD_TEST_WITH_GUILE(test-agedver test-agedver.c
GNC_MODULE_TEST_INCLUDE_DIRS GNC_MODULE_TEST_LIBS
)
SET(_LIBDIR ${CMAKE_BINARY_DIR}/lib)
IF (WIN32)
SET(_LIBDIR ${CMAKE_BINARY_DIR}/bin)
ENDIF()
GNC_ADD_TEST(test-dynload test-dynload.c
GNC_MODULE_TEST_INCLUDE_DIRS GNC_MODULE_TEST_LIBS
LIBDIR=${CMAKE_BINARY_DIR}/lib
LIBDIR=${_LIBDIR}
)
SET(GUILE ${GUILE_EXECUTABLE})
@ -82,22 +69,19 @@ CONFIGURE_FILE(test-gwrapped-c.in test-gwrapped-c)
CONFIGURE_FILE(test-scm-module.in test-scm-module)
FUNCTION(RUN_GUILE_SHELL_TEST _TARGET _SOURCE_FILE)
GET_GUILE_ENV()
SET(CMAKE_COMMAND_TMP "")
IF (${CMAKE_VERSION} VERSION_GREATER 3.1)
SET(CMAKE_COMMAND_TMP ${CMAKE_COMMAND} -E env)
SET(CMAKE_COMMAND_TMP ${CMAKE_COMMAND} -E env "${GUILE_ENV}")
ENDIF()
ADD_TEST(NAME ${_TARGET}
COMMAND ${CMAKE_COMMAND_TMP}
${SHELL} ${_SOURCE_FILE}
)
SET_TESTS_PROPERTIES(${_TARGET} PROPERTIES ENVIRONMENT "${GUILE_ENV};${ARGN}")
SET_TESTS_PROPERTIES(${_TARGET} PROPERTIES ENVIRONMENT "${GUILE_ENV}")
ENDFUNCTION()
RUN_GUILE_SHELL_TEST(test-gwrapped-c ${CMAKE_CURRENT_BINARY_DIR}/test-gwrapped-c
GUILE_LOAD_PATH=${CMAKE_CURRENT_SOURCE_DIR}/mod-foo
)
RUN_GUILE_SHELL_TEST(test-gwrapped-c ${CMAKE_CURRENT_BINARY_DIR}/test-gwrapped-c)
RUN_GUILE_SHELL_TEST(test-scm-module ${CMAKE_CURRENT_BINARY_DIR}/test-scm-module
GUILE_LOAD_PATH=${CMAKE_CURRENT_SOURCE_DIR}/mod-foo
)
RUN_GUILE_SHELL_TEST(test-scm-module ${CMAKE_CURRENT_BINARY_DIR}/test-scm-module)

View File

@ -53,7 +53,14 @@ guile_main(void *closure, int argc, char ** argv)
g_test_message(" test-dynload.c: testing dynamic linking of libgnc-module ...");
#ifdef G_OS_WIN32
/* MinGW builds libgnc-module-0.dll */
modpath = g_module_build_path ("../.libs", "gnc-module-0");
if (libdir == NULL)
{
modpath = g_module_build_path ("../.libs", "gnc-module-0");
}
else
{
modpath = g_module_build_path (libdir, "gnc-module");
}
#elif defined(PLATFORM_OSX)
/* We build libgnc-module as a shared library for testing, and on OSX
* that means that g_module_build_path (), which uses ".so", doesn't

View File

@ -15,8 +15,11 @@ SET(test_csv_imp_SOURCES
utest-gnc-csv-model.c
)
GNC_ADD_TEST(test-csv-imp "${test_csv_imp_SOURCES}"
CSV_IMP_TEST_INCLUDE_DIRS CSV_IMP_TEST_LIBS
SRCDIR=${CMAKE_CURRENT_SOURCE_DIR}
)
# This test does not run in Win32
IF (NOT WIN32)
GNC_ADD_TEST(test-csv-imp "${test_csv_imp_SOURCES}"
CSV_IMP_TEST_INCLUDE_DIRS CSV_IMP_TEST_LIBS
SRCDIR=${CMAKE_CURRENT_SOURCE_DIR}
)
ENDIF()

View File

@ -22,5 +22,10 @@ SET(test_qof_SOURCES
${CMAKE_SOURCE_DIR}/src/test-core/unittest-support.c
)
GNC_ADD_TEST(test-qof "${test_qof_SOURCES}" TEST_QOF_INCLUDE_DIRS TEST_QOF_LIBS)
TARGET_COMPILE_DEFINITIONS(test-qof PRIVATE TESTPROG=test_qof)
# This test does not on Win32. Worse, it causes a dialog box to
# pop up due to an assertion. This interferes with running the tests
# unattended.
IF (NOT WIN32)
GNC_ADD_TEST(test-qof "${test_qof_SOURCES}" TEST_QOF_INCLUDE_DIRS TEST_QOF_LIBS)
TARGET_COMPILE_DEFINITIONS(test-qof PRIVATE TESTPROG=test_qof)
ENDIF()