IF YOU WOULD LIKE TO GET AN ACCOUNT, please write an email to s dot adaszewski at gmail dot com. User accounts are meant only to report issues and/or generate pull requests. This is a purpose-specific Git hosting for ADARED projects. Thank you for your understanding!
Просмотр исходного кода

Add tests for exec_hook, exec_prebuild, exec_postbuild.

master
Stanislaw Adaszewski 4 лет назад
Родитель
Сommit
a65fbf6bf6
1 измененных файлов: 95 добавлений и 0 удалений
  1. +95
    -0
      tests/test_compose.py

+ 95
- 0
tests/test_compose.py Просмотреть файл

@@ -0,0 +1,95 @@
from focker.compose import exec_hook, \
exec_prebuild, \
exec_postbuild
from tempfile import TemporaryDirectory
import os
import pytest
import fcntl
from focker.misc import focker_lock, \
focker_unlock
import inspect
import ast
def test_exec_hook_01():
spec = [
'touch test-exec-hook-01',
'touch test-exec-hook-02'
]
with TemporaryDirectory() as d:
exec_hook(spec, d, 'test-exec-hook')
assert os.path.exists(os.path.join(d, 'test-exec-hook-01'))
assert os.path.exists(os.path.join(d, 'test-exec-hook-02'))
assert not os.path.exists(d)
def test_exec_hook_02():
spec = 'touch test-exec-hook-01 && touch test-exec-hook-02'
with TemporaryDirectory() as d:
exec_hook(spec, d, 'test-exec-hook')
assert os.path.exists(os.path.join(d, 'test-exec-hook-01'))
assert os.path.exists(os.path.join(d, 'test-exec-hook-02'))
assert not os.path.exists(d)
@pytest.mark.xfail(raises=ValueError, strict=True)
def test_exec_hook_03a():
spec = 1
with TemporaryDirectory() as d:
exec_hook(spec, d, 'test-exec-hook')
@pytest.mark.xfail(raises=TypeError, strict=True)
def test_exec_hook_03b():
spec = [1]
with TemporaryDirectory() as d:
exec_hook(spec, d, 'test-exec-hook')
@pytest.mark.xfail(raises=FileNotFoundError, strict=True)
def test_exec_hook_04():
spec = 'ls'
exec_hook(spec, '/non-existent-directory/wcj20fy103', 'test-exec-hook')
def test_exec_hook_05():
spec = 'ls'
oldwd = os.getcwd()
with TemporaryDirectory() as d:
exec_hook(spec, d, 'test-exec-hook')
assert os.getcwd() == oldwd
@pytest.mark.xfail(raises=RuntimeError, strict=True)
def test_exec_hook_06():
spec = '/non-existent-command/hf249h'
with TemporaryDirectory() as d:
exec_hook(spec, d, 'test-exec-hook')
def test_exec_hook_07():
os.chdir('/')
spec = 'flock --nonblock /var/lock/focker.lock -c ls'
focker_lock()
assert fcntl.flock(focker_lock.fd, fcntl.LOCK_EX | fcntl.LOCK_NB) != 0
with TemporaryDirectory() as d:
exec_hook(spec, d, 'test-exec-hook')
assert fcntl.flock(focker_lock.fd, fcntl.LOCK_EX | fcntl.LOCK_NB) != 0
focker_unlock()
def _test_simple_forward(fun, fwd_fun_name='exec_hook'):
src = inspect.getsource(fun)
mod = ast.parse(src)
assert isinstance(mod.body[0], ast.FunctionDef)
assert isinstance(mod.body[0].body[0], ast.Return)
assert isinstance(mod.body[0].body[0].value, ast.Call)
assert mod.body[0].body[0].value.func.id == fwd_fun_name
def test_exec_prebuild():
_test_simple_forward(exec_prebuild)
def test_exec_postbuild():
_test_simple_forward(exec_postbuild)

Загрузка…
Отмена
Сохранить