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 }