github.com/safing/portbase@v0.19.5/updater/filename_test.go (about) 1 package updater 2 3 import ( 4 "regexp" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 ) 9 10 func testRegexMatch(t *testing.T, testRegex *regexp.Regexp, testString string, shouldMatch bool) { 11 t.Helper() 12 13 if testRegex.MatchString(testString) != shouldMatch { 14 if shouldMatch { 15 t.Errorf("regex %s should match %s", testRegex, testString) 16 } else { 17 t.Errorf("regex %s should not match %s", testRegex, testString) 18 } 19 } 20 } 21 22 func testRegexFind(t *testing.T, testRegex *regexp.Regexp, testString string, shouldMatch bool) { 23 t.Helper() 24 25 if (testRegex.FindString(testString) != "") != shouldMatch { 26 if shouldMatch { 27 t.Errorf("regex %s should find %s", testRegex, testString) 28 } else { 29 t.Errorf("regex %s should not find %s", testRegex, testString) 30 } 31 } 32 } 33 34 func testVersionTransformation(t *testing.T, testFilename, testIdentifier, testVersion string) { 35 t.Helper() 36 37 identifier, version, ok := GetIdentifierAndVersion(testFilename) 38 if !ok { 39 t.Errorf("failed to get identifier and version of %s", testFilename) 40 } 41 assert.Equal(t, testIdentifier, identifier, "identifier does not match") 42 assert.Equal(t, testVersion, version, "version does not match") 43 44 versionedPath := GetVersionedPath(testIdentifier, testVersion) 45 assert.Equal(t, testFilename, versionedPath, "filename (versioned path) does not match") 46 } 47 48 func TestRegexes(t *testing.T) { 49 t.Parallel() 50 51 testRegexMatch(t, rawVersionRegex, "0.1.2", true) 52 testRegexMatch(t, rawVersionRegex, "0.1.2-beta", true) 53 testRegexMatch(t, rawVersionRegex, "0.1.2-staging", true) 54 testRegexMatch(t, rawVersionRegex, "12.13.14", true) 55 56 testRegexMatch(t, rawVersionRegex, "v0.1.2", false) 57 testRegexMatch(t, rawVersionRegex, "0.", false) 58 testRegexMatch(t, rawVersionRegex, "0.1", false) 59 testRegexMatch(t, rawVersionRegex, "0.1.", false) 60 testRegexMatch(t, rawVersionRegex, ".1.2", false) 61 testRegexMatch(t, rawVersionRegex, ".1.", false) 62 testRegexMatch(t, rawVersionRegex, "012345", false) 63 64 testRegexFind(t, fileVersionRegex, "/path/to/file_v0-0-0", true) 65 testRegexFind(t, fileVersionRegex, "/path/to/file_v1-2-3", true) 66 testRegexFind(t, fileVersionRegex, "/path/to/file_v1-2-3.exe", true) 67 68 testRegexFind(t, fileVersionRegex, "/path/to/file-v1-2-3", false) 69 testRegexFind(t, fileVersionRegex, "/path/to/file_v1.2.3", false) 70 testRegexFind(t, fileVersionRegex, "/path/to/file_1-2-3", false) 71 testRegexFind(t, fileVersionRegex, "/path/to/file_v1-2", false) 72 testRegexFind(t, fileVersionRegex, "/path/to/file-v1-2-3", false) 73 74 testVersionTransformation(t, "/path/to/file_v0-0-0", "/path/to/file", "0.0.0") 75 testVersionTransformation(t, "/path/to/file_v1-2-3", "/path/to/file", "1.2.3") 76 testVersionTransformation(t, "/path/to/file_v1-2-3-beta", "/path/to/file", "1.2.3-beta") 77 testVersionTransformation(t, "/path/to/file_v1-2-3-staging", "/path/to/file", "1.2.3-staging") 78 testVersionTransformation(t, "/path/to/file_v1-2-3.exe", "/path/to/file.exe", "1.2.3") 79 testVersionTransformation(t, "/path/to/file_v1-2-3-staging.exe", "/path/to/file.exe", "1.2.3-staging") 80 }