Description:
fix various bugs, save output, save comment git-svn-id: http://theory.cpe.ku.ac.th/grader/cli/trunk/scripts@21 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

r8:4a121cdd0baf - - 3 files changed: 6 inserted, 7 deleted

@@ -7,63 +7,61
7 7 'P'
8 8 elsif comment =~ /[Tt]ime/
9 9 'T'
10 10 else
11 11 '?'
12 12 end
13 13 end
14 14
15 15 problem_home = ENV['PROBLEM_HOME']
16 16 require "#{problem_home}/script/test_dsl.rb"
17 17 load "#{problem_home}/test_cases/all_tests.cfg"
18 18 problem = Problem.get_instance
19 19
20 20 if problem.well_formed? == false
21 21 puts "The problem specification is not well formed."
22 22 exit(127)
23 23 end
24 24
25 25 all_score = 0
26 26 all_comment = ''
27 27 (1..(problem.runs.length-1)).each do |k|
28 28 run = problem.runs[k]
29 29 run_score = 0
30 30 run_comment = ''
31 + run_comment_short = ''
31 32 run.tests.each do |test_num|
32 33 result_file_name = "#{test_num}/result"
33 34 if not File.exists?(result_file_name)
34 35 puts "Cannot find the file #{test_num}/result!"
35 36 exit(127)
36 37 end
37 38
38 39 result_file = File.new(result_file_name, "r")
39 40 result_file_lines = result_file.readlines
40 41 run_score = run_score + result_file_lines[1].to_i
41 - # run_comment += char_comment(result_file_lines[0])
42 - result_file_lines.each do |l|
43 - run_comment += l
44 - end
45 - run_comment += "----\n"
42 + run_comment += result_file_lines[0]
43 + run_comment_short += char_comment(result_file_lines[0])
46 44 result_file.close
47 45 end
48 46
49 47 run_result_file = File.new("result-#{k}", "w")
50 48 run_result_file.write run_score
51 49 run_result_file.write "\n"
52 50 run_result_file.close
53 51
54 52 run_comment_file = File.new("comment-#{k}", "w")
55 53 run_comment_file.write "#{run_comment}\n"
56 54 run_comment_file.close
57 55
58 56 all_score = all_score + run_score
59 - all_comment += run_comment
57 + all_comment += run_comment_short
60 58 end
61 59
62 60 result_file = File.new("result", "w")
63 61 result_file.write all_score
64 62 result_file.write "\n"
65 63 result_file.close
66 64
67 65 comment_file = File.new("comment", "w")
68 66 comment_file.write "#{all_comment}\n"
69 67 comment_file.close
@@ -75,40 +75,41
75 75 puts "Cannot compile the source code. See message in #{test_result_dir}/compile_message"
76 76 exit(127)
77 77 else
78 78 execute("mv a.out #{test_result_dir}", "Cannot move the compiled program to #{test_result_dir}")
79 79 system("rm -Rf #{sandbox_dir}/*")
80 80 end
81 81
82 82 require "#{problem_home}/script/test_dsl.rb"
83 83 load "#{problem_home}/test_cases/all_tests.cfg"
84 84 problem = Problem.get_instance
85 85
86 86 if problem.well_formed? == false
87 87 puts "The problem specification is not well formed."
88 88 exit(127)
89 89 end
90 90
91 91 # Doing the testing.
92 92 (1..(problem.num_tests)).each do |test_num|
93 93 puts
94 94 execute("cp #{test_result_dir}/a.out #{sandbox_dir}", "Cannot copy the compiled program into #{sandbox_dir}")
95 95 execute("#{problem_home}/script/run #{language} #{test_num}", "Error occured during execution of the run script")
96 96 execute("mkdir #{test_result_dir}/#{test_num}", "Cannot create directory #{test_result_dir}/#{test_num}")
97 97 execute("mv #{sandbox_dir}/result #{test_result_dir}/#{test_num}", "Cannot copy the result file into #{test_result_dir}/#{test_num}")
98 98 execute("mv #{sandbox_dir}/comment #{test_result_dir}/#{test_num}", "Cannot copy the comment file into #{test_result_dir}/#{test_num}")
99 + execute("mv #{sandbox_dir}/output.txt #{test_result_dir}/#{test_num}", "Cannot copy the output file into #{test_result_dir}/#{test_num}")
99 100 execute("rm -Rf #{sandbox_dir}/*", "Cannot clear #{sandbox_dir}")
100 101 end
101 102
102 103 # Grade
103 104 puts
104 105 puts "Grading..."
105 106 begin
106 107 Dir.chdir test_result_dir
107 108 rescue
108 109 puts "ERROR: Cannot change directory to #{test_result_dir}."
109 110 exit(127)
110 111 end
111 112 execute("#{problem_home}/script/grade", "An error occured during grading!")
112 113
113 114 puts
114 115 puts "All done!"
@@ -48,49 +48,49
48 48 puts "Running test #{test_num}..."
49 49 puts run_command
50 50 puts
51 51 system(run_command)
52 52
53 53 # Create the result file.
54 54 result_file = File.new("result", "w")
55 55 comment_file = File.new("comment", "w")
56 56
57 57 # Check if the program actually produced any output.
58 58 run_result_file = File.new("run_result", "r")
59 59 run_result = run_result_file.readlines
60 60 run_result_file.close
61 61 time_elapsed = run_result[run_result.length-1]
62 62
63 63 report = lambda{ |status, points, comment|
64 64 result_file.write status.strip
65 65 result_file.write "\n"
66 66 result_file.write points.to_s.strip
67 67 result_file.write "\n"
68 68 result_file.write time_elapsed.strip
69 69 result_file.write "\n"
70 70 result_file.close
71 71 `rm run_result`
72 - `rm output.txt`
72 + # `rm output.txt` --- keep the output
73 73
74 74 comment_file.write comment
75 75 comment_file.write "--run-result--\n"
76 76 run_result.each do |l|
77 77 comment_file.write l
78 78 end
79 79 comment_file.close
80 80
81 81 puts
82 82 puts "Done!"
83 83 exit(0)
84 84 }
85 85
86 86 if run_result[0][0,2] != "OK"
87 87 puts "There was a runtime error."
88 88 report.call(run_result[0], 0, "No comment.\n")
89 89 end
90 90
91 91 # Run 'check' to evaluate the output.
92 92 #puts "There was no runtime error. Proceed to checking the output."
93 93 check_command = "#{problem_home}/script/check #{language} #{test_num}"
94 94 puts "Checking the output..."
95 95 puts check_command
96 96 if not system(check_command)
You need to be logged in to leave comments. Login now