diff --git a/range.go b/range.go index 0a8eaa1..238e131 100644 --- a/range.go +++ b/range.go @@ -222,3 +222,12 @@ func parseComparator(s string) comparator { return nil } + +// MustParseRange is like ParseRange but panics if the range cannot be parsed. +func MustParseRange(s string) Range { + r, err := ParseRange(s) + if err != nil { + panic(`semver: ParseRange(` + s + `): ` + err.Error()) + } + return r +} diff --git a/range_test.go b/range_test.go index 5a745a9..b895bee 100644 --- a/range_test.go +++ b/range_test.go @@ -381,6 +381,23 @@ func TestParseRange(t *testing.T) { } } +func TestMustParseRange(t *testing.T) { + testCase := ">1.2.2 <1.2.4 || >=2.0.0 <3.0.0" + r := MustParseRange(testCase) + if !r(MustParse("1.2.3")) { + t.Errorf("Unexpected range behavior on MustParseRange") + } +} + +func TestMustParseRange_panic(t *testing.T) { + defer func() { + if recover() == nil { + t.Errorf("Should have panicked") + } + }() + _ = MustParseRange("invalid version") +} + func BenchmarkRangeParseSimple(b *testing.B) { const VERSION = ">1.0.0" b.ReportAllocs()