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

From: John Clements (clements at brinckerhoff.org)
Date: Thu Oct 14 17:02:35 EDT 2010

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

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 4669 bytes
Desc: not available
URL: <http://lists.racket-lang.org/dev/archive/attachments/20101014/4b951e83/attachment.p7s>

Posted on the dev mailing list.