Search for external project definition before searching for internal projects

This commit is contained in:
sweeneys
2021-05-26 16:22:32 -07:00
parent dc0f1ff0b1
commit 79d66dd492
@@ -16,8 +16,10 @@ import pathlib
import warnings
from abc import ABCMeta, abstractmethod
import ly_test_tools._internal.pytest_plugin
from ly_test_tools.environment.file_system import find_ancestor_file
def _find_engine_root(initial_path):
# type: (str) -> str
"""
@@ -34,11 +36,9 @@ def _find_engine_root(initial_path):
# Assumes folder structure similar to: engine_root/dev/Tools/.../ly_test_tools/builtin
for _ in range(15):
if os.path.exists(os.path.join(current_dir, root_file)):
# The parent of the directory containing the engineroot.txt is the root directory
engine_root = current_dir
return engine_root
# Using an explicit else to avoid aberrant behavior from following filesystem links
else:
# parent of the directory containing root_file
return current_dir
else: # explicit else avoids aberrant behavior from following filesystem links
current_dir = os.path.abspath(os.path.join(current_dir, os.path.pardir))
raise OSError(f"Unable to find engine root directory. Verify root file '{root_file}' exists")
@@ -50,8 +50,10 @@ def _find_project_json(engine_root, project):
Find the project.json file for this project.
:return: Full path to the project.json file
"""
project_json = find_ancestor_file('project.json')
if not project_json:
# First check relative to defined build directory, for external projects which configure through SDK settings
project_json = find_ancestor_file(target_file_name='project.json',
start_path=ly_test_tools._internal.pytest_plugin.build_directory)
if not project_json: # check internally for a project bundled with the engine
project_json = os.path.join(engine_root, project, 'project.json')
return project_json