70 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
| package version
 | |
| 
 | |
| import "testing"
 | |
| 
 | |
| func TestReleaseVersion(t *testing.T) {
 | |
| 	tests := []struct {
 | |
| 		Name                    string
 | |
| 		GitVersion              string
 | |
| 		ExpectFirstMinorRelease string
 | |
| 		ExpectPatchRelease      string
 | |
| 		ExpectError             bool
 | |
| 	}{
 | |
| 		{
 | |
| 			Name:                    "first minor release",
 | |
| 			GitVersion:              "v1.1.0",
 | |
| 			ExpectFirstMinorRelease: "v1.1.0",
 | |
| 			ExpectPatchRelease:      "v1.1.0",
 | |
| 			ExpectError:             false,
 | |
| 		},
 | |
| 		{
 | |
| 			Name:                    "subsequent minor release",
 | |
| 			GitVersion:              "v1.1.1",
 | |
| 			ExpectFirstMinorRelease: "v1.1.0",
 | |
| 			ExpectPatchRelease:      "v1.1.1",
 | |
| 			ExpectError:             false,
 | |
| 		},
 | |
| 		{
 | |
| 			Name:                    "normal git version",
 | |
| 			GitVersion:              "v1.1.1-6-gf20c721a",
 | |
| 			ExpectFirstMinorRelease: "v1.1.0",
 | |
| 			ExpectPatchRelease:      "v1.1.1",
 | |
| 			ExpectError:             false,
 | |
| 		},
 | |
| 		{
 | |
| 			Name:                    "abnormal version",
 | |
| 			GitVersion:              "vx.y.z-6-gf20c721a",
 | |
| 			ExpectFirstMinorRelease: "",
 | |
| 			ExpectPatchRelease:      "",
 | |
| 			ExpectError:             true,
 | |
| 		},
 | |
| 	}
 | |
| 
 | |
| 	for i := range tests {
 | |
| 		tc := tests[i]
 | |
| 
 | |
| 		t.Run(tc.Name, func(t *testing.T) {
 | |
| 			rv, err := ParseGitVersion(tc.GitVersion)
 | |
| 			if err != nil {
 | |
| 				if !tc.ExpectError {
 | |
| 					t.Fatalf("No error is expected but got: %v", err)
 | |
| 				}
 | |
| 				// Stop and passes this test as error is expected.
 | |
| 				return
 | |
| 			} else if err == nil {
 | |
| 				if tc.ExpectError {
 | |
| 					t.Fatalf("Expect error, but got nil")
 | |
| 				}
 | |
| 			}
 | |
| 
 | |
| 			if rv.FirstMinorRelease() != tc.ExpectFirstMinorRelease {
 | |
| 				t.Fatalf("expect first minor release: %s, but got: %s", tc.ExpectFirstMinorRelease, rv.FirstMinorRelease())
 | |
| 			}
 | |
| 
 | |
| 			if rv.PatchRelease() != tc.ExpectPatchRelease {
 | |
| 				t.Fatalf("expect patch release: %s, but got: %s", tc.ExpectPatchRelease, rv.PatchRelease())
 | |
| 			}
 | |
| 		})
 | |
| 	}
 | |
| }
 |