mirror of
https://github.com/jesseduffield/lazygit.git
synced 2024-12-04 10:34:55 +02:00
7b302d8c29
Afero is a package that lets you mock out a filesystem with an in-memory filesystem. It allows us to easily create the files required for a given test without worrying about a cleanup step or different tests tripping on eachother when run in parallel. Later on I'll standardise on using afero over the vanilla os package
112 lines
3.3 KiB
Go
112 lines
3.3 KiB
Go
// Copyright © 2014 Steve Francia <spf@spf13.com>.
|
|
// Copyright 2013 tsuru authors. All rights reserved.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
// Package afero provides types and methods for interacting with the filesystem,
|
|
// as an abstraction layer.
|
|
|
|
// Afero also provides a few implementations that are mostly interoperable. One that
|
|
// uses the operating system filesystem, one that uses memory to store files
|
|
// (cross platform) and an interface that should be implemented if you want to
|
|
// provide your own filesystem.
|
|
|
|
package afero
|
|
|
|
import (
|
|
"errors"
|
|
"io"
|
|
"os"
|
|
"time"
|
|
)
|
|
|
|
type Afero struct {
|
|
Fs
|
|
}
|
|
|
|
// File represents a file in the filesystem.
|
|
type File interface {
|
|
io.Closer
|
|
io.Reader
|
|
io.ReaderAt
|
|
io.Seeker
|
|
io.Writer
|
|
io.WriterAt
|
|
|
|
Name() string
|
|
Readdir(count int) ([]os.FileInfo, error)
|
|
Readdirnames(n int) ([]string, error)
|
|
Stat() (os.FileInfo, error)
|
|
Sync() error
|
|
Truncate(size int64) error
|
|
WriteString(s string) (ret int, err error)
|
|
}
|
|
|
|
// Fs is the filesystem interface.
|
|
//
|
|
// Any simulated or real filesystem should implement this interface.
|
|
type Fs interface {
|
|
// Create creates a file in the filesystem, returning the file and an
|
|
// error, if any happens.
|
|
Create(name string) (File, error)
|
|
|
|
// Mkdir creates a directory in the filesystem, return an error if any
|
|
// happens.
|
|
Mkdir(name string, perm os.FileMode) error
|
|
|
|
// MkdirAll creates a directory path and all parents that does not exist
|
|
// yet.
|
|
MkdirAll(path string, perm os.FileMode) error
|
|
|
|
// Open opens a file, returning it or an error, if any happens.
|
|
Open(name string) (File, error)
|
|
|
|
// OpenFile opens a file using the given flags and the given mode.
|
|
OpenFile(name string, flag int, perm os.FileMode) (File, error)
|
|
|
|
// Remove removes a file identified by name, returning an error, if any
|
|
// happens.
|
|
Remove(name string) error
|
|
|
|
// RemoveAll removes a directory path and any children it contains. It
|
|
// does not fail if the path does not exist (return nil).
|
|
RemoveAll(path string) error
|
|
|
|
// Rename renames a file.
|
|
Rename(oldname, newname string) error
|
|
|
|
// Stat returns a FileInfo describing the named file, or an error, if any
|
|
// happens.
|
|
Stat(name string) (os.FileInfo, error)
|
|
|
|
// The name of this FileSystem
|
|
Name() string
|
|
|
|
// Chmod changes the mode of the named file to mode.
|
|
Chmod(name string, mode os.FileMode) error
|
|
|
|
// Chown changes the uid and gid of the named file.
|
|
Chown(name string, uid, gid int) error
|
|
|
|
// Chtimes changes the access and modification times of the named file
|
|
Chtimes(name string, atime time.Time, mtime time.Time) error
|
|
}
|
|
|
|
var (
|
|
ErrFileClosed = errors.New("File is closed")
|
|
ErrOutOfRange = errors.New("out of range")
|
|
ErrTooLarge = errors.New("too large")
|
|
ErrFileNotFound = os.ErrNotExist
|
|
ErrFileExists = os.ErrExist
|
|
ErrDestinationExists = os.ErrExist
|
|
)
|