Description:
[grader] fixed bug #6 and #9 git-svn-id: http://theory.cpe.ku.ac.th/grader/judge/trunk/scripts@139 6386c4cd-e34a-4fa8-8920-d93eb39b512e
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r37:effd16a52c43 - - 5 files changed: 13 inserted, 3 deleted

@@ -33,26 +33,28
33 33 attr_accessor :test_request_output_base_dir
34 34 attr_accessor :test_request_problem_templates_dir
35 35
36 36 # Comment received from the grading script will be filtered
37 37 # through Configuration#report_comment. How this method behave
38 38 # depends on this option; right now only two formats, :short and
39 39 # :long
40 40 attr_accessor :comment_report_style
41 41
42 42 def report_comment(comment)
43 43 case comment_report_style
44 44 when :short
45 - if comment.chomp =~ /^P+$/ # all P's
45 + if comment.chomp =~ /^[\[\]P]+$/ # all P's
46 46 'passed'
47 + elsif comment.chomp =~ /[Cc]ompil.*[Ee]rror/
48 + 'compilation error'
47 49 else
48 50 'failed'
49 51 end
50 52
51 53 when :full
52 54 comment.chomp
53 55 end
54 56 end
55 57
56 58 # Codes for singleton
57 59 private_class_method :new
58 60
@@ -78,38 +78,40
78 78 end
79 79
80 80 return {:points => result,
81 81 :comment => comment,
82 82 :cmp_msg => cmp_msg}
83 83 else
84 84 if FileTest.exist?("#{test_result_dir}/a.out")
85 85 return {:points => 0,
86 86 :comment => 'error during grading',
87 87 :cmp_msg => cmp_msg}
88 88 else
89 89 return {:points => 0,
90 - :comment => 'compile error',
90 + :comment => 'compilation error',
91 91 :cmp_msg => cmp_msg}
92 92 end
93 93 end
94 94 end
95 95
96 96 def save_result(submission,result)
97 97 problem = submission.problem
98 98 submission.graded_at = Time.now
99 99 points = result[:points]
100 100 submission.points = points
101 101 comment = @config.report_comment(result[:comment])
102 102 if problem == nil
103 103 submission.grader_comment = 'PASSED: ' + comment + '(problem is nil)'
104 104 elsif points == problem.full_score
105 105 submission.grader_comment = 'PASSED: ' + comment
106 + elsif result[:comment].chomp =~ /^[\[\]P]+$/
107 + submission.grader_comment = 'PASSED: ' + comment + '(inconsistent score)'
106 108 else
107 109 submission.grader_comment = 'FAILED: ' + comment
108 110 end
109 111 submission.compiler_message = result[:cmp_msg] or ''
110 112 submission.save
111 113 end
112 114
113 115 end
114 116
115 117 end
@@ -1,10 +1,13
1 + /*
2 + LANG: C
3 + */
1 4 #include <stdio.h>
2 5
3 6 int main()
4 7 {
5 8 int a,
6 9 scanf("%d %d",&a,&b);
7 10 printf("%d\n",a+b);
8 11 return 0;
9 12 }
10 13
@@ -1,10 +1,13
1 + /*
2 + LANG: C
3 + */
1 4 #include <stdio.h>
2 5
3 6 int main()
4 7 {
5 8 int a,b;
6 9 scanf("%d %d",&a,&b);
7 10 printf("%d\n",a+b);
8 11 return 0;
9 12 }
10 13
@@ -24,25 +24,25
24 24 :on => @problem_test_normal,
25 25 :and_report => {
26 26 :score => 135,
27 27 :comment => /^PASSED/})
28 28 end
29 29
30 30
31 31 it "should produce error message when submission cannot compile" do
32 32 grader_should(:grade => "test1_compile_error.c",
33 33 :on => @problem_test_normal,
34 34 :and_report => {
35 35 :score => 0,
36 - :comment => 'FAILED: compile error',
36 + :comment => 'FAILED: compilation error',
37 37 :compiler_message => /[Ee]rror/})
38 38 end
39 39
40 40 it "should produce timeout error when submission runs forever" do
41 41 @problem_test_timeout = stub(Problem,
42 42 :id => 1, :name => 'test_timeout',
43 43 :full_score => 10)
44 44 grader_should(:grade => "test2_timeout.c",
45 45 :on => @problem_test_timeout,
46 46 :and_report => {
47 47 :score => 0,
48 48 :comment => 'FAILED: TT'})
You need to be logged in to leave comments. Login now