Show More
Commit Description:
rewrote std-scripts/compile with ruby
Commit Description:
rewrote std-scripts/compile with ruby
File last commit:
Show/Diff file:
Action:
lib/submission_helper.rb | 135 lines | 3.7 KiB | text/x-ruby | RubyLexer |
jittat
[grader] [MERGED] Merged new-arch-branch changes 74:105 into the trunk...
r23 module Grader
class SubmissionRoomMaker
def initialize
@config = Grader::Configuration.get_instance
end
def produce_grading_room(submission)
user = submission.user
problem = submission.problem
grading_room = "#{@config.user_result_dir}/" +
"#{user.login}/#{problem.name}/#{submission.id}"
FileUtils.mkdir_p(grading_room)
grading_room
end
def find_problem_home(submission)
problem = submission.problem
"#{@config.problems_dir}/#{problem.name}"
end
def save_source(submission,source_name)
dir = self.produce_grading_room(submission)
f = File.open("#{dir}/#{source_name}","w")
f.write(submission.source)
f.close
end
def clean_up(submission)
end
end
class SubmissionReporter
Jittat Fakcharoenphol
added grading report
r92 def initialize(options={})
options = {:dry_run => false, :result_collector => nil}.merge(options)
jittat
[grader] [MERGED] Merged new-arch-branch changes 74:105 into the trunk...
r23 @config = Grader::Configuration.get_instance
Jittat Fakcharoenphol
added grading report
r92 @dry_run = options[:dry_run]
@result_collector = options[:result_collector]
jittat
[grader] [MERGED] Merged new-arch-branch changes 74:105 into the trunk...
r23 end
def report(sub,test_result_dir)
Jittat Fakcharoenphol
added grading report
r92 result = read_result(test_result_dir)
if @result_collector
@result_collector.save(sub.user,
sub.problem,
result)
end
save_result(sub,result)
jittat
[grader] [MERGED] Merged new-arch-branch changes 74:105 into the trunk...
r23 end
def report_error(sub,msg)
save_result(sub,{:points => 0,
:comment => "Grading error: #{msg}" })
end
protected
def read_result(test_result_dir)
cmp_msg_fname = "#{test_result_dir}/compiler_message"
jittat
[grader] fixed the case when result file is ill-formatted...
r34 if FileTest.exist?(cmp_msg_fname)
cmp_file = File.open(cmp_msg_fname)
cmp_msg = cmp_file.read
cmp_file.close
else
cmp_msg = ""
end
jittat
[grader] [MERGED] Merged new-arch-branch changes 74:105 into the trunk...
r23
result_fname = "#{test_result_dir}/result"
comment_fname = "#{test_result_dir}/comment"
if FileTest.exist?(result_fname)
jittat
[grader] report error when the check script crashed (i.e., when the result file is not found, while the compilation is okay)...
r30 comment = ""
begin
result_file = File.open(result_fname)
result = result_file.readline.to_i
result_file.close
rescue
result = 0
comment = "error reading result file."
end
begin
comment_file = File.open(comment_fname)
comment += comment_file.readline.chomp
comment_file.close
rescue
comment += ""
end
jittat
[grader] [MERGED] Merged new-arch-branch changes 74:105 into the trunk...
r23 return {:points => result,
:comment => comment,
:cmp_msg => cmp_msg}
else
jittat
[grader] report error when the check script crashed (i.e., when the result file is not found, while the compilation is okay)...
r30 if FileTest.exist?("#{test_result_dir}/a.out")
return {:points => 0,
:comment => 'error during grading',
:cmp_msg => cmp_msg}
else
return {:points => 0,
jittat
[grader] fixed bug #6 and #9...
r37 :comment => 'compilation error',
jittat
[grader] report error when the check script crashed (i.e., when the result file is not found, while the compilation is okay)...
r30 :cmp_msg => cmp_msg}
end
jittat
[grader] [MERGED] Merged new-arch-branch changes 74:105 into the trunk...
r23 end
end
def save_result(submission,result)
problem = submission.problem
jittat
git-svn-id: http://theory.cpe.ku.ac.th/grader/judge/trunk/scripts@237 6386c4cd-e34a-4fa8-8920-d93eb39b512e
r56 submission.graded_at = Time.now.gmtime
jittat
[grader] [MERGED] Merged new-arch-branch changes 74:105 into the trunk...
r23 points = result[:points]
submission.points = points
comment = @config.report_comment(result[:comment])
jittat
[grader] change messages...
r58
#
# TODO: FIX THIS MESSAGE
#
jittat
[grader] [MERGED] Merged new-arch-branch changes 74:105 into the trunk...
r23 if problem == nil
submission.grader_comment = 'PASSED: ' + comment + '(problem is nil)'
elsif points == problem.full_score
jittat
[grader] change messages...
r58 #submission.grader_comment = 'PASSED: ' + comment
submission.grader_comment = comment
jittat
[grader] fixed bug #6 and #9...
r37 elsif result[:comment].chomp =~ /^[\[\]P]+$/
submission.grader_comment = 'PASSED: ' + comment + '(inconsistent score)'
jittat
[grader] [MERGED] Merged new-arch-branch changes 74:105 into the trunk...
r23 else
jittat
[grader] change messages...
r58 #submission.grader_comment = 'FAILED: ' + comment
submission.grader_comment = comment
jittat
[grader] [MERGED] Merged new-arch-branch changes 74:105 into the trunk...
r23 end
submission.compiler_message = result[:cmp_msg] or ''
Jittat Fakcharoenphol
added --dry option to grader prob mode
r91
if not @dry_run
submission.save
end
jittat
[grader] [MERGED] Merged new-arch-branch changes 74:105 into the trunk...
r23 end
end
end