@@ -34,6 +34,15 @@ function(get_guile_env)
3434 set (guile_load_paths "" )
3535 list (APPEND guile_load_paths "${CMAKE_BINARY_DIR} /${GUILE_REL_SITEDIR} " )
3636 list (APPEND guile_load_paths "${CMAKE_BINARY_DIR} /${GUILE_REL_SITEDIR} /gnucash/deprecated" ) # Path to gnucash' deprecated modules
37+ if (GUILE_COVERAGE)
38+ list (APPEND guile_load_paths "${CMAKE_BINARY_DIR} /${GUILE_REL_SITEDIR} /gnucash" )
39+ list (APPEND guile_load_paths "${CMAKE_BINARY_DIR} /${GUILE_REL_SITEDIR} /gnucash/report" )
40+ list (APPEND guile_load_paths "${CMAKE_BINARY_DIR} /${GUILE_REL_SITEDIR} /gnucash/reports" )
41+ list (APPEND guile_load_paths "${CMAKE_BINARY_DIR} /${GUILE_REL_SITEDIR} /gnucash/engine" )
42+ list (APPEND guile_load_paths "${CMAKE_BINARY_DIR} /${GUILE_REL_SITEDIR} /gnucash/app-utils" )
43+ list (APPEND guile_load_paths "${CMAKE_BINARY_DIR} /${GUILE_REL_SITEDIR} /gnucash/qif-import" )
44+
45+ endif ()
3746 set (guile_load_path "${guile_load_paths} " )
3847
3948 set (guile_load_compiled_paths "" )
@@ -103,20 +112,46 @@ function(gnc_add_test_with_guile _TARGET _SOURCE_FILES TEST_INCLUDE_VAR_NAME TES
103112 )
104113endfunction ()
105114
106-
107115function (gnc_add_scheme_test _TARGET _SOURCE_FILE)
108- add_test (NAME ${_TARGET} COMMAND ${GUILE_EXECUTABLE} --debug -c "
109- (set! %load-hook
116+ if (GUILE_COVERAGE)
117+ add_test (NAME ${_TARGET} COMMAND ${GUILE_EXECUTABLE} --debug -c "
118+ (set! %load-hook
110119 (lambda (filename)
111- (when (and filename
112- (string-contains filename \" ${GUILE_REL_SITEDIR} \" )
113- (not (string-prefix? \" ${CMAKE_BINARY_DIR} \" filename)))
120+ (when (and filename
121+ (string-contains filename \" ${GUILE_REL_SITEDIR} \" )
122+ (not (string-prefix? \" ${CMAKE_BINARY_DIR} \" filename)))
114123 (format #t \" %load-path = ~s~%\" %load-path)
115124 (format #t \" %load-compiled-path = ~s~%\" %load-compiled-path)
116125 (error \" Loading guile/site file from outside build tree!\" filename))))
117- (load-from-path \" ${_TARGET} \" )
118- (exit (run-test))"
119- )
126+ (load-from-path \" ${_TARGET} \" )
127+ (use-modules (system vm coverage)
128+ (system vm vm))
129+ (call-with-values (lambda ()
130+ (with-code-coverage
131+ (lambda ()
132+ (run-test))))
133+
134+ (lambda (data result)
135+ (let ((port (open-output-file \" ${coverage_dir} /${_TARGET} _results.info\" )))
136+ (coverage-data->lcov data port)
137+ (close port))
138+ (exit result)))
139+ "
140+ )
141+ else ()
142+ add_test (NAME ${_TARGET} COMMAND ${GUILE_EXECUTABLE} --debug -c "
143+ (set! %load-hook
144+ (lambda (filename)
145+ (when (and filename
146+ (string-contains filename \" ${GUILE_REL_SITEDIR} \" )
147+ (not (string-prefix? \" ${CMAKE_BINARY_DIR} \" filename)))
148+ (format #t \" %load-path = ~s~%\" %load-path)
149+ (format #t \" %load-compiled-path = ~s~%\" %load-compiled-path)
150+ (error \" Loading guile/site file from outside build tree!\" filename))))
151+ (load-from-path \" ${_TARGET} \" )
152+ (exit (run-test))"
153+ )
154+ endif ()
120155 get_guile_env()
121156 set_tests_properties (${_TARGET} PROPERTIES ENVIRONMENT "${GUILE_ENV} $<$<CONFIG:Asan>:;${ASAN_DYNAMIC_LIB_ENV} ;ASAN_OPTIONS=${ASAN_TEST_OPTIONS} >;${ARGN} >" )
122157endfunction ()
0 commit comments