Skip to content

Commit c4db840

Browse files
authored
Add Remove Functions for PreRelease and Metadata Info (#11)
* v.RemoveMeta() remove metadata * v.RemovePre() remove pre-release data
1 parent cd8f0dd commit c4db840

File tree

2 files changed

+96
-0
lines changed

2 files changed

+96
-0
lines changed

version.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -387,3 +387,15 @@ func (v *Version) String() string {
387387
func (v *Version) Original() string {
388388
return v.original
389389
}
390+
391+
// RemoveMeta remove metadata
392+
// original parsed version data is not touched
393+
func (v *Version) RemoveMeta() {
394+
v.metadata = ""
395+
}
396+
397+
// RemovePre remove pre-release data
398+
// original parsed version data is not touched
399+
func (v *Version) RemovePre() {
400+
v.pre = ""
401+
}

version_test.go

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -643,3 +643,87 @@ func TestLessThanOrEqual(t *testing.T) {
643643
}
644644
}
645645
}
646+
647+
func TestRemoveMeta(t *testing.T) {
648+
cases := []struct {
649+
raw string
650+
clean string
651+
}{
652+
{"1.13.0+dev-12-gcb171dbd5", "1.13.0"},
653+
{"1.13.0-rc1", "1.13.0-rc1"},
654+
{"1.13.0-rc1+dev-12-gcb171dbd5", "1.13.0-rc1"},
655+
{"1.1.4", "1.1.4"},
656+
{"1.2", "1.2.0"},
657+
{"1.2.0", "1.2.0"},
658+
{"1.2.0-X-1.2.0+metadata~dist", "1.2.0-X-1.2.0"},
659+
{"1.2.3", "1.2.3"},
660+
{"1.2+beta", "1.2.0"},
661+
{"1.2-beta", "1.2.0-beta"},
662+
{"1.2+foo", "1.2.0"},
663+
{"1.4.5", "1.4.5"},
664+
{"1.7", "1.7.0"},
665+
{"1.7rc1", "1.7.0-rc1"},
666+
{"1.7rc2", "1.7.0-rc2"},
667+
{"v1.2", "1.2.0"},
668+
{"v1.2.0.0", "1.2.0.0"},
669+
{"v1.2.0.0.1", "1.2.0.0.1"},
670+
{"v1.2+beta", "1.2.0"},
671+
{"v1.2-beta", "1.2.0-beta"},
672+
{"v1.2+foo", "1.2.0"},
673+
}
674+
675+
for _, tc := range cases {
676+
v, err := NewVersion(tc.raw)
677+
if err != nil {
678+
t.Fatalf("err: %s", err)
679+
}
680+
681+
v.RemoveMeta()
682+
683+
if v.String() != tc.clean {
684+
t.Fatalf("Expect: %s, Got: %s", tc.clean, v.String())
685+
}
686+
}
687+
}
688+
689+
func TestRemovePre(t *testing.T) {
690+
cases := []struct {
691+
raw string
692+
clean string
693+
}{
694+
{"1.13.0+dev-12-gcb171dbd5", "1.13.0+dev-12-gcb171dbd5"},
695+
{"1.13.0-rc1", "1.13.0"},
696+
{"1.13.0-rc1+dev-12-gcb171dbd5", "1.13.0+dev-12-gcb171dbd5"},
697+
{"1.1.4", "1.1.4"},
698+
{"1.2", "1.2.0"},
699+
{"1.2.0", "1.2.0"},
700+
{"1.2.0-X-1.2.0+metadata~dist", "1.2.0+metadata~dist"},
701+
{"1.2.3", "1.2.3"},
702+
{"1.2+beta", "1.2.0+beta"},
703+
{"1.2-beta", "1.2.0"},
704+
{"1.2+foo", "1.2.0+foo"},
705+
{"1.4.5", "1.4.5"},
706+
{"1.7", "1.7.0"},
707+
{"1.7rc1", "1.7.0"},
708+
{"1.7rc2", "1.7.0"},
709+
{"v1.2", "1.2.0"},
710+
{"v1.2.0.0", "1.2.0.0"},
711+
{"v1.2.0.0.1", "1.2.0.0.1"},
712+
{"v1.2+beta", "1.2.0+beta"},
713+
{"v1.2-beta", "1.2.0"},
714+
{"v1.2+foo", "1.2.0+foo"},
715+
}
716+
717+
for _, tc := range cases {
718+
v, err := NewVersion(tc.raw)
719+
if err != nil {
720+
t.Fatalf("err: %s", err)
721+
}
722+
723+
v.RemovePre()
724+
725+
if v.String() != tc.clean {
726+
t.Fatalf("Expect: %s, Got: %s", tc.clean, v.String())
727+
}
728+
}
729+
}

0 commit comments

Comments
 (0)