1import glob 2import os 3import shutil 4import subprocess 5 6import pytest 7from conftest import option 8from unit.applications.proto import TestApplicationProto 9 10 11class TestApplicationJava(TestApplicationProto): 12 application_type = "java" 13 14 def prepare_env(self, script): 15 app_path = option.temp_dir + '/java' 16 web_inf_path = app_path + '/WEB-INF/' 17 classes_path = web_inf_path + 'classes/' 18 script_path = option.test_dir + '/java/' + script + '/' 19 20 if not os.path.isdir(app_path): 21 os.makedirs(app_path) 22 23 src = [] 24 25 for f in os.listdir(script_path): 26 file_path = script_path + f 27 28 if f.endswith('.java'): 29 src.append(file_path) 30 continue 31 32 if f.startswith('.') or f == 'Makefile': 33 continue 34 35 if os.path.isdir(file_path): 36 if f == 'WEB-INF': 37 continue 38 39 shutil.copytree(file_path, app_path + '/' + f) 40 continue 41 42 if f == 'web.xml': 43 if not os.path.isdir(web_inf_path): 44 os.makedirs(web_inf_path) 45 46 shutil.copy2(file_path, web_inf_path) 47 else: 48 shutil.copy2(file_path, app_path) 49 50 if src: 51 if not os.path.isdir(classes_path): 52 os.makedirs(classes_path) 53 54 classpath = ( 55 option.current_dir + '/build/tomcat-servlet-api-9.0.39.jar' 56 ) 57 58 ws_jars = glob.glob( 59 option.current_dir + '/build/websocket-api-java-*.jar' 60 ) 61 62 if not ws_jars: 63 pytest.fail('websocket api jar not found.') 64 65 javac = [ 66 'javac', 67 '-target', '8', '-source', '8', '-nowarn', 68 '-encoding', 'utf-8', 69 '-d', classes_path, 70 '-classpath', classpath + ':' + ws_jars[0], 71 ] 72 javac.extend(src) 73
| 1import glob 2import os 3import shutil 4import subprocess 5 6import pytest 7from conftest import option 8from unit.applications.proto import TestApplicationProto 9 10 11class TestApplicationJava(TestApplicationProto): 12 application_type = "java" 13 14 def prepare_env(self, script): 15 app_path = option.temp_dir + '/java' 16 web_inf_path = app_path + '/WEB-INF/' 17 classes_path = web_inf_path + 'classes/' 18 script_path = option.test_dir + '/java/' + script + '/' 19 20 if not os.path.isdir(app_path): 21 os.makedirs(app_path) 22 23 src = [] 24 25 for f in os.listdir(script_path): 26 file_path = script_path + f 27 28 if f.endswith('.java'): 29 src.append(file_path) 30 continue 31 32 if f.startswith('.') or f == 'Makefile': 33 continue 34 35 if os.path.isdir(file_path): 36 if f == 'WEB-INF': 37 continue 38 39 shutil.copytree(file_path, app_path + '/' + f) 40 continue 41 42 if f == 'web.xml': 43 if not os.path.isdir(web_inf_path): 44 os.makedirs(web_inf_path) 45 46 shutil.copy2(file_path, web_inf_path) 47 else: 48 shutil.copy2(file_path, app_path) 49 50 if src: 51 if not os.path.isdir(classes_path): 52 os.makedirs(classes_path) 53 54 classpath = ( 55 option.current_dir + '/build/tomcat-servlet-api-9.0.39.jar' 56 ) 57 58 ws_jars = glob.glob( 59 option.current_dir + '/build/websocket-api-java-*.jar' 60 ) 61 62 if not ws_jars: 63 pytest.fail('websocket api jar not found.') 64 65 javac = [ 66 'javac', 67 '-target', '8', '-source', '8', '-nowarn', 68 '-encoding', 'utf-8', 69 '-d', classes_path, 70 '-classpath', classpath + ':' + ws_jars[0], 71 ] 72 javac.extend(src) 73
|
| 74 if option.detailed: 75 print("\n$ " + " ".join(javac)) 76
|
74 try: 75 process = subprocess.Popen(javac, stderr=subprocess.STDOUT) 76 process.communicate() 77
| 77 try: 78 process = subprocess.Popen(javac, stderr=subprocess.STDOUT) 79 process.communicate() 80
|
| 81 except KeyboardInterrupt: 82 raise 83
|
78 except:
| 84 except:
|
79 pytest.fail('Cann\'t run javac process.')
| 85 pytest.fail('Can\'t run javac process.')
|
80 81 def load(self, script, **kwargs): 82 self.prepare_env(script) 83 84 self._load_conf( 85 { 86 "listeners": {"*:7080": {"pass": "applications/" + script}}, 87 "applications": { 88 script: { 89 "unit_jars": option.current_dir + '/build', 90 "type": self.get_application_type(), 91 "processes": {"spare": 0}, 92 "working_directory": option.test_dir 93 + '/java/' 94 + script 95 + '/', 96 "webapp": option.temp_dir + '/java', 97 } 98 }, 99 }, 100 **kwargs 101 )
| 86 87 def load(self, script, **kwargs): 88 self.prepare_env(script) 89 90 self._load_conf( 91 { 92 "listeners": {"*:7080": {"pass": "applications/" + script}}, 93 "applications": { 94 script: { 95 "unit_jars": option.current_dir + '/build', 96 "type": self.get_application_type(), 97 "processes": {"spare": 0}, 98 "working_directory": option.test_dir 99 + '/java/' 100 + script 101 + '/', 102 "webapp": option.temp_dir + '/java', 103 } 104 }, 105 }, 106 **kwargs 107 )
|