@@ -17,8 +17,8 @@ import (
1717 "github.com/andreyvit/diff"
1818 "github.com/antonmedv/expr"
1919 "github.com/antonmedv/expr/vm"
20- "github.com/linuxsuren/api-testing/pkg/exec"
2120 "github.com/linuxsuren/api-testing/pkg/testing"
21+ fakeruntime "github.com/linuxsuren/go-fake-runtime"
2222 unstructured "github.com/linuxsuren/unstructured/pkg"
2323 "github.com/xeipuuv/gojsonschema"
2424)
@@ -78,6 +78,7 @@ type TestCaseRunner interface {
7878 WithOutputWriter (io.Writer ) TestCaseRunner
7979 WithWriteLevel (level string ) TestCaseRunner
8080 WithTestReporter (TestReporter ) TestCaseRunner
81+ WithExecer (fakeruntime.Execer ) TestCaseRunner
8182}
8283
8384// ReportRecord represents the raw data of a HTTP request
@@ -157,14 +158,16 @@ type simpleTestCaseRunner struct {
157158 testReporter TestReporter
158159 writer io.Writer
159160 log LevelWriter
161+ execer fakeruntime.Execer
160162}
161163
162164// NewSimpleTestCaseRunner creates the instance of the simple test case runner
163165func NewSimpleTestCaseRunner () TestCaseRunner {
164166 runner := & simpleTestCaseRunner {}
165167 return runner .WithOutputWriter (io .Discard ).
166168 WithWriteLevel ("info" ).
167- WithTestReporter (NewDiscardTestReporter ())
169+ WithTestReporter (NewDiscardTestReporter ()).
170+ WithExecer (fakeruntime.DefaultExecer {})
168171}
169172
170173// RunTestCase is the main entry point of a test case
@@ -179,16 +182,14 @@ func (r *simpleTestCaseRunner) RunTestCase(testcase *testing.TestCase, dataConte
179182 r .testReporter .PutRecord (rr )
180183 }(record )
181184
182- if err = doPrepare (testcase ); err != nil {
185+ if err = r . doPrepare (testcase ); err != nil {
183186 err = fmt .Errorf ("failed to prepare, error: %v" , err )
184187 return
185188 }
186189
187190 defer func () {
188191 if testcase .Clean .CleanPrepare {
189- if err = doCleanPrepare (testcase ); err != nil {
190- return
191- }
192+ err = r .doCleanPrepare (testcase )
192193 }
193194 }()
194195
@@ -363,29 +364,29 @@ func (r *simpleTestCaseRunner) WithTestReporter(reporter TestReporter) TestCaseR
363364 return r
364365}
365366
366- // Deprecated
367- // RunTestCase runs the test case.
368- func RunTestCase ( testcase * testing. TestCase , dataContext interface {}, ctx context. Context ) ( output interface {}, err error ) {
369- return NewSimpleTestCaseRunner (). WithOutputWriter ( os . Stdout ). RunTestCase ( testcase , dataContext , ctx )
367+ // WithExecer sets the execer
368+ func ( r * simpleTestCaseRunner ) WithExecer ( execer fakeruntime. Execer ) TestCaseRunner {
369+ r . execer = execer
370+ return r
370371}
371372
372- func doPrepare (testcase * testing.TestCase ) (err error ) {
373+ func ( r * simpleTestCaseRunner ) doPrepare (testcase * testing.TestCase ) (err error ) {
373374 for i := range testcase .Prepare .Kubernetes {
374375 item := testcase .Prepare .Kubernetes [i ]
375376
376- if err = exec .RunCommand ("kubectl" , "apply" , "-f" , item ); err != nil {
377+ if err = r . execer .RunCommand ("kubectl" , "apply" , "-f" , item ); err != nil {
377378 return
378379 }
379380 }
380381 return
381382}
382383
383- func doCleanPrepare (testcase * testing.TestCase ) (err error ) {
384+ func ( r * simpleTestCaseRunner ) doCleanPrepare (testcase * testing.TestCase ) (err error ) {
384385 count := len (testcase .Prepare .Kubernetes )
385386 for i := count - 1 ; i >= 0 ; i -- {
386387 item := testcase .Prepare .Kubernetes [i ]
387388
388- if err = exec .RunCommand ("kubectl" , "delete" , "-f" , item ); err != nil {
389+ if err = r . execer .RunCommand ("kubectl" , "delete" , "-f" , item ); err != nil {
389390 return
390391 }
391392 }
0 commit comments