M doc/guix.texi => doc/guix.texi +10 -0
@@ 9728,6 9728,16 @@ responsible for writing the input files for the native build system.
@item #:test-exclude
Tests matching this regular expression are excluded from testing by
@url{https://cmake.org/cmake/help/latest/manual/ctest.1.html, ctest}.
+
+@item #:test-repeat-until-pass?
+Directs @url{https://cmake.org/cmake/help/latest/manual/ctest.1.html, ctest} to
+@url{https://cmake.org/cmake/help/latest/manual/ctest.1.html#cmdoption-ctest-repeat, repeat}
+failed tests up to @code{#:test-repeat-until-pass-count} times and is enabled by
+default.
+
+@item #:test-repeat-until-pass-count
+When @code{#:test-repeat-until-pass?} is enabled this parameter sets the maximum
+number of failures for each test. The default is @code{5}.
@end table
@end defvar
M guix/build-system/cmake.scm => guix/build-system/cmake.scm +8 -0
@@ 129,6 129,8 @@
(build-type "RelWithDebInfo")
(tests? #t)
(test-exclude "")
+ (test-repeat-until-pass? #t)
+ (test-repeat-until-pass-count 5)
(parallel-build? #t) (parallel-tests? #t)
(validate-runpath? #t)
(patch-shebangs? #t)
@@ 170,6 172,8 @@ provides a 'CMakeLists.txt' file as its build system."
#:build-type #$build-type
#:tests? #$tests?
#:test-exclude #$test-exclude
+ #:test-repeat-until-pass? #$test-repeat-until-pass?
+ #:test-repeat-until-pass-count #$test-repeat-until-pass-count
#:parallel-build? #$parallel-build?
#:parallel-tests? #$parallel-tests?
#:validate-runpath? #$validate-runpath?
@@ 209,6 213,8 @@ provides a 'CMakeLists.txt' file as its build system."
(build-type "RelWithDebInfo")
(tests? #f) ; nothing can be done
(test-exclude "")
+ (test-repeat-until-pass? #t)
+ (test-repeat-until-pass-count 5)
(parallel-build? #t) (parallel-tests? #t)
(validate-runpath? #t)
(patch-shebangs? #t)
@@ 273,6 279,8 @@ build system."
#:build-type #$build-type
#:tests? #$tests?
#:test-exclude #$test-exclude
+ #:test-repeat-until-pass? #$test-repeat-until-pass?
+ #:test-repeat-until-pass-count #$test-repeat-until-pass-count
#:parallel-build? #$parallel-build?
#:parallel-tests? #$parallel-tests?
#:validate-runpath? #$validate-runpath?
M guix/build-system/qt.scm => guix/build-system/qt.scm +8 -0
@@ 127,6 127,8 @@
(build-type "RelWithDebInfo")
(tests? #t)
(test-exclude "")
+ (test-repeat-until-pass? #t)
+ (test-repeat-until-pass-count 5)
(parallel-build? #t) (parallel-tests? #t)
(validate-runpath? #t)
(patch-shebangs? #t)
@@ 168,6 170,8 @@ provides a 'CMakeLists.txt' file as its build system."
#:build-type #$build-type
#:tests? #$tests?
#:test-exclude #$test-exclude
+ #:test-repeat-until-pass? #$test-repeat-until-pass?
+ #:test-repeat-until-pass-count #$test-repeat-until-pass-count
#:parallel-build? #$parallel-build?
#:parallel-tests? #$parallel-tests?
#:validate-runpath? #$validate-runpath?
@@ 206,6 210,8 @@ provides a 'CMakeLists.txt' file as its build system."
(build-type "RelWithDebInfo")
(tests? #f) ; nothing can be done
(test-exclude "")
+ (test-repeat-until-pass? #t)
+ (test-repeat-until-pass-count 5)
(parallel-build? #t) (parallel-tests? #f)
(validate-runpath? #t)
(patch-shebangs? #t)
@@ 260,6 266,8 @@ build system."
#:build-type #$build-type
#:tests? #$tests?
#:test-exclude #$test-exclude
+ #:test-repeat-until-pass? #$test-repeat-until-pass?
+ #:test-repeat-until-pass-count #$test-repeat-until-pass-count
#:parallel-build? #$parallel-build?
#:parallel-tests? #$parallel-tests?
#:validate-runpath? #$validate-runpath?
M guix/build/cmake-build-system.scm => guix/build/cmake-build-system.scm +8 -1
@@ 110,6 110,8 @@
(define* (check #:key (tests? #t) (test-exclude "")
(parallel-tests? #t)
+ (test-repeat-until-pass? #t)
+ (test-repeat-until-pass-count 5)
(test-suite-log-regexp %test-suite-log-regexp)
#:allow-other-keys)
(if tests?
@@ 128,7 130,12 @@
"--test-load"
,(number->string (total-processor-count)))
;; When unset CMake defers to the build system.
- '("-j" "1")))))
+ '("-j" "1"))
+ ,@(if test-repeat-until-pass?
+ `("--repeat"
+ ,(string-append "until-pass:"
+ (number->string test-repeat-until-pass-count)))
+ '()))))
(format #t "test suite not run~%")))
(define* (install #:rest args)