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:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r181:5c6f0b732e70 - - 2 files changed: 30 inserted, 30 deleted

@@ -358,7 +358,7
358 begin
358 begin
359 submission = Submission.find(sub_id.to_i)
359 submission = Submission.find(sub_id.to_i)
360 rescue ActiveRecord::RecordNotFound
360 rescue ActiveRecord::RecordNotFound
361 - puts "Record not found"
361 + puts "Submission #{sub_id} not found"
362 submission = nil
362 submission = nil
363 end
363 end
364
364
@@ -36,35 +36,35
36 user = submission.user
36 user = submission.user
37 problem = submission.problem
37 problem = submission.problem
38
38
39 - # TODO: will have to create real exception for this
39 + begin
40 - if user==nil or problem == nil
40 + # TODO: will have to create real exception for this
41 - @reporter.report_error(submission,"Grading error: problem with submission")
41 + if user==nil or problem == nil
42 - #raise "engine: user or problem is nil"
42 + @reporter.report_error(submission,"Grading error: problem with submission")
43 - end
43 + raise "engine: user or problem is nil"
44 -
44 + end
45 - # TODO: this is another hack so that output only task can be judged
46 - if submission.language!=nil
47 - language = submission.language.name
48 - lang_ext = submission.language.ext
49 - else
50 - language = 'c'
51 - lang_ext = 'c'
52 - end
53
45
54 - # This is needed because older version of std-scripts/compile
46 + # TODO: this is another hack so that output only task can be judged
55 - # only look for c++.
47 + if submission.language!=nil
56 - if language == 'cpp'
48 + language = submission.language.name
57 - language = 'c++'
49 + lang_ext = submission.language.ext
58 - end
50 + else
51 + language = 'c'
52 + lang_ext = 'c'
53 + end
59
54
60 - # COMMENT: should it be only source.ext?
55 + # This is needed because older version of std-scripts/compile
61 - if problem!=nil
56 + # only look for c++.
62 - source_name = "#{problem.name}.#{lang_ext}"
57 + if language == 'cpp'
63 - else
58 + language = 'c++'
64 - source_name = "source.#{lang_ext}"
59 + end
65 - end
66
60
67 - begin
61 + # COMMENT: should it be only source.ext?
62 + if problem!=nil
63 + source_name = "#{problem.name}.#{lang_ext}"
64 + else
65 + source_name = "source.#{lang_ext}"
66 + end
67 +
68 grading_dir = @room_maker.produce_grading_room(submission)
68 grading_dir = @room_maker.produce_grading_room(submission)
69 @room_maker.save_source(submission,source_name)
69 @room_maker.save_source(submission,source_name)
70 problem_home = @room_maker.find_problem_home(submission)
70 problem_home = @room_maker.find_problem_home(submission)
@@ -74,8 +74,7
74
74
75 if !FileTest.exist?(problem_home)
75 if !FileTest.exist?(problem_home)
76 puts "PROBLEM DIR: #{problem_home}"
76 puts "PROBLEM DIR: #{problem_home}"
77 - puts "No test data. (check problem dir)"
77 + raise "engine: No test data."
78 - raise "No test data."
79 end
78 end
80
79
81 dinit = DirInit::Manager.new(problem_home)
80 dinit = DirInit::Manager.new(problem_home)
@@ -97,6 +96,7
97
96
98 rescue RuntimeError => msg
97 rescue RuntimeError => msg
99 @reporter.report_error(submission, msg)
98 @reporter.report_error(submission, msg)
99 + puts "ERROR: #{msg}"
100
100
101 ensure
101 ensure
102 @room_maker.clean_up(submission)
102 @room_maker.clean_up(submission)
@@ -131,7 +131,7
131 script_dir = "#{problem_home}/script"
131 script_dir = "#{problem_home}/script"
132 std_script_dir = get_std_script_dir
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 scripts = Dir[std_script_dir + '/*']
136 scripts = Dir[std_script_dir + '/*']
137
137
You need to be logged in to leave comments. Login now