mirror of
https://github.com/mickael-menu/zk
synced 2024-11-15 12:12:56 +00:00
82 lines
1.7 KiB
Go
82 lines
1.7 KiB
Go
package core
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
)
|
|
|
|
// fileStorageMock implements an in-memory FileStorage for testing purposes.
|
|
type fileStorageMock struct {
|
|
// Working directory used to calculate relative paths.
|
|
workingDir string
|
|
// File content indexed by their path in this file storage.
|
|
files map[string]string
|
|
// Existing directories
|
|
dirs []string
|
|
}
|
|
|
|
func newFileStorageMock(workingDir string, dirs []string) *fileStorageMock {
|
|
return &fileStorageMock{
|
|
workingDir: workingDir,
|
|
files: map[string]string{},
|
|
dirs: dirs,
|
|
}
|
|
}
|
|
|
|
func (fs *fileStorageMock) WorkingDir() string {
|
|
return fs.workingDir
|
|
}
|
|
|
|
func (fs *fileStorageMock) Abs(path string) (string, error) {
|
|
var err error
|
|
if !filepath.IsAbs(path) {
|
|
path = filepath.Join(fs.workingDir, path)
|
|
path, err = filepath.Abs(path)
|
|
if err != nil {
|
|
return path, err
|
|
}
|
|
}
|
|
|
|
return path, nil
|
|
}
|
|
|
|
func (fs *fileStorageMock) Rel(path string) (string, error) {
|
|
return filepath.Rel(fs.workingDir, path)
|
|
}
|
|
|
|
func (fs *fileStorageMock) Canonical(path string) string {
|
|
return path
|
|
}
|
|
|
|
func (fs *fileStorageMock) FileExists(path string) (bool, error) {
|
|
_, ok := fs.files[path]
|
|
return ok, nil
|
|
}
|
|
|
|
func (fs *fileStorageMock) DirExists(path string) (bool, error) {
|
|
for _, dir := range fs.dirs {
|
|
if dir == path {
|
|
return true, nil
|
|
}
|
|
}
|
|
return false, nil
|
|
}
|
|
|
|
func (fs *fileStorageMock) fileInfo(path string) (*os.FileInfo, error) {
|
|
panic("not implemented")
|
|
}
|
|
|
|
func (fs *fileStorageMock) IsDescendantOf(dir string, path string) (bool, error) {
|
|
panic("not implemented")
|
|
}
|
|
|
|
func (fs *fileStorageMock) Read(path string) ([]byte, error) {
|
|
content, _ := fs.files[path]
|
|
return []byte(content), nil
|
|
}
|
|
|
|
func (fs *fileStorageMock) Write(path string, content []byte) error {
|
|
fs.files[path] = string(content)
|
|
return nil
|
|
}
|