From 152381bed4b88beeed5612f65ea995728f7664fa Mon Sep 17 00:00:00 2001 From: Matthew Butterick Date: Sun, 14 Jun 2015 20:22:37 -0500 Subject: [PATCH] add `sugar/test` --- sugar/test.rkt | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 sugar/test.rkt diff --git a/sugar/test.rkt b/sugar/test.rkt new file mode 100644 index 0000000..ec10cd9 --- /dev/null +++ b/sugar/test.rkt @@ -0,0 +1,38 @@ +#lang racket/base +(require (for-syntax racket/base)) +(provide (all-defined-out)) + + +;; tests using module-boundary contracts +(define-syntax (module-test-external stx) + (syntax-case stx () + [(_ expr ...) + #'(begin + (module* test-external racket/base + (require (submod "..")) + (require rackunit) + expr ...) + (module+ test + (require (submod ".." test-external))))])) + + +(define-syntax (module-test-internal stx) + (syntax-case stx () + [(_ expr ...) + (let ([exprs (syntax->datum #'(expr ...))]) + (datum->syntax stx `(begin + (module+ test + (require rackunit) + ,@exprs)) + ;; pass original stx for srcloc + ;; which is not precisely accurate but + ;; OK for now + stx))])) + +(define-syntax (module-test-internal+external stx) + (syntax-case stx () + [(_ expr ...) + (let ([exprs (syntax->datum #'(expr ...))]) + (datum->syntax stx `(begin + (module-test-internal ,@exprs) + (module-test-external ,@exprs)) stx))])) \ No newline at end of file