Deleted Added
1import shutil
2
3import os
4import pytest
5
6from conftest import unit_run
7from conftest import unit_stop
8from unit.applications.lang.ruby import TestApplicationRuby
9from unit.feature.isolation import TestFeatureIsolation
10from unit.option import option
11

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

22
23 TestFeatureIsolation().check(option.available, unit['temp_dir'])
24
25 assert unit_stop() is None
26 shutil.rmtree(unit['temp_dir'])
27
28 return check if not complete_check else check()
29
30 def test_ruby_isolation_rootfs(self, is_su):
31 isolation_features = option.available['features']['isolation'].keys()
32
33 if not is_su:
34 if not 'unprivileged_userns_clone' in isolation_features:
35 pytest.skip('requires unprivileged userns or root')
36
37 if 'user' not in isolation_features:
38 pytest.skip('user namespace is not supported')
39
40 if 'mnt' not in isolation_features:
41 pytest.skip('mnt namespace is not supported')
42
43 if 'pid' not in isolation_features:
44 pytest.skip('pid namespace is not supported')
45
46 isolation = {'rootfs': option.temp_dir}
47
48 if not is_su:
49 isolation['namespaces'] = {
50 'mount': True,
51 'credential': True,
52 'pid': True,
53 }
54
55 os.mkdir(option.temp_dir + '/ruby')
56
57 shutil.copytree(
58 option.test_dir + '/ruby/status_int',
59 option.temp_dir + '/ruby/status_int',
60 )
61
62 self.load('status_int', isolation=isolation)
63
64 assert 'success' in self.conf(
65 '"/ruby/status_int/config.ru"', 'applications/status_int/script',
66 )
67
68 assert 'success' in self.conf(
69 '"/ruby/status_int"', 'applications/status_int/working_directory',
70 )
71
72 assert self.get()['status'] == 200, 'status int'