From 49af59bfcae4698630ee62c276666c88593b4a5c Mon Sep 17 00:00:00 2001 From: Daniel Nephin Date: Fri, 10 Nov 2017 12:31:29 -0500 Subject: [PATCH] Validate that root and state paths are different. Using the same path for both results in confusing errors when runtime.newBundle() attempts to create the directories for the Task Signed-off-by: Daniel Nephin --- server/server.go | 9 ++++++--- server/server_test.go | 17 +++++++++++++++++ 2 files changed, 23 insertions(+), 3 deletions(-) create mode 100644 server/server_test.go diff --git a/server/server.go b/server/server.go index f9ca04483..a4c0ca227 100644 --- a/server/server.go +++ b/server/server.go @@ -39,12 +39,15 @@ import ( // New creates and initializes a new containerd server func New(ctx context.Context, config *Config) (*Server, error) { - if config.Root == "" { + switch { + case config.Root == "": return nil, errors.New("root must be specified") - } - if config.State == "" { + case config.State == "": return nil, errors.New("state must be specified") + case config.Root == config.State: + return nil, errors.New("root and state must be different paths") } + if err := os.MkdirAll(config.Root, 0711); err != nil { return nil, err } diff --git a/server/server_test.go b/server/server_test.go new file mode 100644 index 000000000..0aadd3e5c --- /dev/null +++ b/server/server_test.go @@ -0,0 +1,17 @@ +package server + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "golang.org/x/net/context" +) + +func TestNewErrorsWithSamePathForRootAndState(t *testing.T) { + path := "/tmp/path/for/testing" + _, err := New(context.Background(), &Config{ + Root: path, + State: path, + }) + assert.EqualError(t, err, "root and state must be different paths") +}