Final tests



Bodek can run also a final test on the submissions.
The final test would normally be run after the assignment's Due date.
It can be run on all submissions by selecting Generate/Regenerate all Bodek feedback PDFs from the Grading action menu on the View/grade all submissions page (or from the Assignment administration block).
It can be run on a single submission by selecting Generate/Regenerate Bodek feedback PDF from the student's Edit drop-down menu on the View/grade all submissions page
Note: The options exist only if the final  test file exists. See below.

The final test works similarly to the presubmission test but with the following differences:
  • Instead of directory presubmission, files associated with the final test are placed in directory final i.e.
      ~<course>/course-admin/bodek/assignments/<assignment>/final.
  • The PDF file generated by Bodek is stored as ~course/course-admin/bodek/assignments/<assignment>/final/pdf/<login>.pdf.
    It is available in Moodle (to both Student and Teachers), alongside any other feedback files, as feedback.pdf (unless Feedback type of Feedback files is disabled in the assignment Settings.)
  • Students are not sent email
  • The profile file can have an additional directive max_test_time.
    This sets the maximum time, in seconds, the test is allowed to run. (It defaults to 300 - the same as for the presubmission test). Maximum value is 3600.
  • File descriptor 3 (socket) is provided for the test script to write to.
    Anything written to this file descriptor is copied to ~<course>/course-admin/bodek/assignments/<assignment>/final/results/<login>

Writing to the results file

Special care should be taken with the file descriptor 3 as, technically, also the student's submission code could write to it.
A simple way to detect when this happens is to start writing to the file descriptor only after all the tests have run and to begin with some special header.
A better option is to close the descriptor before executing the student's code. For example, by using close_fds = True to close all descriptors in each execution of the student's code as a python subprocess; by using 3>&- on each exec of the student's code in a sh/bash script; or by initially setting the FD_CLOEXEC (close-on-exec flag) on fd 3 with fcntl in e.g. python or perl. See Closing file descriptor 3.
Note: The descriptor can't be closed if the submission code is run as a python module.

Preventing students seeing the feedback file

The simplest way to prevent students seeing any feedback, including feedback comments, grades, and feedback files, is to hide the item in the Gradebook.
See question How can I hide feedback and grades until all submissions are graded? in the Assignment miniguide.