job-specifier: Preserve '%find-best-next' arguments exactness

The behavior of the 'min' procedure which converts its parameters to
inexact numbers when at least one of them is inexact was causing
'%find-best-next' to always return real numbers.

* src/mcron/job-specifier.scm (%find-best-next): Preserve the exactness
of numbers in NEXT-LIST.
* tests/job-specifier.scm ("%find-best-next: exact"): New test.

Reported-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
Mathieu Lirzin 2018-03-26 16:39:13 +02:00
commit fad58ca8c2
No known key found for this signature in database
GPG key ID: 0ADEE10094604D37
2 changed files with 16 additions and 3 deletions

View file

@ -16,7 +16,8 @@
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Mcron. If not, see <http://www.gnu.org/licenses/>.
(use-modules (srfi srfi-64)
(use-modules (ice-9 match)
(srfi srfi-64)
(mcron job-specifier))
(test-begin "job-specifier")
@ -40,4 +41,12 @@
(test-assert "range: reverse boundaries"
(range 10 3))
(define %find-best-next (@@ (mcron job-specifier) %find-best-next))
(test-assert "%find-best-next: exact"
;; Ensure that '%find-best-next' preserves the exactness of the numbers
;; inside the NEXT-LIST argument.
(match (pk 'match (%find-best-next 1 '(0 2)))
((a . b) (and (exact? a) (exact? b)))))
(test-end)