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  }