get.porter.sh/porter@v1.3.0/pkg/printer/table_test.go (about) 1 package printer 2 3 import ( 4 "bytes" 5 "fmt" 6 "testing" 7 8 "get.porter.sh/porter/pkg/test" 9 "github.com/stretchr/testify/require" 10 ) 11 12 type testType struct { 13 A, B interface{} 14 } 15 16 func printTestType(r interface{}) []string { 17 row, ok := r.(testType) 18 if !ok { 19 panic("invalid row data passed to printTestType, should be testType") 20 } 21 return []string{fmt.Sprintf("%v", row.A), fmt.Sprintf("%v", row.B)} 22 } 23 24 func TestPrintTable(t *testing.T) { 25 v := []testType{ 26 {A: "foo", B: "a really long bit of text that really should be wrapped nicely so that the entire table doesn't expand infinitely wide"}, 27 {A: "baz", B: "qux"}, 28 {A: 123, B: true}, 29 } 30 31 b := &bytes.Buffer{} 32 33 err := PrintTable(b, v, printTestType, 34 "A", "B") 35 36 require.NoError(t, err) 37 test.CompareGoldenFile(t, "testdata/table-with-headers.txt", b.String()) 38 } 39 40 func TestPrintTable_WithoutHeaders(t *testing.T) { 41 v := []testType{ 42 {A: "foo", B: "bar"}, 43 } 44 45 b := &bytes.Buffer{} 46 47 err := PrintTable(b, v, printTestType) 48 49 require.NoError(t, err) 50 test.CompareGoldenFile(t, "testdata/table-without-headers.txt", b.String()) 51 }