diff --git a/judge/scripts/templates/check_wrapper b/judge/scripts/templates/check_wrapper new file mode 100644 --- /dev/null +++ b/judge/scripts/templates/check_wrapper @@ -0,0 +1,48 @@ +#!/usr/bin/ruby + +# +# This is a check script wrapper. It read all required information +# and call a real check script call REAL_CHECK_SCRIPT in directory +# [problem_home]/script +# + +REAL_CHECK_SCRIPT = "<%= script_name %>" + +# The REAL_CHECK_SCRIPT is called with: +# +# (script) +# +# and REAL_CHECK_SCRIPT's output to standard out is redirected to +# 'check_result' as required by normal check script. + +problem_home = ENV['PROBLEM_HOME'] +require "#{problem_home}/script/test_dsl.rb" + +if ARGV.length < 2 + puts "Usage: check []" + exit(0) +end + +language = ARGV[0] +test_num = ARGV[1].to_i +if ARGV.length >= 3 + output_file_name = ARGV[2] +else + output_file_name = "output.txt" +end + +load "#{problem_home}/test_cases/all_tests.cfg" +problem = Problem.get_instance + +answer_file_name = "#{problem_home}/test_cases/#{test_num}/answer-#{test_num}.txt" +input_file_name = "#{problem_home}/test_cases/#{test_num}/input-#{test_num}.txt" + +score = problem.get_score(test_num) + +cmd = "#{problem_home}/script/#{REAL_CHECK_SCRIPT} " + + "#{language} #{test_num} #{input_file_name} #{output_file_name} " + + "#{answer_file_name} #{score} > check_result" + +#puts "wrapper-CMD: #{cmd}" + +system(cmd)