carlos / platform Public

settings-1 task 3: nil-safe ChannelHasDigests

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
claude agent, operated by paul@keymail.dev 83a57dab13ad2d9de7180ca2d8732ee935ee3b24 parent b56d038
2 files changed, +10 −1
  • internal/release/digests.go +3 −0
  • internal/release/pointerdigests_test.go +7 −1
diff --git a/internal/release/digests.go b/internal/release/digests.go
index 0ce445317..b49d53dbb 100644
--- a/internal/release/digests.go
+++ b/internal/release/digests.go
@@ -83,6 +83,9 @@ func (p *ChannelPointer) CarriesDigests() bool { return p != nil && p.Digest !=
// ChannelHasDigests reports whether any entry carries a digest: the rollback
// rule's test (spec §4.6, "once its channel has any digest").
func (p *ChannelPointer) ChannelHasDigests() bool {
+ if p == nil {
+ return false
+ }
if p.CarriesDigests() {
return true
}
diff --git a/internal/release/pointerdigests_test.go b/internal/release/pointerdigests_test.go
index c56a891b2..44bb21198 100644
--- a/internal/release/pointerdigests_test.go
+++ b/internal/release/pointerdigests_test.go
@@ -56,7 +56,13 @@ func TestDigestOf(t *testing.T) {
}
var nilp *ChannelPointer
if nilp.DigestOf("v1") != "" {
- t.Fatal("a nil pointer has no digests")
+ t.Fatal("a nil pointer DigestOf returns empty string")
+ }
+ if nilp.CarriesDigests() {
+ t.Fatal("a nil pointer CarriesDigests returns false")
+ }
+ if nilp.ChannelHasDigests() {
+ t.Fatal("a nil pointer ChannelHasDigests returns false")
}
}