Skip to content

Commit a21294d

Browse files
committed
compat test
1 parent c99d4c0 commit a21294d

File tree

19 files changed

+429
-88
lines changed

19 files changed

+429
-88
lines changed

api/ocm/add_test.go

Lines changed: 29 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
. "github.com/mandelsoft/goutils/testutils"
55
. "github.com/onsi/ginkgo/v2"
66
. "github.com/onsi/gomega"
7+
"ocm.software/ocm/api/ocm/refhints"
78
. "ocm.software/ocm/api/ocm/testhelper"
89

910
"ocm.software/ocm/api/datacontext"
@@ -38,50 +39,50 @@ var _ = Describe("add resources", func() {
3839
It("adds resource", func() {
3940
meta := ocm.NewResourceMeta("test", resourcetypes.PLAIN_TEXT, metav1.ExternalRelation)
4041
MustBeSuccessful(cv.SetResourceBlob(meta.WithVersion("v1"),
41-
blobaccess.ForString(mime.MIME_TEXT, S_TESTDATA), nil, nil))
42+
blobaccess.ForString(mime.MIME_TEXT, S_TESTDATA), refhints.NONE, nil))
4243
Expect(Must(cv.SelectResources(selectors.Name("test")))[0].Meta().Digest).To(Equal(DS_TESTDATA))
4344
})
4445

4546
It("replaces resource", func() {
4647
meta := ocm.NewResourceMeta("test", resourcetypes.PLAIN_TEXT, metav1.ExternalRelation)
4748
MustBeSuccessful(cv.SetResourceBlob(meta.WithVersion("v1"),
48-
blobaccess.ForString(mime.MIME_TEXT, S_TESTDATA), nil, nil))
49+
blobaccess.ForString(mime.MIME_TEXT, S_TESTDATA), refhints.NONE, nil))
4950

5051
MustBeSuccessful(cv.SetResourceBlob(meta.WithVersion("v1"),
51-
blobaccess.ForString(mime.MIME_TEXT, S_OTHERDATA), nil, nil))
52+
blobaccess.ForString(mime.MIME_TEXT, S_OTHERDATA), refhints.NONE, nil))
5253
Expect(Must(cv.SelectResources(selectors.Name("test")))[0].Meta().Digest).To(Equal(DS_OTHERDATA))
5354
})
5455

5556
It("replaces resource (enforced)", func() {
5657
meta := ocm.NewResourceMeta("test", resourcetypes.PLAIN_TEXT, metav1.ExternalRelation)
5758
MustBeSuccessful(cv.SetResourceBlob(meta.WithVersion("v1"),
58-
blobaccess.ForString(mime.MIME_TEXT, S_TESTDATA), nil, nil))
59+
blobaccess.ForString(mime.MIME_TEXT, S_TESTDATA), refhints.NONE, nil))
5960

6061
MustBeSuccessful(cv.SetResourceBlob(meta.WithVersion("v1"),
61-
blobaccess.ForString(mime.MIME_TEXT, S_OTHERDATA), nil, nil, ocm.UpdateElement))
62+
blobaccess.ForString(mime.MIME_TEXT, S_OTHERDATA), refhints.NONE, nil, ocm.UpdateElement))
6263
Expect(Must(cv.SelectResources(selectors.Name("test")))[0].Meta().Digest).To(Equal(DS_OTHERDATA))
6364

6465
MustBeSuccessful(cv.SetResourceBlob(meta.WithVersion("v2"),
65-
blobaccess.ForString(mime.MIME_TEXT, S_OTHERDATA), nil, nil, ocm.UpdateElement))
66+
blobaccess.ForString(mime.MIME_TEXT, S_OTHERDATA), refhints.NONE, nil, ocm.UpdateElement))
6667
Expect(Must(cv.SelectResources(selectors.Name("test")))[0].Meta().Digest).To(Equal(DS_OTHERDATA))
6768
})
6869

6970
It("fails replace non-existent resource)", func() {
7071
meta := ocm.NewResourceMeta("test", resourcetypes.PLAIN_TEXT, metav1.ExternalRelation)
7172
MustBeSuccessful(cv.SetResourceBlob(meta.WithVersion("v1"),
72-
blobaccess.ForString(mime.MIME_TEXT, S_TESTDATA), nil, nil))
73+
blobaccess.ForString(mime.MIME_TEXT, S_TESTDATA), refhints.NONE, nil))
7374

