Show More
Commit Description:
[grader] import script now support raw with testruns...
Commit Description:
[grader] import script now support raw with testruns git-svn-id: http://theory.cpe.ku.ac.th/grader/judge/trunk/scripts@267 6386c4cd-e34a-4fa8-8920-d93eb39b512e
File last commit:
Show/Diff file:
Action:
lib/configuration.rb | 84 lines | 2.4 KiB | text/x-ruby | RubyLexer |
module Grader
# This singleton class holds basic configurations for grader. When
# running in each mode, grader uses resources from different
# directories and outputs differently. Usually the attributes name
# are descriptive; below we explain more on each attributes.
class Configuration
# Rails' environment: "development", "production"
attr_accessor :rails_env
# Grader looks for problem [prob] in problem_dir/[prob], and store
# execution results for submission [x] of user [u] in directory
# user_result_dir/[u]/[x]
attr_accessor :problems_dir
attr_accessor :user_result_dir
# If report_grader=true, the grader would add a row in model
# GraderProcess. It would report itself with grader_hostname and
# process id.
attr_accessor :report_grader
attr_accessor :grader_hostname
# If talkative=true, grader would report status to console. If
# logging=true, grader would report status to a log file located
# in log_dir, in a file name mode.options.pid. TODO: defined
# log file naming.
attr_accessor :talkative
attr_accessor :logging
attr_accessor :log_dir
# These are directories related to the test interface.
attr_accessor :test_request_input_base_dir
attr_accessor :test_request_output_base_dir
attr_accessor :test_request_problem_templates_dir
# Comment received from the grading script will be filtered
# through Configuration#report_comment. How this method behave
# depends on this option; right now only two formats, :short and
# :long
attr_accessor :comment_report_style
def report_comment(comment)
case comment_report_style
when :short
if comment.chomp =~ /^[\[\]P]+$/ # all P's
'passed'
elsif comment.chomp =~ /[Cc]ompil.*[Ee]rror/
'compilation error'
else
'failed'
end
when :full
comment.chomp
end
end
# Codes for singleton
private_class_method :new
@@instance = nil
def self.get_instance
if @@instance==nil
@@instance = new
end
@@instance
end
private
def initialize
@talkative = false
@log_file = nil
@report_grader = false
@grader_hostname = `hostname`.chomp
@rails_env = 'development'
@comment_report_style = :full
end
end
end