summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Pollard <tom.pollard@codethink.co.uk>2019-12-10 15:32:12 +0000
committerTom Pollard <tom.pollard@codethink.co.uk>2020-01-09 10:14:45 +0000
commitc3495b228e615916231649a809c7f12ef6d6257f (patch)
treea63d29ed386873b3c84d6dabb3d20c8b433e8578
parent5960a90e03b1e5115f6e5912b126529846e589f5 (diff)
downloadbuildstream-tpollard/showjunction.tar.gz
_frontend/widget.py: show_pipeline() Don't show buildable for junctiontpollard/showjunction
Instead output "junction" in magenta for info. Also include test in format/junctions.py
-rw-r--r--src/buildstream/_frontend/cli.py2
-rw-r--r--src/buildstream/_frontend/widget.py4
-rw-r--r--tests/format/junctions.py9
3 files changed, 13 insertions, 2 deletions
diff --git a/src/buildstream/_frontend/cli.py b/src/buildstream/_frontend/cli.py
index 365f5c421..fc501f09c 100644
--- a/src/buildstream/_frontend/cli.py
+++ b/src/buildstream/_frontend/cli.py
@@ -565,7 +565,7 @@ def show(app, elements, deps, except_, order, format_):
%{name} The element name
%{key} The abbreviated cache key (if all sources are consistent)
%{full-key} The full cache key (if all sources are consistent)
- %{state} cached, buildable, waiting or inconsistent
+ %{state} cached, buildable, waiting, inconsistent or junction
%{config} The element configuration
%{vars} Variable configuration
%{env} Environment settings
diff --git a/src/buildstream/_frontend/widget.py b/src/buildstream/_frontend/widget.py
index 63fbfbb7d..98ebf31f3 100644
--- a/src/buildstream/_frontend/widget.py
+++ b/src/buildstream/_frontend/widget.py
@@ -350,7 +350,9 @@ class LogLine(Widget):
if consistency == Consistency.INCONSISTENT:
line = p.fmt_subst(line, "state", "no reference", fg="red")
else:
- if element._cached_failure():
+ if element.get_kind() == "junction":
+ line = p.fmt_subst(line, "state", "junction", fg="magenta")
+ elif element._cached_failure():
line = p.fmt_subst(line, "state", "failed", fg="red")
elif element._cached_success():
line = p.fmt_subst(line, "state", "cached", fg="magenta")
diff --git a/tests/format/junctions.py b/tests/format/junctions.py
index 45ccff222..43cd3f7ba 100644
--- a/tests/format/junctions.py
+++ b/tests/format/junctions.py
@@ -465,3 +465,12 @@ def test_invalid_target_format(cli, tmpdir, datafiles, target):
result.assert_main_error(ErrorDomain.ELEMENT, None)
assert "'target' option must be in format '{junction-name}:{element-name}'" in result.stderr
+
+
+@pytest.mark.datafiles(DATA_DIR)
+def test_junction_show(cli, tmpdir, datafiles):
+ project = os.path.join(str(datafiles), "foo")
+ copy_subprojects(project, datafiles, ["base"])
+
+ # Show, assert that it says junction
+ assert cli.get_element_state(project, "base.bst") == "junction"