AboutSummaryRefsLogTreeCommitDiffStats
path: root/tests/utils.scm
diff options
context:
space:
mode:
authorMathieu Lirzin <mthl@gnu.org>2018-03-25 03:01:45 +0200
committerMathieu Lirzin <mthl@gnu.org>2018-03-25 03:01:45 +0200
commit4d636af87621211354cc716e92cd9fe4e1200500 (patch)
treee3f134c5b05ec68eba1914fbd0546c848db98822 /tests/utils.scm
parent5af999fb20c5bae645a5f2005f0411a1130b7455 (diff)
downloadmcron-4d636af87621211354cc716e92cd9fe4e1200500.tar.gz
mcron-4d636af87621211354cc716e92cd9fe4e1200500.tar.bz2
mcron-4d636af87621211354cc716e92cd9fe4e1200500.zip
utils: Check 'mcron-error'
* tests/utils.scm ("mcron-error: exit code", "mcron-error: output") ("mcron-error: output no-exit", "mcron-error: only stderr"): New tests.
Diffstat (limited to 'tests/utils.scm')
-rw-r--r--tests/utils.scm44
1 files changed, 43 insertions, 1 deletions
diff --git a/tests/utils.scm b/tests/utils.scm
index 5ec5d11..fbd32e1 100644
--- a/tests/utils.scm
+++ b/tests/utils.scm
@@ -16,11 +16,53 @@
;;; 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)
+ (ice-9 rdelim)
+ (srfi srfi-64)
(mcron utils))
(test-begin "utils")
+;;; Check 'mcron-error' error code return value.
+(test-equal "mcron-error: exit code"
+ 42
+ (match (primitive-fork)
+ (0 ;child
+ (mcron-error 42 "exit with 42"))
+ ((= waitpid (pid . exit-code)) ;parent
+ (status:exit-val exit-code))))
+
+;;; Check 'mcron-error' output with basic error code.
+(test-equal "mcron-error: output"
+ "mcron: token"
+ (call-with-output-string
+ (λ (port)
+ (match (pipe)
+ ((in . out)
+ (match (primitive-fork)
+ (0 ;child
+ (close in)
+ (with-error-to-port out
+ (λ () (mcron-error 37 "token"))))
+ ((= waitpid (pid . exit-code)) ;parent
+ (close out)
+ (display (read-line in) port))))))))
+
+;;; Check mcron-error output when error code is 0.
+(test-equal "mcron-error: output no-exit"
+ "mcron: foobar\n"
+ (call-with-output-string
+ (λ (port)
+ (with-error-to-port port
+ (λ ()
+ (mcron-error 0 "foo" "bar"))))))
+
+;;; Check that mcron-error doesn't print anything on the standard output.
+(test-equal "mcron-error: only stderr"
+ ""
+ (with-output-to-string
+ (λ () (mcron-error 0 "foo" "bar"))))
+
(define entry
;; Random user entry.
(getpw))