package stack import ( "fmt" "sort" "strings" "testing" "github.com/docker/cli/internal/test/environment" "gotest.tools/v3/assert" "gotest.tools/v3/golden" "gotest.tools/v3/icmd" "gotest.tools/v3/skip" ) func TestDeployWithNamedResources(t *testing.T) { t.Run("Swarm", func(t *testing.T) { testDeployWithNamedResources(t, "swarm") }) t.Run("Kubernetes", func(t *testing.T) { // FIXME(chris-crone): currently does not work with compose for kubernetes. t.Skip("FIXME(chris-crone): currently does not work with compose for kubernetes.") skip.If(t, !environment.KubernetesEnabled()) testDeployWithNamedResources(t, "kubernetes") }) } func testDeployWithNamedResources(t *testing.T, orchestrator string) { stackname := fmt.Sprintf("test-stack-deploy-with-names-%s", orchestrator) composefile := golden.Path("stack-with-named-resources.yml") result := icmd.RunCommand("docker", "stack", "deploy", "-c", composefile, stackname, "--orchestrator", orchestrator) defer icmd.RunCommand("docker", "stack", "rm", "--orchestrator", orchestrator, stackname) result.Assert(t, icmd.Success) stdout := strings.Split(result.Stdout(), "\n") expected := strings.Split(string(golden.Get(t, fmt.Sprintf("stack-deploy-with-names-%s.golden", orchestrator))), "\n") sort.Strings(stdout) sort.Strings(expected) assert.DeepEqual(t, stdout, expected) }