github.com/jfrog/jfrog-cli-core/v2@v2.51.0/artifactory/commands/python/dependencies/cache_test.go (about) 1 package dependencies 2 3 import ( 4 "errors" 5 buildinfo "github.com/jfrog/build-info-go/entities" 6 testsutils "github.com/jfrog/jfrog-client-go/utils/tests" 7 "github.com/stretchr/testify/assert" 8 "os" 9 "path/filepath" 10 "reflect" 11 "testing" 12 ) 13 14 func TestDependenciesCache(t *testing.T) { 15 // Change test's work directory, rollback after function returns. 16 17 tmpTestPath := filepath.Join(os.TempDir(), "cacheTest") 18 err := os.MkdirAll(tmpTestPath, os.ModePerm) 19 if err != nil { 20 t.Error("Failed mkDirAll: " + err.Error()) 21 } 22 wd, err := os.Getwd() 23 assert.NoError(t, err, "Failed to get current dir") 24 chdirCallback := testsutils.ChangeDirWithCallback(t, wd, tmpTestPath) 25 defer func() { 26 chdirCallback() 27 testsutils.RemoveAllAndAssert(t, tmpTestPath) 28 }() 29 30 cacheMap := make(map[string]buildinfo.Dependency) 31 csA := buildinfo.Checksum{Sha1: "sha1A", Md5: "md5A"} 32 depenA := buildinfo.Dependency{ 33 Id: "depenA-1.0-A.zip", 34 Checksum: csA, 35 } 36 cacheMap["A"] = depenA 37 csC := buildinfo.Checksum{Sha1: "sha1C", Md5: "md5C"} 38 depenC := buildinfo.Dependency{ 39 Id: "depenC-3.4-C.gzip", 40 Checksum: csC, 41 } 42 cacheMap["C"] = depenC 43 err = UpdateDependenciesCache(cacheMap, tmpTestPath) 44 if err != nil { 45 t.Error("Failed creating dependencies cache: " + err.Error()) 46 } 47 cache, err := readCacheAndCheckError(tmpTestPath) 48 if err != nil { 49 t.Error("Failed reading dependencies cache: " + err.Error()) 50 } 51 52 if !reflect.DeepEqual(cache.GetDependency("A"), depenA) { 53 t.Error("Failed retrieving dependency A!!!") 54 } 55 if cache.GetDependency("B").Id != "" { 56 t.Error("Retrieving non-existing dependency B should return nil.") 57 } 58 if !reflect.DeepEqual(cache.GetDependency("C"), depenC) { 59 t.Error("Failed retrieving dependency C!!!") 60 } 61 if cache.GetDependency("T").Id != "" { 62 t.Error("Retrieving non-existing dependency T should return nil checksum.") 63 } 64 65 delete(cacheMap, "A") 66 csT := buildinfo.Checksum{Sha1: "sha1T", Md5: "md5T"} 67 depenT := buildinfo.Dependency{ 68 Id: "depenT-6.0.68-T.zip", 69 Checksum: csT, 70 } 71 cacheMap["T"] = depenT 72 err = UpdateDependenciesCache(cacheMap, tmpTestPath) 73 if err != nil { 74 t.Error("Failed creating dependencies cache: " + err.Error()) 75 } 76 77 cache, err = readCacheAndCheckError(tmpTestPath) 78 if err != nil { 79 t.Error("Failed reading dependencies cache: " + err.Error()) 80 } 81 if cache.GetDependency("A").Id != "" { 82 t.Error("Retrieving non-existing dependency T should return nil checksum.") 83 } 84 if !reflect.DeepEqual(cache.GetDependency("T"), depenT) { 85 t.Error("Failed retrieving dependency T.") 86 } 87 if !reflect.DeepEqual(cache.GetDependency("C"), depenC) { 88 t.Error("Failed retrieving dependency C.") 89 } 90 } 91 92 func readCacheAndCheckError(cacheDir string) (cache *DependenciesCache, err error) { 93 cache, err = GetProjectDependenciesCache(cacheDir) 94 if err != nil { 95 return 96 } 97 if cache == nil { 98 err = errors.New("Cache file does not exist.") 99 } 100 return 101 }