Пакет fstest
Обзор
Пакет fstest реализует поддержку тестирования реализаций и пользователей файловых систем.
Индекс
Файлы пакета
mapfs.go testfs.go
func TestFS 1.16
func TestFS(fsys fs.FS, expected ...string) error
TestFS тестирует реализацию файловой системы. Функция обходит всё дерево файлов в fsys, открывая и проверяя корректность поведения каждого файла. Символические ссылки не раскрываются, но их значения Lstat проверяются, если файловая система реализует fs.ReadLinkFS. Она также проверяет, что файловая система содержит как минимум ожидаемые файлы. В особом случае, если ожидаемые файлы не указаны, fsys должна быть пустой. В противном случае fsys должна содержать как минимум перечисленные файлы; она также может содержать и другие. Содержимое fsys не должно изменяться одновременно с выполнением TestFS.
Если TestFS обнаруживает какие-либо некорректные действия, она возвращает либо первую ошибку, либо список ошибок. Используйте errors.Is или errors.AsType для проверки.
Типичное использование внутри теста:
if err := fstest.TestFS(myFS, "file/that/should/be/present"); err != nil {
t.Fatal(err)
}
type MapFS 1.16
MapFS — это простая файловая система в оперативной памяти для использования в тестах, представленная в виде сопоставления (map) путей (аргументов для Open) с информацией о представляемых ими файлах, каталогах или символических ссылках.
Карта не обязательно должна включать родительские каталоги для файлов, содержащихся в карте; при необходимости они будут сгенерированы автоматически. Однако каталог всё равно можно включить, установив бит fs.ModeDir в MapFile.Mode; это может потребоваться для точного контроля над fs.FileInfo каталога или для создания пустого каталога.
Операции файловой системы читают данные непосредственно из карты, поэтому файловую систему можно изменять, редактируя карту по мере необходимости. Следствием этого является то, что операции файловой системы не должны выполняться одновременно с изменениями карты, так как это приведет к состоянию гонки. Другим следствием является то, что открытие или чтение каталога требует перебора всей карты, поэтому MapFS обычно следует использовать не более чем с несколькими сотнями записей или операций чтения каталогов.
type MapFS map[string]*MapFile
func (MapFS) Glob 1.16
func (fsys MapFS) Glob(pattern string) ([]string, error)
func (MapFS) Lstat 1.25
func (fsys MapFS) Lstat(name string) (fs.FileInfo, error)
Lstat возвращает FileInfo, описывающий указанный файл. Если файл является символической ссылкой, возвращаемый FileInfo описывает символическую ссылку. Lstat не пытается переходить по ссылке.
func (MapFS) Open 1.16
func (fsys MapFS) Open(name string) (fs.File, error)
Open открывает указанный файл после перехода по всем символическим ссылкам.
func (MapFS) ReadDir 1.16
func (fsys MapFS) ReadDir(name string) ([]fs.DirEntry, error)
func (MapFS) ReadFile 1.16
func (fsys MapFS) ReadFile(name string) ([]byte, error)
func (MapFS) ReadLink 1.25
func (fsys MapFS) ReadLink(name string) (string, error)
ReadLink возвращает целевой путь указанной символической ссылки.
func (MapFS) Stat 1.16
func (fsys MapFS) Stat(name string) (fs.FileInfo, error)
func (MapFS) Sub 1.16
func (fsys MapFS) Sub(dir string) (fs.FS, error)
type MapFile 1.16
MapFile описывает отдельный файл в MapFS.
type MapFile struct {
Data []byte // file content or symlink destination
Mode fs.FileMode // fs.FileInfo.Mode
ModTime time.Time // fs.FileInfo.ModTime
Sys any // fs.FileInfo.Sys
}
© Google, Inc.
Licensed under the Creative Commons Attribution License 3.0.
http://golang.org/pkg/testing/fstest/