11package exec
22
33import (
4+ "github.com/go-exec/exec/ssh_mock"
45 "github.com/stretchr/testify/require"
56 "testing"
67)
78
8- func setupTestCase (t * testing.T ) (* Exec , func (t * testing.T )) {
9- return New (), func (t * testing.T ) {}
10- }
11-
129func TestNew (t * testing.T ) {
13- e , teardown := setupTestCase (t )
14- defer teardown (t )
10+ e := New ()
1511
1612 require .IsType (t , & Exec {}, e )
1713}
1814
1915func TestExec_NewArgument (t * testing.T ) {
20- e , teardown := setupTestCase (t )
21- defer teardown (t )
16+ e := New ()
2217
2318 arg := & Argument {
2419 Name : "name" ,
@@ -33,8 +28,7 @@ func TestExec_NewArgument(t *testing.T) {
3328}
3429
3530func TestExec_AddArgument (t * testing.T ) {
36- e , teardown := setupTestCase (t )
37- defer teardown (t )
31+ e := New ()
3832
3933 arg := & Argument {
4034 Name : "test" ,
@@ -72,22 +66,19 @@ func TestExec_GetArgument(t *testing.T) {
7266
7367 for _ , testCase := range testCases {
7468 t .Run (testCase .test , func (t * testing.T ) {
75- e , teardown := setupTestCase ( t )
69+ e := New ( )
7670
7771 if testCase .arg != nil {
7872 e .AddArgument (testCase .arg )
7973 }
8074
8175 require .Equal (t , e .GetArgument (testCase .name ), testCase .arg )
82-
83- teardown (t )
8476 })
8577 }
8678}
8779
8880func TestExec_NewOption (t * testing.T ) {
89- e , teardown := setupTestCase (t )
90- defer teardown (t )
81+ e := New ()
9182
9283 opt := & Option {
9384 Name : "name" ,
@@ -100,8 +91,7 @@ func TestExec_NewOption(t *testing.T) {
10091}
10192
10293func TestExec_AddOption (t * testing.T ) {
103- e , teardown := setupTestCase (t )
104- defer teardown (t )
94+ e := New ()
10595
10696 opt := & Option {
10797 Name : "name" ,
@@ -138,22 +128,19 @@ func TestExec_GetOption(t *testing.T) {
138128
139129 for _ , testCase := range testCases {
140130 t .Run (testCase .test , func (t * testing.T ) {
141- e , teardown := setupTestCase ( t )
131+ e := New ( )
142132
143133 if testCase .opt != nil {
144134 e .AddOption (testCase .opt )
145135 }
146136
147137 require .Equal (t , e .GetOption (testCase .name ), testCase .opt )
148-
149- teardown (t )
150138 })
151139 }
152140}
153141
154142func TestExec_Set (t * testing.T ) {
155- e , teardown := setupTestCase (t )
156- defer teardown (t )
143+ e := New ()
157144
158145 cfg := & config {
159146 Name : "cfg" ,
@@ -201,7 +188,7 @@ func TestExec_Get(t *testing.T) {
201188
202189 for _ , testCase := range testCases {
203190 t .Run (testCase .test , func (t * testing.T ) {
204- e , teardown := setupTestCase ( t )
191+ e := New ( )
205192
206193 if testCase .cfg != nil {
207194 e .Set (testCase .cfg .Name , testCase .cfg .value )
@@ -212,8 +199,6 @@ func TestExec_Get(t *testing.T) {
212199 }
213200
214201 require .Equal (t , e .Get (testCase .name ), testCase .cfg )
215-
216- teardown (t )
217202 })
218203 }
219204}
@@ -260,7 +245,7 @@ func TestExec_Has(t *testing.T) {
260245
261246 for _ , testCase := range testCases {
262247 t .Run (testCase .test , func (t * testing.T ) {
263- e , teardown := setupTestCase ( t )
248+ e := New ( )
264249
265250 if testCase .cfg != nil {
266251 e .Set (testCase .cfg .Name , testCase .cfg .value )
@@ -271,15 +256,12 @@ func TestExec_Has(t *testing.T) {
271256 }
272257
273258 require .Equal (t , e .Has (testCase .name ), testCase .expectedResult )
274-
275- teardown (t )
276259 })
277260 }
278261}
279262
280263func TestExec_Server (t * testing.T ) {
281- e , teardown := setupTestCase (t )
282- defer teardown (t )
264+ e := New ()
283265
284266 cfg := & server {
285267 Name : "server" ,
@@ -293,8 +275,7 @@ func TestExec_Server(t *testing.T) {
293275}
294276
295277func TestExec_Task (t * testing.T ) {
296- e , teardown := setupTestCase (t )
297- defer teardown (t )
278+ e := New ()
298279
299280 task := & task {
300281 Name : "task" ,
@@ -311,8 +292,7 @@ func TestExec_Task(t *testing.T) {
311292}
312293
313294func TestExec_TaskGroup (t * testing.T ) {
314- e , teardown := setupTestCase (t )
315- defer teardown (t )
295+ e := New ()
316296
317297 taskGroup := & taskGroup {
318298 Name : "taskGroup" ,
@@ -352,14 +332,12 @@ func TestExec_Before(t *testing.T) {
352332
353333 for _ , testCase := range testCases {
354334 t .Run (testCase .test , func (t * testing.T ) {
355- e , teardown := setupTestCase ( t )
335+ e := New ( )
356336
357337 e .Before (testCase .task .Name , testCase .before ... )
358338
359339 require .Contains (t , e .before , testCase .task .Name )
360340 require .Equal (t , len (e .before [testCase .task .Name ]), testCase .unique )
361-
362- defer teardown (t )
363341 })
364342 }
365343}
@@ -393,14 +371,54 @@ func TestExec_After(t *testing.T) {
393371
394372 for _ , testCase := range testCases {
395373 t .Run (testCase .test , func (t * testing.T ) {
396- e , teardown := setupTestCase ( t )
374+ e := New ( )
397375
398376 e .Before (testCase .task .Name , testCase .after ... )
399377
400378 require .Contains (t , e .before , testCase .task .Name )
401379 require .Equal (t , len (e .before [testCase .task .Name ]), testCase .unique )
380+ })
381+ }
382+ }
383+
384+ func TestExec_Remote (t * testing.T ) {
385+ type args struct {
386+ command string
387+ args []interface {}
388+ }
389+ tests := []struct {
390+ name string
391+ args args
392+ wantO Output
393+ }{
394+ {
395+ name : "test" ,
396+ args : args {
397+ command : `echo hello` ,
398+ },
399+ wantO : Output {
400+ text : "hello" ,
401+ },
402+ },
403+ }
404+ for _ , tt := range tests {
405+ t .Run (tt .name , func (t * testing.T ) {
406+ server := ssh_mock .NewServer (t )
407+ defer server .Shutdown ()
408+ conn := server .Dial (ssh_mock .ClientConfig ())
409+ defer conn .Close ()
410+
411+ e := New ()
412+
413+ s := e .Server ("mock" , "" )
414+
415+ s .sshClient .WithConnection (conn )
416+
417+ e .ServerContext = s
418+
419+ gotO := e .Remote (tt .args .command , tt .args .args ... )
402420
403- defer teardown ( t )
421+ require . Equal ( t , tt . wantO , gotO , "Remote() = %v, want %v" , gotO , tt . wantO )
404422 })
405423 }
406424}
0 commit comments