7475
Expect(cv.SetResourceBlob(meta.WithVersion("v1").WithExtraIdentity("attr", "value"),
75-
blobaccess.ForString(mime.MIME_TEXT, S_OTHERDATA), nil, nil, ocm.UpdateElement)).To(
76+
blobaccess.ForString(mime.MIME_TEXT, S_OTHERDATA), refhints.NONE, nil, ocm.UpdateElement)).To(
7677
MatchError("unable to set resource: element \"attr\"=\"value\",\"name\"=\"test\" not found"))
7778
})
7879

7980
It("adds duplicate resource with different version", func() {
8081
meta := ocm.NewResourceMeta("test", resourcetypes.PLAIN_TEXT, metav1.ExternalRelation)
8182
MustBeSuccessful(cv.SetResourceBlob(meta.WithVersion("v1"),
82-
blobaccess.ForString(mime.MIME_TEXT, S_TESTDATA), nil, nil))
83+
blobaccess.ForString(mime.MIME_TEXT, S_TESTDATA), refhints.NONE, nil))
8384
MustBeSuccessful(cv.SetResourceBlob(meta.WithVersion("v2"),
84-
blobaccess.ForString(mime.MIME_TEXT, S_OTHERDATA), nil, nil, ocm.AppendElement))
85+
blobaccess.ForString(mime.MIME_TEXT, S_OTHERDATA), refhints.NONE, nil, ocm.AppendElement))
8586
Expect(len(Must(cv.SelectResources(selectors.Name("test"))))).To(Equal(2))
8687
Expect(Must(cv.SelectResources(selectors.Name("test")))[0].Meta().Digest).To(Equal(DS_TESTDATA))
8788
Expect(Must(cv.SelectResources(selectors.Name("test")))[1].Meta().Digest).To(Equal(DS_OTHERDATA))
@@ -90,18 +91,18 @@ var _ = Describe("add resources", func() {
9091
It("rejects duplicate resource with same version", func() {
9192
meta := ocm.NewResourceMeta("test", resourcetypes.PLAIN_TEXT, metav1.ExternalRelation)
9293
MustBeSuccessful(cv.SetResourceBlob(meta.WithVersion("v1"),
93-
blobaccess.ForString(mime.MIME_TEXT, S_TESTDATA), nil, nil))
94+
blobaccess.ForString(mime.MIME_TEXT, S_TESTDATA), refhints.NONE, nil))
9495
Expect(cv.SetResourceBlob(meta.WithVersion("v1"),
95-
blobaccess.ForString(mime.MIME_TEXT, S_OTHERDATA), nil, nil, ocm.AppendElement)).
96+
blobaccess.ForString(mime.MIME_TEXT, S_OTHERDATA), refhints.NONE, nil, ocm.AppendElement)).
9697
To(MatchError("unable to set resource: adding a new resource with same base identity requires different version"))
9798
})
9899

99100
It("rejects duplicate resource with extra identity", func() {
100101
meta := ocm.NewResourceMeta("test", resourcetypes.PLAIN_TEXT, metav1.LocalRelation).WithExtraIdentity("attr", "value")
101102
MustBeSuccessful(cv.SetResourceBlob(meta,
102-
blobaccess.ForString(mime.MIME_TEXT, S_TESTDATA), nil, nil))
103+
blobaccess.ForString(mime.MIME_TEXT, S_TESTDATA), refhints.NONE, nil))
103104
Expect(cv.SetResourceBlob(meta,
104-
blobaccess.ForString(mime.MIME_TEXT, S_OTHERDATA), nil, nil, ocm.AppendElement)).
105+
blobaccess.ForString(mime.MIME_TEXT, S_OTHERDATA), refhints.NONE, nil, ocm.AppendElement)).
105106
To(MatchError("unable to set resource: adding a new resource with same base identity requires different version"))
106107
})
107108
})
@@ -110,68 +111,68 @@ var _ = Describe("add resources", func() {
110111
It("adds source", func() {
111112
meta := ocm.NewSourceMeta("test", resourcetypes.PLAIN_TEXT)
112113
MustBeSuccessful(cv.SetSourceBlob(meta.WithVersion("v1"),
113-
blobaccess.ForString(mime.MIME_TEXT, S_TESTDATA), nil, nil))
114+
blobaccess.ForString(mime.MIME_TEXT, S_TESTDATA), refhints.NONE, nil))
114115
Expect(len(cv.GetDescriptor().Sources)).To(Equal(1))
115116
})
116117

117118
It("replaces source", func() {
118119
meta := ocm.NewSourceMeta("test", resourcetypes.PLAIN_TEXT)
119120
MustBeSuccessful(cv.SetSourceBlob(meta.WithVersion("v1"),
120-
blobaccess.ForString(mime.MIME_TEXT, S_TESTDATA), nil, nil))
121+
blobaccess.ForString(mime.MIME_TEXT, S_TESTDATA), refhints.NONE, nil))
121122

