Skip to content

Commit

Permalink
refactor awxkit import code
Browse files Browse the repository at this point in the history
* Move awxkit import code into a pytest fixture to better control when
  the import happens
* Ensure /awx_devel/awxkit is added to sys path before awxkit import
  runs
  • Loading branch information
chrismeyersfsu committed Dec 18, 2023
1 parent 6119b33 commit 2a6cf03
Showing 1 changed file with 26 additions and 14 deletions.
40 changes: 26 additions & 14 deletions awx_collection/test/awx/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,24 +35,36 @@

from django.db import transaction

try:
import tower_cli # noqa

HAS_TOWER_CLI = True
except ImportError:
HAS_TOWER_CLI = False
HAS_TOWER_CLI = False
HAS_AWX_KIT = False
logger = logging.getLogger('awx.main.tests')

try:
# Because awxkit will be a directory at the root of this makefile and we are using python3, import awxkit will work even if its not installed.
# However, awxkit will not contain api whih causes a stack failure down on line 170 when we try to mock it.
# So here we are importing awxkit.api to prevent that. Then you only get an error on tests for awxkit functionality.
import awxkit.api # noqa

HAS_AWX_KIT = True
except ImportError:
HAS_AWX_KIT = False
@pytest.fixture(autouse=True)
def awxkit_path_set(monkeypatch):
"""Monkey patch sys.path, insert awxkit source code so that
the package does not need to be installed.
"""
base_folder = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir, os.pardir, os.pardir, 'awxkit'))
monkeypatch.syspath_prepend(base_folder)

logger = logging.getLogger('awx.main.tests')

@pytest.fixture(autouse=True)
def import_awxkit():
global HAS_TOWER_CLI
global HAS_AWX_KIT
try:
import tower_cli # noqa
HAS_TOWER_CLI = True
except ImportError:
HAS_TOWER_CLI = False

try:
import awxkit # noqa
HAS_AWX_KIT = True
except ImportError:
HAS_AWX_KIT = False


def sanitize_dict(din):
Expand Down

0 comments on commit 2a6cf03

Please sign in to comment.