diff --git a/pkg/kubectl/resource_printer.go b/pkg/kubectl/resource_printer.go index 0db84a8c339..76e28aebcee 100644 --- a/pkg/kubectl/resource_printer.go +++ b/pkg/kubectl/resource_printer.go @@ -376,6 +376,9 @@ func shortHumanDuration(d time.Duration) string { // translateTimestamp returns the elapsed time since timestamp in // human-readable approximation. func translateTimestamp(timestamp util.Time) string { + if timestamp.IsZero() { + return "" + } return shortHumanDuration(time.Now().Sub(timestamp.Time)) } diff --git a/pkg/kubectl/resource_printer_test.go b/pkg/kubectl/resource_printer_test.go index a4f79e4bf5f..ebc7ab7a437 100644 --- a/pkg/kubectl/resource_printer_test.go +++ b/pkg/kubectl/resource_printer_test.go @@ -1097,3 +1097,26 @@ func TestPrintPodWithLabels(t *testing.T) { buf.Reset() } } + +type stringTestList []struct { + name, got, exp string +} + +func TestTranslateTimestamp(t *testing.T) { + tl := stringTestList{ + {"now", translateTimestamp(util.Time{Time: time.Now()}), "0s"}, + {"unknown", translateTimestamp(util.Time{}), ""}, + {"30 seconds ago", translateTimestamp(util.Time{Time: time.Now().Add(-3e10)}), "30s"}, + {"5 minutes ago", translateTimestamp(util.Time{Time: time.Now().Add(-3e11)}), "5m"}, + {"an hour ago", translateTimestamp(util.Time{Time: time.Now().Add(-6e12)}), "1h"}, + {"2 days ago", translateTimestamp(util.Time{Time: time.Now().AddDate(0, 0, -2)}), "2d"}, + {"months ago", translateTimestamp(util.Time{Time: time.Now().AddDate(0, -3, 0)}), "92d"}, + {"10 years ago", translateTimestamp(util.Time{Time: time.Now().AddDate(-10, 0, 0)}), "10y"}, + } + for _, test := range tl { + if test.got != test.exp { + t.Errorf("On %v, expected '%v', but got '%v'", + test.name, test.exp, test.got) + } + } +}