Skip to content

Commit

Permalink
Add MustParseReference (#962)
Browse files Browse the repository at this point in the history
  • Loading branch information
Jake Sanders committed Mar 12, 2021
1 parent 92afc74 commit d5f9e2c
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 0 deletions.
9 changes: 9 additions & 0 deletions pkg/name/ref.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,3 +47,12 @@ func ParseReference(s string, opts ...Option) (Reference, error) {
return nil, NewErrBadName("could not parse reference: " + s)

}

// MustParseReference behaves like ParseReference, but panics instead of returning an error.
func MustParseReference(s string, opts ...Option) Reference {
ref, err := ParseReference(s, opts...)
if err != nil {
panic(err)
}
return ref
}
35 changes: 35 additions & 0 deletions pkg/name/ref_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -116,3 +116,38 @@ func TestParseReference(t *testing.T) {
}
}
}

func TestMustParseReference(t *testing.T) {
goodWeakValidationNames := append(goodWeakValidationTagNames, goodWeakValidationDigestNames...)
for _, name := range goodWeakValidationNames {
func() {
defer func() {
if err := recover(); err != nil {
t.Errorf("MustParseReference(%q, WeakValidation); panic: %v", name, err)
}
}()
MustParseReference(name, WeakValidation)
}()
}

goodStrictValidationNames := append(goodStrictValidationTagNames, goodStrictValidationDigestNames...)
for _, name := range goodStrictValidationNames {
func() {
defer func() {
if err := recover(); err != nil {
t.Errorf("MustParseReference(%q, StrictValidation); panic: %v", name, err)
}
}()
MustParseReference(name, StrictValidation)
}()
}

badNames := append(badTagNames, badDigestNames...)
for _, name := range badNames {
func() {
defer func() { recover() }()
ref := MustParseReference(name, WeakValidation)
t.Errorf("MustParseReference(%q, WeakValidation) should panic, got: %#v", name, ref)
}()
}
}

0 comments on commit d5f9e2c

Please sign in to comment.