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  }