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

@@ -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 "Record not found"
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,52 +33,51
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 - # TODO: will have to create real exception for this
40 - if user==nil or problem == nil
41 - @reporter.report_error(submission,"Grading error: problem with submission")
42 - #raise "engine: user or problem is nil"
43 - end
44 -
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
39 + begin
40 + # TODO: will have to create real exception for this
41 + if user==nil or problem == nil
42 + @reporter.report_error(submission,"Grading error: problem with submission")
43 + raise "engine: user or problem is nil"
44 + end
53 45
54 - # This is needed because older version of std-scripts/compile
55 - # only look for c++.
56 - if language == 'cpp'
57 - language = 'c++'
58 - end
46 + # TODO: this is another hack so that output only task can be judged
47 + if submission.language!=nil
48 + language = submission.language.name
49 + lang_ext = submission.language.ext
50 + else
51 + language = 'c'
52 + lang_ext = 'c'
53 + end
59 54
60 - # COMMENT: should it be only source.ext?
61 - if problem!=nil
62 - source_name = "#{problem.name}.#{lang_ext}"
63 - else
64 - source_name = "source.#{lang_ext}"
65 - end
55 + # This is needed because older version of std-scripts/compile
56 + # only look for c++.
57 + if language == 'cpp'
58 + language = 'c++'
59 + 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 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 - puts "No test data. (check problem dir)"
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