Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion cmd/format_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ func TestFormatFileMetadataWithOptsShort(t *testing.T) {
}

got := formatFileMetadataWithOpts(meta, listOptions{long: false})
want := "/test.txt\t"
want := "/test.txt"
if got != want {
t.Errorf("short format = %q, want %q", got, want)
}
Expand Down
14 changes: 4 additions & 10 deletions cmd/ls.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ func printFolderMetadata(w io.Writer, e *files.FolderMetadata, longFormat bool)
}

func formatFolderMetadata(e *files.FolderMetadata, longFormat bool) string {
text := fmt.Sprintf("%s\t", e.PathDisplay)
text := e.PathDisplay
if longFormat {
text = "-\t-\t-\t" + text
}
Expand All @@ -77,7 +77,7 @@ func formatFileMetadata(e *files.FileMetadata, longFormat bool) string {
}

func formatFileMetadataWithOpts(e *files.FileMetadata, opts listOptions) string {
text := fmt.Sprintf("%s\t", e.PathDisplay)
text := e.PathDisplay
if opts.long {
t := getTime(e, opts)
text = fmt.Sprintf("%s\t%s\t%s\t", e.Rev, humanize.IBytes(e.Size), formatTime(t, opts)) + text
Expand All @@ -86,7 +86,7 @@ func formatFileMetadataWithOpts(e *files.FileMetadata, opts listOptions) string
}

func formatDeletedMetadata(e *files.DeletedMetadata, longFormat bool) string {
text := fmt.Sprintf("%s\t", e.PathDisplay)
text := e.PathDisplay
if longFormat {
text = "-\t-\t-\t" + text
}
Expand Down Expand Up @@ -346,10 +346,7 @@ func renderLsResults(out io.Writer, entries []files.IsMetadata, opts listOptions
itemCounter := 0
printItem := func(message string) {
itemCounter = itemCounter + 1
_, _ = fmt.Fprint(w, message)
if (itemCounter%4 == 0) || opts.long {
_, _ = fmt.Fprintln(w)
}
_, _ = fmt.Fprintln(w, message)
}

if opts.long {
Expand Down Expand Up @@ -387,9 +384,6 @@ func isListRevisionsNotFileError(err error) bool {
}

func finishListOutput(w *tabwriter.Writer, itemCounter int, opts listOptions) error {
if itemCounter > 0 && !opts.long && itemCounter%4 != 0 {
_, _ = fmt.Fprintln(w)
}
return w.Flush()
}

Expand Down
47 changes: 11 additions & 36 deletions cmd/ls_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import (
"fmt"
"strings"
"testing"
"text/tabwriter"
"time"

"github.com/dropbox/dropbox-sdk-go-unofficial/v6/dropbox"
Expand All @@ -21,13 +20,13 @@ func TestFormatFolderMetadata(t *testing.T) {
}

got := formatFolderMetadata(meta, false)
want := "/Documents\t"
want := "/Documents"
if got != want {
t.Errorf("formatFolderMetadata(short) = %q, want %q", got, want)
}

got = formatFolderMetadata(meta, true)
want = "-\t-\t-\t/Documents\t"
want = "-\t-\t-\t/Documents"
if got != want {
t.Errorf("formatFolderMetadata(long) = %q, want %q", got, want)
}
Expand All @@ -43,7 +42,7 @@ func TestFormatFileMetadata(t *testing.T) {
}

got := formatFileMetadata(meta, false)
want := "/test.txt\t"
want := "/test.txt"
if got != want {
t.Errorf("formatFileMetadata(short) = %q, want %q", got, want)
}
Expand All @@ -52,7 +51,7 @@ func TestFormatFileMetadata(t *testing.T) {
if got == "" {
t.Error("formatFileMetadata(long) returned empty string")
}
if len(got) <= len("/test.txt\t") {
if len(got) <= len("/test.txt") {
t.Errorf("formatFileMetadata(long) should include rev/size/time, got %q", got)
}
}
Expand All @@ -65,13 +64,13 @@ func TestFormatDeletedMetadata(t *testing.T) {
}

got := formatDeletedMetadata(meta, false)
want := "/removed.txt\t"
want := "/removed.txt"
if got != want {
t.Errorf("formatDeletedMetadata(short) = %q, want %q", got, want)
}

got = formatDeletedMetadata(meta, true)
want = "-\t-\t-\t/removed.txt\t"
want = "-\t-\t-\t/removed.txt"
if got != want {
t.Errorf("formatDeletedMetadata(long) = %q, want %q", got, want)
}
Expand Down Expand Up @@ -137,44 +136,20 @@ func TestGetFileMetadataNotCalledForRoot(t *testing.T) {
}
}

func TestFinishListOutputAddsTrailingNewlineForPartialShortRows(t *testing.T) {
var out strings.Builder
w := new(tabwriter.Writer)
w.Init(&out, 4, 8, 1, ' ', 0)

fmt.Fprint(w, "/one\t")
if err := finishListOutput(w, 1, listOptions{}); err != nil {
t.Fatalf("finishListOutput returned error: %v", err)
}

if got := out.String(); !strings.HasSuffix(got, "\n") {
t.Fatalf("output %q does not end with newline", got)
}
}

func TestRenderLsResultsShortModeUsesFourColumns(t *testing.T) {
func TestRenderLsResultsShortModeUsesOneEntryPerLine(t *testing.T) {
entries := []files.IsMetadata{
&files.FolderMetadata{Metadata: files.Metadata{PathDisplay: "/one"}},
&files.FolderMetadata{Metadata: files.Metadata{PathDisplay: "/two"}},
&files.FolderMetadata{Metadata: files.Metadata{PathDisplay: "/three"}},
&files.FolderMetadata{Metadata: files.Metadata{PathDisplay: "/four"}},
&files.FolderMetadata{Metadata: files.Metadata{PathDisplay: "/five"}},
&files.FolderMetadata{Metadata: files.Metadata{PathDisplay: "/two words"}},
&files.FileMetadata{Metadata: files.Metadata{PathDisplay: "/three.zip"}},
}

var out bytes.Buffer
if err := renderLsResults(&out, entries, listOptions{}); err != nil {
t.Fatalf("renderLsResults returned error: %v", err)
}

lines := strings.Split(strings.TrimSuffix(out.String(), "\n"), "\n")
if len(lines) != 2 {
t.Fatalf("output = %q, want two short-mode rows", out.String())
}
if !strings.Contains(lines[0], "/one") || !strings.Contains(lines[0], "/four") {
t.Fatalf("first row = %q, want first four entries", lines[0])
}
if !strings.Contains(lines[1], "/five") {
t.Fatalf("second row = %q, want fifth entry", lines[1])
if want := "/one\n/two words\n/three.zip\n"; out.String() != want {
t.Fatalf("output = %q, want %q", out.String(), want)
}
}

Expand Down