Forráskód Böngészése

feat: 按照commitId来命名文件

haha 3 éve
szülő
commit
1d25b6d65b
2 módosított fájl, 42 hozzáadás és 5 törlés
  1. 40 5
      web/app.py
  2. 2 0
      web/judgement.py

+ 40 - 5
web/app.py

@@ -33,6 +33,7 @@ def judge():
     data = json.loads(requestData)
     code = data['code']
     language = data['language']
+    cid = data['commitId']
     time_limit = int(data['timeLimit'])
     memory_limit = int(data['memoryLimit'])
     input_list = data['inputList']
@@ -41,16 +42,50 @@ def judge():
         return {"result_list": [{'result': "System Error"}],
                 'message': 'test data incompleted'}
     td_total = len(input_list)
-    save_test_cases(input_list, output_list, td_total)
-    src_file = save_code(language, code)
-    rst = judgement.judge(src_file, 'testcases', td_total, time_limit, memory_limit, language)
+    # save_test_cases(input_list, output_list, td_total)
+    # src_file = save_code(language, code)
+    save_test_cases_by_cid(cid, input_list, output_list, td_total)
+    src_file = save_code_by_cid(cid, language, code)
+    rst = judgement.judge(src_file, 'testcases-'+cid, td_total, time_limit, memory_limit, language)
     os.remove(src_file)
     shutil.rmtree('testcases')
-    app.logger.info(time.time()-start)
+    app.logger.info(time.time() - start)
     return rst
 
 
-def save_test_cases(input_list,output_list, td_total):
+def save_test_cases_by_cid(cid, input_list, output_list, td_total):
+    dir_name = 'testcases-' + cid
+    if os.path.exists(dir_name):
+        shutil.rmtree(dir_name)
+    os.mkdir(dir_name)
+    for i in range(0, td_total):
+        in_file = open(dir_name + '/' + str(i) + '.in', 'w')
+        in_file.write(input_list[i])
+        out_file = open(dir_name + '/' + str(i) + '.out', 'w')
+        out_file.write(output_list[i])
+
+
+def save_code_by_cid(cid, language, code):
+    dir_name = 'main-' + cid
+    if os.path.exists(dir_name):
+        shutil.rmtree(dir_name)
+    os.mkdir(dir_name)
+
+    src_file = None
+    if language == 'c':
+        src_file = open(dir_name+'/'+'main.c', 'w')
+    elif language == 'cpp':
+        src_file = open(dir_name+'/'+'main.cpp', 'w')
+    elif language == 'java':
+        src_file = open(dir_name+'/'+'Main.java', 'w')
+    elif language == 'python':
+        src_file = open(dir_name+'/'+'main.py', 'w')
+    app.logger.info(src_file.name)
+    src_file.write(code)
+    return src_file.name
+
+
+def save_test_cases(input_list, output_list, td_total):
     if os.path.exists('testcases'):
         shutil.rmtree('testcases')
     os.mkdir('testcases')

+ 2 - 0
web/judgement.py

@@ -69,6 +69,7 @@ def run(args, in_path, out_path, time_limit, memory_limit):
     return rst
 
 
+# 源代码文件,测试用例目录,测试用例个数,时间限制ms,内存限制KB,语言
 def judge(src_path, td_path, td_total, time_limit, memory_limit, language):
     args = []
     src_file = ''
@@ -94,6 +95,7 @@ def judge(src_path, td_path, td_total, time_limit, memory_limit, language):
             return {'result_list': [{'result': RESULT_STR[7]}]}
         args = ['python3', 'main.py']
         src_file = 'main.pyc'
+    # 遍历每一个测试用例
     for i in range(td_total):
         in_path = os.path.join(td_path, '%d.in' % i)
         out_path = os.path.join(td_path, '%d.out' % i)