From d2648da2d95c77ce1bd6511621a4edfb26c6d0ce Mon Sep 17 00:00:00 2001 From: Guillaume Tardif Date: Tue, 26 May 2020 23:34:38 +0200 Subject: [PATCH] Fix shell out to docker-classic when invoking --- cli/cmd/context/ls_test.go | 25 --------------- context/store/store_test.go | 31 +++++-------------- context/store/storedefault.go | 2 +- context/store/storedefault_test.go | 13 -------- tests/e2e/e2e_test.go | 8 ++--- tests/e2e/testdata/ls-out-default.golden | 2 ++ .../e2e/testdata/ls-out-test-example.golden | 2 +- tests/framework/suite.go | 13 ++++++-- 8 files changed, 26 insertions(+), 70 deletions(-) delete mode 100644 cli/cmd/context/ls_test.go delete mode 100644 context/store/storedefault_test.go create mode 100644 tests/e2e/testdata/ls-out-default.golden rename cli/cmd/context/testdata/ls-out.golden => tests/e2e/testdata/ls-out-test-example.golden (84%) diff --git a/cli/cmd/context/ls_test.go b/cli/cmd/context/ls_test.go deleted file mode 100644 index 861e9156c..000000000 --- a/cli/cmd/context/ls_test.go +++ /dev/null @@ -1,25 +0,0 @@ -package context - -import ( - "testing" - - "github.com/stretchr/testify/require" - "github.com/stretchr/testify/suite" - "gotest.tools/v3/golden" - - "github.com/docker/api/tests/framework" -) - -type ContextSuite struct { - framework.CliSuite -} - -func (sut *ContextSuite) TestLs() { - err := runList(sut.Context()) - require.Nil(sut.T(), err) - golden.Assert(sut.T(), sut.GetStdOut(), "ls-out.golden") -} - -func TestPs(t *testing.T) { - suite.Run(t, new(ContextSuite)) -} diff --git a/context/store/store_test.go b/context/store/store_test.go index 90b6d8060..aa9164da2 100644 --- a/context/store/store_test.go +++ b/context/store/store_test.go @@ -107,22 +107,6 @@ func (suite *StoreTestSuite) TestGet() { require.Equal(suite.T(), "type", meta.Type) } -func (suite *StoreTestSuite) TestList() { - err := suite.store.Create("test1", "type", "description", ContextMetadata{}) - require.Nil(suite.T(), err) - - err = suite.store.Create("test2", "type", "description", ContextMetadata{}) - require.Nil(suite.T(), err) - - contexts, err := suite.store.List() - require.Nil(suite.T(), err) - - require.Equal(suite.T(), len(contexts), 3) - require.Equal(suite.T(), "test1", contexts[0].Name) - require.Equal(suite.T(), "test2", contexts[1].Name) - require.Equal(suite.T(), "default", contexts[2].Name) -} - func (suite *StoreTestSuite) TestRemoveNotFound() { err := suite.store.Remove("notfound") require.EqualError(suite.T(), err, `context "notfound": not found`) @@ -132,17 +116,18 @@ func (suite *StoreTestSuite) TestRemoveNotFound() { func (suite *StoreTestSuite) TestRemove() { err := suite.store.Create("testremove", "type", "description", ContextMetadata{}) require.Nil(suite.T(), err) - contexts, err := suite.store.List() + + meta, err := suite.store.Get("testremove") require.Nil(suite.T(), err) - require.Equal(suite.T(), len(contexts), 2) + require.NotNil(suite.T(), meta) err = suite.store.Remove("testremove") require.Nil(suite.T(), err) - contexts, err = suite.store.List() - require.Nil(suite.T(), err) - // The default context is always here, that's why we - // have len(contexts) == 1 - require.Equal(suite.T(), len(contexts), 1) + + meta, err = suite.store.Get("testremove") + require.EqualError(suite.T(), err, `context "testremove": not found`) + require.Nil(suite.T(), meta) + } func TestExampleTestSuite(t *testing.T) { diff --git a/context/store/storedefault.go b/context/store/storedefault.go index 5555fdb00..82d151878 100644 --- a/context/store/storedefault.go +++ b/context/store/storedefault.go @@ -32,7 +32,7 @@ type endpoint struct { } func dockerDefaultContext() (*Metadata, error) { - cmd := exec.Command("docker", "context", "inspect", "default") + cmd := exec.Command("docker-classic", "context", "inspect", "default") var stdout bytes.Buffer cmd.Stdout = &stdout err := cmd.Run() diff --git a/context/store/storedefault_test.go b/context/store/storedefault_test.go deleted file mode 100644 index 7d25e874f..000000000 --- a/context/store/storedefault_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package store - -import ( - "testing" - - "github.com/stretchr/testify/assert" -) - -func TestDefaultContext(t *testing.T) { - s, err := dockerDefaultContext() - assert.Nil(t, err) - assert.Equal(t, "default", s.Name) -} diff --git a/tests/e2e/e2e_test.go b/tests/e2e/e2e_test.go index dd43d1376..46e58546f 100644 --- a/tests/e2e/e2e_test.go +++ b/tests/e2e/e2e_test.go @@ -34,6 +34,8 @@ import ( "testing" "time" + "gotest.tools/golden" + . "github.com/onsi/gomega" "github.com/stretchr/testify/suite" @@ -56,12 +58,10 @@ func (s *E2eSuite) TestContextHelp() { func (s *E2eSuite) TestContextDefault() { It("should be initialized with default context", func() { - s.NewDockerCommand("context", "use", "default").ExecOrDie() output := s.NewDockerCommand("context", "show").ExecOrDie() Expect(output).To(ContainSubstring("default")) output = s.NewCommand("docker", "context", "ls").ExecOrDie() - Expect(output).To(Not(ContainSubstring("test-example"))) - Expect(output).To(ContainSubstring("default *")) + golden.Assert(s.T(), output, "ls-out-default.golden") }) } @@ -93,7 +93,7 @@ func (s *E2eSuite) TestMockBackend() { currentContext := s.NewDockerCommand("context", "use", "test-example").ExecOrDie() Expect(currentContext).To(ContainSubstring("test-example")) output := s.NewDockerCommand("context", "ls").ExecOrDie() - Expect(output).To(ContainSubstring("test-example *")) + golden.Assert(s.T(), output, "ls-out-test-example.golden") output = s.NewDockerCommand("context", "show").ExecOrDie() Expect(output).To(ContainSubstring("test-example")) }) diff --git a/tests/e2e/testdata/ls-out-default.golden b/tests/e2e/testdata/ls-out-default.golden new file mode 100644 index 000000000..87d061220 --- /dev/null +++ b/tests/e2e/testdata/ls-out-default.golden @@ -0,0 +1,2 @@ +NAME TYPE DESCRIPTION DOCKER ENPOINT KUBERNETES ENDPOINT ORCHESTRATOR +default * docker Current DOCKER_HOST based configuration unix:///var/run/docker.sock swarm diff --git a/cli/cmd/context/testdata/ls-out.golden b/tests/e2e/testdata/ls-out-test-example.golden similarity index 84% rename from cli/cmd/context/testdata/ls-out.golden rename to tests/e2e/testdata/ls-out-test-example.golden index c4b2668e8..af1a59523 100644 --- a/cli/cmd/context/testdata/ls-out.golden +++ b/tests/e2e/testdata/ls-out-test-example.golden @@ -1,3 +1,3 @@ NAME TYPE DESCRIPTION DOCKER ENPOINT KUBERNETES ENDPOINT ORCHESTRATOR default docker Current DOCKER_HOST based configuration unix:///var/run/docker.sock swarm -example * example +test-example * example diff --git a/tests/framework/suite.go b/tests/framework/suite.go index c962b9794..076e9a44a 100644 --- a/tests/framework/suite.go +++ b/tests/framework/suite.go @@ -80,10 +80,17 @@ func dirContents(dir string) []string { } func (s *Suite) linkClassicDocker() { - p, err := exec.LookPath("docker") + p, err := exec.LookPath("docker-classic") + if err != nil { + p, err = exec.LookPath("docker") + } gomega.Expect(err).To(gomega.BeNil()) err = os.Symlink(p, filepath.Join(s.BinDir, "docker-classic")) gomega.Expect(err).To(gomega.BeNil()) + dockerPath, err := filepath.Abs("../../bin/docker") + gomega.Expect(err).To(gomega.BeNil()) + err = os.Symlink(dockerPath, filepath.Join(s.BinDir, "docker")) + 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()) } @@ -111,9 +118,9 @@ func (s *Suite) NewCommand(command string, args ...string) *CmdContext { func dockerExecutable() string { if runtime.GOOS == "windows" { - return "../../bin/docker.exe" + return "docker.exe" } - return "../../bin/docker" + return "docker" } // NewDockerCommand creates a docker builder.