Skip to content

Commit

Permalink
Change default checker to oicompare (#31)
Browse files Browse the repository at this point in the history
* Change default checker to oicompare

* Ability to change oicompare's language

* Allow changing oicompare format
  • Loading branch information
MasloMaslane authored Sep 23, 2024
1 parent 738aa7a commit de8cc93
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 7 deletions.
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

setup(
name = "sioworkers",
version = '1.5.2',
version = '1.5.3',
author = "SIO2 Project Team",
author_email = '[email protected]',
description = "Programming contest judging infrastructure",
Expand Down
26 changes: 20 additions & 6 deletions sio/executors/checker.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,12 +87,12 @@ def execute_checker(with_stderr=False, stderr=None):
return renv['stdout']


def _run_compare(env):
e = SandboxExecutor('exec-sandbox')
def _run_compare(env, format):
e = SandboxExecutor('oicompare-sandbox-v1.0.2')
renv = _run_in_executor(
env, [os.path.join('bin', 'compare'), 'hint', 'out'], e, ignore_errors=True
env, [os.path.join('bin', 'oicompare'), 'hint', 'out', format], e, ignore_errors=True
)
return renv['stdout']
return renv


def _limit_length(s):
Expand All @@ -116,7 +116,21 @@ def run(environ, use_sandboxes=True):

output = _run_checker(environ, use_sandboxes)
elif use_sandboxes:
output = _run_compare(environ)
renv = _run_compare(environ, environ.get('checker_format', 'english_abbreviated'))
if renv['return_code'] == 0:
environ['result_code'] = 'OK'
environ['result_percentage'] = (100, 1)
elif renv['return_code'] == 1:
environ['result_code'] = 'WA'
environ['result_percentage'] = (0, 1)
# Should be redundant because we are using oicompare with abbreviated output,
# but just in case.
environ['result_string'] = _limit_length(renv['stdout'][0])
else:
raise CheckerError(
'oicompare returned code(%d). Checker renv: %s' % (renv['return_code'], renv)
)
return environ
else:
output = _run_diff(environ)
except (CheckerError, ExecError) as e:
Expand Down Expand Up @@ -155,4 +169,4 @@ def output_to_fraction(output_str):
except ZeroDivisionError:
raise CheckerError('Zero division in checker output "%s"' % output_str)
except TypeError:
raise CheckerError('Invalid checker output "%s"' % output_str)
raise CheckerError('Invalid checker output "%s"' % output_str)

0 comments on commit de8cc93

Please sign in to comment.