Browse code

Remove plugin root from filesystem.

`docker plugin remove` didnt actually remove plugin from disk. Fix that.

Signed-off-by: Anusha Ragunathan <anusha@docker.com>

Anusha Ragunathan authored on 2016/07/28 05:38:13
Showing 2 changed files
... ...
@@ -4,6 +4,10 @@ import (
4 4
 	"github.com/docker/docker/pkg/integration/checker"
5 5
 	"github.com/go-check/check"
6 6
 
7
+	"io/ioutil"
8
+	"os"
9
+	"os/exec"
10
+	"path/filepath"
7 11
 	"strings"
8 12
 )
9 13
 
... ...
@@ -26,7 +30,16 @@ func (s *DockerSuite) TestPluginBasicOps(c *check.C) {
26 26
 
27 27
 	out, _, err = dockerCmdWithError("plugin", "inspect", pNameWithTag)
28 28
 	c.Assert(err, checker.IsNil)
29
-	c.Assert(out, checker.Contains, "A test plugin for Docker")
29
+	tmpFile, err := ioutil.TempFile("", "inspect.json")
30
+	c.Assert(err, checker.IsNil)
31
+	defer tmpFile.Close()
32
+
33
+	if _, err := tmpFile.Write([]byte(out)); err != nil {
34
+		c.Fatal(err)
35
+	}
36
+	// FIXME: When `docker plugin inspect` takes a format as input, jq can be replaced.
37
+	id, err := exec.Command("jq", ".Id", "--raw-output", tmpFile.Name()).CombinedOutput()
38
+	c.Assert(err, checker.IsNil)
30 39
 
31 40
 	out, _, err = dockerCmdWithError("plugin", "remove", pNameWithTag)
32 41
 	c.Assert(out, checker.Contains, "is active")
... ...
@@ -37,6 +50,11 @@ func (s *DockerSuite) TestPluginBasicOps(c *check.C) {
37 37
 	out, _, err = dockerCmdWithError("plugin", "remove", pNameWithTag)
38 38
 	c.Assert(err, checker.IsNil)
39 39
 	c.Assert(out, checker.Contains, pNameWithTag)
40
+
41
+	_, err = os.Stat(filepath.Join(dockerBasePath, "plugins", string(id)))
42
+	if !os.IsNotExist(err) {
43
+		c.Fatal(err)
44
+	}
40 45
 }
41 46
 
42 47
 func (s *DockerSuite) TestPluginInstallDisable(c *check.C) {
... ...
@@ -372,7 +372,7 @@ func (pm *Manager) remove(p *plugin) error {
372 372
 	delete(pm.plugins, p.PluginObj.ID)
373 373
 	delete(pm.nameToID, p.Name())
374 374
 	pm.save()
375
-	return nil
375
+	return os.RemoveAll(filepath.Join(pm.libRoot, p.PluginObj.ID))
376 376
 }
377 377
 
378 378
 func (pm *Manager) set(p *plugin, args []string) error {