package main

import (
	"os/exec"
	"testing"
)

// Regression test for #3364
func TestDockerStartWithPortCollision(t *testing.T) {
	runCmd := exec.Command(dockerBinary, "run", "--name", "fail", "-p", "25:25", "busybox", "true")
	out, stderr, exitCode, err := runCommandWithStdoutStderr(runCmd)
	if err != nil && exitCode != 0 {
		t.Fatal(out, stderr, err)
	}

	runCmd = exec.Command(dockerBinary, "run", "--name", "conflict", "-dti", "-p", "25:25", "busybox", "sh")
	out, stderr, exitCode, err = runCommandWithStdoutStderr(runCmd)
	if err != nil && exitCode != 0 {
		t.Fatal(out, stderr, err)
	}

	startCmd := exec.Command(dockerBinary, "start", "-a", "fail")
	out, stderr, exitCode, err = runCommandWithStdoutStderr(startCmd)
	if err != nil && exitCode != 1 {
		t.Fatal(out, err)
	}

	killCmd := exec.Command(dockerBinary, "kill", "conflict")
	runCommand(killCmd)

	deleteAllContainers()

	logDone("start - -a=true error on port use")
}