Ejemplo n.º 1
0
class DockerInteractionTests(unittest.TestCase):
    def setUp(self):
        self.docker = Docker()
        self.docker.start()

    def tearDown(self):
        self.docker.stop()

    def test_list_files(self):
        self.docker.run("mkdir /test/")
        self.docker.run('touch /test/file1')
        self.docker.run('touch /test/file2')
        self.assertEqual(set(self.docker.list_files('/test')), set(['file1', 'file2']))

    def test_list_files_bad_path(self):
        path = '/bad/path'
        self.assertRaisesRegexp(
            DockerFileNotFoundError,
            'Could not find the file or directory at path {0}'.format(path),
            self.docker.list_files,
            path
        )

    def test_list_directories(self):
        self.docker.run('mkdir dir1')
        self.docker.run('mkdir dir1/test')
        self.docker.run('mkdir dir2')
        self.docker.run('mkdir dir3')
        self.assertEqual(
            set(self.docker.list_directories('', include_trailing_slash=False)),
            set(['dir1', 'dir2', 'dir3'])
        )

    def test_list_directories_trailing_slash(self):
        self.docker.run('mkdir dir1')
        self.docker.run('mkdir dir1/test')
        self.docker.run('mkdir dir2')
        self.docker.run('mkdir dir3')
        self.assertEqual(
            set(self.docker.list_directories('', include_trailing_slash=True)),
            set(['dir1/', 'dir2/', 'dir3/'])
        )

    def test_list_directories_bad_path(self):
        path = '/bad/path'
        self.assertRaisesRegexp(
            DockerFileNotFoundError,
            'Could not find the file or directory at path {0}'.format(path),
            self.docker.list_directories,
            path
        )

    def test_create_and_list_files_in_sub_directory(self):
        self.docker.run('mkdir /builds')
        self.docker.run('touch /builds/readme.txt')

        self.assertEqual(self.docker.list_files('/builds'), ['readme.txt'])

    def test_read_file_with_content(self):
        file_name = '/readme.txt'
        file_content = 'this is a test file {0}\n'.format(randint(5000, 5500))
        self.docker.write_file(file_name, file_content)
        self.assertEqual(self.docker.read_file(file_name), file_content)

    def test_read_file_that_dont_exist(self):
        path = '/bad/path'
        self.assertRaisesRegexp(
            DockerFileNotFoundError,
            'Could not find the file or directory at path {0}'.format(path),
            self.docker.read_file,
            path
        )

    def test_read_file_eof_newline(self):
        path = '/etc/hostname'
        content = self.docker.read_file(path)
        self.assertTrue(content.endswith('\n'))

    def test_write_file_read_file(self):
        path = '/testfile'
        content = 'this is a nice file\n'
        self.docker.write_file(path, content)
        self.assertEqual(content, self.docker.read_file(path))

    def test_directory_exist(self):
        self.assertTrue(self.docker.directory_exist('~/'))
        self.assertFalse(self.docker.directory_exist('does-not-exist'))

    def test_file_exist(self):
        self.docker.run('touch file')
        self.assertTrue(self.docker.file_exist('file'))
        self.assertFalse(self.docker.file_exist('does-not-exist'))

    def test_combine_output(self):
        self.docker.combine_outputs = True
        result = self.docker.run('ls does-not-exist')
        self.assertEqual(result.err, '')
        self.assertEqual(result.out,
                         'ls: cannot access does-not-exist: No such file or directory\n')

    def test_privilege(self):
        Docker(privilege=True).start()

    def test_write_file_append(self):
        path = '/readme.txt'
        old_content = 'hi\n'
        content = 'this is a readme\n'
        self.docker.run('echo "{0}" > {1}'.format(old_content, path))

        self.docker.write_file(path, content, append=True)
        written_content = self.docker.read_file(path)
        self.assertEqual(written_content, '{0}\n{1}'.format(old_content, content))

    def test_write_file_no_append(self):
        path = '/readme.txt'
        old_content = 'hi'
        content = 'this is a readme\n'
        self.docker.run('echo "{0}" > {1}'.format(old_content, path))

        self.docker.write_file(path, content, append=False)
        written_content = self.docker.read_file(path)
        self.assertEqual(written_content, content)

    def test_write_file_quotes(self):
        path = '/readme.txt'
        content = 'this is a "readme"\n'

        self.docker.write_file(path, content, append=False)
        written_content = self.docker.read_file(path)
        self.assertEqual(written_content, content)

    def test_run_return_code(self):
        code = 4
        path = 'testfile'
        content = 'exit {0}\n'.format(code)
        self.docker.write_file(path, content)
        result = self.docker.run('bash {0}'.format(path))
        self.assertEqual(code, result.return_code)
