123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306 |
- package lsf
- import (
- "bytes"
- "context"
- "testing"
- _ "github.com/rclone/rclone/backend/local"
- "github.com/rclone/rclone/fs"
- "github.com/rclone/rclone/fs/list"
- "github.com/rclone/rclone/fs/operations"
- "github.com/rclone/rclone/fstest"
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
- )
- func TestDefaultLsf(t *testing.T) {
- fstest.Initialise()
- buf := new(bytes.Buffer)
- f, err := fs.NewFs(context.Background(), "testfiles")
- require.NoError(t, err)
- err = Lsf(context.Background(), f, buf)
- require.NoError(t, err)
- assert.Equal(t, `file1
- file2
- file3
- subdir/
- `, buf.String())
- }
- func TestRecurseFlag(t *testing.T) {
- fstest.Initialise()
- buf := new(bytes.Buffer)
- f, err := fs.NewFs(context.Background(), "testfiles")
- require.NoError(t, err)
- recurse = true
- err = Lsf(context.Background(), f, buf)
- require.NoError(t, err)
- assert.Equal(t, `file1
- file2
- file3
- subdir/
- subdir/file1
- subdir/file2
- subdir/file3
- `, buf.String())
- recurse = false
- }
- func TestDirSlashFlag(t *testing.T) {
- fstest.Initialise()
- buf := new(bytes.Buffer)
- f, err := fs.NewFs(context.Background(), "testfiles")
- require.NoError(t, err)
- dirSlash = true
- format = "p"
- err = Lsf(context.Background(), f, buf)
- require.NoError(t, err)
- assert.Equal(t, `file1
- file2
- file3
- subdir/
- `, buf.String())
- buf = new(bytes.Buffer)
- dirSlash = false
- err = Lsf(context.Background(), f, buf)
- require.NoError(t, err)
- assert.Equal(t, `file1
- file2
- file3
- subdir
- `, buf.String())
- }
- func TestFormat(t *testing.T) {
- fstest.Initialise()
- f, err := fs.NewFs(context.Background(), "testfiles")
- require.NoError(t, err)
- buf := new(bytes.Buffer)
- format = "p"
- err = Lsf(context.Background(), f, buf)
- require.NoError(t, err)
- assert.Equal(t, `file1
- file2
- file3
- subdir
- `, buf.String())
- buf = new(bytes.Buffer)
- format = "s"
- err = Lsf(context.Background(), f, buf)
- require.NoError(t, err)
- assert.Equal(t, `0
- 321
- 1234
- -1
- `, buf.String())
- buf = new(bytes.Buffer)
- format = "hp"
- err = Lsf(context.Background(), f, buf)
- require.NoError(t, err)
- assert.Equal(t, `d41d8cd98f00b204e9800998ecf8427e;file1
- 409d6c19451dd39d4a94e42d2ff2c834;file2
- 9b4c8a5e36d3be7e2c4b1d75ded8c8a1;file3
- ;subdir
- `, buf.String())
- buf = new(bytes.Buffer)
- format = "p"
- filesOnly = true
- err = Lsf(context.Background(), f, buf)
- require.NoError(t, err)
- assert.Equal(t, `file1
- file2
- file3
- `, buf.String())
- filesOnly = false
- buf = new(bytes.Buffer)
- format = "p"
- dirsOnly = true
- err = Lsf(context.Background(), f, buf)
- require.NoError(t, err)
- assert.Equal(t, `subdir
- `, buf.String())
- dirsOnly = false
- buf = new(bytes.Buffer)
- format = "t"
- err = Lsf(context.Background(), f, buf)
- require.NoError(t, err)
- items, _ := list.DirSorted(context.Background(), f, true, "")
- var expectedOutput string
- for _, item := range items {
- expectedOutput += item.ModTime(context.Background()).Format("2006-01-02 15:04:05") + "\n"
- }
- assert.Equal(t, expectedOutput, buf.String())
- buf = new(bytes.Buffer)
- format = "sp"
- err = Lsf(context.Background(), f, buf)
- require.NoError(t, err)
- assert.Equal(t, `0;file1
- 321;file2
- 1234;file3
- -1;subdir
- `, buf.String())
- format = ""
- }
- func TestSeparator(t *testing.T) {
- fstest.Initialise()
- f, err := fs.NewFs(context.Background(), "testfiles")
- require.NoError(t, err)
- format = "ps"
- buf := new(bytes.Buffer)
- err = Lsf(context.Background(), f, buf)
- require.NoError(t, err)
- assert.Equal(t, `file1;0
- file2;321
- file3;1234
- subdir;-1
- `, buf.String())
- separator = "__SEP__"
- buf = new(bytes.Buffer)
- err = Lsf(context.Background(), f, buf)
- require.NoError(t, err)
- assert.Equal(t, `file1__SEP__0
- file2__SEP__321
- file3__SEP__1234
- subdir__SEP__-1
- `, buf.String())
- format = ""
- separator = ""
- }
- func TestWholeLsf(t *testing.T) {
- fstest.Initialise()
- f, err := fs.NewFs(context.Background(), "testfiles")
- require.NoError(t, err)
- format = "pst"
- separator = "_+_"
- recurse = true
- dirSlash = true
- buf := new(bytes.Buffer)
- err = Lsf(context.Background(), f, buf)
- require.NoError(t, err)
- items, _ := list.DirSorted(context.Background(), f, true, "")
- itemsInSubdir, _ := list.DirSorted(context.Background(), f, true, "subdir")
- var expectedOutput []string
- for _, item := range items {
- expectedOutput = append(expectedOutput, item.ModTime(context.Background()).Format("2006-01-02 15:04:05"))
- }
- for _, item := range itemsInSubdir {
- expectedOutput = append(expectedOutput, item.ModTime(context.Background()).Format("2006-01-02 15:04:05"))
- }
- assert.Equal(t, `file1_+_0_+_`+expectedOutput[0]+`
- file2_+_321_+_`+expectedOutput[1]+`
- file3_+_1234_+_`+expectedOutput[2]+`
- subdir/_+_-1_+_`+expectedOutput[3]+`
- subdir/file1_+_0_+_`+expectedOutput[4]+`
- subdir/file2_+_1_+_`+expectedOutput[5]+`
- subdir/file3_+_111_+_`+expectedOutput[6]+`
- `, buf.String())
- format = ""
- separator = ""
- recurse = false
- dirSlash = false
- }
- func TestTimeFormat(t *testing.T) {
- fstest.Initialise()
- f, err := fs.NewFs(context.Background(), "testfiles")
- require.NoError(t, err)
- format = "pst"
- separator = "_+_"
- recurse = true
- dirSlash = true
- timeFormat = "Jan 2, 2006 at 3:04pm (MST)"
- buf := new(bytes.Buffer)
- err = Lsf(context.Background(), f, buf)
- require.NoError(t, err)
- items, _ := list.DirSorted(context.Background(), f, true, "")
- itemsInSubdir, _ := list.DirSorted(context.Background(), f, true, "subdir")
- var expectedOutput []string
- for _, item := range items {
- expectedOutput = append(expectedOutput, item.ModTime(context.Background()).Format(timeFormat))
- }
- for _, item := range itemsInSubdir {
- expectedOutput = append(expectedOutput, item.ModTime(context.Background()).Format(timeFormat))
- }
- assert.Equal(t, `file1_+_0_+_`+expectedOutput[0]+`
- file2_+_321_+_`+expectedOutput[1]+`
- file3_+_1234_+_`+expectedOutput[2]+`
- subdir/_+_-1_+_`+expectedOutput[3]+`
- subdir/file1_+_0_+_`+expectedOutput[4]+`
- subdir/file2_+_1_+_`+expectedOutput[5]+`
- subdir/file3_+_111_+_`+expectedOutput[6]+`
- `, buf.String())
- format = ""
- separator = ""
- recurse = false
- dirSlash = false
- }
- func TestTimeFormatMax(t *testing.T) {
- fstest.Initialise()
- f, err := fs.NewFs(context.Background(), "testfiles")
- require.NoError(t, err)
- format = "pst"
- separator = "_+_"
- recurse = true
- dirSlash = true
- timeFormat = "max"
- precision := operations.FormatForLSFPrecision(f.Precision())
- buf := new(bytes.Buffer)
- err = Lsf(context.Background(), f, buf)
- require.NoError(t, err)
- items, _ := list.DirSorted(context.Background(), f, true, "")
- itemsInSubdir, _ := list.DirSorted(context.Background(), f, true, "subdir")
- var expectedOutput []string
- for _, item := range items {
- expectedOutput = append(expectedOutput, item.ModTime(context.Background()).Format(precision))
- }
- for _, item := range itemsInSubdir {
- expectedOutput = append(expectedOutput, item.ModTime(context.Background()).Format(precision))
- }
- assert.Equal(t, `file1_+_0_+_`+expectedOutput[0]+`
- file2_+_321_+_`+expectedOutput[1]+`
- file3_+_1234_+_`+expectedOutput[2]+`
- subdir/_+_-1_+_`+expectedOutput[3]+`
- subdir/file1_+_0_+_`+expectedOutput[4]+`
- subdir/file2_+_1_+_`+expectedOutput[5]+`
- subdir/file3_+_111_+_`+expectedOutput[6]+`
- `, buf.String())
- format = ""
- separator = ""
- recurse = false
- dirSlash = false
- }
|