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  }