1#lang racket/base 2(require "../host/bootstrap.rkt" 3 "main.rkt") 4 5(define-syntax-rule (test expect rhs) 6 (let ([e expect] 7 [v rhs]) 8 (unless (equal? e v) 9 (error 'failed "~s: ~e" 'rhs v)))) 10 11(define root-logger (make-logger)) 12 13(test 'none (log-max-level root-logger)) 14(add-stderr-log-receiver! root-logger 'warning) 15 16(test 'warning (log-max-level root-logger)) 17 18(log-message root-logger 'error "this should print to stderr" 5) 19 20(define demo1-logger (make-logger 'demo1 root-logger)) 21(define demo2-logger (make-logger 'demo2 root-logger 'fatal)) 22 23(log-message demo1-logger 'error "this should print to stderr, too" 5) 24(log-message demo2-logger 'error "this should not print to stderr" 5) 25 26(test 'warning (log-max-level demo1-logger)) 27(test 'fatal (log-max-level demo2-logger)) 28 29(define lr1 (make-log-receiver root-logger 'info 'cats)) 30 31(test 'info (log-max-level demo1-logger)) 32(test 'fatal (log-max-level demo2-logger)) 33 34(test 'info (log-max-level demo1-logger 'cats)) 35(test 'fatal (log-max-level demo2-logger 'cats)) 36 37(test 'warning (log-max-level demo1-logger 'dogs)) 38(test 'fatal (log-max-level demo2-logger 'dogs)) 39 40(test #t (log-level? demo1-logger 'info 'cats)) 41(test #f (log-level? demo1-logger 'debug 'cats)) 42(test #f (log-level? demo1-logger 'info 'dogs)) 43 44(define msg1 #f) 45(define th1 (thread (lambda () (set! msg1 (sync lr1))))) 46(sync (system-idle-evt)) 47(test #f msg1) 48 49(log-message demo1-logger 'info 'cats "hello" 7) 50(sync (system-idle-evt)) 51(test '#(info "cats: hello" 7 cats) msg1) 52 53(log-message demo1-logger 'info 'cats "goodbye" 9) 54(test '#(info "cats: goodbye" 9 cats) (sync lr1)) 55