Using autograding (Github Classroom) - pitfalls and best practices?
In the auto grader I use, the following process is followed:

The students files are copied into a pristine work area
The &quot;provided&quot; file(s) are removed from the work area
If I intend to use MOSS, the remaining files are copied for later use
The &quot;provided&quot; file(s) are copied into the work directory
The result is built (if necessary)
Tests are executed and graded

Note that the &quot;provided&quot; file(s) copied in at step 4 may be a superset of the file(s) provided to the student in the assignment and typically contain other/additional test cases.
If the build fails because a student has modified a &quot;provided&quot; file, the students gets no points. If Java assignments, the provided file is often a interface, sometimes an abstract class. In C/C++ assignments, the provided file is often a header file.
If some test cases are provided and reused verbatim in the final run, those test cases only account for 60% of the final grade. Thus, the student can not receive a passing grade by just making those test cases pass.