Skip to content

Commit c30be0a

Browse files
committed
Make missing/compilation failure in grader/output validator fatal
1 parent 9f5d9a0 commit c30be0a

File tree

1 file changed

+14
-8
lines changed

1 file changed

+14
-8
lines changed

problemtools/verifyproblem.py

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -537,9 +537,9 @@ def check(self, context: Context) -> bool:
537537
self.error('Invalid grading policy in testdata.yaml')
538538

539539
if self.config['grading'] == 'custom' and len(self._problem.getProblemPart(Graders)._graders) == 0:
540-
self._problem.getProblemPart(Graders).error(f'{self} has custom grading but no custom graders provided')
540+
self._problem.getProblemPart(Graders).fatal(f'{self} has custom grading but no custom graders provided')
541541
if self.config['grading'] == 'default' and Graders._default_grader is None:
542-
self._problem.getProblemPart(Graders).error(f'{self} has default grading but I could not find default grader')
542+
self._problem.getProblemPart(Graders).fatal(f'{self} has default grading but I could not find default grader')
543543

544544
if self.config['grading'] == 'default' and 'ignore_sample' in self.config['grader_flags'].split():
545545
if self._parent is not None:
@@ -1146,7 +1146,7 @@ def check(self, context: Context) -> bool:
11461146
for grader in self._graders:
11471147
success, msg = grader.compile()
11481148
if not success:
1149-
self.error(f'Compile error for {grader}', msg)
1149+
self.fatal(f'Compile error for {grader}', msg)
11501150
return self._check_res
11511151

11521152
def grade(
@@ -1251,16 +1251,16 @@ def check(self, context: Context) -> bool:
12511251
if self.problem.getMetadata().legacy_validation == 'default' and self._validators:
12521252
self.error('There are validator programs but problem.yaml has validation = "default"')
12531253
elif self.problem.getMetadata().legacy_validation.startswith('custom') and not self._validators:
1254-
self.error('problem.yaml specifies custom validator but no validator programs found')
1254+
self.fatal('problem.yaml specifies custom validator but no validator programs found')
12551255

12561256
if self.problem.getMetadata().legacy_validation == 'default' and self._default_validator is None:
1257-
self.error('Unable to locate default validator')
1257+
self.fatal('Unable to locate default validator')
12581258

12591259
for val in self._validators[:]:
12601260
try:
12611261
success, msg = val.compile()
12621262
if not success:
1263-
self.error(f'Compile error for output validator {val}', msg)
1263+
self.fatal(f'Compile error for output validator {val}', msg)
12641264
except run.ProgramError as e:
12651265
self.error(str(e))
12661266

@@ -1743,15 +1743,21 @@ def check(self, context: Context) -> bool:
17431743
'validators': [InputValidators, OutputValidators],
17441744
'graders': [Graders],
17451745
'data': [ProblemTestCases],
1746-
'submissions': [Submissions],
1746+
'submissions': [
1747+
OutputValidators,
1748+
Submissions,
1749+
], # OutputValidators duplicated to fatal() early if we can't find a validator. We should find a cleaner solution
17471750
},
17481751
FormatVersion.V_2023_07: { # TODO: Add all the parts
17491752
'config': [ProblemConfig],
17501753
'statement': [ProblemStatement, Attachments],
17511754
'validators': [InputValidators, OutputValidators],
17521755
'graders': [Graders],
17531756
'data': [ProblemTestCases],
1754-
'submissions': [Submissions],
1757+
'submissions': [
1758+
OutputValidators,
1759+
Submissions,
1760+
], # OutputValidators duplicated to fatal() early if we can't find a validator. We should find a cleaner solution
17551761
},
17561762
}
17571763

0 commit comments

Comments
 (0)