Description:
handle the case when problem id or submission id is null. Grader will simply skip such request. Add more report on console (for command line grading)
(mercurial grafted from d233105d3965c5368c9b33125f390e39b25f910e)
Commit status:
[Not Reviewed]
References:
Diff options:
Comments:
0 Commit comments
0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
r181:5c6f0b732e70 - - 2 files changed: 6 inserted, 6 deleted
@@ -355,13 +355,13 | |||
|
355 | 355 | |
|
356 | 356 | ARGV.each do |sub_id| |
|
357 | 357 | puts "Grading #{sub_id}" |
|
358 | 358 | begin |
|
359 | 359 | submission = Submission.find(sub_id.to_i) |
|
360 | 360 | rescue ActiveRecord::RecordNotFound |
|
361 |
- puts " |
|
|
361 | + puts "Submission #{sub_id} not found" | |
|
362 | 362 | submission = nil |
|
363 | 363 | end |
|
364 | 364 | |
|
365 | 365 | if submission!=nil |
|
366 | 366 | runner.grade_submission(submission) |
|
367 | 367 | end |
@@ -33,16 +33,17 | |||
|
33 | 33 | def grade(submission) |
|
34 | 34 | current_dir = FileUtils.pwd |
|
35 | 35 | |
|
36 | 36 | user = submission.user |
|
37 | 37 | problem = submission.problem |
|
38 | 38 | |
|
39 | + begin | |
|
39 | 40 | # TODO: will have to create real exception for this |
|
40 | 41 | if user==nil or problem == nil |
|
41 | 42 | @reporter.report_error(submission,"Grading error: problem with submission") |
|
42 |
- |
|
|
43 | + raise "engine: user or problem is nil" | |
|
43 | 44 | end |
|
44 | 45 | |
|
45 | 46 | # TODO: this is another hack so that output only task can be judged |
|
46 | 47 | if submission.language!=nil |
|
47 | 48 | language = submission.language.name |
|
48 | 49 | lang_ext = submission.language.ext |
@@ -61,24 +62,22 | |||
|
61 | 62 | if problem!=nil |
|
62 | 63 | source_name = "#{problem.name}.#{lang_ext}" |
|
63 | 64 | else |
|
64 | 65 | source_name = "source.#{lang_ext}" |
|
65 | 66 | end |
|
66 | 67 | |
|
67 | - begin | |
|
68 | 68 | grading_dir = @room_maker.produce_grading_room(submission) |
|
69 | 69 | @room_maker.save_source(submission,source_name) |
|
70 | 70 | problem_home = @room_maker.find_problem_home(submission) |
|
71 | 71 | |
|
72 | 72 | # puts "GRADING DIR: #{grading_dir}" |
|
73 | 73 | # puts "PROBLEM DIR: #{problem_home}" |
|
74 | 74 | |
|
75 | 75 | if !FileTest.exist?(problem_home) |
|
76 | 76 | puts "PROBLEM DIR: #{problem_home}" |
|
77 |
- |
|
|
78 | - raise "No test data." | |
|
77 | + raise "engine: No test data." | |
|
79 | 78 | end |
|
80 | 79 | |
|
81 | 80 | dinit = DirInit::Manager.new(problem_home) |
|
82 | 81 | |
|
83 | 82 | dinit.setup do |
|
84 | 83 | copy_log = copy_script(problem_home) |
@@ -94,12 +93,13 | |||
|
94 | 93 | clear_copy_log(problem_home) |
|
95 | 94 | clear_script(copy_log,problem_home) |
|
96 | 95 | end |
|
97 | 96 | |
|
98 | 97 | rescue RuntimeError => msg |
|
99 | 98 | @reporter.report_error(submission, msg) |
|
99 | + puts "ERROR: #{msg}" | |
|
100 | 100 | |
|
101 | 101 | ensure |
|
102 | 102 | @room_maker.clean_up(submission) |
|
103 | 103 | Dir.chdir(current_dir) # this is really important |
|
104 | 104 | end |
|
105 | 105 | end |
@@ -128,13 +128,13 | |||
|
128 | 128 | end |
|
129 | 129 | |
|
130 | 130 | def copy_script(problem_home) |
|
131 | 131 | script_dir = "#{problem_home}/script" |
|
132 | 132 | std_script_dir = get_std_script_dir |
|
133 | 133 | |
|
134 | - raise "std-script directory not found" if !FileTest.exist?(std_script_dir) | |
|
134 | + raise "engine: std-script directory not found" if !FileTest.exist?(std_script_dir) | |
|
135 | 135 | |
|
136 | 136 | scripts = Dir[std_script_dir + '/*'] |
|
137 | 137 | |
|
138 | 138 | copied = [] |
|
139 | 139 | |
|
140 | 140 | scripts.each do |s| |
You need to be logged in to leave comments.
Login now