99 import mock
1010
1111
12- class DockerBasicInteractionTests (unittest .TestCase ):
13-
14- def test_create_files (self ):
15- with Docker () as docker :
16- docker .run ('touch file1' )
17- docker .run ('touch file2' )
18- self .assertEqual (docker .list_files ('' ), ['file1' , 'file2' ])
19-
20- def test_create_directories (self ):
21- with Docker () as docker :
22- docker .run ('mkdir dir1' )
23- docker .run ('mkdir dir1/test' )
24- docker .run ('mkdir dir2' )
25- docker .run ('mkdir dir3' )
26- self .assertEqual (
27- docker .list_directories ('' , include_trailing_slash = False ),
28- ['dir1' , 'dir2' , 'dir3' ]
29- )
30-
31- def test_create_and_list_files_in_sub_directory (self ):
32- with Docker () as docker :
33- docker .run ('mkdir builds' )
34- docker .run ('touch builds/readme.txt' )
35-
36- self .assertEqual (docker .list_files ('builds' ), ['readme.txt' ])
37-
38- def test_create_file_with_content (self ):
39- with Docker () as docker :
40- file_name = 'readme.txt'
41- file_content = 'this is a test file'
42-
43- self .assertFalse (docker .file_exist (file_name ))
44- docker .create_file (file_name , file_content )
45- self .assertTrue (docker .file_exist (file_name ))
46-
47- def test_read_file_with_content (self ):
48- with Docker () as docker :
49- file_name = 'readme.txt'
50- file_content = 'this is a test file {0}' .format (randint (5000 , 5500 ))
51- docker .create_file (file_name , file_content )
52-
53- self .assertEqual (docker .read_file (file_name ), file_content )
54-
55- def test_read_file_that_dont_exist (self ):
56- with Docker () as docker :
57- self .assertIsNone (docker .read_file ('no-file.txt' ))
12+ class DockerManagerTests (unittest .TestCase ):
13+ """
14+ This test class should contain tests for the docker manager
15+ that does not invoke docker.
16+ """
5817
5918 def test__get_working_directory (self ):
6019 self .assertEqual (Docker ._get_working_directory ('directory' ), '~/directory' )
6120 self .assertEqual (Docker ._get_working_directory ('/absolute/path' ), '/absolute/path' )
21+ self .assertEqual (Docker ._get_working_directory ('~/home/path' ), '~/home/path' )
6222
6323 @mock .patch ('docker.manager.Docker.stop' )
6424 @mock .patch ('docker.manager.Docker.start' )
@@ -79,3 +39,66 @@ def wrapped(docker):
7939 wrapped ()
8040 mock_start .assert_called_once_with ()
8141 mock_stop .assert_called_once_with ()
42+
43+
44+ class DockerInteractionTests (unittest .TestCase ):
45+ def setUp (self ):
46+ self .docker = Docker ()
47+ self .docker .start ()
48+
49+ def tearDown (self ):
50+ self .docker .stop ()
51+
52+ def test_create_files (self ):
53+ self .docker .run ('touch file1' )
54+ self .docker .run ('touch file2' )
55+ self .assertEqual (self .docker .list_files ('' ), ['file1' , 'file2' ])
56+
57+ def test_create_directories (self ):
58+ self .docker .run ('mkdir dir1' )
59+ self .docker .run ('mkdir dir1/test' )
60+ self .docker .run ('mkdir dir2' )
61+ self .docker .run ('mkdir dir3' )
62+ self .assertEqual (
63+ self .docker .list_directories ('' , include_trailing_slash = False ),
64+ ['dir1' , 'dir2' , 'dir3' ]
65+ )
66+
67+ def test_create_and_list_files_in_sub_directory (self ):
68+ self .docker .run ('mkdir builds' )
69+ self .docker .run ('touch builds/readme.txt' )
70+
71+ self .assertEqual (self .docker .list_files ('builds' ), ['readme.txt' ])
72+
73+ def test_create_file_with_content (self ):
74+ file_name = 'readme.txt'
75+ file_content = 'this is a test file'
76+
77+ self .assertFalse (self .docker .file_exist (file_name ))
78+ self .docker .create_file (file_name , file_content )
79+ self .assertTrue (self .docker .file_exist (file_name ))
80+
81+ def test_read_file_with_content (self ):
82+ file_name = 'readme.txt'
83+ file_content = 'this is a test file {0}' .format (randint (5000 , 5500 ))
84+ self .docker .run ('echo \" {0}\" > ~/{1}; cat readme.txt' .format (file_content , file_name ))
85+
86+ self .assertEqual (self .docker .read_file (file_name ), file_content )
87+
88+ def test_read_file_that_dont_exist (self ):
89+ self .assertIsNone (self .docker .read_file ('no-file.txt' ))
90+
91+ def test_directory_exist (self ):
92+ self .assertTrue (self .docker .directory_exist ('~/' ))
93+ self .assertFalse (self .docker .directory_exist ('does-not-exist' ))
94+
95+ def test_file_exist (self ):
96+ self .docker .run ('touch file' )
97+ self .assertTrue (self .docker .file_exist ('file' ))
98+ self .assertFalse (self .docker .file_exist ('does-not-exist' ))
99+
100+ def test_combine_output (self ):
101+ self .docker .combine_outputs = True
102+ result = self .docker .run ('ls does-not-exist' )
103+ self .assertEqual (result .err , '' )
104+ self .assertEqual (result .out , 'ls: cannot access does-not-exist: No such file or directory' )
0 commit comments