[virt-tools-list] [virt-bootstrap] [PATCH v4 23/26] tests: Update tests for untar()
Cedric Bosdonnat
cbosdonnat at suse.com
Thu Aug 3 16:32:46 UTC 2017
Should be merged in commit #22
--
Cedric
On Thu, 2017-08-03 at 14:13 +0100, Radostin Stoyanov wrote:
> Update the tests of safe_untar() to match the behaviour of untar().
>
> Rename 'safe_untar' to 'untar' in the test suite and add the `faster`
> class variable when mocking out DockerSource and FileSource.
> ---
> tests/test_docker_source.py | 3 +-
> tests/test_file_source.py | 12 ++++----
> tests/test_utils.py | 68 +++++++++++++++++++++++++++++++++------------
> 3 files changed, 59 insertions(+), 24 deletions(-)
>
> diff --git a/tests/test_docker_source.py b/tests/test_docker_source.py
> index 3865be6..d9fe32f 100644
> --- a/tests/test_docker_source.py
> +++ b/tests/test_docker_source.py
> @@ -47,6 +47,7 @@ class TestDockerSource(unittest.TestCase):
> m_self.url = "docker://test"
> m_self.images_dir = "/images_path"
> m_self.insecure = True
> + m_self.faster = False
> m_self.username = 'user'
> m_self.password = 'password'
> m_self.layers = [
> @@ -512,7 +513,7 @@ class TestDockerSource(unittest.TestCase):
> sources.DockerSource.unpack(m_self, dest)
>
> mocked.assert_called_once_with(m_self.layers, dest,
> - m_self.progress)
> + m_self.progress, m_self.faster)
> else:
> sources.DockerSource.unpack(m_self, dest)
>
> diff --git a/tests/test_file_source.py b/tests/test_file_source.py
> index a55ae4e..b850a7c 100644
> --- a/tests/test_file_source.py
> +++ b/tests/test_file_source.py
> @@ -71,21 +71,22 @@ class TestFileSource(unittest.TestCase):
>
> def test_unpack_to_dir(self):
> """
> - Ensures that unpack() calls safe_untar() when the output format
> + Ensures that unpack() calls untar() when the output format
> is set to 'dir'.
> """
> m_self = mock.Mock(spec=sources.FileSource)
> m_self.progress = mock.Mock()
> m_self.path = 'foo'
> + m_self.faster = False
> m_self.output_format = 'dir'
> dest = 'bar'
>
> with mock.patch('os.path.isfile') as m_isfile:
> m_isfile.return_value = True
> - with mock.patch('virtBootstrap.utils.safe_untar') as m_untar:
> + with mock.patch('virtBootstrap.utils.untar') as m_untar:
> sources.FileSource.unpack(m_self, dest)
>
> - m_untar.assert_called_once_with(m_self.path, dest)
> + m_untar.assert_called_once_with(m_self.path, dest, m_self.faster)
>
> def _unpack_raise_error_test(self,
> output_format,
> @@ -100,6 +101,7 @@ class TestFileSource(unittest.TestCase):
> m_self.progress = mock.Mock()
> m_self.path = 'foo'
> m_self.output_format = output_format
> + m_self.faster = False
> dest = 'bar'
>
> with mock.patch.multiple('os.path',
> @@ -125,11 +127,11 @@ class TestFileSource(unittest.TestCase):
>
> def test_unpack_raise_error_if_untar_fail(self):
> """
> - Ensures that unpack() throws an Exception when safe_untar()
> + Ensures that unpack() throws an Exception when untar()
> fails.
> """
> msg = 'Caught untar failure'
> - patch_method = 'virtBootstrap.utils.safe_untar'
> + patch_method = 'virtBootstrap.utils.untar'
> self._unpack_raise_error_test(output_format='dir',
> side_effect=Exception(msg),
> patch_method=patch_method,
> diff --git a/tests/test_utils.py b/tests/test_utils.py
> index 56f3460..07bcd6e 100644
> --- a/tests/test_utils.py
> +++ b/tests/test_utils.py
> @@ -115,29 +115,60 @@ class TestUtils(unittest.TestCase):
> utils.execute(['foo'])
>
> ###################################
> - # Tests for: safe_untar()
> + # Tests for: untar()
> ###################################
> - def test_utils_safe_untar_calls_execute(self):
> + def _apply_test_to_untar(self, src, dest, faster, expected_call):
> """
> - Ensures that safe_untar() calls execute with virt-sandbox
> - command to extract source files to destination folder.
> - Test for users with EUID 0 and 1000.
> + This method contains common test pattern used in the next two
> + test cases. Test for users with EUID 0 and 1000.
> """
> with mock.patch('virtBootstrap.utils.os.geteuid') as m_geteuid:
> for uid in [0, 1000]:
> + # Set UID
> m_geteuid.return_value = uid
> reload(utils)
> +
> + # If using virt-sandbox insert the LIBVIRT_CONN value
> + # in the expected call, after UID has been set.
> + if not faster:
> + expected_call[2] = utils.LIBVIRT_CONN
> +
> with mock.patch('virtBootstrap.utils.execute') as m_execute:
> - src, dest = 'foo', 'bar'
> - utils.safe_untar('foo', 'bar')
> - cmd = ['virt-sandbox',
> - '-c', utils.LIBVIRT_CONN,
> - '-m', 'host-bind:/mnt=' + dest,
> - '--',
> - '/bin/tar', 'xf', src,
> - '-C', '/mnt',
> - '--exclude', 'dev/*']
> - m_execute.assert_called_once_with(cmd)
> + utils.untar(src, dest, faster)
> + m_execute.assert_called_once_with(expected_call)
> +
> + def test_utils_untar_calls_execute_virt_sandbox(self):
> + """
> + Ensures that untar() calls execute with virt-sandbox
> + command when 'faster' is set to False.
> + """
> + src = 'foo'
> + dest = 'bar'
> + faster = False
> +
> + cmd = ['virt-sandbox',
> + '-c', 'utils.LIBVIRT_CONN',
> + '-m', 'host-bind:/mnt=' + dest,
> + '--',
> + '/bin/tar', 'xf', src,
> + '-C', '/mnt',
> + '--exclude', 'dev/*']
> + self._apply_test_to_untar(src, dest, faster, cmd)
> +
> + def test_utils_untar_calls_execute_tar(self):
> + """
> + Ensures that untar() calls execute with tar command when
> + faster is set to True.
> + """
> + src = 'foo'
> + dest = 'bar'
> + faster = True
> +
> + cmd = ['/bin/tar',
> + 'xf', src,
> + '-C', dest,
> + '--exclude', 'dev/*']
> + self._apply_test_to_untar(src, dest, faster, cmd)
>
> ###################################
> # Tests for: bytes_to_size()
> @@ -218,12 +249,13 @@ class TestUtils(unittest.TestCase):
> layers = ['l1', 'l2', 'l3']
> layers_list = [['', '', layer] for layer in layers]
> dest_dir = '/foo'
> - expected_calls = [mock.call(layer, dest_dir) for layer in layers]
> + expected_calls = [mock.call(layer, dest_dir, False)
> + for layer in layers]
> with mock.patch.multiple(utils,
> - safe_untar=mock.DEFAULT,
> + untar=mock.DEFAULT,
> log_layer_extract=mock.DEFAULT) as mocked:
> utils.untar_layers(layers_list, dest_dir, mock.Mock())
> - mocked['safe_untar'].assert_has_calls(expected_calls)
> + mocked['untar'].assert_has_calls(expected_calls)
>
> ###################################
> # Tests for: get_image_dir()
More information about the virt-tools-list
mailing list