mirror of
https://github.com/saltstack/salt.git
synced 2025-04-10 23:01:39 +00:00
105 lines
3.1 KiB
Python
105 lines
3.1 KiB
Python
import logging
|
|
import os
|
|
import shutil
|
|
|
|
import pytest
|
|
|
|
import salt.version
|
|
from tests.conftest import CODE_DIR
|
|
|
|
log = logging.getLogger(__name__)
|
|
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _install_salt_extension(shell):
|
|
if os.environ.get("ONEDIR_TESTRUN", "0") == "0":
|
|
yield
|
|
return
|
|
|
|
script_name = "salt-pip"
|
|
if salt.utils.platform.is_windows():
|
|
script_name += ".exe"
|
|
|
|
script_path = CODE_DIR / "artifacts" / "salt" / script_name
|
|
assert script_path.exists()
|
|
try:
|
|
ret = shell.run(str(script_path), "install", "salt-analytics-framework==0.1.0")
|
|
assert ret.returncode == 0
|
|
log.info(ret)
|
|
yield
|
|
finally:
|
|
ret = shell.run(str(script_path), "uninstall", "-y", "salt-analytics-framework")
|
|
log.info(ret)
|
|
shutil.rmtree(script_path.parent / "extras-3.10", ignore_errors=True)
|
|
|
|
|
|
@pytest.mark.windows_whitelisted
|
|
def test_versions_report(salt_cli):
|
|
"""
|
|
Test that we can re-parse the version report back into
|
|
a similar format with the necessary headers
|
|
"""
|
|
expected = salt.version.versions_information()
|
|
# sanitize expected of unnnecessary whitespace
|
|
for _, section in expected.items():
|
|
for key in section:
|
|
if isinstance(section[key], str):
|
|
section[key] = section[key].strip()
|
|
|
|
ret = salt_cli.run("--versions-report")
|
|
assert ret.returncode == 0
|
|
assert ret.stdout
|
|
ret_lines = ret.stdout.split("\n")
|
|
|
|
assert ret_lines
|
|
# sanitize lines
|
|
ret_lines = [line.strip() for line in ret_lines]
|
|
|
|
for header in expected:
|
|
assert f"{header}:" in ret_lines
|
|
|
|
ret_dict = {}
|
|
expected_keys = set()
|
|
for line in ret_lines:
|
|
if not line:
|
|
continue
|
|
if line.endswith(":"):
|
|
assert not expected_keys
|
|
current_header = line.rstrip(":")
|
|
assert current_header in expected
|
|
ret_dict[current_header] = {}
|
|
expected_keys = set(expected[current_header].keys())
|
|
else:
|
|
key, *value_list = line.split(":", 1)
|
|
assert value_list
|
|
assert len(value_list) == 1
|
|
value = value_list[0].strip()
|
|
if value == "Not Installed":
|
|
value = None
|
|
ret_dict[current_header][key] = value
|
|
assert key in expected_keys
|
|
expected_keys.remove(key)
|
|
assert not expected_keys
|
|
|
|
if os.environ.get("ONEDIR_TESTRUN", "0") == "0":
|
|
assert "pip" in ret_dict["Salt Package Information"]["Package Type"]
|
|
# Stop any more testing
|
|
return
|
|
|
|
assert "onedir" in ret_dict["Salt Package Information"]["Package Type"]
|
|
assert "relenv" in ret_dict["Dependency Versions"]
|
|
assert "Salt Extensions" in ret_dict
|
|
assert "salt-analytics-framework" in ret_dict["Salt Extensions"]
|
|
|
|
|
|
def test_help_log(salt_cli):
|
|
"""
|
|
Test to ensure when we pass in `--help` the insecure
|
|
log warning is included.
|
|
"""
|
|
ret = salt_cli.run("--help")
|
|
count = 0
|
|
# This can be dependent on COLUMNS environment variable
|
|
assert "sensitive data: all, debug, garbage, profile, trace" in " ".join(
|
|
ret.stdout.split()
|
|
)
|