github.com/mentimeter/morty@v1.2.2-0.20221012065510-5596adecd154/mortems/load_fixtures_test.go (about) 1 package mortems_test 2 3 import ( 4 "fmt" 5 "io/ioutil" 6 "os" 7 "path/filepath" 8 9 . "github.com/mentimeter/morty/mortems" 10 ) 11 12 func LoadTreeEntryFixtures() (map[string]*RepoFiles, error) { 13 fixturesDir := "testdata" 14 15 fixtureDirectories, err := ioutil.ReadDir(fixturesDir) 16 if err != nil { 17 return nil, err 18 } 19 20 fixtures := make(map[string]*RepoFiles) 21 22 for _, dir := range fixtureDirectories { 23 var files []*File 24 25 err := os.Chdir(filepath.Join(fixturesDir, dir.Name())) 26 if err != nil { 27 return nil, fmt.Errorf("bad state! could not change fixture dir: %w", err) 28 } 29 30 err = filepath.Walk(".", func(path string, info os.FileInfo, err error) error { 31 if err != nil { 32 return err 33 } 34 if info.IsDir() { 35 return nil 36 } 37 38 f, err := os.Open(path) 39 if err != nil { 40 return err 41 } 42 defer f.Close() 43 44 content, err := ioutil.ReadAll(f) 45 if err != nil { 46 return err 47 } 48 49 file := &File{ 50 Path: path, 51 Content: string(content), 52 } 53 54 // fmt.Printf("file: %s, content: %s\n", path, string(content)) 55 56 files = append(files, file) 57 58 return nil 59 }) 60 if err != nil { 61 return nil, err 62 } 63 64 err = os.Chdir("../../") 65 if err != nil { 66 return nil, fmt.Errorf("bad state! could not change fixture dir: %w", err) 67 } 68 69 fixtures[dir.Name()] = &RepoFiles{files} 70 } 71 72 return fixtures, nil 73 }