vessel_test.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package vessel
  2. import (
  3. "fmt"
  4. "os"
  5. "path/filepath"
  6. "strings"
  7. "testing"
  8. "time"
  9. "github.com/stretchr/testify/assert"
  10. )
  11. func TestVessel(t *testing.T) {
  12. ename := "./test.bundle"
  13. SetLogger(DebugLogger{})
  14. f, err := os.Create(ename)
  15. assert.Nil(t, err)
  16. f.Close()
  17. defer os.Remove(ename)
  18. b, err := Build(ename, "example", true, func(path string) bool {
  19. base := filepath.Base(path)
  20. if base == ".DS_Store" {
  21. return false
  22. }
  23. if strings.HasSuffix(base, ".zip") {
  24. return false
  25. }
  26. return true
  27. })
  28. assert.Nil(t, err)
  29. assert.NotNil(t, b)
  30. fs := b.FileSystem()
  31. assert.NotNil(t, fs)
  32. files, err := fs.Dir("/")
  33. assert.Nil(t, err)
  34. assert.Equal(t, 3, len(files))
  35. fmt.Println("E----", len(files))
  36. fmt.Println("S----")
  37. files, err = fs.Dir("/site")
  38. assert.Nil(t, err)
  39. assert.Equal(t, 4, len(files))
  40. fmt.Println("E----", len(files))
  41. stat, err := fs.Stat("/site")
  42. assert.Nil(t, err)
  43. assert.Equal(t, true, stat.IsDir())
  44. stat, err = fs.Stat("/site/static")
  45. assert.Nil(t, err)
  46. assert.Equal(t, true, stat.IsDir())
  47. stat, err = fs.Stat("/site/templates/list.html")
  48. assert.Nil(t, err)
  49. assert.Equal(t, false, stat.IsDir())
  50. lstat, err := os.Stat("example/" + "/site/templates/list.html")
  51. assert.NoError(t, err)
  52. assert.Equal(t, lstat.ModTime().UTC(), stat.ModTime().UTC())
  53. now := time.Now()
  54. b.WithTimeOverride(now)
  55. fs = b.FileSystem()
  56. assert.NotNil(t, fs)
  57. stat, err = fs.Stat("/site/templates/list.html")
  58. assert.Nil(t, err)
  59. assert.NoError(t, err)
  60. assert.Equal(t, now.UTC(), stat.ModTime().UTC())
  61. }