usage

This package contains modules that are usually called at different points in the autograding process. The process may be mostly contained within the run_autograder shell script required by Gradescope, or the script may invoke a Python module to coordinate the rest of the steps.

A sample shell script that uses these modules may look like:

#!/usr/bin/env
cd /autograder/source
git pull
git log -n 1

# load in a file that contains variable settings
# to control whether we generically compile and
# run the submission or run a specific testing file
chmod +x /autograder/source/asgnsettings.sh
source /autograder/source/asgnsettings.sh

# copy files into src directory:
mkdir /autograder/source/src
cp /autograder/submission/* /autograder/source/src/

# clean file names to remove any version numbers:
python3 -m agrtool.src.agrtool.cleanupfiles /autograder/source/src

chmod +x /autograder/source/tools/compilejava.sh
source /autograder/source/tools/compilejava.sh
python3 -m agrtool.src.agrtool.check_compile_error
python3 -m agrtool.src.agrtool.error_nocompile

if [ "$runtest" -eq 1 ]; then
    # test that the code runs without exception, manually
    # grade output later in Gradescope
    #
    # add code here to find and run all Java files with
    # main methods

else
    # Java assignment - specific test using a client class
    sed -i 's/\r$//' "/autograder/source/${asgnpath}grader"
    chmod +x "/autograder/source/${asgnpath}grader"
    source "/autograder/source/${asgnpath}grader"
fi
python3 -m agrtool.src.agrtool.error_norun

# Leaderboard
python3 -m agrtool.src.agrtool.leaderboard

# combine all results files into one for Gradescope
python3 -m agrtool.src.agrtool.combine_results

In addition to the shell script above (which would be in the run_autograder file), you would also need to include the agrtool package (or a list of dependencies to install), the setup.sh file, and any other specific files for testing. Zip them up so that they are not within a folder, but are at the top level of the zip file. See Gradescope’s autograder docs for more instruction.