mirror of
https://github.com/saltstack/salt.git
synced 2025-04-17 10:10:20 +00:00
Let's fake the filesystem instead
Signed-off-by: Pedro Algarvio <palgarvio@vmware.com>
This commit is contained in:
parent
c66d14b700
commit
eaf5245965
30 changed files with 109 additions and 37 deletions
|
@ -10,3 +10,4 @@ pytest-httpserver
|
|||
pytest-custom-exit-code >= 0.3
|
||||
flaky
|
||||
more-itertools
|
||||
pyfakefs
|
||||
|
|
|
@ -419,6 +419,10 @@ pycryptodomex==3.9.8
|
|||
# -c requirements/static/ci/../pkg/py3.10/linux.txt
|
||||
# -c requirements/static/ci/py3.10/linux.txt
|
||||
# -r requirements/crypto.txt
|
||||
pyfakefs==5.3.1
|
||||
# via
|
||||
# -c requirements/static/ci/py3.10/linux.txt
|
||||
# -r requirements/pytest.txt
|
||||
pyinotify==0.9.6 ; sys_platform != "win32" and sys_platform != "darwin" and platform_system != "openbsd"
|
||||
# via
|
||||
# -c requirements/static/ci/py3.10/linux.txt
|
||||
|
|
|
@ -302,6 +302,8 @@ pycryptodomex==3.9.8
|
|||
# via
|
||||
# -c requirements/static/ci/../pkg/py3.10/darwin.txt
|
||||
# -r requirements/crypto.txt
|
||||
pyfakefs==5.3.1
|
||||
# via -r requirements/pytest.txt
|
||||
pygit2==1.13.1
|
||||
# via -r requirements/static/ci/darwin.in
|
||||
pynacl==1.5.0
|
||||
|
|
|
@ -293,6 +293,8 @@ pycryptodomex==3.9.8
|
|||
# via
|
||||
# -c requirements/static/ci/../pkg/py3.10/freebsd.txt
|
||||
# -r requirements/crypto.txt
|
||||
pyfakefs==5.3.1
|
||||
# via -r requirements/pytest.txt
|
||||
pygit2==1.13.1
|
||||
# via -r requirements/static/ci/freebsd.in
|
||||
pyinotify==0.9.6 ; sys_platform != "win32" and sys_platform != "darwin" and platform_system != "openbsd"
|
||||
|
|
|
@ -304,6 +304,8 @@ pycryptodomex==3.9.8
|
|||
# via
|
||||
# -c requirements/static/ci/../pkg/py3.10/linux.txt
|
||||
# -r requirements/crypto.txt
|
||||
pyfakefs==5.3.1
|
||||
# via -r requirements/pytest.txt
|
||||
pygit2==1.13.1
|
||||
# via -r requirements/static/ci/linux.in
|
||||
pyiface==0.0.11
|
||||
|
|
|
@ -277,6 +277,8 @@ pycryptodomex==3.10.1
|
|||
# via
|
||||
# -c requirements/static/ci/../pkg/py3.10/windows.txt
|
||||
# -r requirements/crypto.txt
|
||||
pyfakefs==5.3.1
|
||||
# via -r requirements/pytest.txt
|
||||
pygit2==1.13.1
|
||||
# via -r requirements/static/ci/windows.in
|
||||
pymssql==2.2.7
|
||||
|
|
|
@ -396,6 +396,10 @@ pycryptodomex==3.9.8
|
|||
# -c requirements/static/ci/../pkg/py3.11/linux.txt
|
||||
# -c requirements/static/ci/py3.11/linux.txt
|
||||
# -r requirements/crypto.txt
|
||||
pyfakefs==5.3.1
|
||||
# via
|
||||
# -c requirements/static/ci/py3.11/linux.txt
|
||||
# -r requirements/pytest.txt
|
||||
pyinotify==0.9.6 ; sys_platform != "win32" and sys_platform != "darwin" and platform_system != "openbsd"
|
||||
# via
|
||||
# -c requirements/static/ci/py3.11/linux.txt
|
||||
|
|
|
@ -282,6 +282,8 @@ pycryptodomex==3.9.8
|
|||
# via
|
||||
# -c requirements/static/ci/../pkg/py3.11/darwin.txt
|
||||
# -r requirements/crypto.txt
|
||||
pyfakefs==5.3.1
|
||||
# via -r requirements/pytest.txt
|
||||
pygit2==1.13.1
|
||||
# via -r requirements/static/ci/darwin.in
|
||||
pynacl==1.5.0
|
||||
|
|
|
@ -277,6 +277,8 @@ pycryptodomex==3.9.8
|
|||
# via
|
||||
# -c requirements/static/ci/../pkg/py3.11/freebsd.txt
|
||||
# -r requirements/crypto.txt
|
||||
pyfakefs==5.3.1
|
||||
# via -r requirements/pytest.txt
|
||||
pygit2==1.13.1
|
||||
# via -r requirements/static/ci/freebsd.in
|
||||
pyinotify==0.9.6 ; sys_platform != "win32" and sys_platform != "darwin" and platform_system != "openbsd"
|
||||
|
|
|
@ -288,6 +288,8 @@ pycryptodomex==3.9.8
|
|||
# via
|
||||
# -c requirements/static/ci/../pkg/py3.11/linux.txt
|
||||
# -r requirements/crypto.txt
|
||||
pyfakefs==5.3.1
|
||||
# via -r requirements/pytest.txt
|
||||
pygit2==1.13.1
|
||||
# via -r requirements/static/ci/linux.in
|
||||
pyiface==0.0.11
|
||||
|
|
|
@ -276,6 +276,8 @@ pycryptodomex==3.10.1
|
|||
# via
|
||||
# -c requirements/static/ci/../pkg/py3.11/windows.txt
|
||||
# -r requirements/crypto.txt
|
||||
pyfakefs==5.3.1
|
||||
# via -r requirements/pytest.txt
|
||||
pygit2==1.13.1
|
||||
# via -r requirements/static/ci/windows.in
|
||||
pymssql==2.2.7
|
||||
|
|
|
@ -396,6 +396,10 @@ pycryptodomex==3.9.8
|
|||
# -c requirements/static/ci/../pkg/py3.12/linux.txt
|
||||
# -c requirements/static/ci/py3.12/linux.txt
|
||||
# -r requirements/crypto.txt
|
||||
pyfakefs==5.3.1
|
||||
# via
|
||||
# -c requirements/static/ci/py3.12/linux.txt
|
||||
# -r requirements/pytest.txt
|
||||
pyinotify==0.9.6 ; sys_platform != "win32" and sys_platform != "darwin" and platform_system != "openbsd"
|
||||
# via
|
||||
# -c requirements/static/ci/py3.12/linux.txt
|
||||
|
|
|
@ -282,6 +282,8 @@ pycryptodomex==3.9.8
|
|||
# via
|
||||
# -c requirements/static/ci/../pkg/py3.12/darwin.txt
|
||||
# -r requirements/crypto.txt
|
||||
pyfakefs==5.3.1
|
||||
# via -r requirements/pytest.txt
|
||||
pygit2==1.13.1
|
||||
# via -r requirements/static/ci/darwin.in
|
||||
pynacl==1.5.0
|
||||
|
|
|
@ -277,6 +277,8 @@ pycryptodomex==3.9.8
|
|||
# via
|
||||
# -c requirements/static/ci/../pkg/py3.12/freebsd.txt
|
||||
# -r requirements/crypto.txt
|
||||
pyfakefs==5.3.1
|
||||
# via -r requirements/pytest.txt
|
||||
pygit2==1.13.1
|
||||
# via -r requirements/static/ci/freebsd.in
|
||||
pyinotify==0.9.6 ; sys_platform != "win32" and sys_platform != "darwin" and platform_system != "openbsd"
|
||||
|
|
|
@ -288,6 +288,8 @@ pycryptodomex==3.9.8
|
|||
# via
|
||||
# -c requirements/static/ci/../pkg/py3.12/linux.txt
|
||||
# -r requirements/crypto.txt
|
||||
pyfakefs==5.3.1
|
||||
# via -r requirements/pytest.txt
|
||||
pygit2==1.13.1
|
||||
# via -r requirements/static/ci/linux.in
|
||||
pyiface==0.0.11
|
||||
|
|
|
@ -276,6 +276,8 @@ pycryptodomex==3.10.1
|
|||
# via
|
||||
# -c requirements/static/ci/../pkg/py3.12/windows.txt
|
||||
# -r requirements/crypto.txt
|
||||
pyfakefs==5.3.1
|
||||
# via -r requirements/pytest.txt
|
||||
pygit2==1.13.1
|
||||
# via -r requirements/static/ci/windows.in
|
||||
pymssql==2.2.7
|
||||
|
|
|
@ -469,6 +469,10 @@ pyeapi==0.8.3
|
|||
# via
|
||||
# -c requirements/static/ci/py3.7/linux.txt
|
||||
# napalm
|
||||
pyfakefs==5.3.1
|
||||
# via
|
||||
# -c requirements/static/ci/py3.7/linux.txt
|
||||
# -r requirements/pytest.txt
|
||||
pyinotify==0.9.6 ; sys_platform != "win32" and sys_platform != "darwin" and platform_system != "openbsd"
|
||||
# via
|
||||
# -c requirements/static/ci/py3.7/linux.txt
|
||||
|
|
|
@ -333,6 +333,8 @@ pycryptodomex==3.9.8
|
|||
# -r requirements/crypto.txt
|
||||
pyeapi==0.8.3
|
||||
# via napalm
|
||||
pyfakefs==5.3.1
|
||||
# via -r requirements/pytest.txt
|
||||
pygit2==1.10.1
|
||||
# via -r requirements/static/ci/freebsd.in
|
||||
pyinotify==0.9.6 ; sys_platform != "win32" and sys_platform != "darwin" and platform_system != "openbsd"
|
||||
|
|
|
@ -346,6 +346,8 @@ pycryptodomex==3.9.8
|
|||
# -r requirements/crypto.txt
|
||||
pyeapi==0.8.3
|
||||
# via napalm
|
||||
pyfakefs==5.3.1
|
||||
# via -r requirements/pytest.txt
|
||||
pygit2==1.10.1
|
||||
# via -r requirements/static/ci/linux.in
|
||||
pyiface==0.0.11
|
||||
|
|
|
@ -291,6 +291,8 @@ pycryptodomex==3.10.1
|
|||
# via
|
||||
# -c requirements/static/ci/../pkg/py3.7/windows.txt
|
||||
# -r requirements/crypto.txt
|
||||
pyfakefs==5.3.1
|
||||
# via -r requirements/pytest.txt
|
||||
pygit2==1.10.1
|
||||
# via -r requirements/static/ci/windows.in
|
||||
pymssql==2.2.1
|
||||
|
|
|
@ -456,6 +456,10 @@ pyeapi==0.8.3
|
|||
# via
|
||||
# -c requirements/static/ci/py3.8/linux.txt
|
||||
# napalm
|
||||
pyfakefs==5.3.1
|
||||
# via
|
||||
# -c requirements/static/ci/py3.8/linux.txt
|
||||
# -r requirements/pytest.txt
|
||||
pyinotify==0.9.6 ; sys_platform != "win32" and sys_platform != "darwin" and platform_system != "openbsd"
|
||||
# via
|
||||
# -c requirements/static/ci/py3.8/linux.txt
|
||||
|
|
|
@ -320,6 +320,8 @@ pycryptodomex==3.9.8
|
|||
# -r requirements/crypto.txt
|
||||
pyeapi==0.8.3
|
||||
# via napalm
|
||||
pyfakefs==5.3.1
|
||||
# via -r requirements/pytest.txt
|
||||
pygit2==1.13.1
|
||||
# via -r requirements/static/ci/freebsd.in
|
||||
pyinotify==0.9.6 ; sys_platform != "win32" and sys_platform != "darwin" and platform_system != "openbsd"
|
||||
|
|
|
@ -333,6 +333,8 @@ pycryptodomex==3.9.8
|
|||
# -r requirements/crypto.txt
|
||||
pyeapi==0.8.3
|
||||
# via napalm
|
||||
pyfakefs==5.3.1
|
||||
# via -r requirements/pytest.txt
|
||||
pygit2==1.13.1
|
||||
# via -r requirements/static/ci/linux.in
|
||||
pyiface==0.0.11
|
||||
|
|
|
@ -278,6 +278,8 @@ pycryptodomex==3.10.1
|
|||
# via
|
||||
# -c requirements/static/ci/../pkg/py3.8/windows.txt
|
||||
# -r requirements/crypto.txt
|
||||
pyfakefs==5.3.1
|
||||
# via -r requirements/pytest.txt
|
||||
pygit2==1.13.1
|
||||
# via -r requirements/static/ci/windows.in
|
||||
pymssql==2.2.1
|
||||
|
|
|
@ -458,6 +458,10 @@ pyeapi==0.8.3
|
|||
# via
|
||||
# -c requirements/static/ci/py3.9/linux.txt
|
||||
# napalm
|
||||
pyfakefs==5.3.1
|
||||
# via
|
||||
# -c requirements/static/ci/py3.9/linux.txt
|
||||
# -r requirements/pytest.txt
|
||||
pyinotify==0.9.6 ; sys_platform != "win32" and sys_platform != "darwin" and platform_system != "openbsd"
|
||||
# via
|
||||
# -c requirements/static/ci/py3.9/linux.txt
|
||||
|
|
|
@ -331,6 +331,8 @@ pycryptodomex==3.9.8
|
|||
# -r requirements/crypto.txt
|
||||
pyeapi==0.8.3
|
||||
# via napalm
|
||||
pyfakefs==5.3.1
|
||||
# via -r requirements/pytest.txt
|
||||
pygit2==1.13.1
|
||||
# via -r requirements/static/ci/darwin.in
|
||||
pynacl==1.5.0
|
||||
|
|
|
@ -322,6 +322,8 @@ pycryptodomex==3.9.8
|
|||
# -r requirements/crypto.txt
|
||||
pyeapi==0.8.3
|
||||
# via napalm
|
||||
pyfakefs==5.3.1
|
||||
# via -r requirements/pytest.txt
|
||||
pygit2==1.13.1
|
||||
# via -r requirements/static/ci/freebsd.in
|
||||
pyinotify==0.9.6 ; sys_platform != "win32" and sys_platform != "darwin" and platform_system != "openbsd"
|
||||
|
|
|
@ -333,6 +333,8 @@ pycryptodomex==3.9.8
|
|||
# -r requirements/crypto.txt
|
||||
pyeapi==0.8.3
|
||||
# via napalm
|
||||
pyfakefs==5.3.1
|
||||
# via -r requirements/pytest.txt
|
||||
pygit2==1.13.1
|
||||
# via -r requirements/static/ci/linux.in
|
||||
pyiface==0.0.11
|
||||
|
|
|
@ -279,6 +279,8 @@ pycryptodomex==3.10.1
|
|||
# via
|
||||
# -c requirements/static/ci/../pkg/py3.9/windows.txt
|
||||
# -r requirements/crypto.txt
|
||||
pyfakefs==5.3.1
|
||||
# via -r requirements/pytest.txt
|
||||
pygit2==1.13.1
|
||||
# via -r requirements/static/ci/windows.in
|
||||
pymssql==2.2.1
|
||||
|
|
|
@ -1,11 +1,3 @@
|
|||
"""
|
||||
:synopsis: Unit Tests for Advanced Packaging Tool module 'module.aptpkg'
|
||||
:platform: Linux
|
||||
:maturity: develop
|
||||
versionadded:: 2017.7.0
|
||||
"""
|
||||
|
||||
|
||||
import copy
|
||||
import importlib
|
||||
import logging
|
||||
|
@ -24,7 +16,7 @@ from salt.exceptions import (
|
|||
SaltInvocationError,
|
||||
)
|
||||
from salt.utils.odict import OrderedDict
|
||||
from tests.support.mock import MagicMock, Mock, call, mock_open, patch
|
||||
from tests.support.mock import MagicMock, Mock, call, patch
|
||||
|
||||
try:
|
||||
from aptsources.sourceslist import ( # pylint: disable=unused-import
|
||||
|
@ -1556,31 +1548,35 @@ SERVICE:cups-daemon,390,/usr/sbin/cupsd
|
|||
]
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def _test_sourceslist_multiple_comps_fs(fs):
|
||||
fs.create_dir("/etc/apt/sources.list.d")
|
||||
fs.create_file(
|
||||
"/etc/apt/sources.list",
|
||||
contents="deb http://archive.ubuntu.com/ubuntu/ focal-updates main restricted",
|
||||
)
|
||||
yield
|
||||
|
||||
|
||||
@pytest.mark.skipif(
|
||||
HAS_APTSOURCES is True, reason="Only run test with python3-apt library is missing."
|
||||
)
|
||||
@pytest.mark.usefixtures("_test_sourceslist_multiple_comps_fs")
|
||||
def test_sourceslist_multiple_comps():
|
||||
"""
|
||||
Test SourcesList when repo has multiple comps
|
||||
"""
|
||||
repo_line = "deb http://archive.ubuntu.com/ubuntu/ focal-updates main restricted"
|
||||
with patch.object(aptpkg, "HAS_APT", return_value=True):
|
||||
with patch("salt.utils.files.fopen", mock_open(read_data=repo_line)):
|
||||
with patch("pathlib.Path.is_file", side_effect=[True, False]):
|
||||
sources = aptpkg.SourcesList()
|
||||
for source in sources:
|
||||
assert source.type == "deb"
|
||||
assert source.uri == "http://archive.ubuntu.com/ubuntu/"
|
||||
assert source.comps == ["main", "restricted"]
|
||||
assert source.dist == "focal-updates"
|
||||
sources = aptpkg.SourcesList()
|
||||
for source in sources:
|
||||
assert source.type == "deb"
|
||||
assert source.uri == "http://archive.ubuntu.com/ubuntu/"
|
||||
assert source.comps == ["main", "restricted"]
|
||||
assert source.dist == "focal-updates"
|
||||
|
||||
|
||||
@pytest.mark.skipif(
|
||||
HAS_APTSOURCES is True, reason="Only run test with python3-apt library is missing."
|
||||
)
|
||||
@pytest.mark.parametrize(
|
||||
"repo_line",
|
||||
[
|
||||
@pytest.fixture(
|
||||
params=(
|
||||
"deb [ arch=amd64 ] http://archive.ubuntu.com/ubuntu/ focal-updates main restricted",
|
||||
"deb [arch=amd64 ] http://archive.ubuntu.com/ubuntu/ focal-updates main restricted",
|
||||
"deb [arch=amd64 test=one ] http://archive.ubuntu.com/ubuntu/ focal-updates main restricted",
|
||||
|
@ -1588,24 +1584,31 @@ def test_sourceslist_multiple_comps():
|
|||
"deb [ arch=amd64,armel test=one ] http://archive.ubuntu.com/ubuntu/ focal-updates main restricted",
|
||||
"deb [ arch=amd64,armel test=one] http://archive.ubuntu.com/ubuntu/ focal-updates main restricted",
|
||||
"deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ focal-updates main restricted",
|
||||
],
|
||||
)
|
||||
)
|
||||
def repo_line(request, fs):
|
||||
fs.create_dir("/etc/apt/sources.list.d")
|
||||
fs.create_file("/etc/apt/sources.list", contents=request.param)
|
||||
yield request.param
|
||||
|
||||
|
||||
@pytest.mark.skipif(
|
||||
HAS_APTSOURCES is True, reason="Only run test with python3-apt library is missing."
|
||||
)
|
||||
def test_sourceslist_architectures(repo_line):
|
||||
"""
|
||||
Test SourcesList when architectures is in repo
|
||||
"""
|
||||
with patch("salt.utils.files.fopen", mock_open(read_data=repo_line)):
|
||||
with patch("pathlib.Path.is_file", side_effect=[True, False]):
|
||||
sources = aptpkg.SourcesList()
|
||||
for source in sources:
|
||||
assert source.type == "deb"
|
||||
assert source.uri == "http://archive.ubuntu.com/ubuntu/"
|
||||
assert source.comps == ["main", "restricted"]
|
||||
assert source.dist == "focal-updates"
|
||||
if "," in repo_line:
|
||||
assert source.architectures == ["amd64", "armel"]
|
||||
else:
|
||||
assert source.architectures == ["amd64"]
|
||||
sources = aptpkg.SourcesList()
|
||||
for source in sources:
|
||||
assert source.type == "deb"
|
||||
assert source.uri == "http://archive.ubuntu.com/ubuntu/"
|
||||
assert source.comps == ["main", "restricted"]
|
||||
assert source.dist == "focal-updates"
|
||||
if "," in repo_line:
|
||||
assert source.architectures == ["amd64", "armel"]
|
||||
else:
|
||||
assert source.architectures == ["amd64"]
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
|
|
Loading…
Add table
Reference in a new issue