MCPcopy Create free account
hub / github.com/buildpacks/pack / testCache

Function testCache

pkg/cache/volume_cache_test.go:37–359  ·  view source on GitHub ↗
(t *testing.T, when spec.G, it spec.S)

Source from the content-addressed store, hash-verified

35}
36
37func testCache(t *testing.T, when spec.G, it spec.S) {
38 var (
39 dockerClient client.APIClient
40 outBuf bytes.Buffer
41 logger logging.Logger
42 )
43
44 it.Before(func() {
45 var err error
46 dockerClient, err = client.New(client.FromEnv)
47 h.AssertNil(t, err)
48 logger = logging.NewSimpleLogger(&outBuf)
49 })
50
51 when("#NewVolumeCache", func() {
52 when("volume cache name is empty", func() {
53 it("adds suffix to calculated name", func() {
54 ref, err := name.ParseReference("my/repo", name.WeakValidation)
55 h.AssertNil(t, err)
56 subject, _ := cache.NewVolumeCache(ref, cache.CacheInfo{}, "some-suffix", dockerClient, logger)
57 if !strings.HasSuffix(subject.Name(), ".some-suffix") {
58 t.Fatalf("Calculated volume name '%s' should end with '.some-suffix'", subject.Name())
59 }
60 })
61
62 it("reusing the same cache for the same repo name", func() {
63 ref, err := name.ParseReference("my/repo", name.WeakValidation)
64 h.AssertNil(t, err)
65
66 subject, _ := cache.NewVolumeCache(ref, cache.CacheInfo{}, "some-suffix", dockerClient, logger)
67 expected, _ := cache.NewVolumeCache(ref, cache.CacheInfo{}, "some-suffix", dockerClient, logger)
68 if subject.Name() != expected.Name() {
69 t.Fatalf("The same repo name should result in the same volume")
70 }
71 })
72
73 it("supplies different volumes for different tags", func() {
74 ref, err := name.ParseReference("my/repo:other-tag", name.WeakValidation)
75 h.AssertNil(t, err)
76
77 subject, _ := cache.NewVolumeCache(ref, cache.CacheInfo{}, "some-suffix", dockerClient, logger)
78
79 ref, err = name.ParseReference("my/repo", name.WeakValidation)
80 h.AssertNil(t, err)
81 notExpected, _ := cache.NewVolumeCache(ref, cache.CacheInfo{}, "some-suffix", dockerClient, logger)
82 if subject.Name() == notExpected.Name() {
83 t.Fatalf("Different image tags should result in different volumes")
84 }
85 })
86
87 it("supplies different volumes for different registries", func() {
88 ref, err := name.ParseReference("registry.com/my/repo:other-tag", name.WeakValidation)
89 h.AssertNil(t, err)
90
91 subject, _ := cache.NewVolumeCache(ref, cache.CacheInfo{}, "some-suffix", dockerClient, logger)
92
93 ref, err = name.ParseReference("my/repo", name.WeakValidation)
94 h.AssertNil(t, err)

Callers

nothing calls this directly

Calls 10

NameMethod · 0.95
ClearMethod · 0.95
TypeMethod · 0.95
NewSimpleLoggerFunction · 0.92
NewVolumeCacheFunction · 0.92
ReadVolumeKeysFunction · 0.92
RemoveAllMethod · 0.45
StringMethod · 0.45
VolumeCreateMethod · 0.45
VolumeListMethod · 0.45

Tested by

no test coverage detected