99
1010from pre_commit .languages import docker
1111
12+ DOCKER_CGROUP_EXAMPLE = b'''\
13+ 12:hugetlb:/docker/c33988ec7651ebc867cb24755eaf637a6734088bc7eef59d5799293a9e5450f7
14+ 11:blkio:/docker/c33988ec7651ebc867cb24755eaf637a6734088bc7eef59d5799293a9e5450f7
15+ 10:freezer:/docker/c33988ec7651ebc867cb24755eaf637a6734088bc7eef59d5799293a9e5450f7
16+ 9:cpu,cpuacct:/docker/c33988ec7651ebc867cb24755eaf637a6734088bc7eef59d5799293a9e5450f7
17+ 8:pids:/docker/c33988ec7651ebc867cb24755eaf637a6734088bc7eef59d5799293a9e5450f7
18+ 7:rdma:/
19+ 6:net_cls,net_prio:/docker/c33988ec7651ebc867cb24755eaf637a6734088bc7eef59d5799293a9e5450f7
20+ 5:cpuset:/docker/c33988ec7651ebc867cb24755eaf637a6734088bc7eef59d5799293a9e5450f7
21+ 4:devices:/docker/c33988ec7651ebc867cb24755eaf637a6734088bc7eef59d5799293a9e5450f7
22+ 3:memory:/docker/c33988ec7651ebc867cb24755eaf637a6734088bc7eef59d5799293a9e5450f7
23+ 2:perf_event:/docker/c33988ec7651ebc867cb24755eaf637a6734088bc7eef59d5799293a9e5450f7
24+ 1:name=systemd:/docker/c33988ec7651ebc867cb24755eaf637a6734088bc7eef59d5799293a9e5450f7
25+ 0::/system.slice/containerd.service
26+ ''' # noqa: E501
27+
28+ # The ID should match the above cgroup example.
29+ CONTAINER_ID = 'c33988ec7651ebc867cb24755eaf637a6734088bc7eef59d5799293a9e5450f7' # noqa: E501
30+
31+ NON_DOCKER_CGROUP_EXAMPLE = b'''\
32+ 12:perf_event:/
33+ 11:hugetlb:/
34+ 10:devices:/
35+ 9:blkio:/
36+ 8:rdma:/
37+ 7:cpuset:/
38+ 6:cpu,cpuacct:/
39+ 5:freezer:/
40+ 4:memory:/
41+ 3:pids:/
42+ 2:net_cls,net_prio:/
43+ 1:name=systemd:/init.scope
44+ 0::/init.scope
45+ '''
46+
1247
1348def test_docker_fallback_user ():
1449 def invalid_attribute ():
@@ -37,45 +72,25 @@ def _mock_open(data):
3772
3873
3974def test_in_docker_docker_in_file ():
40- docker_cgroup_example = b'''\
41- 12:hugetlb:/docker/c33988ec7651ebc867cb24755eaf637a6734088bc7eef59d5799293a9e5450f7
42- 11:blkio:/docker/c33988ec7651ebc867cb24755eaf637a6734088bc7eef59d5799293a9e5450f7
43- 10:freezer:/docker/c33988ec7651ebc867cb24755eaf637a6734088bc7eef59d5799293a9e5450f7
44- 9:cpu,cpuacct:/docker/c33988ec7651ebc867cb24755eaf637a6734088bc7eef59d5799293a9e5450f7
45- 8:pids:/docker/c33988ec7651ebc867cb24755eaf637a6734088bc7eef59d5799293a9e5450f7
46- 7:rdma:/
47- 6:net_cls,net_prio:/docker/c33988ec7651ebc867cb24755eaf637a6734088bc7eef59d5799293a9e5450f7
48- 5:cpuset:/docker/c33988ec7651ebc867cb24755eaf637a6734088bc7eef59d5799293a9e5450f7
49- 4:devices:/docker/c33988ec7651ebc867cb24755eaf637a6734088bc7eef59d5799293a9e5450f7
50- 3:memory:/docker/c33988ec7651ebc867cb24755eaf637a6734088bc7eef59d5799293a9e5450f7
51- 2:perf_event:/docker/c33988ec7651ebc867cb24755eaf637a6734088bc7eef59d5799293a9e5450f7
52- 1:name=systemd:/docker/c33988ec7651ebc867cb24755eaf637a6734088bc7eef59d5799293a9e5450f7
53- 0::/system.slice/containerd.service
54- ''' # noqa: E501
55- with _mock_open (docker_cgroup_example ):
75+ with _mock_open (DOCKER_CGROUP_EXAMPLE ):
5676 assert docker ._is_in_docker () is True
5777
5878
5979def test_in_docker_docker_not_in_file ():
60- non_docker_cgroup_example = b'''\
61- 12:perf_event:/
62- 11:hugetlb:/
63- 10:devices:/
64- 9:blkio:/
65- 8:rdma:/
66- 7:cpuset:/
67- 6:cpu,cpuacct:/
68- 5:freezer:/
69- 4:memory:/
70- 3:pids:/
71- 2:net_cls,net_prio:/
72- 1:name=systemd:/init.scope
73- 0::/init.scope
74- '''
75- with _mock_open (non_docker_cgroup_example ):
80+ with _mock_open (NON_DOCKER_CGROUP_EXAMPLE ):
7681 assert docker ._is_in_docker () is False
7782
7883
84+ def test_get_container_id ():
85+ with _mock_open (DOCKER_CGROUP_EXAMPLE ):
86+ assert docker ._get_container_id () == CONTAINER_ID
87+
88+
89+ def test_get_container_id_failure ():
90+ with _mock_open (b'' ), pytest .raises (RuntimeError ):
91+ docker ._get_container_id ()
92+
93+
7994def test_get_docker_path_not_in_docker_returns_same ():
8095 with mock .patch .object (docker , '_is_in_docker' , return_value = False ):
8196 assert docker ._get_docker_path ('abc' ) == 'abc'
@@ -84,7 +99,10 @@ def test_get_docker_path_not_in_docker_returns_same():
8499@pytest .fixture
85100def in_docker ():
86101 with mock .patch .object (docker , '_is_in_docker' , return_value = True ):
87- yield
102+ with mock .patch .object (
103+ docker , '_get_container_id' , return_value = CONTAINER_ID ,
104+ ):
105+ yield
88106
89107
90108def _linux_commonpath ():
0 commit comments