Add more tests with runner
Change-Id: If3ccae3bf6b2579267a862d12d6149523fed81cd
This commit is contained in:
parent
e06b41a069
commit
94fe98a0d0
|
@ -13,6 +13,9 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
import argparse
|
||||
import os
|
||||
import shutil # noqa
|
||||
import tempfile
|
||||
|
||||
import mock
|
||||
|
||||
|
@ -20,6 +23,18 @@ import dox.runner as doxrunner
|
|||
from dox.tests import base
|
||||
|
||||
|
||||
class FakeCommands(object):
|
||||
def __init__(self, commands=None, files_to_add=None):
|
||||
self.commands = commands or ["command1", "command2"]
|
||||
self.files_to_add = files_to_add or ["file1"]
|
||||
|
||||
def prep_commands(self):
|
||||
return self.commands
|
||||
|
||||
def get_add_files(self):
|
||||
return self.files_to_add
|
||||
|
||||
|
||||
class TestRunner(base.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
|
@ -58,3 +73,161 @@ class TestRunner(base.TestCase):
|
|||
dr = doxrunner.Runner(argparse.Namespace(path_map=None,
|
||||
user_map=None))
|
||||
self.assertEqual(None, dr.path_map)
|
||||
|
||||
def test_is_docker_installed(self):
|
||||
dr = doxrunner.Runner(argparse.Namespace(
|
||||
path_map=None,
|
||||
user_map=None))
|
||||
|
||||
def mydocker_cmd(dr, *args):
|
||||
raise OSError
|
||||
dr._docker_cmd = mydocker_cmd
|
||||
self.assertFalse(dr.is_docker_installed())
|
||||
|
||||
def mydocker_cmd(dr, *args):
|
||||
return True
|
||||
dr._docker_cmd = mydocker_cmd
|
||||
self.assertTrue(dr.is_docker_installed())
|
||||
|
||||
def test_docker_cmd(self):
|
||||
dr = doxrunner.Runner(argparse.Namespace(user_map=None,
|
||||
path_map=None,
|
||||
debug=False))
|
||||
dr._run_shell_command = mock.MagicMock()
|
||||
dr._docker_cmd("version")
|
||||
dr._run_shell_command.assert_called_with(
|
||||
['docker', 'version']
|
||||
)
|
||||
|
||||
dr = doxrunner.Runner(argparse.Namespace(user_map=None,
|
||||
path_map=None,
|
||||
debug=True))
|
||||
dr._run_shell_command = mock.MagicMock()
|
||||
dr._docker_cmd("version")
|
||||
dr._run_shell_command.assert_called_with(
|
||||
['docker', '-D', 'version']
|
||||
)
|
||||
|
||||
dr = doxrunner.Runner(argparse.Namespace(user_map=None,
|
||||
path_map=None,
|
||||
debug=True))
|
||||
dr._run_shell_command = mock.Mock()
|
||||
dr._run_shell_command.side_effect = OSError("Boom")
|
||||
self.assertRaises(OSError, dr._docker_cmd, "version")
|
||||
|
||||
def test_build_images_pass(self):
|
||||
dr = doxrunner.Runner(argparse.Namespace(path_map=None,
|
||||
user_map=None))
|
||||
dr.have_test_image = mock.Mock()
|
||||
dr.return_value = True
|
||||
self.assertIsNone(dr.build_test_image("image", FakeCommands()))
|
||||
|
||||
@mock.patch.multiple("shutil", rmtree=mock.DEFAULT,
|
||||
copy=mock.DEFAULT)
|
||||
def test_build_images(self, rmtree, copy):
|
||||
my_temp_file = tempfile.mkdtemp()
|
||||
docker_written = os.path.join(my_temp_file, "Dockerfile")
|
||||
fk = FakeCommands(["toto1", "toto2"],
|
||||
["blah3", "blah4"])
|
||||
|
||||
dr = doxrunner.Runner(argparse.Namespace(
|
||||
quiet=False, noop=False,
|
||||
rebuild=True, debug=True,
|
||||
path_map=None,
|
||||
user_map=None))
|
||||
m_docker_build = dr._docker_build = mock.Mock()
|
||||
with mock.patch.object(tempfile, "mkdtemp", return_value=my_temp_file):
|
||||
dr.build_test_image("myimage", fk)
|
||||
|
||||
m_docker_build.assert_called_once_with(
|
||||
dr.test_image_name, my_temp_file)
|
||||
|
||||
# Only the last one
|
||||
copy.assert_called_with('blah4',
|
||||
os.path.join(my_temp_file, "blah4"))
|
||||
self.assertTrue(copy.called)
|
||||
self.assertTrue(rmtree.called)
|
||||
self.assertTrue(os.path.exists(docker_written))
|
||||
um = dr.user_map
|
||||
|
||||
expected = """FROM %s
|
||||
RUN useradd -M -U -d /src -u %s %s
|
||||
ADD blah3 /dox/
|
||||
ADD blah4 /dox/
|
||||
WORKDIR /dox
|
||||
RUN toto1
|
||||
|
||||
RUN toto2
|
||||
""""" % ("myimage", um['uid'], um['username'])
|
||||
|
||||
self.assertEqual(expected, open(docker_written, 'r').read())
|
||||
|
||||
def test_have_base_image(self):
|
||||
dr = doxrunner.Runner(argparse.Namespace(
|
||||
rebuild=True,
|
||||
rebuild_all=False,
|
||||
path_map=None,
|
||||
user_map=None))
|
||||
dr._get_image_list = mock.MagicMock()
|
||||
self.assertFalse(dr.have_base_image())
|
||||
|
||||
dr = doxrunner.Runner(argparse.Namespace(
|
||||
rebuild=False,
|
||||
rebuild_all=True,
|
||||
path_map=None,
|
||||
user_map=None))
|
||||
dr._get_image_list = mock.MagicMock()
|
||||
self.assertFalse(dr.have_base_image())
|
||||
|
||||
dr = doxrunner.Runner(argparse.Namespace(
|
||||
rebuild=False,
|
||||
rebuild_all=False,
|
||||
path_map=None,
|
||||
user_map=None))
|
||||
dr._get_image_list = mock.MagicMock()
|
||||
dr._get_image_list.return_value = [dr.base_image_name]
|
||||
self.assertTrue(dr.have_base_image())
|
||||
|
||||
dr = doxrunner.Runner(argparse.Namespace(
|
||||
rebuild=False,
|
||||
rebuild_all=False,
|
||||
path_map=None,
|
||||
user_map=None))
|
||||
dr._get_image_list = mock.MagicMock()
|
||||
dr._get_image_list.return_value = []
|
||||
self.assertFalse(dr.have_base_image())
|
||||
|
||||
def test_have_test_image(self):
|
||||
# NOTE(chmou): this probably would need some refactoring with
|
||||
# have_base_image
|
||||
dr = doxrunner.Runner(argparse.Namespace(
|
||||
rebuild=True,
|
||||
rebuild_all=False,
|
||||
path_map=None,
|
||||
user_map=None))
|
||||
self.assertFalse(dr.have_test_image())
|
||||
|
||||
dr = doxrunner.Runner(argparse.Namespace(
|
||||
rebuild=False,
|
||||
rebuild_all=True,
|
||||
path_map=None,
|
||||
user_map=None))
|
||||
self.assertFalse(dr.have_test_image())
|
||||
|
||||
dr = doxrunner.Runner(argparse.Namespace(
|
||||
rebuild=False,
|
||||
rebuild_all=False,
|
||||
path_map=None,
|
||||
user_map=None))
|
||||
dr._get_image_list = mock.MagicMock()
|
||||
dr._get_image_list.return_value = [dr.test_image_name]
|
||||
self.assertTrue(dr.have_test_image())
|
||||
|
||||
dr = doxrunner.Runner(argparse.Namespace(
|
||||
rebuild=False,
|
||||
rebuild_all=False,
|
||||
path_map=None,
|
||||
user_map=None))
|
||||
dr._get_image_list = mock.MagicMock()
|
||||
dr._get_image_list.return_value = []
|
||||
self.assertFalse(dr.have_test_image())
|
||||
|
|
Loading…
Reference in New Issue