[racket-dev] question about your change to run-teaching-languages.rkt

From: Robby Findler (robby at eecs.northwestern.edu)
Date: Thu Oct 14 17:06:22 EDT 2010

I'm not sure, I'm sorry to say. What you write sounds like the right tack to me.

Robby

On Thu, Oct 14, 2010 at 4:02 PM, John Clements
<clements at brinckerhoff.org> wrote:
> Back on October 11, you made a change to run-teaching-languages.rkt that works absolutely fine with the stepper.
>
> ...but it breaks the stepper's testing harness. Ugh.  The problem, IIUC, is that the expansion of the teaching-language programs refer to a module, test-engine/racket-tests, that doesn't actually exist at plt/collects/test-engine, and is instead dynamically associated with the namespace by DrRacket before running the student program.  That is, IIUC. So, in order for the command-line racket tests to run correctly, they must also attach that module to the evaluation namespace.  Unfortunately, my ham-fisted attempt to add this to the test harness:
>
>    (namespace-attach-module outer-namespace 'test-engine/racket-tests (current-namespace))
>
> ... didn't work.  Actually, I was intrigued by the change.  It changed failures like this:
>
> test-sequence: steps do not match
>   given: #(struct:error-result "require: namespace mismatch; reference (phase 0) to a module \"/Users/clements/plt/collects/test-engine/racket-tests.rkt\" that is not available (phase level 0)")
> expected: (before-after ((hilite (cond (true 3) (else (and true true))))) ((hilite 3)))
>
> ... into errors like this:
>
> test-sequence: steps do not match
>   given: #(struct:error-result "link: module mismatch, probably from old bytecode whose dependencies have changed: variable not provided (directly or indirectly) from module: \"/Users/clements/plt/collects/test-engine/racket-tests.rkt\" accessed from module: 'stepper-module-name-18307 at source phase level: 0")
> expected: (before-after ((if (hilite (if true false true)) false true)) ((if (hilite false) false true)))
>
> I tried some light deleting of .zo files, but I strongly suspect that the real problem here is that somehow the version of test-engine/racket-tests attached to racket's default namespace--apparently it exists? or namespace-attach-module would give an error, right?--is different from the one attached to the teaching languages evaluation namespace.
>
> I think the next step for me(after maybe a clean setup) is to start grepping through the drracket code for instances of test-engine/racket-tests, but if you can shed any light on the situation, I'm all ears.
>
> Thanks!
>
> John
>
>


Posted on the dev mailing list.