diff options
-rw-r--r-- | Makefile.am | 1 | ||||
-rw-r--r-- | src/mcron/job-specifier.scm | 5 | ||||
-rw-r--r-- | tests/schedule.sh | 123 |
3 files changed, 128 insertions, 1 deletions
diff --git a/Makefile.am b/Makefile.am index 9972c5c..cb43143 100644 --- a/Makefile.am +++ b/Makefile.am @@ -135,6 +135,7 @@ SCM_LOG_DRIVER = \ TESTS = \ tests/basic.sh \ + tests/schedule.sh \ tests/environment.scm \ tests/job-specifier.scm diff --git a/src/mcron/job-specifier.scm b/src/mcron/job-specifier.scm index 30c770a..401e4d0 100644 --- a/src/mcron/job-specifier.scm +++ b/src/mcron/job-specifier.scm @@ -187,7 +187,10 @@ go into the list. For example, (range 1 6 2) returns '(1 3 5)." ;; the job actually runs. (define configuration-user (getpw (getuid))) -(define configuration-time (current-time)) + +(define configuration-time + ;; Use SOURCE_DATE_EPOCH environment variable to support reproducible tests. + (if (getenv "SOURCE_DATE_EPOCH") 0 (current-time))) (define (set-configuration-user user) (set! configuration-user (if (or (string? user) diff --git a/tests/schedule.sh b/tests/schedule.sh new file mode 100644 index 0000000..ad267c4 --- /dev/null +++ b/tests/schedule.sh @@ -0,0 +1,123 @@ +# schedule.sh -- Check mcron schedule output +# Copyright © 2017 Mathieu Lirzin <mthl@gnu.org> +# +# This file is part of GNU Mcron. +# +# GNU Mcron is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# GNU Mcron is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Mcron. If not, see <http://www.gnu.org/licenses/>. + +source "${srcdir}/tests/init.sh" + +SOURCE_DATE_EPOCH=1 +export SOURCE_DATE_EPOCH + +# Use current working directory to store mcron files +XDG_CONFIG_HOME=`pwd` +export XDG_CONFIG_HOME + +mkdir cron +cat > cron/foo.guile <<EOF +(job '(next-second) '(display "foo\n")) +EOF + +cat > cron/bar.guile <<EOF +(job '(next-second) '(display "bar\n")) +EOF + +cat > expected <<EOF +Thu Jan 1 01:00:01 1970 +0100 +(display foo +) + +Thu Jan 1 01:00:01 1970 +0100 +(display bar +) + +Thu Jan 1 01:00:02 1970 +0100 +(display foo +) + +Thu Jan 1 01:00:02 1970 +0100 +(display bar +) + +Thu Jan 1 01:00:03 1970 +0100 +(display foo +) + +Thu Jan 1 01:00:03 1970 +0100 +(display bar +) + +Thu Jan 1 01:00:04 1970 +0100 +(display foo +) + +Thu Jan 1 01:00:04 1970 +0100 +(display bar +) + +Thu Jan 1 01:00:05 1970 +0100 +(display foo +) + +Thu Jan 1 01:00:05 1970 +0100 +(display bar +) + +Thu Jan 1 01:00:06 1970 +0100 +(display foo +) + +Thu Jan 1 01:00:06 1970 +0100 +(display bar +) + +Thu Jan 1 01:00:07 1970 +0100 +(display foo +) + +Thu Jan 1 01:00:07 1970 +0100 +(display bar +) + +Thu Jan 1 01:00:08 1970 +0100 +(display foo +) + +Thu Jan 1 01:00:08 1970 +0100 +(display bar +) + +Thu Jan 1 01:00:09 1970 +0100 +(display foo +) + +Thu Jan 1 01:00:09 1970 +0100 +(display bar +) + +Thu Jan 1 01:00:10 1970 +0100 +(display foo +) + +Thu Jan 1 01:00:10 1970 +0100 +(display bar +) + +EOF + +mcron --schedule=10 > output +diff expected output || fail_ "schedule output is not correct" + +Exit 0 |