mirror of https://github.com/docker/docs.git
Update filestore to first remove existing metadata before setting metadata.
This would let it remove corrupt or bad-state metadata. Signed-off-by: Ying Li <ying.li@docker.com>
This commit is contained in:
parent
332621607e
commit
9ca2200775
|
@ -75,6 +75,9 @@ func (f *FilesystemStore) SetMeta(name string, meta []byte) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// if something already exists, just delete it and re-write it
|
||||||
|
os.RemoveAll(path)
|
||||||
|
|
||||||
// Write the file to disk
|
// Write the file to disk
|
||||||
if err = ioutil.WriteFile(path, meta, 0600); err != nil {
|
if err = ioutil.WriteFile(path, meta, 0600); err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
"path"
|
"path"
|
||||||
|
"path/filepath"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
|
@ -57,6 +58,24 @@ func TestSetMetaWithNoParentDirectory(t *testing.T) {
|
||||||
assert.Equal(t, testContent, content, "Content written to file was corrupted.")
|
assert.Equal(t, testContent, content, "Content written to file was corrupted.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// if something already existed there, remove it first and write a new file
|
||||||
|
func TestSetMetaRemovesExistingFileBeforeWriting(t *testing.T) {
|
||||||
|
s, err := NewFilesystemStore(testDir, "metadata", "json", "targets")
|
||||||
|
assert.Nil(t, err, "Initializing FilesystemStore returned unexpected error: %v", err)
|
||||||
|
defer os.RemoveAll(testDir)
|
||||||
|
|
||||||
|
// make a directory where we want metadata to go
|
||||||
|
os.Mkdir(filepath.Join(testDir, "metadata", "root.json"), 0700)
|
||||||
|
|
||||||
|
testContent := []byte("test data")
|
||||||
|
err = s.SetMeta("root", testContent)
|
||||||
|
assert.NoError(t, err, "SetMeta returned unexpected error: %v", err)
|
||||||
|
|
||||||
|
content, err := ioutil.ReadFile(path.Join(testDir, "metadata", "root.json"))
|
||||||
|
assert.NoError(t, err, "Error reading file: %v", err)
|
||||||
|
assert.Equal(t, testContent, content, "Content written to file was corrupted.")
|
||||||
|
}
|
||||||
|
|
||||||
func TestGetMeta(t *testing.T) {
|
func TestGetMeta(t *testing.T) {
|
||||||
s, err := NewFilesystemStore(testDir, "metadata", "json", "targets")
|
s, err := NewFilesystemStore(testDir, "metadata", "json", "targets")
|
||||||
assert.Nil(t, err, "Initializing FilesystemStore returned unexpected error: %v", err)
|
assert.Nil(t, err, "Initializing FilesystemStore returned unexpected error: %v", err)
|
||||||
|
|
Loading…
Reference in New Issue