@@ -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