fix(start): show bottle lineage root-first with -> arrows
lint / lint (push) Successful in 1m51s
test / unit (push) Successful in 43s
test / integration (push) Successful in 17s
test / unit (pull_request) Successful in 43s
test / integration (pull_request) Successful in 18s
prd-number / assign-numbers (push) Successful in 21s
Update Quality Badges / update-badges (push) Failing after 1m47s
lint / lint (push) Successful in 1m51s
test / unit (push) Successful in 43s
test / integration (push) Successful in 17s
test / unit (pull_request) Successful in 43s
test / integration (pull_request) Successful in 18s
prd-number / assign-numbers (push) Successful in 21s
Update Quality Badges / update-badges (push) Failing after 1m47s
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit was merged in pull request #270.
This commit is contained in:
@@ -274,7 +274,7 @@ def _bottle_lineage(manifest: ManifestIndex) -> dict[str, str]:
|
|||||||
"""Return {bottle_name: lineage_label} for bottles that have an extends chain.
|
"""Return {bottle_name: lineage_label} for bottles that have an extends chain.
|
||||||
|
|
||||||
Bottles without a parent are omitted (the caller falls back to the bare name).
|
Bottles without a parent are omitted (the caller falls back to the bare name).
|
||||||
Labels show the chain root-first: e.g. 'claude-dev <- bot-bottle-dev <- dev'."""
|
Labels show the chain root-first: e.g. 'dev -> bot-bottle-dev -> claude-dev'."""
|
||||||
if manifest.home_md is None:
|
if manifest.home_md is None:
|
||||||
return {}
|
return {}
|
||||||
bottles_dir = manifest.home_md / "bottles"
|
bottles_dir = manifest.home_md / "bottles"
|
||||||
@@ -305,7 +305,7 @@ def _bottle_lineage(manifest: ManifestIndex) -> dict[str, str]:
|
|||||||
chain.append(par)
|
chain.append(par)
|
||||||
seen.add(par)
|
seen.add(par)
|
||||||
cur = par
|
cur = par
|
||||||
labels[name] = " <- ".join(reversed(chain))
|
labels[name] = " -> ".join(reversed(chain))
|
||||||
|
|
||||||
return labels
|
return labels
|
||||||
|
|
||||||
|
|||||||
@@ -280,8 +280,8 @@ class TestBottleLineage(unittest.TestCase):
|
|||||||
result = start_mod._bottle_lineage(manifest)
|
result = start_mod._bottle_lineage(manifest)
|
||||||
|
|
||||||
self.assertNotIn("base", result) # no parent → not in map
|
self.assertNotIn("base", result) # no parent → not in map
|
||||||
self.assertEqual("base <- mid", result["mid"])
|
self.assertEqual("base -> mid", result["mid"])
|
||||||
self.assertEqual("base <- mid <- leaf", result["leaf"])
|
self.assertEqual("base -> mid -> leaf", result["leaf"])
|
||||||
|
|
||||||
def test_cycle_protection(self):
|
def test_cycle_protection(self):
|
||||||
import tempfile
|
import tempfile
|
||||||
@@ -301,7 +301,7 @@ class TestBottleLineage(unittest.TestCase):
|
|||||||
# Cycle must not hang; each should get a two-element chain.
|
# Cycle must not hang; each should get a two-element chain.
|
||||||
for name in ("a", "b"):
|
for name in ("a", "b"):
|
||||||
self.assertIn(name, result)
|
self.assertIn(name, result)
|
||||||
self.assertIn("<-", result[name])
|
self.assertIn("->", result[name])
|
||||||
|
|
||||||
|
|
||||||
class TestManifestToYaml(unittest.TestCase):
|
class TestManifestToYaml(unittest.TestCase):
|
||||||
|
|||||||
Reference in New Issue
Block a user