## page was renamed from Autotesting #acl All:read = Assignment Submission and Autotesting using Give = ||<#CCCC00-4>|| ||<#FFFFAD> [[give.spec/subspecs|Submission spec]]||<#FFFFAD> [[give.spec/runspecs|Autotesting spec]]||<#FFFFAD> [[http://www.cse.unsw.edu.au/~give/Admindata/tutors/xmark.html|Xmark]]||<#FFFFAD> [[Plague|Plagiarism Detection]]|| * [[Give|Install give and sms for a new session.]] If you have installed give and sms, proceed to next step. * Create the assignment field in sms <> * ~+'''`give-install`''' ''`assignment`''+~ * creates ~+''`assignment`''+~ directory under the current work directory (~+`$WORK`+~) * creates ~+`give.spec`+~ in the assignment directory * creates submission directories for each tutorial group. . If no tutorial groups, creates ~+`all`+~ and ~+`orphans`+~ directories instead. . ''Read about [[give.spec/subkeysubgroup|subkey and subgroup]] directives.'' * Enter the submission specification into the ~+`give.spec`+~ file. . ''Read about [[give.spec/subspecs|subspecs and related submission]] directives.'' * To test the submission pass a simple test, create a ~+`dryrun`+~ file under ~+`$WORK/`''`assignment`''+~ . [[https://www.cse.unsw.edu.au/~give/Documents/Examples/2521-20T1.dryrun|dryrun example]] * Test that files can be submitted. * The submit command: ~+'''`give`''' ''`cs9999`'' ''`assignment`'' ''`files..`''+~ * If the submit works, the files can be found under the ~+''`assignment/group`''+~ directory. * Enter the autotesting specification into the ''give.spec'' file. . ''Read about [[give.spec/runspecs|runspecs and related autotesting]] directives.'' * Run the autotesting * ~+'''`genrun`''' ''`assignment`''+~ - compile the spec into shell scripts (below) * ~+`GROUPS`+~ * ~+`SUBKEY`+~ (created only if ~+`&subkey`+~ is not the default ~+`stuID`+~) * ~+`compile`+~ * ~+`execute`+~ * ~+`compare`+~ * ~+`cleanup`+~ * ~+'''`genresults`''' ''`assignment`'' ''`submission.tar`''+~ - generates the standard output of a reference submission * ~+`tests`+~ directory * ~+`results`+~ directory * ~+'''`run`''' ''`assignment`'' ''`group`'' ''`studentID`''+~ - runs specified assignment, output to screen . ~+'''`run1`''' ''`assignment`'' ''`group`'' ''`studentID`''+~ - runs specified assignment, output to ~+`$OUT/`''`group`''`/`''`assignment.studentID`''+~ . ~+'''`rungrp`''' ''`[options]`'' ''`assignment`'' ''`[group]`''+~ - runs a group of assigments ||options:|| || ||`-v`||verbose|| ||`-c`||remove the temp directory after each run|| ||`-t`||test phase, will not timestamp, will not update logs|| ||`-m`||mark phase, will not run a submission if it has been marked|| * ~+`less $OUT/summary.`''`assignment`''+~ - show summary of run results, useful when checking the autotesting works * ~+`grep latepen $OUT/*/`''`assignment`''`.*`+~ - check that the late penalty is applied correctly * ~+'''`rerun`''' ''`assignment`''+~ - reset time stamp so that you can run autotesting again . ~+'''`rerun`''' ''`assignment`'' ''`group`''+~ . ~+'''`rerun`''' ''`assignment`'' ''`group/assignment.studentID`''+~ . ''To avoid a rerun, you can use the ~+`-t`+~ option of rungrp'' * ~+'''`torun`''' ''`assignment`''+~ - list assignments like late submissions that have not been tested * [[http://www.cse.unsw.edu.au/~give/Admindata/tutors/xmark.html|Xmark]] to mark the assignments. * To stop students collecting assignments before all tutors have finished marking, add the assignment to the withhold directive in ~+`$WORK/give.spec` +~ {{{ &withhold assign1 &end }}} .