Package: local-judge
Local JudgeGiven source code, Makefile (or build commands), input files, and answer files then judge the program locally.NOTE: this package is not an "online judge" (UVa, LeetCode, etc.) that allows you to solve some algorithmic problems but a tool that can judge (or correct) the students' compiler assignments (included but not limited to) by themselves and by the teaching assistants. You can still use this package to help simulate "online judge", which is not the goal of this work.WorkflowScreenshotInstallationFor global usage:$pipinstalllocal-judgeWith virtualenv:$virtualenv-ppython3.6venv
$sourcevenv/bin/activate
$pipinstalllocal-judgeFeaturesBothAutomatically build the source code into executableAutomatically run the executable for each input and compare output with answerCustomization friendlyAble to leverage git diff tool to compare the result with the answerStudent (judge)Without any dependencies but standard build-in python packagesTA (ta_judge)Two dependencies packages:openpyxl,rarfileSupport different zip type (.zip,.rar)When error is occurred, not interrupt or exit but just log itOutput to excel tableMultiprocessingEnvironment (Recommended)Ubuntu 18.04python 3.6git 2.17.1 (Our default diff tool for comparing between output and answer is git. Please make sure that you have installed it.)Usage Examplesjudgeta_judgeDocumentation of Configurationjudgejudge.conf: be placed in the root of your program[example]BuildCommand: how to build the executableExecutable: the name of the executableRunCommand: how to run the executable with input and outputInputs: input files (can use wildcard)TempOutputDir: the temporary directory to place output filesDiffCommand: how to find differences between output and answerDeleteTempOutput: whether to delete the temporary output after finding the differences (true or false)AnswerDir: the directory where contains the answer files corresponding to the input filesAnswerExtension: the extension of the answer filesExitOrLog: exit when any error occurred or just log the errorScoreDict: the dictionary for the mapping of correctness and scoreTotalScore: used if the number of tests is more thanScoreDictTimeout: execution timeout for each test caseta_judgeta_judge.config:[example]First part isjudge.confStudentList: the execl file which contains student name and idStudentsZipContainer: the directory where contains students' submit homeworksStudentsPattern: used to match zip filesUpdateStudentPattern: used for update score of single studentStudentsExtractDir: the directory where contains extracted homeworksScoreOutput: the output excel fileExtractAfresh: true: re-extract zipped file for each judge time; false: use pre-extracted files (underStudentsExtractDir) to judgeContributingPlease make sure that you have installedpre-commitfor linting the code with theblackstyle.DevelopmentEnvironment$virtualenv-ppython3.7venv3.7
$sourcevenv3.7/bin/activate
$pythonsetup.pydevelop
$pipinstall-e.
$piplist
PackageVersionLocation
----------------------------------------------------------
black21.12b0
click8.0.3
et-xmlfile1.1.0
importlib-metadata4.10.0
local-judge2.4.7/home/ben/pro/selfpro/local-judge
mypy-extensions0.4.3
openpyxl3.0.9
pathspec0.9.0
pip21.0.1
platformdirs2.4.1
rarfile4.0
setuptools54.1.1
tomli1.2.3
typed-ast1.5.1
typing-extensions4.0.1
wheel0.36.2
zipp3.6.0Run the test locally$python-mpytesttests/test_cli.pyLicenseMIT