Skip to content

Commit db1aadd

Browse files
committed
Fix tests
Signed-off-by: David Gageot <david.gageot@docker.com>
1 parent ca92671 commit db1aadd

3 files changed

Lines changed: 62 additions & 70 deletions

File tree

pkg/agentfile/resolver_test.go

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,13 @@ agents:
125125

126126
content1, err := os.ReadFile(resolved1)
127127
require.NoError(t, err)
128-
assert.Equal(t, agentContent, string(content1))
128+
assert.Equal(t, `version: "1"
129+
agents:
130+
root:
131+
model: openai/gpt-4o
132+
description: Test OCI agent
133+
instruction: You are a test OCI agent
134+
`, string(content1))
129135

130136
// Expected filename based on OCI ref
131137
expectedFilename := OciRefToFilename(ociRef)
@@ -454,3 +460,40 @@ func TestResolveAgentFile_ReplaceEmptyAliasWithActualFile(t *testing.T) {
454460
require.NoError(t, err)
455461
assert.Equal(t, aliasedAgentFile, resolved)
456462
}
463+
464+
func TestResolveAgentFile_OCIRef_HasAVersion(t *testing.T) {
465+
storeDir := t.TempDir()
466+
t.Setenv("CAGENT_CONTENT_STORE", storeDir)
467+
468+
store, err := content.NewStore()
469+
require.NoError(t, err)
470+
471+
agentContent := `agents:
472+
root:
473+
model: auto
474+
description: Test OCI agent
475+
instruction: You are a test OCI agent
476+
`
477+
agentFile := filepath.Join(t.TempDir(), "oci-agent.yaml")
478+
require.NoError(t, os.WriteFile(agentFile, []byte(agentContent), 0o644))
479+
480+
// Package as OCI artifact
481+
ociRef := "test.registry.io/myorg/testagent:v1"
482+
_, err = oci.PackageFileAsOCIToStore(t.Context(), agentFile, ociRef, store)
483+
require.NoError(t, err)
484+
485+
// First resolution
486+
resolved, err := Resolve(t.Context(), nil, ociRef)
487+
require.NoError(t, err)
488+
assert.NotEmpty(t, resolved)
489+
490+
content, err := os.ReadFile(resolved)
491+
require.NoError(t, err)
492+
assert.Equal(t, `version: "2"
493+
agents:
494+
root:
495+
model: auto
496+
description: Test OCI agent
497+
instruction: You are a test OCI agent
498+
`, string(content))
499+
}

pkg/oci/package.go

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,19 @@ func PackageFileAsOCIToStore(ctx context.Context, filePath, artifactRef string,
4444
return "", fmt.Errorf("loading config: %w", err)
4545
}
4646

47-
// Make sure we push a yaml with the latest version
48-
cfg.Version = latest.Version
49-
data, err = yaml.MarshalWithOptions(cfg, yaml.Indent(2))
50-
if err != nil {
51-
return "", fmt.Errorf("marshaling config: %w", err)
47+
var raw struct {
48+
Version string `yaml:"version,omitempty"`
49+
}
50+
if err := yaml.UnmarshalWithOptions(data, &raw); err != nil {
51+
return "", fmt.Errorf("looking for version in config file\n%s", yaml.FormatError(err, true, true))
52+
}
53+
// Make sure we push a yaml with a version (Use latest if missing)
54+
if raw.Version == "" {
55+
cfg.Version = latest.Version
56+
data, err = yaml.MarshalWithOptions(cfg, yaml.Indent(2))
57+
if err != nil {
58+
return "", fmt.Errorf("marshaling config: %w", err)
59+
}
5260
}
5361

5462
// Prepare OCI annotations

pkg/oci/package_test.go

Lines changed: 5 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,11 @@ import (
1313

1414
func TestPackageFileAsOCIToStore(t *testing.T) {
1515
testFile := filepath.Join(t.TempDir(), "test.yaml")
16-
testContent := `name: test-app
17-
version: v1.0.0
18-
description: "Test application"
16+
testContent := `version: "2"
17+
agents:
18+
root:
19+
model: auto
20+
description: A helpful AI assistant
1921
`
2022
require.NoError(t, os.WriteFile(testFile, []byte(testContent), 0o644))
2123
store, err := content.NewStore(content.WithBaseDir(t.TempDir()))
@@ -24,9 +26,7 @@ description: "Test application"
2426
tag := "test-app:v1.0.0"
2527
digest, err := PackageFileAsOCIToStore(t.Context(), testFile, tag, store)
2628
require.NoError(t, err)
27-
2829
assert.NotEmpty(t, digest)
29-
3030
t.Cleanup(func() {
3131
if err := store.DeleteArtifact(digest); err != nil {
3232
t.Logf("Failed to clean up artifact: %v", err)
@@ -35,7 +35,6 @@ description: "Test application"
3535

3636
img, err := store.GetArtifactImage(tag)
3737
require.NoError(t, err)
38-
3938
assert.NotNil(t, img)
4039

4140
metadata, err := store.GetArtifactMetadata(tag)
@@ -67,61 +66,3 @@ func TestPackageFileAsOCIToStoreInvalidTag(t *testing.T) {
6766
_, err = PackageFileAsOCIToStore(t.Context(), testFile, "", store)
6867
require.Error(t, err)
6968
}
70-
71-
func TestPackageFileAsOCIToStoreDifferentFileTypes(t *testing.T) {
72-
testCases := []struct {
73-
name string
74-
filename string
75-
content string
76-
tag string
77-
}{
78-
{
79-
name: "yaml file",
80-
filename: "config.yaml",
81-
content: "key: value\nother: data",
82-
tag: "config:yaml",
83-
},
84-
{
85-
name: "json file",
86-
filename: "data.json",
87-
content: `{"key": "value", "number": 42}`,
88-
tag: "data:json",
89-
},
90-
{
91-
name: "text file",
92-
filename: "readme.txt",
93-
content: "This is a simple text file\nwith multiple lines",
94-
tag: "readme:txt",
95-
},
96-
}
97-
98-
store, err := content.NewStore(content.WithBaseDir(t.TempDir()))
99-
require.NoError(t, err)
100-
101-
var digests []string
102-
103-
for _, tc := range testCases {
104-
t.Run(tc.name, func(t *testing.T) {
105-
testFile := filepath.Join(t.TempDir(), tc.filename)
106-
require.NoError(t, os.WriteFile(testFile, []byte(tc.content), 0o644))
107-
108-
// Package the file as OCI artifact
109-
digest, err := PackageFileAsOCIToStore(t.Context(), testFile, tc.tag, store)
110-
require.NoError(t, err)
111-
112-
digests = append(digests, digest)
113-
114-
img, err := store.GetArtifactImage(tc.tag)
115-
require.NoError(t, err)
116-
assert.NotNil(t, img)
117-
})
118-
}
119-
120-
t.Cleanup(func() {
121-
for _, digest := range digests {
122-
if err := store.DeleteArtifact(digest); err != nil {
123-
t.Logf("Failed to clean up artifact %s: %v", digest, err)
124-
}
125-
}
126-
})
127-
}

0 commit comments

Comments
 (0)