github.com/kubeshop/testkube@v1.17.23/contrib/executor/ginkgo/pkg/runner/runner_integration_test.go (about)

     1  package runner
     2  
     3  import (
     4  	"context"
     5  	"os"
     6  	"testing"
     7  
     8  	"github.com/stretchr/testify/assert"
     9  
    10  	"github.com/kubeshop/testkube/pkg/api/v1/testkube"
    11  	"github.com/kubeshop/testkube/pkg/envs"
    12  	"github.com/kubeshop/testkube/pkg/executor/content"
    13  	"github.com/kubeshop/testkube/pkg/utils/test"
    14  )
    15  
    16  const repoURI = "https://github.com/kubeshop/testkube-executor-ginkgo.git"
    17  
    18  func TestRun_Integration(t *testing.T) {
    19  	test.IntegrationTest(t)
    20  	t.Parallel()
    21  
    22  	ctx := context.Background()
    23  
    24  	t.Run("GinkgoRunner should run tests from a repo that pass", func(t *testing.T) {
    25  		t.Parallel()
    26  
    27  		tempDir, err := os.MkdirTemp("", "*")
    28  		assert.NoErrorf(t, err, "could not create temp dir: %v", err)
    29  		defer os.RemoveAll(tempDir)
    30  
    31  		params := envs.Params{DataDir: tempDir}
    32  		runner, err := NewGinkgoRunner(ctx, params)
    33  		if err != nil {
    34  			t.Fatalf("could not create runner: %v", err)
    35  		}
    36  		vars := make(map[string]testkube.Variable)
    37  		variableOne := testkube.Variable{
    38  			Name:  "GinkgoTestPackage",
    39  			Value: "examples/e2e",
    40  			Type_: testkube.VariableTypeBasic,
    41  		}
    42  		vars["GinkgoTestPackage"] = variableOne
    43  
    44  		repo := &testkube.Repository{
    45  			Type_:  "git",
    46  			Uri:    repoURI,
    47  			Branch: "main",
    48  		}
    49  
    50  		_, err = content.NewFetcher(tempDir).FetchGit(repo)
    51  		assert.NoError(t, err)
    52  
    53  		result, err := runner.Run(
    54  			ctx,
    55  			testkube.Execution{
    56  				Content: &testkube.TestContent{
    57  					Type_:      string(testkube.TestContentTypeGitDir),
    58  					Repository: repo,
    59  				},
    60  				Variables: vars,
    61  				Command: []string{
    62  					"ginkgo",
    63  				},
    64  				Args: []string{
    65  					"-r",
    66  					"-p",
    67  					"--randomize-all",
    68  					"--randomize-suites",
    69  					"--keep-going",
    70  					"--trace",
    71  					"--junit-report",
    72  					"<reportFile>",
    73  					"<envVars>",
    74  					"<runPath>",
    75  				},
    76  			})
    77  
    78  		assert.Equal(t, testkube.ExecutionStatusPassed, result.Status)
    79  		assert.NoError(t, err)
    80  	})
    81  
    82  	t.Run("GinkgoRunner should run tests from a repo that fail", func(t *testing.T) {
    83  		t.Skipf("check again is the examples/others test correct")
    84  		t.Parallel()
    85  
    86  		tempDir, err := os.MkdirTemp("", "*")
    87  		assert.NoErrorf(t, err, "could not create temp dir: %v", err)
    88  		defer os.RemoveAll(tempDir)
    89  
    90  		params := envs.Params{DataDir: tempDir, GitUsername: "testuser", GitToken: "testtoken"}
    91  		runner, err := NewGinkgoRunner(ctx, params)
    92  		if err != nil {
    93  			t.Fail()
    94  		}
    95  		vars := make(map[string]testkube.Variable)
    96  		variableOne := testkube.Variable{
    97  			Name:  "GinkgoTestPackage",
    98  			Value: "examples/other",
    99  			Type_: testkube.VariableTypeBasic,
   100  		}
   101  		vars["GinkgoTestPackage"] = variableOne
   102  
   103  		repo := &testkube.Repository{
   104  			Type_:  "git",
   105  			Uri:    repoURI,
   106  			Branch: "main",
   107  		}
   108  
   109  		_, err = content.NewFetcher(tempDir).FetchGit(repo)
   110  		assert.NoError(t, err)
   111  
   112  		result, err := runner.Run(
   113  			ctx,
   114  			testkube.Execution{
   115  				Content: &testkube.TestContent{
   116  					Type_:      string(testkube.TestContentTypeGitDir),
   117  					Repository: repo,
   118  				},
   119  				Variables: vars,
   120  				Command: []string{
   121  					"ginkgo",
   122  				},
   123  				Args: []string{
   124  					"-r",
   125  					"-p",
   126  					"--randomize-all",
   127  					"--randomize-suites",
   128  					"--keep-going",
   129  					"--trace",
   130  					"--junit-report",
   131  					"<reportFile>",
   132  					"<envVars>",
   133  					"<runPath>",
   134  				},
   135  			})
   136  
   137  		assert.Equal(t, testkube.ExecutionStatusFailed, result.Status)
   138  		assert.NoError(t, err)
   139  	})
   140  }