github.com/mgoltzsche/ctnr@v0.7.1-alpha/pkg/fs/source/sourcedir_test.go (about) 1 package source 2 3 import ( 4 "io/ioutil" 5 "os" 6 "strings" 7 "testing" 8 "time" 9 10 "github.com/mgoltzsche/ctnr/pkg/fs" 11 "github.com/mgoltzsche/ctnr/pkg/fs/testutils" 12 "github.com/mgoltzsche/ctnr/pkg/idutils" 13 "github.com/stretchr/testify/require" 14 ) 15 16 func TestSourceDir(t *testing.T) { 17 mtime, err := time.Parse(time.RFC3339, "2018-01-23T01:01:42Z") 18 require.NoError(t, err) 19 mtime = time.Unix(mtime.Unix(), 900000000) 20 atime, err := time.Parse(time.RFC3339, "2018-01-23T01:02:42Z") 21 require.NoError(t, err) 22 tmpDir, err := ioutil.TempDir("", "test-source-dir-") 23 require.NoError(t, err) 24 defer os.RemoveAll(tmpDir) 25 writerMock := testutils.NewWriterMock(t, fs.AttrsAll) 26 var mode os.FileMode = 0750 27 times := fs.FileTimes{Atime: atime, Mtime: mtime} 28 usr := idutils.UserIds{1, 33} 29 testee := NewSourceDir(fs.FileAttrs{Mode: mode, UserIds: usr, FileTimes: times}) 30 a := testee.Attrs() 31 if a.NodeType != fs.TypeDir { 32 t.Error("Attrs(): type != TypeDir") 33 t.FailNow() 34 } 35 if a.Mode != mode { 36 t.Errorf("Attrs(): mode %s != %s", a.Mode, mode) 37 } 38 39 testee.Write("/dir", "", writerMock, nil) 40 actual := strings.Join(writerMock.Written, "\n") 41 expected := "/dir type=dir usr=1:33 mode=750 mtime=1516669302 atime=1516669362" 42 if actual != expected { 43 t.Errorf("expected\n %q\nbut was\n %q", expected, actual) 44 } 45 }