github.com/bitrise-io/go-steputils/v2@v2.0.0-alpha.30/cache/keytemplate/checksum_test.go (about) 1 package keytemplate 2 3 import ( 4 "path/filepath" 5 "runtime" 6 "testing" 7 8 "github.com/bitrise-io/go-utils/v2/log" 9 ) 10 11 func TestChecksum(t *testing.T) { 12 testdataAbsPath, err := filepath.Abs("testdata") 13 if err != nil { 14 t.Fatalf(err.Error()) 15 } 16 17 tests := []struct { 18 name string 19 paths []string 20 want string 21 }{ 22 { 23 name: "Single file", 24 paths: []string{"testdata/package-lock.json"}, 25 want: "c048b369d6e8b0616971ccc5aa33df2910d6b78c408041a8d6b11cfb8d38b29e", 26 }, 27 { 28 name: "No file", 29 paths: []string{}, 30 want: "", 31 }, 32 { 33 name: "Invalid file path", 34 paths: []string{"not_going_to_work"}, 35 want: "", 36 }, 37 { 38 name: "File list", 39 paths: []string{"testdata/package-lock.json", "testdata/build.gradle"}, 40 want: "3332b32f95e07206f0915399e16444d6cbfb59dfb1f821b51a67ea3270f758d7", 41 }, 42 { 43 name: "File list, one file is invalid", 44 paths: []string{"testdata/package-lock.json", "testdata/build.gradle", "invalid"}, 45 want: "3332b32f95e07206f0915399e16444d6cbfb59dfb1f821b51a67ea3270f758d7", 46 }, 47 { 48 name: "Single glob star", 49 paths: []string{"testdata/*.gradle"}, 50 want: "db094ffe3aea59fc48766cb408894ada1c67dbd355d25085729394df82fb1eda", 51 }, 52 { 53 name: "Double glob star", 54 paths: []string{"testdata/**/*.gradle"}, 55 want: "3a6e11679515ce19ef1728549588e672e76b00c9b6855ed1d33d0305ec5ecad3", 56 }, 57 { 58 name: "Multiple glob stars", 59 paths: []string{"testdata/**/*.gradle*"}, 60 want: "563cf037f336453ee1888c3dcbe1c687ebeb6c593d4d0bd57ccc5fc49daa3951", 61 }, 62 { 63 name: "Absolute path and glob star", 64 paths: []string{filepath.Join(testdataAbsPath, "*.gradle")}, 65 want: "db094ffe3aea59fc48766cb408894ada1c67dbd355d25085729394df82fb1eda", 66 }, 67 } 68 for _, tt := range tests { 69 t.Run(tt.name, func(t *testing.T) { 70 logger := log.NewLogger() 71 logger.EnableDebugLog(true) 72 m := Model{ 73 envRepo: envRepository{}, 74 logger: logger, 75 os: runtime.GOOS, 76 arch: runtime.GOARCH, 77 } 78 if got := m.checksum(tt.paths...); got != tt.want { 79 t.Errorf("checksum() = %v, want %v", got, tt.want) 80 } 81 }) 82 } 83 }