diff --git a/semver.go b/semver.go index 9df310b..7afe611 100644 --- a/semver.go +++ b/semver.go @@ -285,6 +285,15 @@ func Parse(s string) (Version, error) { return v, nil } +// MustParse is like Parse but panics if the version cannot be parsed. +func MustParse(s string) Version { + v, err := Parse(s) + if err != nil { + panic(`semver: Parse(` + s + `): ` + err.Error()) + } + return v +} + // PreRelease Version type PRVersion struct { VersionStr string diff --git a/semver_test.go b/semver_test.go index 90c4545..a6312b8 100644 --- a/semver_test.go +++ b/semver_test.go @@ -50,6 +50,19 @@ func TestParse(t *testing.T) { } } +func TestMustParse(t *testing.T) { + _ = MustParse("32.2.1-alpha") +} + +func TestMustParse_panic(t *testing.T) { + defer func() { + if recover() == nil { + t.Errorf("Should have panicked") + } + }() + _ = MustParse("invalid version") +} + func TestValidate(t *testing.T) { for _, test := range formatTests { if err := test.v.Validate(); err != nil {