Use common errors in context store

Signed-off-by: Christopher Crone <christopher.crone@docker.com>
This commit is contained in:
Christopher Crone 2020-05-11 17:56:58 +02:00
parent b55f4b0547
commit 4788dd5b93
2 changed files with 11 additions and 4 deletions

View File

@ -30,13 +30,14 @@ package store
import ( import (
"context" "context"
"encoding/json" "encoding/json"
"fmt"
"io/ioutil" "io/ioutil"
"os" "os"
"path/filepath" "path/filepath"
"reflect" "reflect"
"github.com/docker/api/errdefs"
"github.com/opencontainers/go-digest" "github.com/opencontainers/go-digest"
"github.com/pkg/errors"
) )
const ( 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) meta := filepath.Join(s.root, contextsDir, metadataDir, contextdirOf(name), metaFile)
m, err := read(meta, getter) m, err := read(meta, getter)
if os.IsNotExist(err) { 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 { } else if err != nil {
return nil, err return nil, err
} }
@ -186,7 +187,7 @@ func (s *store) Create(name string, data TypedContext) error {
dir := contextdirOf(name) dir := contextdirOf(name)
metaDir := filepath.Join(s.root, contextsDir, metadataDir, dir) metaDir := filepath.Join(s.root, contextsDir, metadataDir, dir)
if _, err := os.Stat(metaDir); !os.IsNotExist(err) { 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) err := os.Mkdir(metaDir, 0755)

View File

@ -33,6 +33,7 @@ import (
"os" "os"
"testing" "testing"
"github.com/docker/api/errdefs"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"github.com/stretchr/testify/suite" "github.com/stretchr/testify/suite"
) )
@ -62,12 +63,17 @@ func (suite *StoreTestSuite) AfterTest(suiteName, testName string) {
func (suite *StoreTestSuite) TestCreate() { func (suite *StoreTestSuite) TestCreate() {
err := suite.store.Create("test", TypedContext{}) err := suite.store.Create("test", TypedContext{})
require.Nil(suite.T(), err) 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() { func (suite *StoreTestSuite) TestGetUnknown() {
meta, err := suite.store.Get("unknown", nil) meta, err := suite.store.Get("unknown", nil)
require.Nil(suite.T(), meta) 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() { func (suite *StoreTestSuite) TestGet() {