class DockerInteractionTests(unittest.TestCase):
    def setUp(self):
        self.docker = Docker()
        self.docker.start()

    def tearDown(self):
        self.docker.stop()

    def test_create_files(self):
        self.docker.run('touch file1')
        self.docker.run('touch file2')
        self.assertEqual(self.docker.list_files(''), ['file1', 'file2'])

    def test_create_directories(self):
        self.docker.run('mkdir dir1')
        self.docker.run('mkdir dir1/test')
        self.docker.run('mkdir dir2')
        self.docker.run('mkdir dir3')
        self.assertEqual(
            self.docker.list_directories('', include_trailing_slash=False),
            ['dir1', 'dir2', 'dir3']
        )

    def test_create_and_list_files_in_sub_directory(self):
        self.docker.run('mkdir builds')
        self.docker.run('touch builds/readme.txt')

        self.assertEqual(self.docker.list_files('builds'), ['readme.txt'])

    def test_create_file_with_content(self):
        file_name = 'readme.txt'
        file_content = 'this is a test file'

        self.assertFalse(self.docker.file_exist(file_name))
        self.docker.create_file(file_name, file_content)
        self.assertTrue(self.docker.file_exist(file_name))

    def test_read_file_with_content(self):
        file_name = 'readme.txt'
        file_content = 'this is a test file {0}'.format(randint(5000, 5500))
        self.docker.run('echo \"{0}\" > ~/{1}; cat readme.txt'.format(file_content, file_name))

        self.assertEqual(self.docker.read_file(file_name), file_content)

    def test_read_file_that_dont_exist(self):
        self.assertIsNone(self.docker.read_file('no-file.txt'))

    def test_directory_exist(self):
        self.assertTrue(self.docker.directory_exist('~/'))
        self.assertFalse(self.docker.directory_exist('does-not-exist'))

    def test_file_exist(self):
        self.docker.run('touch file')
        self.assertTrue(self.docker.file_exist('file'))
        self.assertFalse(self.docker.file_exist('does-not-exist'))

    def test_combine_output(self):
        self.docker.combine_outputs = True
        result = self.docker.run('ls does-not-exist')
        self.assertEqual(result.err, '')
        self.assertEqual(result.out, 'ls: cannot access does-not-exist: No such file or directory')

    def test_privilege(self):
        Docker(privilege=True).start()
