mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
Convert shell-executed scheme tests to run directly from Guile.
I.e., remove the shell invocation and with it the need to set the shebang. Surprisingly this required some build-system modifications particularly for cmake in order to correctly set the environment.
This commit is contained in:
@@ -54,7 +54,7 @@ SET(GUILE_DEPENDS gnc-module)
|
||||
|
||||
GNC_ADD_SCHEME_TARGETS(scm-gnc-module
|
||||
"${gnc_module_SCHEME}"
|
||||
${GUILE_OUTPUT_DIR}
|
||||
${GUILE_OUTPUT_DIR}
|
||||
"${GUILE_DEPENDS}"
|
||||
FALSE
|
||||
)
|
||||
|
@@ -34,16 +34,6 @@ ENDFUNCTION()
|
||||
|
||||
GNC_ADD_TEST_WITH_GUILE(test-load-c test-load-c.c GNC_MODULE_TEST_INCLUDE_DIRS GNC_MODULE_TEST_LIBS "GNC_MODULE_PATH=${CMAKE_BINARY_DIR}/lib/gnucash/test")
|
||||
|
||||
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-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)
|
||||
|
||||
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
|
||||
GNC_MODULE_TEST_INCLUDE_DIRS GNC_MODULE_TEST_LIBS
|
||||
)
|
||||
@@ -64,31 +54,36 @@ GNC_ADD_TEST(test-dynload test-dynload.c
|
||||
LIBDIR=${_LIBDIR}
|
||||
)
|
||||
|
||||
SET(GUILE ${GUILE_EXECUTABLE})
|
||||
CONFIGURE_FILE(test-gwrapped-c.in test-gwrapped-c @ONLY)
|
||||
CONFIGURE_FILE(test-scm-module.in test-scm-module @ONLY)
|
||||
CONFIGURE_FILE(test-load-deps.in test-load-deps @ONLY)
|
||||
CONFIGURE_FILE(test-load-scm.in test-load-scm @ONLY)
|
||||
CONFIGURE_FILE(test-scm-dynload.in test-scm-dynload @ONLY)
|
||||
CONFIGURE_FILE(test-scm-init.in test-scm-init @ONLY)
|
||||
CONFIGURE_FILE(test-scm-multi.in test-scm-multi @ONLY)
|
||||
|
||||
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 "${GUILE_ENV};GNC_MODULE_PATH=${CMAKE_BINARY_DIR}/lib/gnucash/test")
|
||||
ENDIF()
|
||||
ADD_TEST(NAME ${_TARGET}
|
||||
COMMAND ${CMAKE_COMMAND_TMP}
|
||||
${SHELL} ${_SOURCE_FILE}
|
||||
SET(test_gnc_module_SCHEME
|
||||
test-gnc-module-scm-init.scm
|
||||
test-gnc-module-load-scm.scm
|
||||
test-gnc-module-swigged-c.scm
|
||||
test-gnc-module-load-deps.scm
|
||||
test-gnc-module-scm-dynload.scm
|
||||
test-gnc-module-scm-module.scm
|
||||
test-gnc-module-scm-multi.scm
|
||||
)
|
||||
SET_TESTS_PROPERTIES(${_TARGET} PROPERTIES ENVIRONMENT "${GUILE_ENV};GNC_MODULE_PATH=${CMAKE_BINARY_DIR}/lib/gnucash/test")
|
||||
ENDFUNCTION()
|
||||
|
||||
RUN_GUILE_SHELL_TEST(test-gwrapped-c ${CMAKE_CURRENT_BINARY_DIR}/test-gwrapped-c)
|
||||
SET(GUILE_DEPENDS gnc-module scm-test-core scm-mod-foo scm-mod-baz)
|
||||
|
||||
RUN_GUILE_SHELL_TEST(test-scm-module ${CMAKE_CURRENT_BINARY_DIR}/test-scm-module)
|
||||
GNC_ADD_SCHEME_TARGETS(test-gnc-modules-scm
|
||||
"${test_gnc_module_SCHEME}"
|
||||
"gnucash/gnc-modules/test"
|
||||
"${GUILE_DEPENDS}"
|
||||
TRUE
|
||||
)
|
||||
|
||||
GNC_ADD_SCHEME_TESTS("${test_gnc_module_SCHEME}")
|
||||
IF(NOT WIN32)
|
||||
# This little dance is needed because gnc_module_init will assert if
|
||||
# it finds libgncmod_futuremod.so outside of a test that expects it.
|
||||
GET_GUILE_ENV()
|
||||
SET(_GNC_MODULE_PATH "${CMAKE_BINARY_DIR}/lib:${CMAKE_BINARY_DIR}/lib/gnucash:${CMAKE_BINARY_DIR}/lib/gnucash/test")
|
||||
FOREACH(test_file ${test_gnc_module_SCHEME})
|
||||
GET_FILENAME_COMPONENT(basename ${test_file} NAME_WE)
|
||||
SET_TESTS_PROPERTIES(${basename} PROPERTIES ENVIRONMENT "${GUILE_ENV};GNC_MODULE_PATH=${_GNC_MODULE_PATH}")
|
||||
ENDFOREACH()
|
||||
ENDIF()
|
||||
|
||||
SET(test_gnc_module_SOURCE_DIST
|
||||
test-agedver.c
|
||||
@@ -100,13 +95,7 @@ SET(test_gnc_module_SOURCE_DIST
|
||||
|
||||
SET(test_gnc_module_EXTRA_DIST
|
||||
README
|
||||
test-gwrapped-c.in
|
||||
test-load-deps.in
|
||||
test-load-scm.in
|
||||
test-scm-dynload.in
|
||||
test-scm-init.in
|
||||
test-scm-module.in
|
||||
test-scm-multi.in
|
||||
${test_gnc_module_SCHEME}
|
||||
)
|
||||
|
||||
SET_LOCAL_DIST(test_gnc_module_DIST_local CMakeLists.txt Makefile.am README ${test_gnc_module_SOURCE_DIST} ${test_gnc_module_EXTRA_DIST})
|
||||
|
@@ -14,17 +14,22 @@ AM_CPPFLAGS = \
|
||||
|
||||
TESTS = \
|
||||
test-load-c \
|
||||
test-load-scm \
|
||||
test-gwrapped-c \
|
||||
test-scm-module \
|
||||
test-scm-multi \
|
||||
test-load-deps \
|
||||
test-modsysver \
|
||||
test-incompatdep \
|
||||
test-agedver \
|
||||
test-dynload \
|
||||
test-scm-dynload \
|
||||
test-scm-init
|
||||
${SCM_TESTS}
|
||||
|
||||
SCM_TESTS = \
|
||||
test-gnc-module-load-scm \
|
||||
test-gnc-module-swigged-c \
|
||||
test-gnc-module-scm-module \
|
||||
test-gnc-module-scm-multi \
|
||||
test-gnc-module-load-deps \
|
||||
test-gnc-module-scm-dynload \
|
||||
test-gnc-module-scm-init
|
||||
|
||||
SCM_TEST_SRCS = $(SCM_TESTS:%=%.scm)
|
||||
|
||||
GNC_TEST_DEPS = \
|
||||
--gnc-module-dir ${top_builddir}/libgnucash/gnc-module \
|
||||
@@ -58,14 +63,14 @@ check_PROGRAMS = \
|
||||
|
||||
test_dynload_LDFLAGS = ${GUILE_LIBS}
|
||||
|
||||
$(SCM_TESTS): %: $(srcdir)/%.scm Makefile
|
||||
echo 'export GNC_BUILDDIR="${abs_top_builddir}";' > $@
|
||||
echo 'export GNC_UNINSTALLED=yes;' >> $@
|
||||
echo '${GUILE} --debug -l $(srcdir)/$*.scm -c "(exit (run-test))"' >> $@
|
||||
chmod a+x $@
|
||||
|
||||
EXTRA_DIST = \
|
||||
test-gwrapped-c \
|
||||
test-load-deps \
|
||||
test-load-scm \
|
||||
test-scm-dynload \
|
||||
test-scm-init \
|
||||
test-scm-module \
|
||||
test-scm-multi \
|
||||
${SCM_TEST_SRCS} \
|
||||
CMakeLists.txt
|
||||
|
||||
foo:
|
||||
|
@@ -27,6 +27,13 @@ TARGET_INCLUDE_DIRECTORIES(gncmodbaz PRIVATE
|
||||
${GUILE_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
GNC_ADD_SCHEME_TARGETS(scm-mod-baz
|
||||
gnucash/baz.scm
|
||||
"gnucash"
|
||||
gncmodbaz
|
||||
TRUE
|
||||
)
|
||||
|
||||
SET_TARGET_PROPERTIES(baz gncmodbaz PROPERTIES
|
||||
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib/gnucash/test
|
||||
ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib/gnucash/test
|
||||
|
@@ -21,6 +21,13 @@ TARGET_INCLUDE_DIRECTORIES(gncmodfoo PRIVATE
|
||||
${GUILE_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
GNC_ADD_SCHEME_TARGETS(scm-mod-foo
|
||||
gnucash/foo.scm
|
||||
"gnucash"
|
||||
gncmodfoo
|
||||
TRUE
|
||||
)
|
||||
|
||||
SET_TARGET_PROPERTIES(foo gncmodfoo PROPERTIES
|
||||
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib/gnucash/test
|
||||
ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib/gnucash/test
|
||||
|
@@ -1,8 +1,3 @@
|
||||
#! @SHELL@
|
||||
exec ${GUILE} -s $0 "$@"
|
||||
!#
|
||||
;; test-load-deps.scm : load gnc-mod-baz, which depends on gnc-mod-foo
|
||||
|
||||
(use-modules (gnucash unittest-support))
|
||||
(define log-domain "gnc.module")
|
||||
(define check (new-TestErrorStruct))
|
||||
@@ -25,7 +20,3 @@ exec ${GUILE} -s $0 "$@"
|
||||
(g-log-remove-handler log-domain handler)
|
||||
|
||||
(exit 0)
|
||||
|
||||
;; Local Variables:
|
||||
;; mode: scheme
|
||||
;; End:
|
@@ -1,7 +1,3 @@
|
||||
#! @SHELL@
|
||||
exec ${GUILE} -s $0 "$@"
|
||||
!#
|
||||
|
||||
(use-modules (gnucash unittest-support))
|
||||
(define log-domain "gnc.module")
|
||||
(define check (new-TestErrorStruct))
|
||||
@@ -15,6 +11,4 @@ exec ${GUILE} -s $0 "$@"
|
||||
(gnc:module-system-init)
|
||||
(gnc:module-load "gnucash/foo" 0)
|
||||
(g-log-remove-handler log-domain handler)
|
||||
;; Local Variables:
|
||||
;; mode: scheme
|
||||
;; End:
|
||||
(exit 0)
|
5
libgnucash/gnc-module/test/test-gnc-module-scm-dynload.scm
Executable file
5
libgnucash/gnc-module/test/test-gnc-module-scm-dynload.scm
Executable file
@@ -0,0 +1,5 @@
|
||||
(if (or (string=? (version) "1.3")
|
||||
(string=? (version) "1.3.4"))
|
||||
(dynamic-link "libgnc-module.so")
|
||||
(dynamic-link "libgnc-module"))
|
||||
(exit 0)
|
@@ -1,8 +1,3 @@
|
||||
#! @SHELL@
|
||||
echo " test-scm-init: testing Scheme-only module system init. ";
|
||||
exec ${GUILE} -s $0 "$@"
|
||||
!#
|
||||
|
||||
(use-modules (gnucash unittest-support))
|
||||
(define log-domain "gnc.module")
|
||||
(define check (new-TestErrorStruct))
|
||||
@@ -17,7 +12,4 @@ exec ${GUILE} -s $0 "$@"
|
||||
(gnc:module-system-init)
|
||||
|
||||
(g-log-remove-handler log-domain handler)
|
||||
|
||||
;; LocalVariables:
|
||||
;; mode: scheme
|
||||
;; End:
|
||||
(exit 0)
|
14
libgnucash/gnc-module/test/test-gnc-module-scm-module.scm
Executable file
14
libgnucash/gnc-module/test/test-gnc-module-scm-module.scm
Executable file
@@ -0,0 +1,14 @@
|
||||
(use-modules (gnucash unittest-support))
|
||||
(define log-domain "gnc.module")
|
||||
(define check (new-TestErrorStruct))
|
||||
(define log-level (G-LOG-LEVEL-WARNING))
|
||||
(define msg "Module '../../../libgnucash/gnc-module/test/misc-mods/.libs/libgncmod_futuremodsys.so' requires newer module system\n")
|
||||
(TestErrorStruct-log-domain-set check log-domain)
|
||||
(TestErrorStruct-log-level-set check log-level)
|
||||
(TestErrorStruct-msg-set check msg)
|
||||
(define handler (test-set-checked-handler log-domain log-level check))
|
||||
(use-modules (gnucash gnc-module))
|
||||
(gnc:module-system-init)
|
||||
(if (not (gnc:module-load "gnucash/foo" 0)) (exit -1))
|
||||
(exit (foo:scheme-hello))
|
||||
(g-log-remove-handler log-domain handler)
|
@@ -1,6 +1,3 @@
|
||||
#! @SHELL@
|
||||
exec ${GUILE} -s $0 "$@"
|
||||
!#
|
||||
(use-modules (gnucash unittest-support))
|
||||
(define log-domain "gnc.module")
|
||||
(define check (new-TestErrorStruct))
|
||||
@@ -12,7 +9,7 @@ exec ${GUILE} -s $0 "$@"
|
||||
(define handler (test-set-checked-handler log-domain log-level check))
|
||||
|
||||
(use-modules (gnucash gnc-module))
|
||||
(gnc:module-system-init)
|
||||
(gnc:module-system-init)
|
||||
(gnc:module-load "gnucash/foo" 0)
|
||||
(foo-hello)
|
||||
(foo:scheme-hello)
|
||||
@@ -23,7 +20,4 @@ exec ${GUILE} -s $0 "$@"
|
||||
(bar:scheme-hello)
|
||||
|
||||
(g-log-remove-handler log-domain handler)
|
||||
|
||||
;; Local Variables:
|
||||
;; mode: scheme
|
||||
;; End:
|
||||
(exit 0)
|
14
libgnucash/gnc-module/test/test-gnc-module-swigged-c.scm
Executable file
14
libgnucash/gnc-module/test/test-gnc-module-swigged-c.scm
Executable file
@@ -0,0 +1,14 @@
|
||||
(use-modules (gnucash unittest-support))
|
||||
(define log-domain "gnc.module")
|
||||
(define check (new-TestErrorStruct))
|
||||
(define log-level (G-LOG-LEVEL-WARNING))
|
||||
(define msg "Module '../../../libgnucash/gnc-module/test/misc-mods/.libs/libgncmod_futuremodsys.so' requires newer module system\n")
|
||||
(TestErrorStruct-log-domain-set check log-domain)
|
||||
(TestErrorStruct-log-level-set check log-level)
|
||||
(TestErrorStruct-msg-set check msg)
|
||||
(define handler (test-set-checked-handler log-domain log-level check))
|
||||
(use-modules (gnucash gnc-module))
|
||||
(gnc:module-system-init)
|
||||
(gnc:module-load "gnucash/foo" 0)
|
||||
(exit (eq? 10 (foo-hello)))
|
||||
(g-log-remove-handler log-domain handler)
|
@@ -1,15 +0,0 @@
|
||||
#! @SHELL@
|
||||
${GUILE} -c "(use-modules (gnucash unittest-support))
|
||||
(define log-domain \"gnc.module\")
|
||||
(define check (new-TestErrorStruct))
|
||||
(define log-level (G-LOG-LEVEL-WARNING))
|
||||
(define msg \"Module '../../../libgnucash/gnc-module/test/misc-mods/.libs/libgncmod_futuremodsys.so' requires newer module system\n\")
|
||||
(TestErrorStruct-log-domain-set check log-domain)
|
||||
(TestErrorStruct-log-level-set check log-level)
|
||||
(TestErrorStruct-msg-set check msg)
|
||||
(define handler (test-set-checked-handler log-domain log-level check))
|
||||
(use-modules (gnucash gnc-module))
|
||||
(gnc:module-system-init)
|
||||
(gnc:module-load \"gnucash/foo\" 0)
|
||||
(exit (eq? 10 (foo-hello)))
|
||||
(g-log-remove-handler log-domain handler)"
|
@@ -1,15 +0,0 @@
|
||||
#! @SHELL@
|
||||
echo " test-scm-dynload: testing dynamic-link of libgnc-module from Scheme.";
|
||||
exec ${GUILE} -s $0 "$@"
|
||||
!#
|
||||
|
||||
(if (or (string=? (version) "1.3")
|
||||
(string=? (version) "1.3.4"))
|
||||
(dynamic-link "libgnc-module.so")
|
||||
(dynamic-link "libgnc-module"))
|
||||
|
||||
;; LocalVariables:
|
||||
;; mode: scheme
|
||||
;; End:
|
||||
|
||||
|
@@ -1,15 +0,0 @@
|
||||
#! @SHELL@
|
||||
${GUILE} -c "(use-modules (gnucash unittest-support))
|
||||
(define log-domain \"gnc.module\")
|
||||
(define check (new-TestErrorStruct))
|
||||
(define log-level (G-LOG-LEVEL-WARNING))
|
||||
(define msg \"Module '../../../libgnucash/gnc-module/test/misc-mods/.libs/libgncmod_futuremodsys.so' requires newer module system\n\")
|
||||
(TestErrorStruct-log-domain-set check log-domain)
|
||||
(TestErrorStruct-log-level-set check log-level)
|
||||
(TestErrorStruct-msg-set check msg)
|
||||
(define handler (test-set-checked-handler log-domain log-level check))
|
||||
(use-modules (gnucash gnc-module))
|
||||
(gnc:module-system-init)
|
||||
(if (not (gnc:module-load \"gnucash/foo\" 0)) (exit -1))
|
||||
(exit (foo:scheme-hello))
|
||||
(g-log-remove-handler log-domain handler)"
|
Reference in New Issue
Block a user