(define-library (chibi log-test) (export run-tests) (import (scheme base) (scheme inexact) (srfi 130) (chibi log) (chibi show) (chibi test)) (begin (define-syntax log->string (syntax-rules () ((log->string expr ...) (let ((out (open-output-string))) (parameterize ((current-error-port out)) (log-open default-logger) expr ... (get-output-string out)))))) (define-syntax log->string/no-dates (syntax-rules () ((log->string/no-dates expr ...) (string-join (map (lambda (line) (if (string-null? line) line (substring line 20))) (string-split (log->string expr ...) "\n")) "\n")))) (define (run-tests) (test-begin "logging") (test "D four: 4\n" (log->string/no-dates (log-debug "four: " (+ 2 2)))) (test "I pi: 3.14\n" (log->string/no-dates (log-info "pi: " (with ((precision 2)) (acos -1))))) (test-assert (string-prefix? "E " (log->string/no-dates (with-logged-errors (/ 1 0))))) (test "W warn\nE error\n" (log->string/no-dates (with-log-level 'warn (log-info "info") (log-warn "warn") (log-error "error")))) (test-end))))