forked from TrueCloudLab/restic
da419be43c
New and its helpers used to create the cache directories several times over. They now only do so once. The added test ensures that the cache is produced in a consistent state when parts are deleted.
46 lines
965 B
Go
46 lines
965 B
Go
package cache
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/restic/restic/internal/restic"
|
|
rtest "github.com/restic/restic/internal/test"
|
|
)
|
|
|
|
func TestNew(t *testing.T) {
|
|
parent := rtest.TempDir(t)
|
|
basedir := filepath.Join(parent, "cache")
|
|
id := restic.NewRandomID().String()
|
|
tagFile := filepath.Join(basedir, "CACHEDIR.TAG")
|
|
versionFile := filepath.Join(basedir, id, "version")
|
|
|
|
const (
|
|
stepCreate = iota
|
|
stepComplete
|
|
stepRmTag
|
|
stepRmVersion
|
|
stepEnd
|
|
)
|
|
|
|
for step := stepCreate; step < stepEnd; step++ {
|
|
switch step {
|
|
case stepRmTag:
|
|
rtest.OK(t, os.Remove(tagFile))
|
|
case stepRmVersion:
|
|
rtest.OK(t, os.Remove(versionFile))
|
|
}
|
|
|
|
c, err := New(id, basedir)
|
|
rtest.OK(t, err)
|
|
rtest.Equals(t, basedir, c.Base)
|
|
rtest.Equals(t, step == stepCreate, c.Created)
|
|
|
|
for _, name := range []string{tagFile, versionFile} {
|
|
info, err := os.Lstat(name)
|
|
rtest.OK(t, err)
|
|
rtest.Assert(t, info.Mode().IsRegular(), "")
|
|
}
|
|
}
|
|
}
|