test_php_isolation.py (1635:97afbb6c5a15) test_php_isolation.py (1654:fc7d0578e124)
1import shutil
2
1import pytest
2
3from conftest import option
3import pytest
4
5from conftest import option
6from conftest import unit_run
7from conftest import unit_stop
4from unit.applications.lang.php import TestApplicationPHP
5from unit.feature.isolation import TestFeatureIsolation
6
7
8class TestPHPIsolation(TestApplicationPHP):
9 prerequisites = {'modules': {'php': 'any'}, 'features': ['isolation']}
10
8from unit.applications.lang.php import TestApplicationPHP
9from unit.feature.isolation import TestFeatureIsolation
10
11
12class TestPHPIsolation(TestApplicationPHP):
13 prerequisites = {'modules': {'php': 'any'}, 'features': ['isolation']}
14
11 isolation = TestFeatureIsolation()
12
13 @classmethod
14 def setup_class(cls, complete_check=True):
15 @classmethod
16 def setup_class(cls, complete_check=True):
15 unit = super().setup_class(complete_check=False)
17 check = super().setup_class(complete_check=False)
16
18
17 TestFeatureIsolation().check(cls.available, unit.temp_dir)
19 unit = unit_run()
20 option.temp_dir = unit['temp_dir']
18
21
19 return unit if not complete_check else unit.complete()
22 TestFeatureIsolation().check(option.available, unit['temp_dir'])
20
23
24 assert unit_stop() is None
25 shutil.rmtree(unit['temp_dir'])
26
27 return check if not complete_check else check()
28
21 def test_php_isolation_rootfs(self, is_su):
29 def test_php_isolation_rootfs(self, is_su):
22 isolation_features = self.available['features']['isolation'].keys()
30 isolation_features = option.available['features']['isolation'].keys()
23
24 if 'mnt' not in isolation_features:
25 pytest.skip('requires mnt ns')
26
27 if not is_su:
28 if 'user' not in isolation_features:
29 pytest.skip('requires unprivileged userns or root')
30

--- 12 unchanged lines hidden (view full) ---

43 )
44 assert 'success' in self.conf(
45 '"/php/phpinfo"', 'applications/phpinfo/working_directory'
46 )
47
48 assert self.get()['status'] == 200, 'empty rootfs'
49
50 def test_php_isolation_rootfs_extensions(self, is_su):
31
32 if 'mnt' not in isolation_features:
33 pytest.skip('requires mnt ns')
34
35 if not is_su:
36 if 'user' not in isolation_features:
37 pytest.skip('requires unprivileged userns or root')
38

--- 12 unchanged lines hidden (view full) ---

51 )
52 assert 'success' in self.conf(
53 '"/php/phpinfo"', 'applications/phpinfo/working_directory'
54 )
55
56 assert self.get()['status'] == 200, 'empty rootfs'
57
58 def test_php_isolation_rootfs_extensions(self, is_su):
51 isolation_features = self.available['features']['isolation'].keys()
59 isolation_features = option.available['features']['isolation'].keys()
52
53 if not is_su:
54 if 'user' not in isolation_features:
55 pytest.skip('requires unprivileged userns or root')
56
57 if not 'unprivileged_userns_clone' in isolation_features:
58 pytest.skip('requires unprivileged userns or root')
59

--- 28 unchanged lines hidden ---
60
61 if not is_su:
62 if 'user' not in isolation_features:
63 pytest.skip('requires unprivileged userns or root')
64
65 if not 'unprivileged_userns_clone' in isolation_features:
66 pytest.skip('requires unprivileged userns or root')
67

--- 28 unchanged lines hidden ---