Tests: "language_deps" option checked more carefully.
import pytest
from unit.applications.lang.python import TestApplicationPython
from unit.option import option
+from unit.utils import findmnt
+from unit.utils import waitformount
+from unit.utils import waitforunmount
class TestPythonIsolation(TestApplicationPython):
@@ -60,39 +63,28 @@ class TestPythonIsolation(TestApplicationPython):
), 'application exists in rootfs'
def test_python_isolation_rootfs_no_language_deps(self, is_su, temp_dir):
- isolation_features = option.available['features']['isolation'].keys()
-
if not is_su:
- if not 'unprivileged_userns_clone' in isolation_features:
- pytest.skip('requires unprivileged userns or root')
-
- if 'user' not in isolation_features:
- pytest.skip('user namespace is not supported')
-
- if 'mnt' not in isolation_features:
- pytest.skip('mnt namespace is not supported')
-
- if 'pid' not in isolation_features:
- pytest.skip('pid namespace is not supported')
+ pytest.skip('requires root')
isolation = {
'rootfs': temp_dir,
'automount': {'language_deps': False}
}
- if not is_su:
- isolation['namespaces'] = {
- 'mount': True,
- 'credential': True,
- 'pid': True
- }
-
self.load('empty', isolation=isolation)
+ assert findmnt().find(temp_dir) == -1
assert (self.get()['status'] != 200), 'disabled language_deps'
+ assert findmnt().find(temp_dir) == -1
isolation['automount']['language_deps'] = True
self.load('empty', isolation=isolation)
+ assert findmnt().find(temp_dir) == -1
assert (self.get()['status'] == 200), 'enabled language_deps'
+ assert waitformount(temp_dir), 'language_deps mount'
+
+ self.conf({"listeners": {}, "applications": {}})
+
+ assert waitforunmount(temp_dir), 'language_deps unmount'
