github.com/PaulioRandall/go-cookies@v0.1.1/cookies/files_test.go (about)

     1  package cookies
     2  
     3  import (
     4  	"io/ioutil"
     5  	"log"
     6  	"os"
     7  	"path/filepath"
     8  	"testing"
     9  
    10  	"github.com/stretchr/testify/require"
    11  )
    12  
    13  func startFileTest() (home, temp string) {
    14  	var e error
    15  	if home, e = os.Getwd(); e != nil {
    16  		panic(e)
    17  	}
    18  	if temp, e = filepath.Abs("."); e != nil {
    19  		panic(e)
    20  	}
    21  	if temp, e = ioutil.TempDir(temp, "*"); e != nil {
    22  		panic(e)
    23  	}
    24  	if e = os.Chdir(temp); e != nil {
    25  		panic(e)
    26  	}
    27  	return home, temp
    28  }
    29  
    30  func endFileTest(home, temp string) {
    31  	if e := os.Chdir(home); e != nil {
    32  		panic(e)
    33  	}
    34  	if e := os.RemoveAll(temp); e != nil {
    35  		panic(e)
    36  	}
    37  }
    38  
    39  func requireFile(t *testing.T, f string, exp string) {
    40  	require.FileExists(t, f)
    41  	bytes, e := ioutil.ReadFile(f)
    42  	require.Nil(t, e, "%+v", e)
    43  	require.Equal(t, exp, string(bytes))
    44  }
    45  
    46  func requireNotExists(t *testing.T, f string) {
    47  	_, e := os.Stat(f)
    48  	require.NotNil(t, e, "File still exists: %s", f)
    49  	require.True(t, os.IsNotExist(e), "File still exists: %s", f)
    50  }
    51  
    52  func TestPushd_AND_Popd(t *testing.T) {
    53  	home, temp := startFileTest()
    54  	defer endFileTest(home, temp)
    55  
    56  	tempDir := func(dir string) string {
    57  		r, e := ioutil.TempDir(temp, dir)
    58  		if e != nil {
    59  			panic(e)
    60  		}
    61  		return r
    62  	}
    63  
    64  	requireHistory := func(exps ...string) {
    65  		require.Equal(t, len(exps), len(WorkDirHistory))
    66  		for i, exp := range exps {
    67  			require.Equal(t, exp, WorkDirHistory[i])
    68  		}
    69  	}
    70  
    71  	a := tempDir("a")
    72  	require.Nil(t, Pushd(a))
    73  	requireHistory(temp)
    74  
    75  	b := tempDir("b")
    76  	require.Nil(t, Pushd(b))
    77  	requireHistory(temp, a)
    78  
    79  	c := tempDir("c")
    80  	require.Nil(t, Pushd(c))
    81  	requireHistory(temp, a, b)
    82  
    83  	require.Nil(t, Popd())
    84  	requireHistory(temp, a)
    85  
    86  	require.Nil(t, Popd())
    87  	requireHistory(temp)
    88  
    89  	require.Nil(t, Popd())
    90  	requireHistory()
    91  }
    92  
    93  func TestFileToQuote(t *testing.T) {
    94  	home, temp := startFileTest()
    95  	defer endFileTest(home, temp)
    96  
    97  	f, e := ioutil.TempFile(temp, "*")
    98  	if e != nil {
    99  		log.Fatal(e)
   100  	}
   101  
   102  	data := []byte("What you see is all there is.")
   103  	if _, e = f.Write(data); e != nil {
   104  		log.Fatal(e)
   105  	}
   106  
   107  	a, e := FileToQuote(f.Name())
   108  	require.Nil(t, e)
   109  
   110  	exp := []byte("\"What you see is all there is.\"")
   111  	act := []byte(a)
   112  	require.Equal(t, exp, act)
   113  }
   114  
   115  func TestCreateFiles(t *testing.T) {
   116  	home, temp := startFileTest()
   117  	defer endFileTest(home, temp)
   118  
   119  	e := CreateFiles(temp, os.ModePerm, map[string][]byte{
   120  		"abc.txt":        []byte("Weatherwax"),
   121  		"xyz.txt":        []byte("Ogg"),
   122  		"nested/abc.txt": []byte("Garlick"),
   123  		"empty/":         nil,
   124  	})
   125  	require.Nil(t, e)
   126  
   127  	requireFile(t, temp+"/abc.txt", "Weatherwax")
   128  	requireFile(t, temp+"/xyz.txt", "Ogg")
   129  	require.DirExists(t, temp+"/nested")
   130  	requireFile(t, temp+"/nested/abc.txt", "Garlick")
   131  	require.DirExists(t, temp+"/empty")
   132  }