浏览代码

Use common errors in context store

Signed-off-by: Christopher Crone <[email protected]>
Christopher Crone 5 年之前
父节点
当前提交
4788dd5b93
共有 2 个文件被更改,包括 11 次插入4 次删除
  1. 4 3
      context/store/store.go
  2. 7 1
      context/store/store_test.go

+ 4 - 3
context/store/store.go

@@ -30,13 +30,14 @@ package store
 import (
 	"context"
 	"encoding/json"
-	"fmt"
 	"io/ioutil"
 	"os"
 	"path/filepath"
 	"reflect"
 
+	"github.com/docker/api/errdefs"
 	"github.com/opencontainers/go-digest"
+	"github.com/pkg/errors"
 )
 
 const (
@@ -118,7 +119,7 @@ func (s *store) Get(name string, getter func() interface{}) (*Metadata, error) {
 	meta := filepath.Join(s.root, contextsDir, metadataDir, contextdirOf(name), metaFile)
 	m, err := read(meta, getter)
 	if os.IsNotExist(err) {
-		return nil, fmt.Errorf("unknown context %q", name)
+		return nil, errors.Wrapf(errdefs.ErrNotFound, "context %q", name)
 	} else if err != nil {
 		return nil, err
 	}
@@ -186,7 +187,7 @@ func (s *store) Create(name string, data TypedContext) error {
 	dir := contextdirOf(name)
 	metaDir := filepath.Join(s.root, contextsDir, metadataDir, dir)
 	if _, err := os.Stat(metaDir); !os.IsNotExist(err) {
-		return fmt.Errorf("context %q already exists", name)
+		return errors.Wrapf(errdefs.ErrAlreadyExists, "context %q", name)
 	}
 
 	err := os.Mkdir(metaDir, 0755)

+ 7 - 1
context/store/store_test.go

@@ -33,6 +33,7 @@ import (
 	"os"
 	"testing"
 
+	"github.com/docker/api/errdefs"
 	"github.com/stretchr/testify/require"
 	"github.com/stretchr/testify/suite"
 )
@@ -62,12 +63,17 @@ func (suite *StoreTestSuite) AfterTest(suiteName, testName string) {
 func (suite *StoreTestSuite) TestCreate() {
 	err := suite.store.Create("test", TypedContext{})
 	require.Nil(suite.T(), err)
+
+	err = suite.store.Create("test", TypedContext{})
+	require.EqualError(suite.T(), err, `context "test": already exists`)
+	require.True(suite.T(), errdefs.IsAlreadyExistsError(err))
 }
 
 func (suite *StoreTestSuite) TestGetUnknown() {
 	meta, err := suite.store.Get("unknown", nil)
 	require.Nil(suite.T(), meta)
-	require.Error(suite.T(), err)
+	require.EqualError(suite.T(), err, `context "unknown": not found`)
+	require.True(suite.T(), errdefs.IsNotFoundError(err))
 }
 
 func (suite *StoreTestSuite) TestGet() {