At Tue, 6 Jan 2015 16:33:04 -0500, Suzanne Menzel wrote: > I’m trying to set up the handin-server to use in my class this semester and > I’ve run into a few problems that I hope someone can help with. > > I’ve got the server up and running and the Handin button appears in DrRacket. > I > currently have only one assignment, called a1. Everything works fine when > submitting this sample homework file (on the client machine): > > ;; contents of student submission a1.rkt > (check-expect (double-inc 4) 9) > (check-expect (double-inc 0) 1) > > (define (double-inc x) > (add1 (* 2 x))) > > with this checker (on the server machine): > > ;; contents of a1/checker.rkt > (module checker handin-server/checker > (require handin-server/grading-utils) > (pre: > (check-deadline)) > > (check: :language '(special beginner) > (update-submission-timestamp!) > (add-header-line! (get-submission-timestamp)) > (add-report-line! (get-submission-timestamp)) > > (!test (double-inc 2) 5) > (!test (double-inc 3) 7) > (!test (double-inc 0) 1) > (!test (double-inc -5) -9)) > > (post: > #f) > ) > > So far, so good. Now, I want to add a !procedure check before the tests for > double-inc, like this: > > (!procedure double-inc 1) > > This produces the following error: > > submit error: while evaluating double-inc: > eval:1:0: double-inc: expected a function call, but there is no open > parenthesis before this function > in: double-inc > > So, I change the language to (special advanced) and the error goes away. This > brings me to my first question: > > (1) How can I set it up so that the checker runs in racket and the evaluator > for the tests run in BSL (for example)?
I think you can't use `!procedure` with the Beginner language. You should be able to use `!defined`, though. More generally, I think you could use `!eval` and use the results in arbitrary Racket expressions that use the result (and potentially raise an exception for errors), but I think you always have to start with something in `eval!` that's legal in the Beginner program. > Next, I tried putting in the coverage check. > > coverage? #t > > This produces the error (even though all lines are covered by check-expects): > > submit error: your code is not completely covered by tests: uncovered > expression at 1:0 () > > (2) How can I get the coverage check to work? I think coverage checking is broken, unfortunately; I see that I had it commented out the last time I used a checker with Beginner programs. If no one else gets to it, I'll try to investigate sometime soon. > Finally, I tried putting write-report in the post: > > (write-report) > > And here’s the error: > > commit error: start-timer: arity mismatch; > the expected number of arguments does not match the given number > expected: 3 > given: 2 > arguments...: > 0 > #<procedure> > > (3) What’s up with the error from start-timer?! I've never tried to use `write-report` myself, but I can take a look at that when investigating coverage (again, if no one else gets to it first). > Any advice would be greatly appreciated. Also, if anyone has any > sample checkers that they wouldn’t mind sharing with me, that would > be terrific. I’d love to see what others have already developed. I'll send you my checkers. ____________________ Racket Users list: http://lists.racket-lang.org/users