package commands import ( "bytes" "encoding/csv" "io" "os" "path/filepath" "strings" "testing" qt "github.com/frankban/quicktest" "github.com/spf13/cobra" ) func captureStdout(f func() (*cobra.Command, error)) (string, error) { old := os.Stdout r, w, _ := os.Pipe() os.Stdout = w _, err := f() if err != nil { return "", err } w.Close() os.Stdout = old var buf bytes.Buffer io.Copy(&buf, r) return buf.String(), nil } func TestListAll(t *testing.T) { c := qt.New(t) dir, err := createSimpleTestSite(t, testSiteConfig{}) c.Assert(err, qt.IsNil) hugoCmd := newCommandsBuilder().addAll().build() cmd := hugoCmd.getCommand() defer func() { os.RemoveAll(dir) }() cmd.SetArgs([]string{"-s=" + dir, "list", "all"}) out, err := captureStdout(cmd.ExecuteC) c.Assert(err, qt.IsNil) r := csv.NewReader(strings.NewReader(out)) header, err := r.Read() c.Assert(err, qt.IsNil) c.Assert(header, qt.DeepEquals, []string{ "path", "slug", "title", "date", "expiryDate", "publishDate", "draft", "permalink", }) record, err := r.Read() c.Assert(err, qt.IsNil) c.Assert(record, qt.DeepEquals, []string{ filepath.Join("content", "p1.md"), "", "P1", "0001-01-01T00:00:00Z", "0001-01-01T00:00:00Z", "0001-01-01T00:00:00Z", "false", "https://example.org/p1/", }) }