diff options
-rw-r--r-- | NEWS | 7 | ||||
-rw-r--r-- | src/buildstream/_frontend/cli.py | 2 | ||||
-rw-r--r-- | src/buildstream/_frontend/widget.py | 4 | ||||
-rw-r--r-- | tests/format/junctions.py | 9 |
4 files changed, 20 insertions, 2 deletions
@@ -2,6 +2,13 @@ (unreleased) ============ +CLI +--- + + o BREAKING CHANGE: `bst show` will now output `junction` instead + of `buildable` for the state of junction elements, as they can't + be built. + ================== buildstream 1.91.3 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" |