github.com/AndrienkoAleksandr/go@v0.0.19/src/testing/fstest/mapfs_test.go (about)

     1  // Copyright 2020 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package fstest
     6  
     7  import (
     8  	"fmt"
     9  	"io/fs"
    10  	"strings"
    11  	"testing"
    12  )
    13  
    14  func TestMapFS(t *testing.T) {
    15  	m := MapFS{
    16  		"hello":             {Data: []byte("hello, world\n")},
    17  		"fortune/k/ken.txt": {Data: []byte("If a program is too slow, it must have a loop.\n")},
    18  	}
    19  	if err := TestFS(m, "hello", "fortune/k/ken.txt"); err != nil {
    20  		t.Fatal(err)
    21  	}
    22  }
    23  
    24  func TestMapFSChmodDot(t *testing.T) {
    25  	m := MapFS{
    26  		"a/b.txt": &MapFile{Mode: 0666},
    27  		".":       &MapFile{Mode: 0777 | fs.ModeDir},
    28  	}
    29  	buf := new(strings.Builder)
    30  	fs.WalkDir(m, ".", func(path string, d fs.DirEntry, err error) error {
    31  		fi, err := d.Info()
    32  		if err != nil {
    33  			return err
    34  		}
    35  		fmt.Fprintf(buf, "%s: %v\n", path, fi.Mode())
    36  		return nil
    37  	})
    38  	want := `
    39  .: drwxrwxrwx
    40  a: d---------
    41  a/b.txt: -rw-rw-rw-
    42  `[1:]
    43  	got := buf.String()
    44  	if want != got {
    45  		t.Errorf("MapFS modes want:\n%s\ngot:\n%s\n", want, got)
    46  	}
    47  }