Răsfoiți Sursa

Merge pull request #154 from docker/fix_context_inspect_shellout

Fix shell out to docker-classic when invoking
Guillaume Tardif 5 ani în urmă
părinte
comite
e630ace677

+ 0 - 25
cli/cmd/context/ls_test.go

@@ -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))
-}

+ 8 - 23
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) {

+ 1 - 1
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()

+ 0 - 13
context/store/storedefault_test.go

@@ -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)
-}

+ 4 - 4
tests/e2e/e2e_test.go

@@ -35,6 +35,8 @@ import (
 	"testing"
 	"time"
 
+	"gotest.tools/golden"
+
 	. "github.com/onsi/gomega"
 	"github.com/stretchr/testify/suite"
 
@@ -57,12 +59,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")
 	})
 }
 
@@ -107,7 +107,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"))
 	})

+ 2 - 0
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

+ 1 - 1
cli/cmd/context/testdata/ls-out.golden → 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                                                                                                           

+ 10 - 3
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.