import os import pprint import pytest import testinfra import logging log = logging.getLogger(__name__) @pytest.fixture(scope='session') def host(): if os.environ.get('KITCHEN_USERNAME') == 'vagrant': if 'windows' in os.environ.get('KITCHEN_INSTANCE'): return testinfra.get_host( 'winrm://{KITCHEN_USERNAME}:{KITCHEN_PASSWORD}@{KITCHEN_HOSTNAME}:{KITCHEN_PORT}'.format(**os.environ), no_ssl=True) return testinfra.get_host( 'paramiko://{KITCHEN_USERNAME}@{KITCHEN_HOSTNAME}:{KITCHEN_PORT}'.format(**os.environ), ssh_identity_file=os.environ.get('KITCHEN_SSH_KEY')) return testinfra.get_host('docker://{KITCHEN_USERNAME}@{KITCHEN_CONTAINER_ID}'.format(**os.environ)) @pytest.fixture(scope='session') def target_python_version(): target_python = os.environ["KITCHEN_SUITE"].split("-", 1)[0] if target_python == "latest": pytest.skip("Unable to get target python from {}".format(os.environ["KITCHEN_SUITE"])) return int(target_python.replace("py", "")) @pytest.fixture(scope='session') def target_salt_version(): target_salt = os.environ["KITCHEN_SUITE"].split("-", 2)[-1].replace("-", ".") if target_salt.endswith(".0") and float(target_salt) >= 3000: target_salt = ".".join(target_salt.split(".")[:-1]) if target_salt in ("latest", "master"): pytest.skip("Don't have a specific salt version to test against") return target_salt