diff --git a/integration-cli/docker_cli_inspect_test.go b/integration-cli/docker_cli_inspect_test.go index 5d79ad1d85..2f2a918f0f 100644 --- a/integration-cli/docker_cli_inspect_test.go +++ b/integration-cli/docker_cli_inspect_test.go @@ -447,3 +447,12 @@ func (s *DockerSuite) TestInspectPlugin(c *check.C) { c.Assert(err, checker.IsNil) c.Assert(out, checker.Contains, pNameWithTag) } + +// Test case for 29185 +func (s *DockerSuite) TestInspectUnknownObject(c *check.C) { + // This test should work on both Windows and Linux + out, _, err := dockerCmdWithError("inspect", "foobar") + c.Assert(err, checker.NotNil) + c.Assert(out, checker.Contains, "Error: No such object: foobar") + c.Assert(err.Error(), checker.Contains, "Error: No such object: foobar") +} diff --git a/plugin/backend_unsupported.go b/plugin/backend_unsupported.go index 0e07cd679a..2d4b365faf 100644 --- a/plugin/backend_unsupported.go +++ b/plugin/backend_unsupported.go @@ -4,6 +4,7 @@ package plugin import ( "errors" + "fmt" "io" "net/http" @@ -24,8 +25,11 @@ func (pm *Manager) Enable(name string, config *types.PluginEnableConfig) error { } // Inspect examines a plugin config -func (pm *Manager) Inspect(name string) (tp types.Plugin, err error) { - return tp, errNotSupported +func (pm *Manager) Inspect(refOrID string) (tp types.Plugin, err error) { + // Even though plugin is not supported, we still want to return `not found` + // error so that `docker inspect` (without `--type` specified) returns correct + // `not found` message + return tp, fmt.Errorf("no such plugin name or ID associated with %q", refOrID) } // Privileges pulls a plugin config and computes the privileges required to install it.