Skip to content

Commit

Permalink
Change default checker to oicompare (sio2project#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

(cherry picked from commit de8cc93)
  • Loading branch information
MasloMaslane committed Sep 23, 2024
1 parent 4c2dc64 commit 62c11f2
Showing 1 changed file with 22 additions and 6 deletions.
28 changes: 22 additions & 6 deletions sio/executors/checker.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,11 +58,13 @@ def execute_checker(with_stderr=False, stderr=None):

return renv['stdout']

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

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

def _limit_length(s):
if len(s) > RESULT_STRING_LENGTH_LIMIT:
Expand All @@ -83,7 +85,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

0 comments on commit 62c11f2

Please sign in to comment.