122123
MustBeSuccessful(cv.SetSourceBlob(meta.WithVersion("v1"),
123-
blobaccess.ForString(mime.MIME_TEXT, S_OTHERDATA), nil, nil))
124+
blobaccess.ForString(mime.MIME_TEXT, S_OTHERDATA), refhints.NONE, nil))
124125
Expect(len(Must(cv.SelectSources(selectors.Name("test"))))).To(Equal(1))
125126
})
126127

127128
It("replaces source (enforced)", func() {
128129
meta := ocm.NewSourceMeta("test", resourcetypes.PLAIN_TEXT)
129130
MustBeSuccessful(cv.SetSourceBlob(meta.WithVersion("v1"),
130-
blobaccess.ForString(mime.MIME_TEXT, S_TESTDATA), nil, nil))
131+
blobaccess.ForString(mime.MIME_TEXT, S_TESTDATA), refhints.NONE, nil))
131132

132133
MustBeSuccessful(cv.SetSourceBlob(meta.WithVersion("v1"),
133-
blobaccess.ForString(mime.MIME_TEXT, S_OTHERDATA), nil, nil, ocm.UpdateElement))
134+
blobaccess.ForString(mime.MIME_TEXT, S_OTHERDATA), refhints.NONE, nil, ocm.UpdateElement))
134135
Expect(len(Must(cv.SelectSources(selectors.Name("test"))))).To(Equal(1))
135136

136137
MustBeSuccessful(cv.SetSourceBlob(meta.WithVersion("v2"),
137-
blobaccess.ForString(mime.MIME_TEXT, S_OTHERDATA), nil, nil, ocm.UpdateElement))
138+
blobaccess.ForString(mime.MIME_TEXT, S_OTHERDATA), refhints.NONE, nil, ocm.UpdateElement))
138139
Expect(len(Must(cv.SelectSources(selectors.Name("test"))))).To(Equal(1))
139140
})
140141

141142
It("fails replace non-existent source)", func() {
142143
meta := ocm.NewSourceMeta("test", resourcetypes.PLAIN_TEXT)
143144
MustBeSuccessful(cv.SetSourceBlob(meta.WithVersion("v1"),
144-
blobaccess.ForString(mime.MIME_TEXT, S_TESTDATA), nil, nil))
145+
blobaccess.ForString(mime.MIME_TEXT, S_TESTDATA), refhints.NONE, nil))
145146

146147
Expect(cv.SetSourceBlob(meta.WithVersion("v1").WithExtraIdentity("attr", "value"),
147-
blobaccess.ForString(mime.MIME_TEXT, S_OTHERDATA), nil, nil, ocm.UpdateElement)).To(
148+
blobaccess.ForString(mime.MIME_TEXT, S_OTHERDATA), refhints.NONE, nil, ocm.UpdateElement)).To(
148149
MatchError("unable to set source: element \"attr\"=\"value\",\"name\"=\"test\" not found"))
149150
})
150151

151152
It("adds duplicate source with different version", func() {
152153
meta := ocm.NewSourceMeta("test", resourcetypes.PLAIN_TEXT)
153154
MustBeSuccessful(cv.SetSourceBlob(meta.WithVersion("v1"),
154-
blobaccess.ForString(mime.MIME_TEXT, S_TESTDATA), nil, nil))
155+
blobaccess.ForString(mime.MIME_TEXT, S_TESTDATA), refhints.NONE, nil))
155156
MustBeSuccessful(cv.SetSourceBlob(meta.WithVersion("v2"),
156-
blobaccess.ForString(mime.MIME_TEXT, S_OTHERDATA), nil, nil, ocm.AppendElement))
157+
blobaccess.ForString(mime.MIME_TEXT, S_OTHERDATA), refhints.NONE, nil, ocm.AppendElement))
157158
Expect(len(Must(cv.SelectSources(selectors.Name("test"))))).To(Equal(2))
158159
})
159160

160161
It("rejects duplicate source with same version", func() {
161162
meta := ocm.NewSourceMeta("test", resourcetypes.PLAIN_TEXT)
162163
MustBeSuccessful(cv.SetSourceBlob(meta.WithVersion("v1"),
163-
blobaccess.ForString(mime.MIME_TEXT, S_TESTDATA), nil, nil))
164+
blobaccess.ForString(mime.MIME_TEXT, S_TESTDATA), refhints.NONE, nil))
164165
Expect(cv.SetSourceBlob(meta.WithVersion("v1"),
165-
blobaccess.ForString(mime.MIME_TEXT, S_OTHERDATA), nil, nil, ocm.AppendElement)).
166+
blobaccess.ForString(mime.MIME_TEXT, S_OTHERDATA), refhints.NONE, nil, ocm.AppendElement)).
166167
To(MatchError("unable to set source: adding a new source with same base identity requires different version"))
167168
})
168169

