github.com/secure-build/gitlab-runner@v12.5.0+incompatible/shells/shellstest/utils.go (about)

     1  package shellstest
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/require"
     7  
     8  	"gitlab.com/gitlab-org/gitlab-runner/helpers"
     9  	"gitlab.com/gitlab-org/gitlab-runner/shells"
    10  )
    11  
    12  type shellWriterFactory func() shells.ShellWriter
    13  
    14  func OnEachShell(t *testing.T, f func(t *testing.T, shell string)) {
    15  	shells := []string{"bash", "cmd", "powershell"}
    16  
    17  	for _, shell := range shells {
    18  		t.Run(shell, func(t *testing.T) {
    19  			if helpers.SkipIntegrationTests(t, shell) {
    20  				t.Skip()
    21  			}
    22  
    23  			f(t, shell)
    24  		})
    25  
    26  	}
    27  }
    28  
    29  func OnEachShellWithWriter(t *testing.T, f func(t *testing.T, shell string, writer shells.ShellWriter)) {
    30  	writers := map[string]shellWriterFactory{
    31  		"bash": func() shells.ShellWriter {
    32  			return &shells.BashWriter{}
    33  		},
    34  		"cmd": func() shells.ShellWriter {
    35  			return &shells.CmdWriter{}
    36  		},
    37  		"powershell": func() shells.ShellWriter {
    38  			return &shells.PsWriter{}
    39  		},
    40  	}
    41  
    42  	OnEachShell(t, func(t *testing.T, shell string) {
    43  		writer, ok := writers[shell]
    44  		require.True(t, ok, "Missing factory for %s", shell)
    45  
    46  		f(t, shell, writer())
    47  	})
    48  }