git.wit.org/jcarr/packr@v1.10.8/box_test.go (about) 1 package packr 2 3 import ( 4 "bytes" 5 "io/ioutil" 6 "os" 7 "runtime" 8 "sort" 9 "strings" 10 "testing" 11 12 "github.com/stretchr/testify/require" 13 ) 14 15 func Test_Box_String(t *testing.T) { 16 r := require.New(t) 17 s := testBox.String("hello.txt") 18 r.Equal("hello world!", strings.TrimSpace(s)) 19 } 20 21 func Test_Box_MustString(t *testing.T) { 22 r := require.New(t) 23 _, err := testBox.MustString("idontexist.txt") 24 r.Error(err) 25 } 26 27 func Test_Box_Bytes(t *testing.T) { 28 r := require.New(t) 29 s := testBox.Bytes("hello.txt") 30 r.Equal([]byte("hello world!"), bytes.TrimSpace(s)) 31 } 32 33 func Test_Box_MustBytes(t *testing.T) { 34 r := require.New(t) 35 _, err := testBox.MustBytes("idontexist.txt") 36 r.Error(err) 37 } 38 39 func Test_Box_Has(t *testing.T) { 40 r := require.New(t) 41 r.True(testBox.Has("hello.txt")) 42 r.False(testBox.Has("idontexist.txt")) 43 } 44 45 func Test_Box_Walk_Physical(t *testing.T) { 46 r := require.New(t) 47 count := 0 48 err := testBox.Walk(func(path string, f File) error { 49 count++ 50 return nil 51 }) 52 r.NoError(err) 53 r.Equal(3, count) 54 } 55 56 func Test_Box_Walk_Virtual(t *testing.T) { 57 r := require.New(t) 58 count := 0 59 err := virtualBox.Walk(func(path string, f File) error { 60 count++ 61 return nil 62 }) 63 r.NoError(err) 64 r.Equal(4, count) 65 } 66 67 func Test_List_Virtual(t *testing.T) { 68 r := require.New(t) 69 mustHave := []string{"a", "b", "c", "d/a"} 70 actual := virtualBox.List() 71 sort.Strings(actual) 72 r.Equal(mustHave, actual) 73 } 74 75 func Test_List_Physical(t *testing.T) { 76 r := require.New(t) 77 mustHave := []string{"goodbye.txt", "hello.txt", "index.html"} 78 actual := testBox.List() 79 r.Equal(mustHave, actual) 80 } 81 82 func Test_Outside_Box(t *testing.T) { 83 r := require.New(t) 84 f, err := ioutil.TempFile("", "") 85 r.NoError(err) 86 defer os.RemoveAll(f.Name()) 87 _, err = testBox.MustString(f.Name()) 88 r.Error(err) 89 } 90 91 func Test_Box_find(t *testing.T) { 92 box := NewBox("./example") 93 94 onWindows := runtime.GOOS == "windows" 95 table := []struct { 96 name string 97 found bool 98 }{ 99 {"assets/app.css", true}, 100 {"assets\\app.css", onWindows}, 101 {"foo/bar.baz", false}, 102 } 103 104 for _, tt := range table { 105 t.Run(tt.name, func(st *testing.T) { 106 r := require.New(st) 107 _, err := box.find(tt.name) 108 if tt.found { 109 r.True(box.Has(tt.name)) 110 r.NoError(err) 111 } else { 112 r.False(box.Has(tt.name)) 113 r.Error(err) 114 } 115 }) 116 } 117 } 118 119 func Test_Virtual_Directory_Not_Found(t *testing.T) { 120 r := require.New(t) 121 _, err := virtualBox.find("d") 122 r.NoError(err) 123 _, err = virtualBox.find("does-not-exist") 124 r.Error(err) 125 } 126 127 func Test_AddString(t *testing.T) { 128 r := require.New(t) 129 130 _, err := virtualBox.find("string") 131 r.Error(err) 132 133 virtualBox.AddString("string", "hello") 134 135 _, err = virtualBox.find("string") 136 r.NoError(err) 137 r.Equal("hello", virtualBox.String("string")) 138 } 139 140 func Test_AddBytes(t *testing.T) { 141 r := require.New(t) 142 143 _, err := virtualBox.find("bytes") 144 r.Error(err) 145 146 virtualBox.AddBytes("bytes", []byte("hello")) 147 148 _, err = virtualBox.find("bytes") 149 r.NoError(err) 150 r.Equal("hello", virtualBox.String("bytes")) 151 }