Ejemplo n.º 3
0
class DockerInteractionTests(unittest.TestCase):
    def setUp(self):
        self.docker = Docker()
        self.docker.start()

    def tearDown(self):
        self.docker.stop()

    def test_list_files(self):
        self.docker.run("mkdir /test/")
        self.docker.run('touch /test/file1')
        self.docker.run('touch /test/file2')
        self.assertEqual(set(self.docker.list_files('/test')),
                         set(['file1', 'file2']))

    def test_list_files_bad_path(self):
        path = '/bad/path'
        self.assertRaisesRegexp(
            DockerFileNotFoundError,
            'Could not find the file or directory at path {0}'.format(path),
            self.docker.list_files, path)

    def test_list_directories(self):
        self.docker.run('mkdir dir1')
        self.docker.run('mkdir dir1/test')
        self.docker.run('mkdir dir2')
        self.docker.run('mkdir dir3')
        self.assertEqual(
            set(self.docker.list_directories('',
                                             include_trailing_slash=False)),
            set(['dir1', 'dir2', 'dir3']))

    def test_list_directories_trailing_slash(self):
        self.docker.run('mkdir dir1')
        self.docker.run('mkdir dir1/test')
        self.docker.run('mkdir dir2')
        self.docker.run('mkdir dir3')
        self.assertEqual(
            set(self.docker.list_directories('', include_trailing_slash=True)),
            set(['dir1/', 'dir2/', 'dir3/']))

    def test_list_directories_bad_path(self):
        path = '/bad/path'
        self.assertRaisesRegexp(
            DockerFileNotFoundError,
            'Could not find the file or directory at path {0}'.format(path),
            self.docker.list_directories, path)

    def test_create_and_list_files_in_sub_directory(self):
        self.docker.run('mkdir /builds')
        self.docker.run('touch /builds/readme.txt')

        self.assertEqual(self.docker.list_files('/builds'), ['readme.txt'])

    def test_read_file_with_content(self):
        file_name = '/readme.txt'
        file_content = 'this is a test file {0}\n'.format(randint(5000, 5500))
        self.docker.write_file(file_name, file_content)
        self.assertEqual(self.docker.read_file(file_name), file_content)

    def test_read_file_that_dont_exist(self):
        path = '/bad/path'
        self.assertRaisesRegexp(
            DockerFileNotFoundError,
            'Could not find the file or directory at path {0}'.format(path),
            self.docker.read_file, path)

    def test_read_file_eof_newline(self):
        path = '/etc/hostname'
        content = self.docker.read_file(path)
        self.assertTrue(content.endswith('\n'))

    def test_write_file_read_file(self):
        path = '/testfile'
        content = 'this is a nice file\n'
        self.docker.write_file(path, content)
        self.assertEqual(content, self.docker.read_file(path))

    def test_directory_exist(self):
        self.assertTrue(self.docker.directory_exist('~/'))
        self.assertFalse(self.docker.directory_exist('does-not-exist'))

    def test_file_exist(self):
        self.docker.run('touch file')
        self.assertTrue(self.docker.file_exist('file'))
        self.assertFalse(self.docker.file_exist('does-not-exist'))

    def test_combine_output(self):
        self.docker.combine_outputs = True
        result = self.docker.run('ls does-not-exist')
        self.assertEqual(result.err, '')
        self.assertEqual(
            result.out,
            'ls: cannot access does-not-exist: No such file or directory\n')

    def test_privilege(self):
        Docker(privilege=True).start()

    def test_write_file_append(self):
        path = '/readme.txt'
        old_content = 'hi\n'
        content = 'this is a readme\n'
        self.docker.run('echo "{0}" > {1}'.format(old_content, path))

        self.docker.write_file(path, content, append=True)
        written_content = self.docker.read_file(path)
        self.assertEqual(written_content,
                         '{0}\n{1}'.format(old_content, content))

    def test_write_file_no_append(self):
        path = '/readme.txt'
        old_content = 'hi'
        content = 'this is a readme\n'
        self.docker.run('echo "{0}" > {1}'.format(old_content, path))

        self.docker.write_file(path, content, append=False)
        written_content = self.docker.read_file(path)
        self.assertEqual(written_content, content)

    def test_write_file_quotes(self):
        path = '/readme.txt'
        content = 'this is a "readme"\n'

        self.docker.write_file(path, content, append=False)
        written_content = self.docker.read_file(path)
        self.assertEqual(written_content, content)

    def test_run_return_code(self):
        code = 4
        path = 'testfile'
        content = 'exit {0}\n'.format(code)
        self.docker.write_file(path, content)
        result = self.docker.run('bash {0}'.format(path))
        self.assertEqual(code, result.return_code)