[racket] handin server bugs? (was Re: handin server error)
At Sat, 17 Nov 2012 16:31:23 -0800, Jordan Johnson wrote:
> -- 1 --
>
> Starting a checker file with "#lang handin-server/checker" (as the
> handin-server/checker docs suggest) does not work; the log file indicates the
> server is failing to load the checker, with this error:
>
> standard-module-name-resolver: collection not found
> collection: "handin-server/checker/lang"
>
> Using "#lang s-exp handin-server/checker" seems to work, but I can't tell if
> there are other related problems that this fix is merely hiding.
I'm inclined to call that a documentation bug, but I will also make
`#lang handin-server/checker' work.
> -- 2 --
>
> I can create and run checker files that define a trivial checker function
> explicitly (i.e., without using the "check:" form from handin-server/checker),
> but it appears that if I do anything that creates an evaluator -- be it using
> make-evaluator/submission (or the other make-evaluator* functions, whether I'm
> require'ing them from handin-server/sandbox or directly from racket/sandbox) or
> using "check:" -- when the client attempts to hand in, I get an error from
> namespace-attach-module, quoted below in my original message. For example, this
> triggers the error:
>
> #lang racket
>
> (require racket/sandbox)
> (provide checker)
>
> (define (checker users submission)
> (define e (make-evaluator '(special beginner)))
> "save-it-here.rkt")
I finally tracked this down to an assumption that `racket/base' was
reachable from `mred/private/mred' (which ceased to be true at some
point in the never-ending `scheme' to `racket' conversion) along with a
mismatch between `gui-require-dynamic' and its documentation. I've
pushed a repair to both of those problems.
I think we could work around the problem in v5.3.1, but it sounds like
you're using the latest via git to get the handin server, anyway.
> By the way, is it possible to write automated tests for a checker script that
> uses #lang handin-server/checker -- as opposed to testing it interactively
> using the client?
I'm pretty sure that I've `require'd the `checker' function from a
`handin-server/checker' module to call it directly, but I don't
remember the details.