Documentation
¶
Overview ¶
Package fstest implements support for testing implementations and users of file systems.
Index ¶
- func TestFS(fsys fs.FS, expected ...string) error
- type MapFS
- func (fsys MapFS) Glob(pattern string) ([]string, error)
- func (fsys MapFS) Open(name string) (fs.File, error)
- func (fsys MapFS) ReadDir(name string) ([]fs.DirEntry, error)
- func (fsys MapFS) ReadFile(name string) ([]byte, error)
- func (fsys MapFS) Stat(name string) (fs.FileInfo, error)
- func (fsys MapFS) Sub(dir string) (fs.FS, error)
- type MapFile
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func TestFS ¶
TestFSは、ファイルシステムの実装をテストします。 fsys内の全てのファイルツリーを走査し、 各ファイルが正しく動作するかを開いて確認します。 また、ファイルシステムが少なくとも期待されるファイルを含んでいることも確認します。 特別なケースとして、期待されるファイルが一つもリストされていない場合、fsysは空でなければなりません。 それ以外の場合、fsysは少なくともリストされたファイルを含んでいなければなりません。他のファイルも含むことができます。 fsysの内容は、TestFSと同時に変更してはなりません。
TestFSが何かしらの不適切な動作を見つけた場合、それら全てを報告するエラーを返します。 エラーテキストは複数行にわたり、検出された不適切な動作ごとに1行ずつ存在します。
テスト内での典型的な使用法は以下の通りです:
if err := fstest.TestFS(myFS, "file/that/should/be/present"); err != nil { t.Fatal(err) }
Types ¶
type MapFS ¶
MapFSは、テストで使用するためのシンプルなメモリ内ファイルシステムであり、 パス名(Openへの引数)からそれらが表すファイルやディレクトリの情報へのマップとして表されます。
マップには、マップに含まれるファイルの親ディレクトリを含める必要はありません。 必要に応じてそれらは合成されます。 しかし、MapFile.ModeのModeDirビットを設定することで、ディレクトリをまだ含めることができます。 これは、ディレクトリのFileInfoに対する詳細な制御が必要であるか、 空のディレクトリを作成するために必要かもしれません。
ファイルシステムの操作は、マップから直接読み取るため、 必要に応じてマップを編集することでファイルシステムを変更できます。 その意味するところは、ファイルシステムの操作はマップの変更と同時に実行してはならず、 それはレース条件を引き起こす可能性があるということです。 別の意味するところは、ディレクトリのオープンや読み取りには、 マップ全体を反復処理する必要があるため、MapFSは通常、 数百エントリ以上またはディレクトリの読み取りを使用しないで使用する必要があります。