| // Copyright 2021 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package fs_test |
| |
| import ( |
| "fmt" |
| "io/fs" |
| "log" |
| "os" |
| "testing/fstest" |
| ) |
| |
| func ExampleGlob() { |
| fsys := fstest.MapFS{ |
| "file.txt": {}, |
| "file.go": {}, |
| "dir/file.txt": {}, |
| "dir/file.go": {}, |
| "dir/subdir/x.go": {}, |
| } |
| |
| patterns := []string{ |
| "*.txt", |
| "*.go", |
| "dir/*.go", |
| "dir/*/x.go", |
| } |
| |
| for _, pattern := range patterns { |
| matches, err := fs.Glob(fsys, pattern) |
| if err != nil { |
| log.Fatal(err) |
| } |
| fmt.Printf("%q matches: %v\n", pattern, matches) |
| } |
| |
| // Output: |
| // "*.txt" matches: [file.txt] |
| // "*.go" matches: [file.go] |
| // "dir/*.go" matches: [dir/file.go] |
| // "dir/*/x.go" matches: [dir/subdir/x.go] |
| } |
| |
| func ExampleReadFile() { |
| fsys := fstest.MapFS{ |
| "hello.txt": { |
| Data: []byte("Hello, World!\n"), |
| }, |
| } |
| |
| data, err := fs.ReadFile(fsys, "hello.txt") |
| if err != nil { |
| log.Fatal(err) |
| } |
| |
| fmt.Print(string(data)) |
| |
| // Output: |
| // Hello, World! |
| } |
| |
| func ExampleValidPath() { |
| paths := []string{ |
| ".", |
| "x", |
| "x/y/z", |
| "", |
| "..", |
| "/x", |
| "x/", |
| "x//y", |
| "x/./y", |
| "x/../y", |
| } |
| |
| for _, path := range paths { |
| fmt.Printf("ValidPath(%q) = %t\n", path, fs.ValidPath(path)) |
| } |
| |
| // Output: |
| // ValidPath(".") = true |
| // ValidPath("x") = true |
| // ValidPath("x/y/z") = true |
| // ValidPath("") = false |
| // ValidPath("..") = false |
| // ValidPath("/x") = false |
| // ValidPath("x/") = false |
| // ValidPath("x//y") = false |
| // ValidPath("x/./y") = false |
| // ValidPath("x/../y") = false |
| } |
| |
| func ExampleWalkDir() { |
| root := "/usr/local/go/bin" |
| fileSystem := os.DirFS(root) |
| |
| fs.WalkDir(fileSystem, ".", func(path string, d fs.DirEntry, err error) error { |
| if err != nil { |
| log.Fatal(err) |
| } |
| fmt.Println(path) |
| return nil |
| }) |
| } |