summaryrefslogtreecommitdiffhomepage
path: root/test/conftest.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/conftest.py')
-rw-r--r--test/conftest.py87
1 files changed, 45 insertions, 42 deletions
diff --git a/test/conftest.py b/test/conftest.py
index 8d2850fd..2fe4d8dc 100644
--- a/test/conftest.py
+++ b/test/conftest.py
@@ -11,10 +11,12 @@ import sys
import tempfile
import time
from multiprocessing import Process
+from pathlib import Path
import pytest
-from unit.check.discover_available import discover_available
+
from unit.check.check_prerequisites import check_prerequisites
+from unit.check.discover_available import discover_available
from unit.http import HTTP1
from unit.log import Log
from unit.log import print_log_on_assert
@@ -265,27 +267,26 @@ def unit_run(state_dir=None):
if not option.restart and 'unitd' in unit_instance:
return unit_instance
- builddir = f'{option.current_dir}/build'
- libdir = f'{builddir}/lib'
+ builddir = f'{option.current_dir}/build'
+ libdir = f'{builddir}/lib'
modulesdir = f'{libdir}/unit/modules'
- sbindir = f'{builddir}/sbin'
- unitd = f'{sbindir}/unitd'
+ sbindir = f'{builddir}/sbin'
+ unitd = f'{sbindir}/unitd'
- if not os.path.isfile(unitd):
- exit('Could not find unit')
+ if not Path(unitd).is_file():
+ sys.exit('Could not find unit')
- temp_dir = tempfile.mkdtemp(prefix='unit-test-')
- option.temp_dir = temp_dir
- public_dir(temp_dir)
+ temporary_dir = tempfile.mkdtemp(prefix='unit-test-')
+ option.temp_dir = temporary_dir
+ public_dir(temporary_dir)
- if oct(stat.S_IMODE(os.stat(builddir).st_mode)) != '0o777':
+ if oct(stat.S_IMODE(Path(builddir).stat().st_mode)) != '0o777':
public_dir(builddir)
- statedir = f'{temp_dir}/state' if state_dir is None else state_dir
- if not os.path.isdir(statedir):
- os.mkdir(statedir)
+ statedir = f'{temporary_dir}/state' if state_dir is None else state_dir
+ Path(statedir).mkdir(exist_ok=True)
- control_sock = f'{temp_dir}/control.unit.sock'
+ control_sock = f'{temporary_dir}/control.unit.sock'
unitd_args = [
unitd,
@@ -295,31 +296,32 @@ def unit_run(state_dir=None):
'--statedir',
statedir,
'--pid',
- f'{temp_dir}/unit.pid',
+ f'{temporary_dir}/unit.pid',
'--log',
- f'{temp_dir}/unit.log',
+ f'{temporary_dir}/unit.log',
'--control',
- f'unix:{temp_dir}/control.unit.sock',
+ f'unix:{temporary_dir}/control.unit.sock',
'--tmpdir',
- temp_dir,
+ temporary_dir,
]
if option.user:
unitd_args.extend(['--user', option.user])
- with open(f'{temp_dir}/unit.log', 'w') as log:
+ with open(f'{temporary_dir}/unit.log', 'w', encoding='utf-8') as log:
unit_instance['process'] = subprocess.Popen(unitd_args, stderr=log)
if not waitforfiles(control_sock):
Log.print_log()
- exit('Could not start unit')
+ sys.exit('Could not start unit')
- unit_instance['temp_dir'] = temp_dir
+ unit_instance['temp_dir'] = temporary_dir
unit_instance['control_sock'] = control_sock
unit_instance['unitd'] = unitd
- with open(f'{temp_dir}/unit.pid', 'r') as f:
- unit_instance['pid'] = f.read().rstrip()
+ unit_instance['pid'] = (
+ Path(f'{temporary_dir}/unit.pid').read_text(encoding='utf-8').rstrip()
+ )
if state_dir is None:
_clear_conf()
@@ -424,26 +426,27 @@ def _clear_conf(*, log=None):
def _clear_temp_dir():
- temp_dir = unit_instance['temp_dir']
+ temporary_dir = unit_instance['temp_dir']
- if is_findmnt and not waitforunmount(temp_dir, timeout=600):
- exit('Could not unmount some filesystems in tmpdir ({temp_dir}).')
+ if is_findmnt and not waitforunmount(temporary_dir, timeout=600):
+ sys.exit('Could not unmount filesystems in tmpdir ({temporary_dir}).')
- for item in os.listdir(temp_dir):
- if item not in [
+ for item in Path(temporary_dir).iterdir():
+ if item.name not in [
'control.unit.sock',
'state',
'unit.pid',
'unit.log',
]:
- path = os.path.join(temp_dir, item)
- public_dir(path)
- if os.path.isfile(path) or stat.S_ISSOCK(os.stat(path).st_mode):
- os.remove(path)
+
+ public_dir(item)
+
+ if item.is_file() or stat.S_ISSOCK(item.stat().st_mode):
+ item.unlink()
else:
for _ in range(10):
try:
- shutil.rmtree(path)
+ shutil.rmtree(item)
break
except OSError as err:
# OSError: [Errno 16] Device or resource busy
@@ -456,7 +459,7 @@ def _clear_temp_dir():
def _check_processes():
router_pid = _fds_info['router']['pid']
controller_pid = _fds_info['controller']['pid']
- unit_pid = unit_instance['pid']
+ main_pid = unit_instance['pid']
for _ in range(600):
out = (
@@ -466,7 +469,7 @@ def _check_processes():
.decode()
.splitlines()
)
- out = [l for l in out if unit_pid in l]
+ out = [l for l in out if main_pid in l]
if len(out) <= 3:
break
@@ -485,14 +488,14 @@ def _check_processes():
out = [
l
for l in out
- if re.search(fr'{router_pid}\s+{unit_pid}.*unit: router', l) is None
+ if re.search(fr'{router_pid}\s+{main_pid}.*unit: router', l) is None
]
assert len(out) == 1, 'one router'
out = [
l
for l in out
- if re.search(fr'{controller_pid}\s+{unit_pid}.*unit: controller', l)
+ if re.search(fr'{controller_pid}\s+{main_pid}.*unit: controller', l)
is None
]
assert len(out) == 0, 'one controller'
@@ -542,9 +545,9 @@ def _check_fds(*, log=None):
def _count_fds(pid):
- procfile = f'/proc/{pid}/fd'
- if os.path.isdir(procfile):
- return len(os.listdir(procfile))
+ procfile = Path(f'/proc/{pid}/fd')
+ if procfile.is_dir():
+ return len(list(procfile.iterdir()))
try:
out = subprocess.check_output(
@@ -616,7 +619,7 @@ def pytest_sessionfinish():
public_dir(option.cache_dir)
shutil.rmtree(option.cache_dir)
- if not option.save_log and os.path.isdir(option.temp_dir):
+ if not option.save_log and Path(option.temp_dir).is_dir():
public_dir(option.temp_dir)
shutil.rmtree(option.temp_dir)