Description:
[grader] report error when the check script crashed (i.e., when the result file is not found, while the compilation is okay) git-svn-id: http://theory.cpe.ku.ac.th/grader/judge/trunk/scripts@117 6386c4cd-e34a-4fa8-8920-d93eb39b512e
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r30:8c0d78da1958 - - 4 files changed: 23 inserted, 4 deleted

@@ -52,29 +52,45
52 cmp_msg = cmp_file.read
52 cmp_msg = cmp_file.read
53 cmp_file.close
53 cmp_file.close
54
54
55 result_fname = "#{test_result_dir}/result"
55 result_fname = "#{test_result_dir}/result"
56 comment_fname = "#{test_result_dir}/comment"
56 comment_fname = "#{test_result_dir}/comment"
57 if FileTest.exist?(result_fname)
57 if FileTest.exist?(result_fname)
58 + comment = ""
59 + begin
58 result_file = File.open(result_fname)
60 result_file = File.open(result_fname)
59 result = result_file.readline.to_i
61 result = result_file.readline.to_i
60 result_file.close
62 result_file.close
63 + rescue
64 + result = 0
65 + comment = "error reading result file."
66 + end
61
67
68 + begin
62 comment_file = File.open(comment_fname)
69 comment_file = File.open(comment_fname)
63 - comment = comment_file.readline.chomp
70 + comment += comment_file.readline.chomp
64 comment_file.close
71 comment_file.close
72 + rescue
73 + comment += ""
74 + end
65
75
66 return {:points => result,
76 return {:points => result,
67 :comment => comment,
77 :comment => comment,
68 :cmp_msg => cmp_msg}
78 :cmp_msg => cmp_msg}
69 else
79 else
80 + if FileTest.exist?("#{test_result_dir}/a.out")
81 + return {:points => 0,
82 + :comment => 'error during grading',
83 + :cmp_msg => cmp_msg}
84 + else
70 return {:points => 0,
85 return {:points => 0,
71 :comment => 'compile error',
86 :comment => 'compile error',
72 :cmp_msg => cmp_msg}
87 :cmp_msg => cmp_msg}
73 end
88 end
74 end
89 end
90 + end
75
91
76 def save_result(submission,result)
92 def save_result(submission,result)
77 problem = submission.problem
93 problem = submission.problem
78 submission.graded_at = Time.now
94 submission.graded_at = Time.now
79 points = result[:points]
95 points = result[:points]
80 submission.points = points
96 submission.points = points
@@ -42,23 +42,24
42 run_score = 0
42 run_score = 0
43 run_comment = ''
43 run_comment = ''
44 run_comment_short = ''
44 run_comment_short = ''
45 run.tests.each do |test_num|
45 run.tests.each do |test_num|
46 result_file_name = "#{test_num}/result"
46 result_file_name = "#{test_num}/result"
47 if not File.exists?(result_file_name)
47 if not File.exists?(result_file_name)
48 + run_comment += "result file for test #{test_num} not found\n"
49 + run_comment_short += 'x'
48 log "Cannot find the file #{test_num}/result!"
50 log "Cannot find the file #{test_num}/result!"
49 - exit(127)
51 + else
50 - end
51 -
52 result_file = File.new(result_file_name, "r")
52 result_file = File.new(result_file_name, "r")
53 result_file_lines = result_file.readlines
53 result_file_lines = result_file.readlines
54 run_score = run_score + result_file_lines[1].to_i
54 run_score = run_score + result_file_lines[1].to_i
55 run_comment += result_file_lines[0]
55 run_comment += result_file_lines[0]
56 run_comment_short += char_comment(result_file_lines[0])
56 run_comment_short += char_comment(result_file_lines[0])
57 result_file.close
57 result_file.close
58 end
58 end
59 + end
59
60
60 run_result_file = File.new("result-#{k}", "w")
61 run_result_file = File.new("result-#{k}", "w")
61 run_result_file.write run_score
62 run_result_file.write run_score
62 run_result_file.write "\n"
63 run_result_file.write "\n"
63 run_result_file.close
64 run_result_file.close
64
65
@@ -13,12 +13,13
13 end
13 end
14
14
15 problem_home = ENV['PROBLEM_HOME']
15 problem_home = ENV['PROBLEM_HOME']
16
16
17 def execute(command, error_message="")
17 def execute(command, error_message="")
18 if not system(command)
18 if not system(command)
19 + log "ERROR: #{error_message}"
19 puts "ERROR: #{error_message}"
20 puts "ERROR: #{error_message}"
20 exit(127)
21 exit(127)
21 end
22 end
22 end
23 end
23
24
24 # ARGV[0] --- language
25 # ARGV[0] --- language
@@ -129,12 +129,13
129 # Run 'check' to evaluate the output.
129 # Run 'check' to evaluate the output.
130 #puts "There was no runtime error. Proceed to checking the output."
130 #puts "There was no runtime error. Proceed to checking the output."
131 check_command = "#{problem_home}/script/check #{language} #{test_num}"
131 check_command = "#{problem_home}/script/check #{language} #{test_num}"
132 log "Checking the output..."
132 log "Checking the output..."
133 log check_command
133 log check_command
134 if not system(check_command)
134 if not system(check_command)
135 + log "Problem with check script"
135 exit(127)
136 exit(127)
136 end
137 end
137
138
138 check_file = File.new("check_result", "r")
139 check_file = File.new("check_result", "r")
139 check_file_lines = check_file.readlines
140 check_file_lines = check_file.readlines
140
141
You need to be logged in to leave comments. Login now