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  }