diff --git a/container.go b/container.go index 60c9abbecb..4cc4cc4209 100644 --- a/container.go +++ b/container.go @@ -70,7 +70,7 @@ func loadContainer(containerPath string) (*Container, error) { if err != nil { return nil, err } - var container *Container + container := &Container{} if err := json.Unmarshal(data, container); err != nil { return nil, err } diff --git a/docker.go b/docker.go index a1f64c6a95..8a79e989a9 100644 --- a/docker.go +++ b/docker.go @@ -4,6 +4,7 @@ import ( "container/list" "fmt" "io/ioutil" + "log" "os" "path" ) @@ -82,7 +83,7 @@ func (docker *Docker) restore() error { for _, v := range dir { container, err := loadContainer(path.Join(docker.repository, v.Name())) if err != nil { - fmt.Errorf("Failed to load %v: %v", v.Name(), err) + log.Printf("Failed to load container %v: %v", v.Name(), err) continue } docker.containers.PushBack(container) diff --git a/docker_test.go b/docker_test.go index 9011a16eac..5196e081e3 100644 --- a/docker_test.go +++ b/docker_test.go @@ -173,3 +173,34 @@ func TestGet(t *testing.T) { } } + +func TestRestore(t *testing.T) { + root, err := ioutil.TempDir("", "docker-test") + if err != nil { + t.Fatal(err) + } + docker, err := NewFromDirectory(root) + if err != nil { + t.Fatal(err) + } + container, err := docker.Create( + "test", + "ls", + []string{"-al"}, + []string{"/var/lib/docker/images/ubuntu"}, + &Config{}, + ) + if len(docker.List()) != 1 { + t.Errorf("Expected 1 container, %v found", len(docker.List())) + } + + defer docker.Destroy(container) + + docker2, err := NewFromDirectory(root) + if err != nil { + t.Fatal(err) + } + if len(docker2.List()) != 1 { + t.Errorf("Expected 1 container, %v found", len(docker2.List())) + } +}