@@ -6,6 +6,7 @@ package tests
66import (
77 "fmt"
88 "os"
9+ "os/exec"
910 "path/filepath"
1011 "runtime"
1112 "strings"
@@ -27,6 +28,7 @@ var _ = ginkgo.Describe("Agntcy agent list tests", func() {
2728 mountDest string
2829 mountString string
2930 agents []* agent
31+ runner testutils.Runner
3032 )
3133
3234 ginkgo .Context ("agents push for listing" , func () {
@@ -36,8 +38,13 @@ var _ = ginkgo.Describe("Agntcy agent list tests", func() {
3638 gomega .Expect (err ).NotTo (gomega .HaveOccurred ())
3739
3840 dockerImage = fmt .Sprintf ("%s/dir-ctl:%s" , os .Getenv ("IMAGE_REPO" ), os .Getenv ("DIRECTORY_IMAGE_TAG" ))
39- mountDest = "/testdata"
40- mountString = fmt .Sprintf ("%s:%s" , testDataPath , mountDest )
41+
42+ if os .Getenv ("RUNNER_TYPE" ) == "local" {
43+ mountDest = testDataPath
44+ } else {
45+ mountDest = "/testdata"
46+ mountString = fmt .Sprintf ("%s:%s" , testDataPath , mountDest )
47+ }
4148
4249 agents = append (agents , & agent {modelFile : filepath .Join (mountDest , "crewai.agent.json" )})
4350 agents = append (agents , & agent {modelFile : filepath .Join (mountDest , "langgraph.agent.json" )})
@@ -49,35 +56,65 @@ var _ = ginkgo.Describe("Agntcy agent list tests", func() {
4956 agent .modelFile ,
5057 }
5158
52- if runtime .GOOS != "linux" {
59+ if runtime .GOOS != "linux" && os . Getenv ( "RUNNER_TYPE" ) != "local" {
5360 dirctlArgs = append (dirctlArgs ,
5461 "--server-addr" ,
5562 "host.docker.internal:8888" ,
5663 )
5764 }
5865
59- runner := testutils .NewDockerRunner (dockerImage , mountString , nil )
60- outputBuffer , err := runner .Run (dirctlArgs ... )
61- gomega .Expect (err ).NotTo (gomega .HaveOccurred (), outputBuffer .String ())
66+ var err error
67+
68+ switch os .Getenv ("RUNNER_TYPE" ) {
69+ case "local" :
70+ runner , err = testutils .NewRunner (testutils .RunnerTypeLocal , nil )
71+ default :
72+ runner , err = testutils .NewRunner (testutils .RunnerTypeDocker ,
73+ testutils .WithDockerCmd ("docker" ),
74+ testutils .WithDockerImage (dockerImage ),
75+ testutils .WithDockerArgs ([]string {"run" , "-v" + mountString }),
76+ )
77+ }
78+
79+ gomega .Expect (err ).NotTo (gomega .HaveOccurred ())
80+
81+ cmdOutput , err := runner .Run ("dirctl" , dirctlArgs ... )
82+
83+ if err != nil {
84+ exitErr , ok := err .(* exec.ExitError )
85+ if ok {
86+ err = fmt .Errorf ("%s, stderr:%s" , exitErr .String (), string (exitErr .Stderr ))
87+ }
88+ }
6289
63- agent .digest = strings .Trim (outputBuffer .String (), "\n " )
90+ gomega .Expect (err ).NotTo (gomega .HaveOccurred ())
91+
92+ agent .digest = strings .Trim (cmdOutput , "\n " )
6493 _ , err = fmt .Fprintf (ginkgo .GinkgoWriter , "DIGEST: %v\n " , agent .digest )
6594
95+ gomega .Expect (err ).NotTo (gomega .HaveOccurred (), cmdOutput )
96+
6697 dirctlArgs = []string {
6798 "publish" ,
6899 agent .digest ,
69100 }
70101
71- if runtime .GOOS != "linux" {
102+ if runtime .GOOS != "linux" && os . Getenv ( "RUNNER_TYPE" ) != "local" {
72103 dirctlArgs = append (dirctlArgs ,
73104 "--server-addr" ,
74105 "host.docker.internal:8888" ,
75106 )
76107 }
77108
78- runner = testutils .NewDockerRunner (dockerImage , mountString , nil )
79- outputBuffer , err = runner .Run (dirctlArgs ... )
80- gomega .Expect (err ).NotTo (gomega .HaveOccurred (), outputBuffer .String ())
109+ _ , err = runner .Run ("dirctl" , dirctlArgs ... )
110+ if err != nil {
111+ exitErr , ok := err .(* exec.ExitError )
112+ if ok {
113+ err = fmt .Errorf ("%s, stderr:%s" , exitErr .String (), string (exitErr .Stderr ))
114+ }
115+ }
116+
117+ gomega .Expect (err ).NotTo (gomega .HaveOccurred ())
81118 }
82119 })
83120
@@ -95,7 +132,7 @@ var _ = ginkgo.Describe("Agntcy agent list tests", func() {
95132
96133 dirctlArgs = append (dirctlArgs , labels ... )
97134
98- if runtime .GOOS != "linux" {
135+ if runtime .GOOS != "linux" && os . Getenv ( "RUNNER_TYPE" ) != "local" {
99136 dirctlArgs = append (dirctlArgs ,
100137 "--server-addr" ,
101138 "host.docker.internal:8888" ,
@@ -105,16 +142,23 @@ var _ = ginkgo.Describe("Agntcy agent list tests", func() {
105142 _ , err := fmt .Fprintf (ginkgo .GinkgoWriter , "dirctl args: %v\n " , dirctlArgs )
106143 gomega .Expect (err ).NotTo (gomega .HaveOccurred ())
107144
108- runner := testutils .NewDockerRunner (dockerImage , mountString , nil )
109- outputBuffer , err := runner .Run (dirctlArgs ... )
110- gomega .Expect (err ).NotTo (gomega .HaveOccurred (), outputBuffer .String ())
145+ cmdOutput , err := runner .Run ("dirctl" , dirctlArgs ... )
146+
147+ if err != nil {
148+ exitErr , ok := err .(* exec.ExitError )
149+ if ok {
150+ err = fmt .Errorf ("%s, stderr:%s" , exitErr .String (), string (exitErr .Stderr ))
151+ }
152+ }
153+
154+ gomega .Expect (err ).NotTo (gomega .HaveOccurred ())
111155
112156 if expectFound {
113157 for _ , agent := range agents {
114- gomega .Expect (outputBuffer . String () ).To (gomega .ContainSubstring (agent .digest ))
158+ gomega .Expect (cmdOutput ).To (gomega .ContainSubstring (agent .digest ))
115159 }
116160 } else {
117- gomega .Expect (outputBuffer . String () ).To (gomega .BeEmpty ())
161+ gomega .Expect (cmdOutput ).To (gomega .BeEmpty ())
118162 }
119163
120164 },
0 commit comments