mirror of https://github.com/docker/compose.git
Fix windows E2E suite setup to work properly on windows
This commit is contained in:
parent
c73998bd2d
commit
bed0b81343
|
@ -106,7 +106,7 @@ func (s *E2eSuite) TestSetupError() {
|
|||
It("should display an error if cannot shell out to docker-classic", func() {
|
||||
err := os.Setenv("PATH", s.BinDir)
|
||||
Expect(err).To(BeNil())
|
||||
err = os.Remove(filepath.Join(s.BinDir, "docker-classic"))
|
||||
err = os.Remove(filepath.Join(s.BinDir, DockerClassicExecutable()))
|
||||
Expect(err).To(BeNil())
|
||||
output, err := s.NewDockerCommand("ps").Exec()
|
||||
Expect(output).To(ContainSubstring("docker-classic"))
|
||||
|
|
|
@ -62,7 +62,7 @@ func (s *Suite) SetupSuite() {
|
|||
}
|
||||
s.T().Fail()
|
||||
})
|
||||
s.linkClassicDocker()
|
||||
s.copyExecutablesInBinDir()
|
||||
}
|
||||
|
||||
// TearDownSuite is run after all tests
|
||||
|
@ -79,22 +79,35 @@ func dirContents(dir string) []string {
|
|||
return res
|
||||
}
|
||||
|
||||
func (s *Suite) linkClassicDocker() {
|
||||
p, err := exec.LookPath("docker-classic")
|
||||
func (s *Suite) copyExecutablesInBinDir() {
|
||||
p, err := exec.LookPath(DockerClassicExecutable())
|
||||
if err != nil {
|
||||
p, err = exec.LookPath("docker")
|
||||
p, err = exec.LookPath(dockerExecutable())
|
||||
}
|
||||
gomega.Expect(err).To(gomega.BeNil())
|
||||
err = os.Symlink(p, filepath.Join(s.BinDir, "docker-classic"))
|
||||
err = copyFiles(p, filepath.Join(s.BinDir, DockerClassicExecutable()))
|
||||
gomega.Expect(err).To(gomega.BeNil())
|
||||
dockerPath, err := filepath.Abs("../../bin/docker")
|
||||
dockerPath, err := filepath.Abs("../../bin/" + dockerExecutable())
|
||||
gomega.Expect(err).To(gomega.BeNil())
|
||||
err = os.Symlink(dockerPath, filepath.Join(s.BinDir, "docker"))
|
||||
err = copyFiles(dockerPath, filepath.Join(s.BinDir, dockerExecutable()))
|
||||
gomega.Expect(err).To(gomega.BeNil())
|
||||
err = os.Setenv("PATH", fmt.Sprintf("%s:%s", s.BinDir, os.Getenv("PATH")))
|
||||
gomega.Expect(err).To(gomega.BeNil())
|
||||
}
|
||||
|
||||
func copyFiles(sourceFile string, destinationFile string) error {
|
||||
input, err := ioutil.ReadFile(sourceFile)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = ioutil.WriteFile(destinationFile, input, 0644)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// BeforeTest is run before each test
|
||||
func (s *Suite) BeforeTest(suite, test string) {
|
||||
d, _ := ioutil.TempDir("", "")
|
||||
|
@ -109,12 +122,16 @@ func (s *Suite) AfterTest(suite, test string) {
|
|||
|
||||
// ListProcessesCommand creates a command to list processes, "tasklist" on windows, "ps" otherwise.
|
||||
func (s *Suite) ListProcessesCommand() *CmdContext {
|
||||
if runtime.GOOS == "windows" {
|
||||
if isWindows() {
|
||||
return s.NewCommand("tasklist")
|
||||
}
|
||||
return s.NewCommand("ps")
|
||||
}
|
||||
|
||||
func isWindows() bool {
|
||||
return runtime.GOOS == "windows"
|
||||
}
|
||||
|
||||
// NewCommand creates a command context.
|
||||
func (s *Suite) NewCommand(command string, args ...string) *CmdContext {
|
||||
return &CmdContext{
|
||||
|
@ -125,12 +142,19 @@ func (s *Suite) NewCommand(command string, args ...string) *CmdContext {
|
|||
}
|
||||
|
||||
func dockerExecutable() string {
|
||||
if runtime.GOOS == "windows" {
|
||||
if isWindows() {
|
||||
return "docker.exe"
|
||||
}
|
||||
return "docker"
|
||||
}
|
||||
|
||||
func DockerClassicExecutable() string {
|
||||
if isWindows() {
|
||||
return "docker-classic.exe"
|
||||
}
|
||||
return "docker-classic"
|
||||
}
|
||||
|
||||
// NewDockerCommand creates a docker builder.
|
||||
func (s *Suite) NewDockerCommand(args ...string) *CmdContext {
|
||||
return s.NewCommand(dockerExecutable(), args...)
|
||||
|
|
Loading…
Reference in New Issue