Skip to content

Instantly share code, notes, and snippets.

@mflatt
Created July 24, 2021 15:31
Show Gist options
  • Save mflatt/f4231d8b9f2418f189d839e587235f04 to your computer and use it in GitHub Desktop.
Save mflatt/f4231d8b9f2418f189d839e587235f04 to your computer and use it in GitHub Desktop.
Test for import from weaker code inspector
#lang racket
(let ()
(define work-dir (make-temporary-file "deputy-check-~a" 'directory))
(define m '(module m racket/base
(provide m)
(define (m) '(this is m))))
(define n '(module n racket/base
(require "am.rkt")
(m)))
(define (make e f)
(parameterize ([current-directory work-dir]
[current-load-relative-directory work-dir])
(define c (parameterize ([current-namespace (make-base-namespace)])
(compile e)))
(call-with-output-file*
f
#:exists 'truncate
(lambda (o)
(write c o)))))
(make m "am.rkt")
(make n "an.rkt")
(parameterize ([current-namespace (make-base-namespace)])
(parameterize ([current-code-inspector (make-inspector)])
(parameterize ([current-module-declare-name
(make-resolved-module-path
(build-path work-dir "am.rkt"))])
(eval m)))
;; attempt to import from a module with a weaker code inspector
(with-handlers ([exn:fail? (lambda (exn)
(unless (regexp-match? "weaker code inspector"
(exn-message exn))
(error "failed")))])
(dynamic-require (build-path work-dir "an.rkt") #f)
(error "oops")))
(delete-directory/files work-dir))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment