2016-09-27 22:27:39 +00:00
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
'''
|
|
|
|
Tests for the archive state
|
|
|
|
'''
|
|
|
|
# Import python libs
|
2018-01-14 06:40:03 +00:00
|
|
|
from __future__ import absolute_import, print_function, unicode_literals
|
2016-09-27 22:27:39 +00:00
|
|
|
import os
|
|
|
|
import shutil
|
|
|
|
import textwrap
|
|
|
|
|
|
|
|
# Import Salt Testing libs
|
2017-04-03 16:04:09 +00:00
|
|
|
from tests.support.case import ModuleCase
|
2017-02-27 13:58:07 +00:00
|
|
|
from tests.support.unit import skipIf
|
2017-04-03 16:04:09 +00:00
|
|
|
from tests.support.paths import TMP
|
2017-02-27 15:59:04 +00:00
|
|
|
from tests.support.helpers import destructiveTest
|
2016-09-27 22:27:39 +00:00
|
|
|
|
|
|
|
# Import salt libs
|
2017-07-18 16:31:01 +00:00
|
|
|
import salt.utils.files
|
Use explicit unicode strings + break up salt.utils
This PR is part of what will be an ongoing effort to use explicit
unicode strings in Salt. Because Python 3 does not suport Python 2's raw
unicode string syntax (i.e. `ur'\d+'`), we must use
`salt.utils.locales.sdecode()` to ensure that the raw string is unicode.
However, because of how `salt/utils/__init__.py` has evolved into the
hulking monstrosity it is today, this means importing a large module in
places where it is not needed, which could negatively impact
performance. For this reason, this PR also breaks out some of the
functions from `salt/utils/__init__.py` into new/existing modules under
`salt/utils/`. The long term goal will be that the modules within this
directory do not depend on importing `salt.utils`.
A summary of the changes in this PR is as follows:
* Moves the following functions from `salt.utils` to new locations
(including a deprecation warning if invoked from `salt.utils`):
`to_bytes`, `to_str`, `to_unicode`, `str_to_num`, `is_quoted`,
`dequote`, `is_hex`, `is_bin_str`, `rand_string`,
`contains_whitespace`, `clean_kwargs`, `invalid_kwargs`, `which`,
`which_bin`, `path_join`, `shlex_split`, `rand_str`, `is_windows`,
`is_proxy`, `is_linux`, `is_darwin`, `is_sunos`, `is_smartos`,
`is_smartos_globalzone`, `is_smartos_zone`, `is_freebsd`, `is_netbsd`,
`is_openbsd`, `is_aix`
* Moves the functions already deprecated by @rallytime to the bottom of
`salt/utils/__init__.py` for better organization, so we can keep the
deprecated ones separate from the ones yet to be deprecated as we
continue to break up `salt.utils`
* Updates `salt/*.py` and all files under `salt/client/` to use explicit
unicode string literals.
* Gets rid of implicit imports of `salt.utils` (e.g. `from salt.utils
import foo` becomes `import salt.utils.foo as foo`).
* Renames the `test.rand_str` function to `test.random_hash` to more
accurately reflect what it does
* Modifies `salt.utils.stringutils.random()` (née `salt.utils.rand_string()`)
such that it returns a string matching the passed size. Previously
this function would get `size` bytes from `os.urandom()`,
base64-encode it, and return the result, which would in most cases not
be equal to the passed size.
2017-07-25 01:47:15 +00:00
|
|
|
import salt.utils.path
|
2018-01-14 06:40:03 +00:00
|
|
|
import salt.utils.stringutils
|
2016-09-27 22:27:39 +00:00
|
|
|
|
|
|
|
# Import 3rd party libs
|
2018-01-14 06:40:03 +00:00
|
|
|
from salt.ext import six
|
2016-09-27 22:27:39 +00:00
|
|
|
try:
|
|
|
|
import zipfile # pylint: disable=W0611
|
|
|
|
HAS_ZIPFILE = True
|
|
|
|
except ImportError:
|
|
|
|
HAS_ZIPFILE = False
|
|
|
|
|
|
|
|
|
|
|
|
@destructiveTest
|
2017-04-03 16:04:09 +00:00
|
|
|
class ArchiveTest(ModuleCase):
|
2016-09-27 22:27:39 +00:00
|
|
|
'''
|
|
|
|
Validate the archive module
|
|
|
|
'''
|
|
|
|
# Base path used for test artifacts
|
2017-04-03 16:04:09 +00:00
|
|
|
base_path = os.path.join(TMP, 'modules', 'archive')
|
2016-09-27 22:27:39 +00:00
|
|
|
|
|
|
|
def _set_artifact_paths(self, arch_fmt):
|
|
|
|
'''
|
|
|
|
Define the paths for the source, archive, and destination files
|
|
|
|
|
|
|
|
:param str arch_fmt: The archive format used in the test
|
|
|
|
'''
|
|
|
|
self.src = os.path.join(self.base_path, '{0}_src_dir'.format(arch_fmt))
|
|
|
|
self.src_file = os.path.join(self.src, 'file')
|
|
|
|
self.arch = os.path.join(self.base_path, 'archive.{0}'.format(arch_fmt))
|
|
|
|
self.dst = os.path.join(self.base_path, '{0}_dst_dir'.format(arch_fmt))
|
|
|
|
|
|
|
|
def _set_up(self, arch_fmt):
|
|
|
|
'''
|
|
|
|
Create source file tree and destination directory
|
|
|
|
|
|
|
|
:param str arch_fmt: The archive format used in the test
|
|
|
|
'''
|
|
|
|
# Setup artifact paths
|
|
|
|
self._set_artifact_paths(arch_fmt)
|
|
|
|
|
|
|
|
# Remove the artifacts if any present
|
|
|
|
if any([os.path.exists(f) for f in (self.src, self.arch, self.dst)]):
|
|
|
|
self._tear_down()
|
|
|
|
|
|
|
|
# Create source
|
|
|
|
os.makedirs(self.src)
|
2017-07-18 16:31:01 +00:00
|
|
|
with salt.utils.files.fopen(os.path.join(self.src, 'file'), 'w') as theorem:
|
2018-01-14 06:40:03 +00:00
|
|
|
theorem.write(textwrap.dedent(salt.utils.stringutils.to_str(r'''\
|
2016-09-27 22:27:39 +00:00
|
|
|
Compression theorem of computational complexity theory:
|
|
|
|
|
|
|
|
Given a Gödel numbering $φ$ of the computable functions and a
|
|
|
|
Blum complexity measure $Φ$ where a complexity class for a
|
|
|
|
boundary function $f$ is defined as
|
Use explicit unicode strings + break up salt.utils
This PR is part of what will be an ongoing effort to use explicit
unicode strings in Salt. Because Python 3 does not suport Python 2's raw
unicode string syntax (i.e. `ur'\d+'`), we must use
`salt.utils.locales.sdecode()` to ensure that the raw string is unicode.
However, because of how `salt/utils/__init__.py` has evolved into the
hulking monstrosity it is today, this means importing a large module in
places where it is not needed, which could negatively impact
performance. For this reason, this PR also breaks out some of the
functions from `salt/utils/__init__.py` into new/existing modules under
`salt/utils/`. The long term goal will be that the modules within this
directory do not depend on importing `salt.utils`.
A summary of the changes in this PR is as follows:
* Moves the following functions from `salt.utils` to new locations
(including a deprecation warning if invoked from `salt.utils`):
`to_bytes`, `to_str`, `to_unicode`, `str_to_num`, `is_quoted`,
`dequote`, `is_hex`, `is_bin_str`, `rand_string`,
`contains_whitespace`, `clean_kwargs`, `invalid_kwargs`, `which`,
`which_bin`, `path_join`, `shlex_split`, `rand_str`, `is_windows`,
`is_proxy`, `is_linux`, `is_darwin`, `is_sunos`, `is_smartos`,
`is_smartos_globalzone`, `is_smartos_zone`, `is_freebsd`, `is_netbsd`,
`is_openbsd`, `is_aix`
* Moves the functions already deprecated by @rallytime to the bottom of
`salt/utils/__init__.py` for better organization, so we can keep the
deprecated ones separate from the ones yet to be deprecated as we
continue to break up `salt.utils`
* Updates `salt/*.py` and all files under `salt/client/` to use explicit
unicode string literals.
* Gets rid of implicit imports of `salt.utils` (e.g. `from salt.utils
import foo` becomes `import salt.utils.foo as foo`).
* Renames the `test.rand_str` function to `test.random_hash` to more
accurately reflect what it does
* Modifies `salt.utils.stringutils.random()` (née `salt.utils.rand_string()`)
such that it returns a string matching the passed size. Previously
this function would get `size` bytes from `os.urandom()`,
base64-encode it, and return the result, which would in most cases not
be equal to the passed size.
2017-07-25 01:47:15 +00:00
|
|
|
|
2016-09-27 22:27:39 +00:00
|
|
|
$\mathrm C(f) := \{φ_i ∈ \mathbb R^{(1)} | (∀^∞ x) Φ_i(x) ≤ f(x)\}$.
|
Use explicit unicode strings + break up salt.utils
This PR is part of what will be an ongoing effort to use explicit
unicode strings in Salt. Because Python 3 does not suport Python 2's raw
unicode string syntax (i.e. `ur'\d+'`), we must use
`salt.utils.locales.sdecode()` to ensure that the raw string is unicode.
However, because of how `salt/utils/__init__.py` has evolved into the
hulking monstrosity it is today, this means importing a large module in
places where it is not needed, which could negatively impact
performance. For this reason, this PR also breaks out some of the
functions from `salt/utils/__init__.py` into new/existing modules under
`salt/utils/`. The long term goal will be that the modules within this
directory do not depend on importing `salt.utils`.
A summary of the changes in this PR is as follows:
* Moves the following functions from `salt.utils` to new locations
(including a deprecation warning if invoked from `salt.utils`):
`to_bytes`, `to_str`, `to_unicode`, `str_to_num`, `is_quoted`,
`dequote`, `is_hex`, `is_bin_str`, `rand_string`,
`contains_whitespace`, `clean_kwargs`, `invalid_kwargs`, `which`,
`which_bin`, `path_join`, `shlex_split`, `rand_str`, `is_windows`,
`is_proxy`, `is_linux`, `is_darwin`, `is_sunos`, `is_smartos`,
`is_smartos_globalzone`, `is_smartos_zone`, `is_freebsd`, `is_netbsd`,
`is_openbsd`, `is_aix`
* Moves the functions already deprecated by @rallytime to the bottom of
`salt/utils/__init__.py` for better organization, so we can keep the
deprecated ones separate from the ones yet to be deprecated as we
continue to break up `salt.utils`
* Updates `salt/*.py` and all files under `salt/client/` to use explicit
unicode string literals.
* Gets rid of implicit imports of `salt.utils` (e.g. `from salt.utils
import foo` becomes `import salt.utils.foo as foo`).
* Renames the `test.rand_str` function to `test.random_hash` to more
accurately reflect what it does
* Modifies `salt.utils.stringutils.random()` (née `salt.utils.rand_string()`)
such that it returns a string matching the passed size. Previously
this function would get `size` bytes from `os.urandom()`,
base64-encode it, and return the result, which would in most cases not
be equal to the passed size.
2017-07-25 01:47:15 +00:00
|
|
|
|
2016-09-27 22:27:39 +00:00
|
|
|
Then there exists a total computable function $f$ so that for
|
|
|
|
all $i$
|
Use explicit unicode strings + break up salt.utils
This PR is part of what will be an ongoing effort to use explicit
unicode strings in Salt. Because Python 3 does not suport Python 2's raw
unicode string syntax (i.e. `ur'\d+'`), we must use
`salt.utils.locales.sdecode()` to ensure that the raw string is unicode.
However, because of how `salt/utils/__init__.py` has evolved into the
hulking monstrosity it is today, this means importing a large module in
places where it is not needed, which could negatively impact
performance. For this reason, this PR also breaks out some of the
functions from `salt/utils/__init__.py` into new/existing modules under
`salt/utils/`. The long term goal will be that the modules within this
directory do not depend on importing `salt.utils`.
A summary of the changes in this PR is as follows:
* Moves the following functions from `salt.utils` to new locations
(including a deprecation warning if invoked from `salt.utils`):
`to_bytes`, `to_str`, `to_unicode`, `str_to_num`, `is_quoted`,
`dequote`, `is_hex`, `is_bin_str`, `rand_string`,
`contains_whitespace`, `clean_kwargs`, `invalid_kwargs`, `which`,
`which_bin`, `path_join`, `shlex_split`, `rand_str`, `is_windows`,
`is_proxy`, `is_linux`, `is_darwin`, `is_sunos`, `is_smartos`,
`is_smartos_globalzone`, `is_smartos_zone`, `is_freebsd`, `is_netbsd`,
`is_openbsd`, `is_aix`
* Moves the functions already deprecated by @rallytime to the bottom of
`salt/utils/__init__.py` for better organization, so we can keep the
deprecated ones separate from the ones yet to be deprecated as we
continue to break up `salt.utils`
* Updates `salt/*.py` and all files under `salt/client/` to use explicit
unicode string literals.
* Gets rid of implicit imports of `salt.utils` (e.g. `from salt.utils
import foo` becomes `import salt.utils.foo as foo`).
* Renames the `test.rand_str` function to `test.random_hash` to more
accurately reflect what it does
* Modifies `salt.utils.stringutils.random()` (née `salt.utils.rand_string()`)
such that it returns a string matching the passed size. Previously
this function would get `size` bytes from `os.urandom()`,
base64-encode it, and return the result, which would in most cases not
be equal to the passed size.
2017-07-25 01:47:15 +00:00
|
|
|
|
2016-09-27 22:27:39 +00:00
|
|
|
$\mathrm{Dom}(φ_i) = \mathrm{Dom}(φ_{f(i)})$
|
Use explicit unicode strings + break up salt.utils
This PR is part of what will be an ongoing effort to use explicit
unicode strings in Salt. Because Python 3 does not suport Python 2's raw
unicode string syntax (i.e. `ur'\d+'`), we must use
`salt.utils.locales.sdecode()` to ensure that the raw string is unicode.
However, because of how `salt/utils/__init__.py` has evolved into the
hulking monstrosity it is today, this means importing a large module in
places where it is not needed, which could negatively impact
performance. For this reason, this PR also breaks out some of the
functions from `salt/utils/__init__.py` into new/existing modules under
`salt/utils/`. The long term goal will be that the modules within this
directory do not depend on importing `salt.utils`.
A summary of the changes in this PR is as follows:
* Moves the following functions from `salt.utils` to new locations
(including a deprecation warning if invoked from `salt.utils`):
`to_bytes`, `to_str`, `to_unicode`, `str_to_num`, `is_quoted`,
`dequote`, `is_hex`, `is_bin_str`, `rand_string`,
`contains_whitespace`, `clean_kwargs`, `invalid_kwargs`, `which`,
`which_bin`, `path_join`, `shlex_split`, `rand_str`, `is_windows`,
`is_proxy`, `is_linux`, `is_darwin`, `is_sunos`, `is_smartos`,
`is_smartos_globalzone`, `is_smartos_zone`, `is_freebsd`, `is_netbsd`,
`is_openbsd`, `is_aix`
* Moves the functions already deprecated by @rallytime to the bottom of
`salt/utils/__init__.py` for better organization, so we can keep the
deprecated ones separate from the ones yet to be deprecated as we
continue to break up `salt.utils`
* Updates `salt/*.py` and all files under `salt/client/` to use explicit
unicode string literals.
* Gets rid of implicit imports of `salt.utils` (e.g. `from salt.utils
import foo` becomes `import salt.utils.foo as foo`).
* Renames the `test.rand_str` function to `test.random_hash` to more
accurately reflect what it does
* Modifies `salt.utils.stringutils.random()` (née `salt.utils.rand_string()`)
such that it returns a string matching the passed size. Previously
this function would get `size` bytes from `os.urandom()`,
base64-encode it, and return the result, which would in most cases not
be equal to the passed size.
2017-07-25 01:47:15 +00:00
|
|
|
|
2016-09-27 22:27:39 +00:00
|
|
|
and
|
Use explicit unicode strings + break up salt.utils
This PR is part of what will be an ongoing effort to use explicit
unicode strings in Salt. Because Python 3 does not suport Python 2's raw
unicode string syntax (i.e. `ur'\d+'`), we must use
`salt.utils.locales.sdecode()` to ensure that the raw string is unicode.
However, because of how `salt/utils/__init__.py` has evolved into the
hulking monstrosity it is today, this means importing a large module in
places where it is not needed, which could negatively impact
performance. For this reason, this PR also breaks out some of the
functions from `salt/utils/__init__.py` into new/existing modules under
`salt/utils/`. The long term goal will be that the modules within this
directory do not depend on importing `salt.utils`.
A summary of the changes in this PR is as follows:
* Moves the following functions from `salt.utils` to new locations
(including a deprecation warning if invoked from `salt.utils`):
`to_bytes`, `to_str`, `to_unicode`, `str_to_num`, `is_quoted`,
`dequote`, `is_hex`, `is_bin_str`, `rand_string`,
`contains_whitespace`, `clean_kwargs`, `invalid_kwargs`, `which`,
`which_bin`, `path_join`, `shlex_split`, `rand_str`, `is_windows`,
`is_proxy`, `is_linux`, `is_darwin`, `is_sunos`, `is_smartos`,
`is_smartos_globalzone`, `is_smartos_zone`, `is_freebsd`, `is_netbsd`,
`is_openbsd`, `is_aix`
* Moves the functions already deprecated by @rallytime to the bottom of
`salt/utils/__init__.py` for better organization, so we can keep the
deprecated ones separate from the ones yet to be deprecated as we
continue to break up `salt.utils`
* Updates `salt/*.py` and all files under `salt/client/` to use explicit
unicode string literals.
* Gets rid of implicit imports of `salt.utils` (e.g. `from salt.utils
import foo` becomes `import salt.utils.foo as foo`).
* Renames the `test.rand_str` function to `test.random_hash` to more
accurately reflect what it does
* Modifies `salt.utils.stringutils.random()` (née `salt.utils.rand_string()`)
such that it returns a string matching the passed size. Previously
this function would get `size` bytes from `os.urandom()`,
base64-encode it, and return the result, which would in most cases not
be equal to the passed size.
2017-07-25 01:47:15 +00:00
|
|
|
|
2016-09-27 22:27:39 +00:00
|
|
|
$\mathrm C(φ_i) ⊊ \mathrm{C}(φ_{f(i)})$.
|
2018-01-14 06:40:03 +00:00
|
|
|
''')))
|
2016-09-27 22:27:39 +00:00
|
|
|
|
|
|
|
# Create destination
|
|
|
|
os.makedirs(self.dst)
|
|
|
|
|
|
|
|
def _tear_down(self):
|
|
|
|
'''
|
|
|
|
Remove source file tree, archive, and destination file tree
|
|
|
|
'''
|
|
|
|
for f in (self.src, self.arch, self.dst):
|
|
|
|
if os.path.exists(f):
|
|
|
|
if os.path.isdir(f):
|
|
|
|
shutil.rmtree(f, ignore_errors=True)
|
|
|
|
else:
|
|
|
|
os.remove(f)
|
2017-03-06 16:45:59 +00:00
|
|
|
del self.dst
|
|
|
|
del self.src
|
|
|
|
del self.arch
|
|
|
|
del self.src_file
|
2016-09-27 22:27:39 +00:00
|
|
|
|
|
|
|
def _assert_artifacts_in_ret(self, ret, file_only=False):
|
|
|
|
'''
|
|
|
|
Assert that the artifact source files are printed in the source command
|
|
|
|
output
|
|
|
|
'''
|
|
|
|
# Try to find source directory and file in output lines
|
|
|
|
dir_in_ret = None
|
|
|
|
file_in_ret = None
|
|
|
|
for line in ret:
|
|
|
|
if self.src.lstrip('/') in line \
|
|
|
|
and not self.src_file.lstrip('/') in line:
|
|
|
|
dir_in_ret = True
|
|
|
|
if self.src_file.lstrip('/') in line:
|
|
|
|
file_in_ret = True
|
|
|
|
|
|
|
|
# Assert number of lines, reporting of source directory and file
|
|
|
|
self.assertTrue(len(ret) >= 1 if file_only else 2)
|
|
|
|
if not file_only:
|
|
|
|
self.assertTrue(dir_in_ret)
|
|
|
|
self.assertTrue(file_in_ret)
|
|
|
|
|
Use explicit unicode strings + break up salt.utils
This PR is part of what will be an ongoing effort to use explicit
unicode strings in Salt. Because Python 3 does not suport Python 2's raw
unicode string syntax (i.e. `ur'\d+'`), we must use
`salt.utils.locales.sdecode()` to ensure that the raw string is unicode.
However, because of how `salt/utils/__init__.py` has evolved into the
hulking monstrosity it is today, this means importing a large module in
places where it is not needed, which could negatively impact
performance. For this reason, this PR also breaks out some of the
functions from `salt/utils/__init__.py` into new/existing modules under
`salt/utils/`. The long term goal will be that the modules within this
directory do not depend on importing `salt.utils`.
A summary of the changes in this PR is as follows:
* Moves the following functions from `salt.utils` to new locations
(including a deprecation warning if invoked from `salt.utils`):
`to_bytes`, `to_str`, `to_unicode`, `str_to_num`, `is_quoted`,
`dequote`, `is_hex`, `is_bin_str`, `rand_string`,
`contains_whitespace`, `clean_kwargs`, `invalid_kwargs`, `which`,
`which_bin`, `path_join`, `shlex_split`, `rand_str`, `is_windows`,
`is_proxy`, `is_linux`, `is_darwin`, `is_sunos`, `is_smartos`,
`is_smartos_globalzone`, `is_smartos_zone`, `is_freebsd`, `is_netbsd`,
`is_openbsd`, `is_aix`
* Moves the functions already deprecated by @rallytime to the bottom of
`salt/utils/__init__.py` for better organization, so we can keep the
deprecated ones separate from the ones yet to be deprecated as we
continue to break up `salt.utils`
* Updates `salt/*.py` and all files under `salt/client/` to use explicit
unicode string literals.
* Gets rid of implicit imports of `salt.utils` (e.g. `from salt.utils
import foo` becomes `import salt.utils.foo as foo`).
* Renames the `test.rand_str` function to `test.random_hash` to more
accurately reflect what it does
* Modifies `salt.utils.stringutils.random()` (née `salt.utils.rand_string()`)
such that it returns a string matching the passed size. Previously
this function would get `size` bytes from `os.urandom()`,
base64-encode it, and return the result, which would in most cases not
be equal to the passed size.
2017-07-25 01:47:15 +00:00
|
|
|
@skipIf(not salt.utils.path.which('tar'), 'Cannot find tar executable')
|
2016-09-27 22:27:39 +00:00
|
|
|
def test_tar_pack(self):
|
|
|
|
'''
|
|
|
|
Validate using the tar function to create archives
|
|
|
|
'''
|
|
|
|
self._set_up(arch_fmt='tar')
|
|
|
|
|
|
|
|
# Test create archive
|
|
|
|
ret = self.run_function('archive.tar', ['-cvf', self.arch], sources=self.src)
|
2018-01-14 06:40:03 +00:00
|
|
|
self.assertTrue(isinstance(ret, list), six.text_type(ret))
|
2016-09-27 22:27:39 +00:00
|
|
|
self._assert_artifacts_in_ret(ret)
|
|
|
|
|
|
|
|
self._tear_down()
|
|
|
|
|
Use explicit unicode strings + break up salt.utils
This PR is part of what will be an ongoing effort to use explicit
unicode strings in Salt. Because Python 3 does not suport Python 2's raw
unicode string syntax (i.e. `ur'\d+'`), we must use
`salt.utils.locales.sdecode()` to ensure that the raw string is unicode.
However, because of how `salt/utils/__init__.py` has evolved into the
hulking monstrosity it is today, this means importing a large module in
places where it is not needed, which could negatively impact
performance. For this reason, this PR also breaks out some of the
functions from `salt/utils/__init__.py` into new/existing modules under
`salt/utils/`. The long term goal will be that the modules within this
directory do not depend on importing `salt.utils`.
A summary of the changes in this PR is as follows:
* Moves the following functions from `salt.utils` to new locations
(including a deprecation warning if invoked from `salt.utils`):
`to_bytes`, `to_str`, `to_unicode`, `str_to_num`, `is_quoted`,
`dequote`, `is_hex`, `is_bin_str`, `rand_string`,
`contains_whitespace`, `clean_kwargs`, `invalid_kwargs`, `which`,
`which_bin`, `path_join`, `shlex_split`, `rand_str`, `is_windows`,
`is_proxy`, `is_linux`, `is_darwin`, `is_sunos`, `is_smartos`,
`is_smartos_globalzone`, `is_smartos_zone`, `is_freebsd`, `is_netbsd`,
`is_openbsd`, `is_aix`
* Moves the functions already deprecated by @rallytime to the bottom of
`salt/utils/__init__.py` for better organization, so we can keep the
deprecated ones separate from the ones yet to be deprecated as we
continue to break up `salt.utils`
* Updates `salt/*.py` and all files under `salt/client/` to use explicit
unicode string literals.
* Gets rid of implicit imports of `salt.utils` (e.g. `from salt.utils
import foo` becomes `import salt.utils.foo as foo`).
* Renames the `test.rand_str` function to `test.random_hash` to more
accurately reflect what it does
* Modifies `salt.utils.stringutils.random()` (née `salt.utils.rand_string()`)
such that it returns a string matching the passed size. Previously
this function would get `size` bytes from `os.urandom()`,
base64-encode it, and return the result, which would in most cases not
be equal to the passed size.
2017-07-25 01:47:15 +00:00
|
|
|
@skipIf(not salt.utils.path.which('tar'), 'Cannot find tar executable')
|
2016-09-27 22:27:39 +00:00
|
|
|
def test_tar_unpack(self):
|
|
|
|
'''
|
|
|
|
Validate using the tar function to extract archives
|
|
|
|
'''
|
|
|
|
self._set_up(arch_fmt='tar')
|
|
|
|
self.run_function('archive.tar', ['-cvf', self.arch], sources=self.src)
|
|
|
|
|
|
|
|
# Test extract archive
|
|
|
|
ret = self.run_function('archive.tar', ['-xvf', self.arch], dest=self.dst)
|
2018-01-14 06:40:03 +00:00
|
|
|
self.assertTrue(isinstance(ret, list), six.text_type(ret))
|
2016-09-27 22:27:39 +00:00
|
|
|
self._assert_artifacts_in_ret(ret)
|
|
|
|
|
|
|
|
self._tear_down()
|
|
|
|
|
Use explicit unicode strings + break up salt.utils
This PR is part of what will be an ongoing effort to use explicit
unicode strings in Salt. Because Python 3 does not suport Python 2's raw
unicode string syntax (i.e. `ur'\d+'`), we must use
`salt.utils.locales.sdecode()` to ensure that the raw string is unicode.
However, because of how `salt/utils/__init__.py` has evolved into the
hulking monstrosity it is today, this means importing a large module in
places where it is not needed, which could negatively impact
performance. For this reason, this PR also breaks out some of the
functions from `salt/utils/__init__.py` into new/existing modules under
`salt/utils/`. The long term goal will be that the modules within this
directory do not depend on importing `salt.utils`.
A summary of the changes in this PR is as follows:
* Moves the following functions from `salt.utils` to new locations
(including a deprecation warning if invoked from `salt.utils`):
`to_bytes`, `to_str`, `to_unicode`, `str_to_num`, `is_quoted`,
`dequote`, `is_hex`, `is_bin_str`, `rand_string`,
`contains_whitespace`, `clean_kwargs`, `invalid_kwargs`, `which`,
`which_bin`, `path_join`, `shlex_split`, `rand_str`, `is_windows`,
`is_proxy`, `is_linux`, `is_darwin`, `is_sunos`, `is_smartos`,
`is_smartos_globalzone`, `is_smartos_zone`, `is_freebsd`, `is_netbsd`,
`is_openbsd`, `is_aix`
* Moves the functions already deprecated by @rallytime to the bottom of
`salt/utils/__init__.py` for better organization, so we can keep the
deprecated ones separate from the ones yet to be deprecated as we
continue to break up `salt.utils`
* Updates `salt/*.py` and all files under `salt/client/` to use explicit
unicode string literals.
* Gets rid of implicit imports of `salt.utils` (e.g. `from salt.utils
import foo` becomes `import salt.utils.foo as foo`).
* Renames the `test.rand_str` function to `test.random_hash` to more
accurately reflect what it does
* Modifies `salt.utils.stringutils.random()` (née `salt.utils.rand_string()`)
such that it returns a string matching the passed size. Previously
this function would get `size` bytes from `os.urandom()`,
base64-encode it, and return the result, which would in most cases not
be equal to the passed size.
2017-07-25 01:47:15 +00:00
|
|
|
@skipIf(not salt.utils.path.which('gzip'), 'Cannot find gzip executable')
|
2016-09-27 22:27:39 +00:00
|
|
|
def test_gzip(self):
|
|
|
|
'''
|
|
|
|
Validate using the gzip function
|
|
|
|
'''
|
|
|
|
self._set_up(arch_fmt='gz')
|
|
|
|
|
|
|
|
# Test create archive
|
|
|
|
ret = self.run_function('archive.gzip', [self.src_file], options='-v')
|
2018-01-14 06:40:03 +00:00
|
|
|
self.assertTrue(isinstance(ret, list), six.text_type(ret))
|
2016-09-27 22:27:39 +00:00
|
|
|
self._assert_artifacts_in_ret(ret, file_only=True)
|
|
|
|
|
|
|
|
self._tear_down()
|
|
|
|
|
Use explicit unicode strings + break up salt.utils
This PR is part of what will be an ongoing effort to use explicit
unicode strings in Salt. Because Python 3 does not suport Python 2's raw
unicode string syntax (i.e. `ur'\d+'`), we must use
`salt.utils.locales.sdecode()` to ensure that the raw string is unicode.
However, because of how `salt/utils/__init__.py` has evolved into the
hulking monstrosity it is today, this means importing a large module in
places where it is not needed, which could negatively impact
performance. For this reason, this PR also breaks out some of the
functions from `salt/utils/__init__.py` into new/existing modules under
`salt/utils/`. The long term goal will be that the modules within this
directory do not depend on importing `salt.utils`.
A summary of the changes in this PR is as follows:
* Moves the following functions from `salt.utils` to new locations
(including a deprecation warning if invoked from `salt.utils`):
`to_bytes`, `to_str`, `to_unicode`, `str_to_num`, `is_quoted`,
`dequote`, `is_hex`, `is_bin_str`, `rand_string`,
`contains_whitespace`, `clean_kwargs`, `invalid_kwargs`, `which`,
`which_bin`, `path_join`, `shlex_split`, `rand_str`, `is_windows`,
`is_proxy`, `is_linux`, `is_darwin`, `is_sunos`, `is_smartos`,
`is_smartos_globalzone`, `is_smartos_zone`, `is_freebsd`, `is_netbsd`,
`is_openbsd`, `is_aix`
* Moves the functions already deprecated by @rallytime to the bottom of
`salt/utils/__init__.py` for better organization, so we can keep the
deprecated ones separate from the ones yet to be deprecated as we
continue to break up `salt.utils`
* Updates `salt/*.py` and all files under `salt/client/` to use explicit
unicode string literals.
* Gets rid of implicit imports of `salt.utils` (e.g. `from salt.utils
import foo` becomes `import salt.utils.foo as foo`).
* Renames the `test.rand_str` function to `test.random_hash` to more
accurately reflect what it does
* Modifies `salt.utils.stringutils.random()` (née `salt.utils.rand_string()`)
such that it returns a string matching the passed size. Previously
this function would get `size` bytes from `os.urandom()`,
base64-encode it, and return the result, which would in most cases not
be equal to the passed size.
2017-07-25 01:47:15 +00:00
|
|
|
@skipIf(not salt.utils.path.which('gzip'), 'Cannot find gzip executable')
|
|
|
|
@skipIf(not salt.utils.path.which('gunzip'), 'Cannot find gunzip executable')
|
2016-09-27 22:27:39 +00:00
|
|
|
def test_gunzip(self):
|
|
|
|
'''
|
|
|
|
Validate using the gunzip function
|
|
|
|
'''
|
|
|
|
self._set_up(arch_fmt='gz')
|
|
|
|
self.run_function('archive.gzip', [self.src_file], options='-v')
|
|
|
|
|
|
|
|
# Test extract archive
|
|
|
|
ret = self.run_function('archive.gunzip', [self.src_file + '.gz'], options='-v')
|
2018-01-14 06:40:03 +00:00
|
|
|
self.assertTrue(isinstance(ret, list), six.text_type(ret))
|
2016-09-27 22:27:39 +00:00
|
|
|
self._assert_artifacts_in_ret(ret, file_only=True)
|
|
|
|
|
|
|
|
self._tear_down()
|
|
|
|
|
Use explicit unicode strings + break up salt.utils
This PR is part of what will be an ongoing effort to use explicit
unicode strings in Salt. Because Python 3 does not suport Python 2's raw
unicode string syntax (i.e. `ur'\d+'`), we must use
`salt.utils.locales.sdecode()` to ensure that the raw string is unicode.
However, because of how `salt/utils/__init__.py` has evolved into the
hulking monstrosity it is today, this means importing a large module in
places where it is not needed, which could negatively impact
performance. For this reason, this PR also breaks out some of the
functions from `salt/utils/__init__.py` into new/existing modules under
`salt/utils/`. The long term goal will be that the modules within this
directory do not depend on importing `salt.utils`.
A summary of the changes in this PR is as follows:
* Moves the following functions from `salt.utils` to new locations
(including a deprecation warning if invoked from `salt.utils`):
`to_bytes`, `to_str`, `to_unicode`, `str_to_num`, `is_quoted`,
`dequote`, `is_hex`, `is_bin_str`, `rand_string`,
`contains_whitespace`, `clean_kwargs`, `invalid_kwargs`, `which`,
`which_bin`, `path_join`, `shlex_split`, `rand_str`, `is_windows`,
`is_proxy`, `is_linux`, `is_darwin`, `is_sunos`, `is_smartos`,
`is_smartos_globalzone`, `is_smartos_zone`, `is_freebsd`, `is_netbsd`,
`is_openbsd`, `is_aix`
* Moves the functions already deprecated by @rallytime to the bottom of
`salt/utils/__init__.py` for better organization, so we can keep the
deprecated ones separate from the ones yet to be deprecated as we
continue to break up `salt.utils`
* Updates `salt/*.py` and all files under `salt/client/` to use explicit
unicode string literals.
* Gets rid of implicit imports of `salt.utils` (e.g. `from salt.utils
import foo` becomes `import salt.utils.foo as foo`).
* Renames the `test.rand_str` function to `test.random_hash` to more
accurately reflect what it does
* Modifies `salt.utils.stringutils.random()` (née `salt.utils.rand_string()`)
such that it returns a string matching the passed size. Previously
this function would get `size` bytes from `os.urandom()`,
base64-encode it, and return the result, which would in most cases not
be equal to the passed size.
2017-07-25 01:47:15 +00:00
|
|
|
@skipIf(not salt.utils.path.which('zip'), 'Cannot find zip executable')
|
2016-09-27 22:27:39 +00:00
|
|
|
def test_cmd_zip(self):
|
|
|
|
'''
|
|
|
|
Validate using the cmd_zip function
|
|
|
|
'''
|
|
|
|
self._set_up(arch_fmt='zip')
|
|
|
|
|
|
|
|
# Test create archive
|
|
|
|
ret = self.run_function('archive.cmd_zip', [self.arch, self.src])
|
2018-01-14 06:40:03 +00:00
|
|
|
self.assertTrue(isinstance(ret, list), six.text_type(ret))
|
2016-09-27 22:27:39 +00:00
|
|
|
self._assert_artifacts_in_ret(ret)
|
|
|
|
|
|
|
|
self._tear_down()
|
|
|
|
|
Use explicit unicode strings + break up salt.utils
This PR is part of what will be an ongoing effort to use explicit
unicode strings in Salt. Because Python 3 does not suport Python 2's raw
unicode string syntax (i.e. `ur'\d+'`), we must use
`salt.utils.locales.sdecode()` to ensure that the raw string is unicode.
However, because of how `salt/utils/__init__.py` has evolved into the
hulking monstrosity it is today, this means importing a large module in
places where it is not needed, which could negatively impact
performance. For this reason, this PR also breaks out some of the
functions from `salt/utils/__init__.py` into new/existing modules under
`salt/utils/`. The long term goal will be that the modules within this
directory do not depend on importing `salt.utils`.
A summary of the changes in this PR is as follows:
* Moves the following functions from `salt.utils` to new locations
(including a deprecation warning if invoked from `salt.utils`):
`to_bytes`, `to_str`, `to_unicode`, `str_to_num`, `is_quoted`,
`dequote`, `is_hex`, `is_bin_str`, `rand_string`,
`contains_whitespace`, `clean_kwargs`, `invalid_kwargs`, `which`,
`which_bin`, `path_join`, `shlex_split`, `rand_str`, `is_windows`,
`is_proxy`, `is_linux`, `is_darwin`, `is_sunos`, `is_smartos`,
`is_smartos_globalzone`, `is_smartos_zone`, `is_freebsd`, `is_netbsd`,
`is_openbsd`, `is_aix`
* Moves the functions already deprecated by @rallytime to the bottom of
`salt/utils/__init__.py` for better organization, so we can keep the
deprecated ones separate from the ones yet to be deprecated as we
continue to break up `salt.utils`
* Updates `salt/*.py` and all files under `salt/client/` to use explicit
unicode string literals.
* Gets rid of implicit imports of `salt.utils` (e.g. `from salt.utils
import foo` becomes `import salt.utils.foo as foo`).
* Renames the `test.rand_str` function to `test.random_hash` to more
accurately reflect what it does
* Modifies `salt.utils.stringutils.random()` (née `salt.utils.rand_string()`)
such that it returns a string matching the passed size. Previously
this function would get `size` bytes from `os.urandom()`,
base64-encode it, and return the result, which would in most cases not
be equal to the passed size.
2017-07-25 01:47:15 +00:00
|
|
|
@skipIf(not salt.utils.path.which('zip'), 'Cannot find zip executable')
|
|
|
|
@skipIf(not salt.utils.path.which('unzip'), 'Cannot find unzip executable')
|
2016-09-27 22:27:39 +00:00
|
|
|
def test_cmd_unzip(self):
|
|
|
|
'''
|
|
|
|
Validate using the cmd_unzip function
|
|
|
|
'''
|
|
|
|
self._set_up(arch_fmt='zip')
|
|
|
|
self.run_function('archive.cmd_zip', [self.arch, self.src])
|
|
|
|
|
|
|
|
# Test create archive
|
|
|
|
ret = self.run_function('archive.cmd_unzip', [self.arch, self.dst])
|
2018-01-14 06:40:03 +00:00
|
|
|
self.assertTrue(isinstance(ret, list), six.text_type(ret))
|
2016-09-27 22:27:39 +00:00
|
|
|
self._assert_artifacts_in_ret(ret)
|
|
|
|
|
|
|
|
self._tear_down()
|
|
|
|
|
2016-10-03 17:14:02 +00:00
|
|
|
@skipIf(not HAS_ZIPFILE, 'Cannot find zipfile python module')
|
2016-09-27 22:27:39 +00:00
|
|
|
def test_zip(self):
|
|
|
|
'''
|
|
|
|
Validate using the zip function
|
|
|
|
'''
|
|
|
|
self._set_up(arch_fmt='zip')
|
|
|
|
|
|
|
|
# Test create archive
|
|
|
|
ret = self.run_function('archive.zip', [self.arch, self.src])
|
2018-01-14 06:40:03 +00:00
|
|
|
self.assertTrue(isinstance(ret, list), six.text_type(ret))
|
2016-09-27 22:27:39 +00:00
|
|
|
self._assert_artifacts_in_ret(ret)
|
|
|
|
|
|
|
|
self._tear_down()
|
|
|
|
|
2016-10-03 17:14:02 +00:00
|
|
|
@skipIf(not HAS_ZIPFILE, 'Cannot find zipfile python module')
|
2016-09-27 22:27:39 +00:00
|
|
|
def test_unzip(self):
|
|
|
|
'''
|
|
|
|
Validate using the unzip function
|
|
|
|
'''
|
|
|
|
self._set_up(arch_fmt='zip')
|
|
|
|
self.run_function('archive.zip', [self.arch, self.src])
|
|
|
|
|
|
|
|
# Test create archive
|
|
|
|
ret = self.run_function('archive.unzip', [self.arch, self.dst])
|
2018-01-14 06:40:03 +00:00
|
|
|
self.assertTrue(isinstance(ret, list), six.text_type(ret))
|
2016-09-27 22:27:39 +00:00
|
|
|
self._assert_artifacts_in_ret(ret)
|
|
|
|
|
|
|
|
self._tear_down()
|
|
|
|
|
Use explicit unicode strings + break up salt.utils
This PR is part of what will be an ongoing effort to use explicit
unicode strings in Salt. Because Python 3 does not suport Python 2's raw
unicode string syntax (i.e. `ur'\d+'`), we must use
`salt.utils.locales.sdecode()` to ensure that the raw string is unicode.
However, because of how `salt/utils/__init__.py` has evolved into the
hulking monstrosity it is today, this means importing a large module in
places where it is not needed, which could negatively impact
performance. For this reason, this PR also breaks out some of the
functions from `salt/utils/__init__.py` into new/existing modules under
`salt/utils/`. The long term goal will be that the modules within this
directory do not depend on importing `salt.utils`.
A summary of the changes in this PR is as follows:
* Moves the following functions from `salt.utils` to new locations
(including a deprecation warning if invoked from `salt.utils`):
`to_bytes`, `to_str`, `to_unicode`, `str_to_num`, `is_quoted`,
`dequote`, `is_hex`, `is_bin_str`, `rand_string`,
`contains_whitespace`, `clean_kwargs`, `invalid_kwargs`, `which`,
`which_bin`, `path_join`, `shlex_split`, `rand_str`, `is_windows`,
`is_proxy`, `is_linux`, `is_darwin`, `is_sunos`, `is_smartos`,
`is_smartos_globalzone`, `is_smartos_zone`, `is_freebsd`, `is_netbsd`,
`is_openbsd`, `is_aix`
* Moves the functions already deprecated by @rallytime to the bottom of
`salt/utils/__init__.py` for better organization, so we can keep the
deprecated ones separate from the ones yet to be deprecated as we
continue to break up `salt.utils`
* Updates `salt/*.py` and all files under `salt/client/` to use explicit
unicode string literals.
* Gets rid of implicit imports of `salt.utils` (e.g. `from salt.utils
import foo` becomes `import salt.utils.foo as foo`).
* Renames the `test.rand_str` function to `test.random_hash` to more
accurately reflect what it does
* Modifies `salt.utils.stringutils.random()` (née `salt.utils.rand_string()`)
such that it returns a string matching the passed size. Previously
this function would get `size` bytes from `os.urandom()`,
base64-encode it, and return the result, which would in most cases not
be equal to the passed size.
2017-07-25 01:47:15 +00:00
|
|
|
@skipIf(not salt.utils.path.which('rar'), 'Cannot find rar executable')
|
2016-09-27 22:27:39 +00:00
|
|
|
def test_rar(self):
|
|
|
|
'''
|
|
|
|
Validate using the rar function
|
|
|
|
'''
|
|
|
|
self._set_up(arch_fmt='rar')
|
|
|
|
|
|
|
|
# Test create archive
|
|
|
|
ret = self.run_function('archive.rar', [self.arch, self.src])
|
2018-01-14 06:40:03 +00:00
|
|
|
self.assertTrue(isinstance(ret, list), six.text_type(ret))
|
2016-09-27 22:27:39 +00:00
|
|
|
self._assert_artifacts_in_ret(ret)
|
|
|
|
|
|
|
|
self._tear_down()
|
|
|
|
|
Use explicit unicode strings + break up salt.utils
This PR is part of what will be an ongoing effort to use explicit
unicode strings in Salt. Because Python 3 does not suport Python 2's raw
unicode string syntax (i.e. `ur'\d+'`), we must use
`salt.utils.locales.sdecode()` to ensure that the raw string is unicode.
However, because of how `salt/utils/__init__.py` has evolved into the
hulking monstrosity it is today, this means importing a large module in
places where it is not needed, which could negatively impact
performance. For this reason, this PR also breaks out some of the
functions from `salt/utils/__init__.py` into new/existing modules under
`salt/utils/`. The long term goal will be that the modules within this
directory do not depend on importing `salt.utils`.
A summary of the changes in this PR is as follows:
* Moves the following functions from `salt.utils` to new locations
(including a deprecation warning if invoked from `salt.utils`):
`to_bytes`, `to_str`, `to_unicode`, `str_to_num`, `is_quoted`,
`dequote`, `is_hex`, `is_bin_str`, `rand_string`,
`contains_whitespace`, `clean_kwargs`, `invalid_kwargs`, `which`,
`which_bin`, `path_join`, `shlex_split`, `rand_str`, `is_windows`,
`is_proxy`, `is_linux`, `is_darwin`, `is_sunos`, `is_smartos`,
`is_smartos_globalzone`, `is_smartos_zone`, `is_freebsd`, `is_netbsd`,
`is_openbsd`, `is_aix`
* Moves the functions already deprecated by @rallytime to the bottom of
`salt/utils/__init__.py` for better organization, so we can keep the
deprecated ones separate from the ones yet to be deprecated as we
continue to break up `salt.utils`
* Updates `salt/*.py` and all files under `salt/client/` to use explicit
unicode string literals.
* Gets rid of implicit imports of `salt.utils` (e.g. `from salt.utils
import foo` becomes `import salt.utils.foo as foo`).
* Renames the `test.rand_str` function to `test.random_hash` to more
accurately reflect what it does
* Modifies `salt.utils.stringutils.random()` (née `salt.utils.rand_string()`)
such that it returns a string matching the passed size. Previously
this function would get `size` bytes from `os.urandom()`,
base64-encode it, and return the result, which would in most cases not
be equal to the passed size.
2017-07-25 01:47:15 +00:00
|
|
|
@skipIf(not salt.utils.path.which('rar'), 'Cannot find rar executable')
|
|
|
|
@skipIf(not salt.utils.path.which('unrar'), 'Cannot find unrar executable')
|
2016-09-27 22:27:39 +00:00
|
|
|
def test_unrar(self):
|
|
|
|
'''
|
|
|
|
Validate using the unrar function
|
|
|
|
'''
|
|
|
|
self._set_up(arch_fmt='rar')
|
|
|
|
self.run_function('archive.rar', [self.arch, self.src])
|
|
|
|
|
|
|
|
# Test create archive
|
|
|
|
ret = self.run_function('archive.unrar', [self.arch, self.dst])
|
2018-01-14 06:40:03 +00:00
|
|
|
self.assertTrue(isinstance(ret, list), six.text_type(ret))
|
2016-09-27 22:27:39 +00:00
|
|
|
self._assert_artifacts_in_ret(ret)
|
|
|
|
|
|
|
|
self._tear_down()
|