4db4d00d45
Some checks failed
continuous-integration/drone/push Build is failing
This project is not included under the Molecule project source code tree anymore and hence has been relicensed. These headers are being removed then.
85 lines
1.9 KiB
Python
85 lines
1.9 KiB
Python
import contextlib
|
|
import os
|
|
import random
|
|
import string
|
|
|
|
import pytest
|
|
from molecule import config, logger, util
|
|
from molecule.scenario import ephemeral_directory
|
|
|
|
LOG = logger.get_logger(__name__)
|
|
|
|
|
|
@pytest.helpers.register
|
|
def run_command(cmd, env=os.environ, log=True):
|
|
if log:
|
|
cmd = _rebake_command(cmd, env)
|
|
cmd = cmd.bake(_truncate_exc=False)
|
|
return util.run_command(cmd)
|
|
|
|
|
|
def _rebake_command(cmd, env, out=LOG.out, err=LOG.error):
|
|
return cmd.bake(_env=env, _out=out, _err=err)
|
|
|
|
|
|
@pytest.fixture
|
|
def random_string(length=5):
|
|
return "".join((random.choice(string.ascii_uppercase) for _ in range(length)))
|
|
|
|
|
|
@contextlib.contextmanager
|
|
def change_dir_to(dir_name):
|
|
cwd = os.getcwd()
|
|
os.chdir(dir_name)
|
|
yield
|
|
os.chdir(cwd)
|
|
|
|
|
|
@pytest.fixture
|
|
def temp_dir(tmpdir, random_string, request):
|
|
directory = tmpdir.mkdir(random_string)
|
|
|
|
with change_dir_to(directory.strpath):
|
|
yield directory
|
|
|
|
|
|
@pytest.fixture
|
|
def resources_folder_path():
|
|
resources_folder_path = os.path.join(os.path.dirname(__file__), "resources")
|
|
return resources_folder_path
|
|
|
|
|
|
@pytest.helpers.register
|
|
def molecule_project_directory():
|
|
return os.getcwd()
|
|
|
|
|
|
@pytest.helpers.register
|
|
def molecule_directory():
|
|
return config.molecule_directory(molecule_project_directory())
|
|
|
|
|
|
@pytest.helpers.register
|
|
def molecule_scenario_directory():
|
|
return os.path.join(molecule_directory(), "default")
|
|
|
|
|
|
@pytest.helpers.register
|
|
def molecule_file():
|
|
return get_molecule_file(molecule_scenario_directory())
|
|
|
|
|
|
@pytest.helpers.register
|
|
def get_molecule_file(path):
|
|
return config.molecule_file(path)
|
|
|
|
|
|
@pytest.helpers.register
|
|
def molecule_ephemeral_directory(_fixture_uuid):
|
|
project_directory = "test-project-{}".format(_fixture_uuid)
|
|
scenario_name = "test-instance"
|
|
|
|
return ephemeral_directory(
|
|
os.path.join("molecule_test", project_directory, scenario_name)
|
|
)
|