Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions python/gvtest/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -304,6 +304,13 @@ def resolve_targets(
result: Dict[str, Dict] = {}
for name in last_targets_names:
result[name] = all_defined[name]

# Store the directory of the config that defined
# the targets, for resolving relative paths
self._targets_config_dir: str | None = (
str(last_targets_file.parent)
if last_targets_file is not None else None
)
return result

def get_targets(self) -> Dict[str, Dict]:
Expand Down
7 changes: 6 additions & 1 deletion python/gvtest/runner.py
Original file line number Diff line number Diff line change
Expand Up @@ -458,13 +458,18 @@ def _resolve_targets_for_dir(
return []

# Build Target objects
config_dir: str | None = getattr(
loader, '_targets_config_dir', None
)
targets: list[Target] = []
for name, cfg in yaml_targets.items():
# If CLI specifies targets, filter
if (self.target_names != ['default']
and name not in self.target_names):
continue
targets.append(Target.from_dict(name, cfg))
t = Target.from_dict(name, cfg)
t.config_dir = config_dir
targets.append(t)

return targets

Expand Down
13 changes: 12 additions & 1 deletion python/gvtest/targets.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ def __init__(
if config is None:
config = '{}'
self.config: dict[str, Any] = json.loads(config)
self.config_dir: str | None = None

@classmethod
def from_dict(
Expand All @@ -62,6 +63,7 @@ def from_dict(
t = cls.__new__(cls)
t.name = name
t.config = dict(config)
t.config_dir: str | None = None
return t

def get_name(self) -> str:
Expand All @@ -70,7 +72,16 @@ def get_name(self) -> str:
def get_sourceme(self) -> str | None:
sourceme = self.config.get('sourceme')
if sourceme is not None:
return _expand_env(sourceme)
sourceme = _expand_env(sourceme)
if not os.path.isabs(sourceme):
config_dir = getattr(
self, 'config_dir', None
)
if config_dir is not None:
sourceme = os.path.join(
config_dir, sourceme
)
return sourceme
return None

def get_envvars(self) -> dict[str, str] | None:
Expand Down
Loading