diff options
author | Steve Moyer <smoyer1@selesy.com> | 2022-08-18 06:18:23 -0400 |
---|---|---|
committer | Steve Moyer <smoyer1@selesy.com> | 2022-08-18 06:18:55 -0400 |
commit | a5802792ec0d351920c9756a40ca4048d682e724 (patch) | |
tree | 73fcec0793bbd25ff8334c41a2c3c91baf8d25e6 /commands | |
parent | 94e3bc85d4dea8eefa6c659e2f892b09dd7ddb41 (diff) | |
download | git-bug-a5802792ec0d351920c9756a40ca4048d682e724.tar.gz |
feat(836): updates default ls formatter for TSV output
Resolves #836
Diffstat (limited to 'commands')
-rw-r--r-- | commands/ls.go | 2 | ||||
-rw-r--r-- | commands/ls_test.go | 60 |
2 files changed, 61 insertions, 1 deletions
diff --git a/commands/ls.go b/commands/ls.go index 61724f2a..f5fc6681 100644 --- a/commands/ls.go +++ b/commands/ls.go @@ -279,7 +279,7 @@ func lsDefaultFormatter(env *Env, bugExcerpts []*cache.BugExcerpt) error { comments = " ∞ 💬" } - env.out.Printf("%s %s\t%s\t%s\t%s\n", + env.out.Printf("%s\t%s\t%s\t%s\t%s\n", colors.Cyan(b.Id.Human()), colors.Yellow(b.Status), titleFmt+labelsFmt, diff --git a/commands/ls_test.go b/commands/ls_test.go index aff94e03..46728847 100644 --- a/commands/ls_test.go +++ b/commands/ls_test.go @@ -1,6 +1,8 @@ package commands import ( + "encoding/json" + "fmt" "testing" "github.com/stretchr/testify/require" @@ -41,3 +43,61 @@ func Test_repairQuery(t *testing.T) { require.Equal(t, tc.output, repairQuery(tc.args)) } } + +func TestLs_Format(t *testing.T) { + const expOrgMode = `^#+TODO: OPEN | CLOSED +[*] OPEN [0-9a-f]{7} \[\d\d\d\d-\d\d-\d\d [[:alpha:]]{3} \d\d:\d\d\] John Doe: this is a bug title :: +[*]{2} Last Edited: \[\d\d\d\d-\d\d-\d\d [[:alpha:]]{3} \d\d:\d\d\] +[*]{2} Actors: +: [0-9a-f]{7} John Doe +[*]{2} Participants: +: [0-9a-f]{7} John Doe +$` + + cases := []struct { + format string + exp string + }{ + {"default", "^[0-9a-f]{7}\topen\tthis is a bug title \tJohn Doe \t\n$"}, + {"plain", "^[0-9a-f]{7} \\[open\\] this is a bug title\n$"}, + {"compact", "^[0-9a-f]{7} open this is a bug title John Doe\n$"}, + {"org-mode", expOrgMode}, + } + + for _, testcase := range cases { + opts := lsOptions{ + sortDirection: "asc", + sortBy: "creation", + outputFormat: testcase.format, + } + + name := fmt.Sprintf("with %s format", testcase.format) + + t.Run(name, func(t *testing.T) { + env, _, _ := newTestEnvAndBug(t) + + require.NoError(t, runLs(env.env, opts, []string{})) + t.Log(env.out.String()) + require.Regexp(t, testcase.exp, env.out.String()) + require.Equal(t, "", env.err.String()) + }) + } + + t.Run("with JSON format", func(t *testing.T) { + opts := lsOptions{ + sortDirection: "asc", + sortBy: "creation", + outputFormat: "json", + } + + env, _, _ := newTestEnvAndBug(t) + + require.NoError(t, runLs(env.env, opts, []string{})) + + bugs := []JSONBugExcerpt{} + require.NoError(t, json.Unmarshal(env.out.Bytes(), &bugs)) + require.Empty(t, env.err.Bytes()) + + require.Len(t, bugs, 1) + }) +} |