Description:
merge
Commit status:
[Not Reviewed]
References:
merge java
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r179:9eed5e566314 - - 2 files changed: 20 inserted, 20 deleted

@@ -84,93 +84,93
84 end
84 end
85 exit(127)
85 exit(127)
86 end
86 end
87
87
88 if params[:prog_lang]=='cpp'
88 if params[:prog_lang]=='cpp'
89 params[:prog_lang] = 'c++'
89 params[:prog_lang] = 'c++'
90 end
90 end
91
91
92 # Compile.
92 # Compile.
93 case params[:prog_lang]
93 case params[:prog_lang]
94
94
95 when "c"
95 when "c"
96 - command = "#{C_COMPILER} #{params[:source_file]} -o #{params[:output_file]} #{C_OPTIONS} 2> #{params[:message_file]}"
96 + command = "#{C_COMPILER} #{params[:source_file]} -o #{params[:output_file]} #{C_OPTIONS}"
97 - system(command)
97 + system(command, err: params[:message_file])
98
98
99 when "c++"
99 when "c++"
100 - command = "#{CPLUSPLUS_COMPILER} #{params[:source_file]} -o #{params[:output_file]} #{CPLUSPLUS_OPTIONS} 2> #{params[:message_file]}"
100 + command = "#{CPLUSPLUS_COMPILER} #{params[:source_file]} -o #{params[:output_file]} #{CPLUSPLUS_OPTIONS}"
101 - system(command)
101 + system(command, err: params[:message_file])
102
102
103 when "pas"
103 when "pas"
104 - command = "#{PASCAL_COMPILER} #{params[:source_file]} -ooutpas #{PASCAL_OPTIONS} > #{params[:message_file]}"
104 + command = "#{PASCAL_COMPILER} #{params[:source_file]} -ooutpas #{PASCAL_OPTIONS}"
105 - system(command)
105 + system(command,out: params[:message_file])
106 FileUtils.mv("output", params[:output_file])
106 FileUtils.mv("output", params[:output_file])
107
107
108 when "java"
108 when "java"
109 #rename the file to the public class name
109 #rename the file to the public class name
110
110
111 #get the class name
111 #get the class name
112 classname = 'DUMMY'
112 classname = 'DUMMY'
113 source = Array.new
113 source = Array.new
114 File.foreach(params[:source_file]) do |line|
114 File.foreach(params[:source_file]) do |line|
115 md = /\s*public\s*class\s*(\w*)/.match(line)
115 md = /\s*public\s*class\s*(\w*)/.match(line)
116 classname=md[1] if md
116 classname=md[1] if md
117 source << line unless line =~ /\s*package\s*\w+\s*\;/
117 source << line unless line =~ /\s*package\s*\w+\s*\;/
118 end
118 end
119 File.open("#{classname}.java","w") do |file|
119 File.open("#{classname}.java","w") do |file|
120 source.each do |s|
120 source.each do |s|
121 file.puts s
121 file.puts s
122 end
122 end
123 end
123 end
124 #system("cp #{params[:source_file]} #{classname}.java")
124 #system("cp #{params[:source_file]} #{classname}.java")
125 - command = "#{JAVA_COMPILER} #{classname}.java 2> #{params[:message_file]}"
125 + command = "#{JAVA_COMPILER} #{classname}.java"
126 - system(command)
126 + system(command, err: params[:message_file])
127 if File.exists?(classname + ".class")
127 if File.exists?(classname + ".class")
128 File.open(params[:output_file],"w") {|file| file.write("#{classname}")}
128 File.open(params[:output_file],"w") {|file| file.write("#{classname}")}
129 end
129 end
130 if classname == 'DUMMY'
130 if classname == 'DUMMY'
131 File.open(params[:message_file],"w") {|file| file.write("Cannot find any public class in the source code\n")}
131 File.open(params[:message_file],"w") {|file| file.write("Cannot find any public class in the source code\n")}
132 end
132 end
133
133
134 when "ruby"
134 when "ruby"
135 - command = "#{RUBY_INTERPRETER} -c #{params[:source_file]} 2> #{params[:message_file]}"
135 + command = "#{RUBY_INTERPRETER} -c #{params[:source_file]}"
136 - if system(command)
136 + if system(command, err: params[:message_file])
137 File.open(params[:output_file],"w") do |out_file|
137 File.open(params[:output_file],"w") do |out_file|
138 out_file.puts "#!#{RUBY_INTERPRETER}"
138 out_file.puts "#!#{RUBY_INTERPRETER}"
139 File.open(params[:source_file],"r").each do |line|
139 File.open(params[:source_file],"r").each do |line|
140 out_file.print line
140 out_file.print line
141 end
141 end
142 end
142 end
143 File.chmod(0755, params[:output_file])
143 File.chmod(0755, params[:output_file])
144 end
144 end
145
145
146 when "python"
146 when "python"
147 - command = "#{PYTHON_CHECKER} #{params[:source_file]} > #{params[:message_file]}"
147 + command = "#{PYTHON_CHECKER} #{params[:source_file]}"
148 - if system(command)
148 + if system(command, out: params[:message_file])
149 #compile to python bytecode
149 #compile to python bytecode
150 command = "#{PYTHON_INTERPRETER} -m py_compile #{params[:source_file]}"
150 command = "#{PYTHON_INTERPRETER} -m py_compile #{params[:source_file]}"
151 puts "compile: #{command}"
151 puts "compile: #{command}"
152 system(command)
152 system(command)
153 puts "pwd: " + Dir.pwd
153 puts "pwd: " + Dir.pwd
154 Dir.new('.').each {|file| puts file}
154 Dir.new('.').each {|file| puts file}
155 File.open(params[:output_file],"w") do |out_file|
155 File.open(params[:output_file],"w") do |out_file|
156 out_file.puts "#!#{PYTHON_INTERPRETER} #{params[:source_file]}c"
156 out_file.puts "#!#{PYTHON_INTERPRETER} #{params[:source_file]}c"
157 end
157 end
158 File.chmod(0755, params[:output_file])
158 File.chmod(0755, params[:output_file])
159 FileUtils.cp("#{params[:source_file]}c",params[:output_file])
159 FileUtils.cp("#{params[:source_file]}c",params[:output_file])
160 end
160 end
161
161
162 when "php"
162 when "php"
163 - command = "#{PHP_INTERPRETER} #{PHP_OPTIONS} #{params[:source_file]} 2> #{params[:message_file]}"
163 + command = "#{PHP_INTERPRETER} #{PHP_OPTIONS} #{params[:source_file]}"
164 - if system(command)
164 + if system(command, err: params[:message_file])
165 File.open(params[:output_file],"w") do |out_file|
165 File.open(params[:output_file],"w") do |out_file|
166 out_file.puts "#!#{PHP_INTERPRETER}"
166 out_file.puts "#!#{PHP_INTERPRETER}"
167 File.open(params[:source_file],"r").each do |line|
167 File.open(params[:source_file],"r").each do |line|
168 out_file.print line
168 out_file.print line
169 end
169 end
170 end
170 end
171 File.chmod(0755, params[:output_file])
171 File.chmod(0755, params[:output_file])
172 end
172 end
173
173
174 else
174 else
175 talk("ERROR: Invalid language specified!")
175 talk("ERROR: Invalid language specified!")
176 open(params[:message_file],"w") do |f|
176 open(params[:message_file],"w") do |f|
@@ -95,40 +95,40
95 PYTHON_OPTION = "-p /usr/lib64/ -p /usr/local/lib64/ -p /usr/local/lib/ -p /usr/bin/ -p /lib64/ -p #{sandbox_dir}/#{program_name} -p ./#{program_name} -p #{sandbox_dir}/#{source_name} -s set_robust_list -s openat -s recvmsg -s connect -s socket -s sendto -s futex -E PYTHONNOUSERSITE=yes"
95 PYTHON_OPTION = "-p /usr/lib64/ -p /usr/local/lib64/ -p /usr/local/lib/ -p /usr/bin/ -p /lib64/ -p #{sandbox_dir}/#{program_name} -p ./#{program_name} -p #{sandbox_dir}/#{source_name} -s set_robust_list -s openat -s recvmsg -s connect -s socket -s sendto -s futex -E PYTHONNOUSERSITE=yes"
96 PHP_OPTION = "-p /usr/lib64/ -p/lib64/ -p /usr/bin/ -p #{sandbox_dir}/#{program_name} -p ./#{program_name} -p /usr/share/ -s setfsuid -s setfsgid -s openat -s set_robust_list -s futex -s clone -s socket -s connect"
96 PHP_OPTION = "-p /usr/lib64/ -p/lib64/ -p /usr/bin/ -p #{sandbox_dir}/#{program_name} -p ./#{program_name} -p /usr/share/ -s setfsuid -s setfsgid -s openat -s set_robust_list -s futex -s clone -s socket -s connect"
97
97
98 case language
98 case language
99 when "java"
99 when "java"
100 # for java, extract the classname
100 # for java, extract the classname
101 # wne have to add additional systemcall and we don't check the mem limit (dunno how to fix...)
101 # wne have to add additional systemcall and we don't check the mem limit (dunno how to fix...)
102 classname = 'DUMMY'
102 classname = 'DUMMY'
103 File.open(program_name,"r").each do |line|
103 File.open(program_name,"r").each do |line|
104 classname = line
104 classname = line
105 end
105 end
106 #for java, we cannot really check the memory limit...
106 #for java, we cannot really check the memory limit...
107 - run_command = "#{problem_home}/script/box -a 3 -f -T -t #{time_limit} #{JAVA_OPTION} -i #{input_file_name} -o output.txt /usr/bin/java #{classname} 2>run_result"
107 + run_command = "#{problem_home}/script/box -a 3 -f -T -t #{time_limit} #{JAVA_OPTION} -i #{input_file_name} -o output.txt /usr/bin/java #{classname} "
108 when "ruby"
108 when "ruby"
109 - run_command = "#{problem_home}/script/box -a 2 -f -T -t #{time_limit*=2} -m #{mem_limit} #{RUBY_OPTION} -i #{input_file_name} -o output.txt /usr/bin/ruby #{program_name} 2>run_result"
109 + run_command = "#{problem_home}/script/box -a 2 -f -T -t #{time_limit*=2} -m #{mem_limit} #{RUBY_OPTION} -i #{input_file_name} -o output.txt /usr/bin/ruby #{program_name} "
110 when "python"
110 when "python"
111 - run_command = "#{problem_home}/script/box -a 2 -f -T -t #{time_limit*=2} -m #{mem_limit} #{PYTHON_OPTION} -i #{input_file_name} -o output.txt /usr/bin/python #{program_name} 2>run_result"
111 + run_command = "#{problem_home}/script/box -a 2 -f -T -t #{time_limit*=2} -m #{mem_limit} #{PYTHON_OPTION} -i #{input_file_name} -o output.txt /usr/bin/python #{program_name} "
112 when "php"
112 when "php"
113 - run_command = "#{problem_home}/script/box -a 2 -f -T -t #{time_limit*=2} #{PHP_OPTION} -i #{input_file_name} -o output.txt /usr/bin/php #{program_name} 2>run_result"
113 + run_command = "#{problem_home}/script/box -a 2 -f -T -t #{time_limit*=2} #{PHP_OPTION} -i #{input_file_name} -o output.txt /usr/bin/php #{program_name} "
114 else # for c++, pascal, we do the normal checking
114 else # for c++, pascal, we do the normal checking
115 - run_command = "#{problem_home}/script/box -a 2 -f -T -t #{time_limit} -m #{mem_limit} -i #{input_file_name} -o output.txt #{program_name} 2>run_result"
115 + run_command = "#{problem_home}/script/box -a 2 -f -T -t #{time_limit} -m #{mem_limit} -i #{input_file_name} -o output.txt #{program_name} "
116 end
116 end
117
117
118
118
119 log "Running test #{test_num}..."
119 log "Running test #{test_num}..."
120 log run_command
120 log run_command
121 log
121 log
122 - system(run_command)
122 + system(run_command,err: 'run_result')
123
123
124 # Restore PROBLEM_HOME
124 # Restore PROBLEM_HOME
125 ENV['PROBLEM_HOME'] = problem_home
125 ENV['PROBLEM_HOME'] = problem_home
126
126
127 # Create the result file.
127 # Create the result file.
128 result_file = File.new("result", "w")
128 result_file = File.new("result", "w")
129 comment_file = File.new("comment", "w")
129 comment_file = File.new("comment", "w")
130
130
131 # Check if the program actually produced any output.
131 # Check if the program actually produced any output.
132 run_result_file = File.new("run_result", "r")
132 run_result_file = File.new("run_result", "r")
133 run_result = run_result_file.readlines
133 run_result = run_result_file.readlines
134 run_result_file.close
134 run_result_file.close
You need to be logged in to leave comments. Login now