169170
It("rejects duplicate source with extra identity", func() {
170171
meta := ocm.NewSourceMeta("test", resourcetypes.PLAIN_TEXT).WithExtraIdentity("attr", "value")
171172
MustBeSuccessful(cv.SetSourceBlob(meta,
172-
blobaccess.ForString(mime.MIME_TEXT, S_TESTDATA), nil, nil))
173+
blobaccess.ForString(mime.MIME_TEXT, S_TESTDATA), refhints.NONE, nil))
173174
Expect(cv.SetSourceBlob(meta,
174-
blobaccess.ForString(mime.MIME_TEXT, S_OTHERDATA), nil, nil, ocm.AppendElement)).
175+
blobaccess.ForString(mime.MIME_TEXT, S_OTHERDATA), refhints.NONE, nil, ocm.AppendElement)).
175176
To(MatchError("unable to set source: adding a new source with same base identity requires different version"))
176177
})
177178
})

api/ocm/cpi/compose_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
. "github.com/mandelsoft/goutils/testutils"
66
. "github.com/onsi/ginkgo/v2"
77
. "github.com/onsi/gomega"
8+
"ocm.software/ocm/api/ocm/refhints"
89
. "ocm.software/ocm/api/ocm/testhelper"
910

1011
"github.com/mandelsoft/vfs/pkg/memoryfs"
@@ -52,7 +53,7 @@ var _ = Describe("access method", func() {
5253
final.Close(cv)
5354

5455
// add resource
55-
MustBeSuccessful(cv.SetResourceBlob(compdesc.NewResourceMeta("text1", resourcetypes.PLAIN_TEXT, metav1.LocalRelation), blobaccess.ForString(mime.MIME_TEXT, S_TESTDATA), nil, nil))
56+
MustBeSuccessful(cv.SetResourceBlob(compdesc.NewResourceMeta("text1", resourcetypes.PLAIN_TEXT, metav1.LocalRelation), blobaccess.ForString(mime.MIME_TEXT, S_TESTDATA), refhints.NONE, nil))
5657
Expect(Must(cv.GetResource(compdesc.NewIdentity("text1"))).Meta().Digest).To(Equal(DS_TESTDATA))
5758

5859
MustBeSuccessful(c.AddVersion(cv))
@@ -84,7 +85,7 @@ var _ = Describe("access method", func() {
8485
final.Close(cv)
8586

8687
// add resource
87-
MustBeSuccessful(cv.SetResourceBlob(compdesc.NewResourceMeta("text1", resourcetypes.PLAIN_TEXT, metav1.LocalRelation), blobaccess.ForString(mime.MIME_TEXT, S_TESTDATA), nil, nil))
88+
MustBeSuccessful(cv.SetResourceBlob(compdesc.NewResourceMeta("text1", resourcetypes.PLAIN_TEXT, metav1.LocalRelation), blobaccess.ForString(mime.MIME_TEXT, S_TESTDATA), refhints.NONE, nil))
8889
Expect(Must(cv.GetResource(compdesc.NewIdentity("text1"))).Meta().Digest).To(Equal(DS_TESTDATA))
8990

9091
a2 := Must(ctf.Create(ctx, accessobj.ACC_WRITABLE|accessobj.ACC_CREATE, "ctf2", 0o700, accessio.PathFileSystem(fs)))

api/ocm/extensions/attrs/ociuploadattr/attr.go

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,17 @@ func (a *Attribute) getBySpec(ctx cpi.Context) (oci.Repository, *oci.UniformRepo
151151
a.prefix = a.NamespacePrefix
152152
a.spec = data
153153
a.ref = &oci.RefSpec{UniformRepositorySpec: *spec.UniformRepositorySpec()}
154-
ctx.Finalizer().Close(a)
154+
ctx.Finalizer().With(func() error {
155+
a.lock.Lock()
156+
defer a.lock.Unlock()
157+
158+
r := a.repo
159+
a.reset()
160+
if r != nil {
161+
return r.Close()
162+
}
163+
return nil
164+
})
155165
}
156166
return a.repo, &a.ref.UniformRepositorySpec, a.prefix, nil
157167
}

0 commit comments

Comments
 (0)