~ chicken-core (chicken-5) /tests/user-pass-tests.scm
Trap1;;; Test user compilation passes
2
3(import (chicken base)
4 (chicken compiler user-pass)
5 (chicken io)
6 (chicken pretty-print))
7
8(define passes '()) ; track user passes
9
10(user-read-pass
11 (lambda (_ _ _)
12 (set! passes (cons 'user-read-pass passes))
13 (list 'ok))) ; ignore file and use single datum
14
15(user-preprocessor-pass
16 (lambda (x)
17 (set! passes (cons 'user-preprocessor-pass passes))
18 (values x)))
19
20(user-pass
21 (lambda (x)
22 (set! passes (cons 'user-pass passes))
23 (values x)))
24
25(user-post-analysis-pass
26 (lambda (_ _ _ _ _ _ _)
27 (set! passes (cons 'user-post-analysis-pass passes))))
28
29(on-exit
30 (lambda ()
31 (assert (memq 'user-read-pass passes) "user-read-pass not called")
32 (assert (memq 'user-pass passes) "user-pass not called")
33 (assert (memq 'user-preprocessor-pass passes) "user-preprocessor-pass not called")
34 (assert (memq 'user-post-analysis-pass passes) "user-post-analysis-pass not called")))