Tests: minor fixes.

Fixed temporary dir removing.
Fixed printing path to log.
Module checks moved to the separate file.
This commit is contained in:
Andrei Zeliankou
2020-10-01 10:17:00 +01:00
parent 1fe1518ab1
commit d491527555
10 changed files with 89 additions and 76 deletions

View File

@@ -6,26 +6,12 @@ from conftest import option
class TestApplicationGo(TestApplicationProto):
@classmethod
def setup_class(cls, complete_check=True):
unit = super().setup_class(complete_check=False)
# check go module
go_app = TestApplicationGo()
go_app.temp_dir = unit.temp_dir
proc = go_app.prepare_env('empty', 'app')
if proc and proc.returncode == 0:
cls.available['modules']['go'] = []
return unit if not complete_check else unit.complete()
def prepare_env(self, script, name, static=False):
if not os.path.exists(self.temp_dir + '/go'):
os.mkdir(self.temp_dir + '/go')
env = os.environ.copy()
env['GOPATH'] = self.pardir + '/build/go'
env['GOPATH'] = option.current_dir + '/build/go'
if static:
args = [

View File

@@ -49,10 +49,12 @@ class TestApplicationJava(TestApplicationProto):
if not os.path.isdir(classes_path):
os.makedirs(classes_path)
classpath = self.pardir + '/build/tomcat-servlet-api-9.0.13.jar'
classpath = (
option.current_dir + '/build/tomcat-servlet-api-9.0.13.jar'
)
ws_jars = glob.glob(
self.pardir + '/build/websocket-api-java-*.jar'
option.current_dir + '/build/websocket-api-java-*.jar'
)
if not ws_jars:
@@ -78,7 +80,7 @@ class TestApplicationJava(TestApplicationProto):
"listeners": {"*:7080": {"pass": "applications/" + script}},
"applications": {
script: {
"unit_jars": self.pardir + '/build',
"unit_jars": option.current_dir + '/build',
"type": 'java',
"processes": {"spare": 0},
"working_directory": script_path,

View File

@@ -7,17 +7,6 @@ from conftest import option, public_dir
class TestApplicationNode(TestApplicationProto):
@classmethod
def setup_class(cls, complete_check=True):
unit = super().setup_class(complete_check=False)
# check node module
if os.path.exists(unit.pardir + '/node/node_modules'):
cls.available['modules']['node'] = []
return unit if not complete_check else unit.complete()
def load(self, script, name='app.js', **kwargs):
# copy application
@@ -28,7 +17,7 @@ class TestApplicationNode(TestApplicationProto):
# copy modules
shutil.copytree(
self.pardir + '/node/node_modules',
option.current_dir + '/node/node_modules',
self.temp_dir + '/node/node_modules',
)

View File

@@ -15,27 +15,6 @@ class TestApplicationTLS(TestApplicationProto):
self.context.check_hostname = False
self.context.verify_mode = ssl.CERT_NONE
@classmethod
def setup_class(cls, complete_check=True):
unit = super().setup_class(complete_check=False)
# check tls module
try:
subprocess.check_output(['which', 'openssl'])
output = subprocess.check_output(
[unit.unitd, '--version'], stderr=subprocess.STDOUT
)
if re.search('--openssl', output.decode()):
cls.available['modules']['openssl'] = []
except:
pass
return unit if not complete_check else unit.complete()
def certificate(self, name='default', load=True):
self.openssl_conf()

29
test/unit/check/go.py Normal file
View File

@@ -0,0 +1,29 @@
import os
import subprocess
def check_go(current_dir, temp_dir, test_dir):
if not os.path.exists(temp_dir + '/go'):
os.mkdir(temp_dir + '/go')
env = os.environ.copy()
env['GOPATH'] = current_dir + '/build/go'
try:
process = subprocess.Popen(
[
'go',
'build',
'-o',
temp_dir + '/go/app',
test_dir + '/go/empty/app.go',
],
env=env,
)
process.communicate()
if process.returncode == 0:
return True
except:
return None

6
test/unit/check/node.py Normal file
View File

@@ -0,0 +1,6 @@
import os
def check_node(current_dir):
if os.path.exists(current_dir + '/node/node_modules'):
return True

13
test/unit/check/tls.py Normal file
View File

@@ -0,0 +1,13 @@
import re
import subprocess
def check_openssl(unitd):
subprocess.check_output(['which', 'openssl'])
output = subprocess.check_output(
[unitd, '--version'], stderr=subprocess.STDOUT
)
if re.search('--openssl', output.decode()):
return True

View File

@@ -16,11 +16,6 @@ from multiprocessing import Process
class TestUnit():
pardir = os.path.abspath(
os.path.join(os.path.dirname(__file__), os.pardir, os.pardir)
)
@classmethod
def setup_class(cls, complete_check=True):
cls.available = option.available
@@ -41,17 +36,9 @@ class TestUnit():
break
if m is None:
_print_log()
_print_log(path=unit.temp_dir + '/unit.log')
exit("Unit is writing log too long")
# discover available modules from unit.log
for module in re.findall(r'module: ([a-zA-Z]+) (.*) ".*"$', log, re.M):
if module[0] not in cls.available['modules']:
cls.available['modules'][module[0]] = [module[1]]
else:
cls.available['modules'][module[0]].append(module[1])
def check(available, prerequisites):
missed = []
@@ -102,7 +89,7 @@ class TestUnit():
self._run()
def _run(self):
build_dir = self.pardir + '/build'
build_dir = option.current_dir + '/build'
self.unitd = build_dir + '/unitd'
if not os.path.isfile(self.unitd):
@@ -122,7 +109,7 @@ class TestUnit():
[
self.unitd,
'--no-daemon',
'--modules', self.pardir + '/build',
'--modules', build_dir,
'--state', self.temp_dir + '/state',
'--pid', self.temp_dir + '/unit.pid',
'--log', self.temp_dir + '/unit.log',
@@ -135,7 +122,7 @@ class TestUnit():
atexit.register(self.stop)
if not waitforfiles(self.temp_dir + '/control.unit.sock'):
_print_log()
_print_log(path=self.temp_dir + '/unit.log')
exit("Could not start unit")
self._started = True
@@ -155,7 +142,7 @@ class TestUnit():
if not option.save_log:
shutil.rmtree(self.temp_dir)
else:
_print_log()
_print_log(path=self.temp_dir)
assert self.stop_errors == [None, None], 'stop errors'