diff --git a/setup.py b/setup.py index b535414..8383492 100644 --- a/setup.py +++ b/setup.py @@ -14,12 +14,12 @@ namespace_packages = ['sio', 'sio.compilers', 'sio.executors'], install_requires = [ - 'filetracker>=2.1.5,<3.0', + 'filetracker[server]>=2.2.0,<3.0', 'bsddb3==6.2.7', 'simplejson==3.14.0', 'supervisor>=4.0,<4.3', - 'Twisted==20.3.0', - 'sortedcontainers==2.1.0', + 'Twisted==23.8.0', + 'sortedcontainers==2.4.0', 'six', 'urllib3>=1.26.14,<2.0', ], diff --git a/sio/executors/checker.py b/sio/executors/checker.py index 98512ef..8a898ab 100644 --- a/sio/executors/checker.py +++ b/sio/executors/checker.py @@ -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): @@ -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: @@ -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) \ No newline at end of file + raise CheckerError('Invalid checker output "%s"' % output_str)