aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomas Aschan <[email protected]>2025-08-02 06:30:24 +0200
committerGitHub <[email protected]>2025-08-02 06:30:24 +0200
commitbfb56184cc124b2a206273c751d7144ec4a8533a (patch)
tree878a2dedc3c9386172ee78fe799e24b6a22c9166
parentc78f730fb023e4012c4097b24408867cd5c5bdde (diff)
parent1b52f7648f880d6ef6aaa19e45b102edadd6c50a (diff)
Merge pull request #438 from mologie/fix-time-default-text
Omit zero time.Time default from usage line
-rw-r--r--time.go8
-rw-r--r--time_test.go28
2 files changed, 34 insertions, 2 deletions
diff --git a/time.go b/time.go
index dc02480..3dee424 100644
--- a/time.go
+++ b/time.go
@@ -48,7 +48,13 @@ func (d *timeValue) Type() string {
return "time"
}
-func (d *timeValue) String() string { return d.Time.Format(time.RFC3339Nano) }
+func (d *timeValue) String() string {
+ if d.Time.IsZero() {
+ return ""
+ } else {
+ return d.Time.Format(time.RFC3339Nano)
+ }
+}
// GetTime return the time value of a flag with the given name
func (f *FlagSet) GetTime(name string) (time.Time, error) {
diff --git a/time_test.go b/time_test.go
index 46a5ada..62d9a79 100644
--- a/time_test.go
+++ b/time_test.go
@@ -2,13 +2,14 @@ package pflag
import (
"fmt"
+ "strings"
"testing"
"time"
)
func setUpTimeVar(t *time.Time, formats []string) *FlagSet {
f := NewFlagSet("test", ContinueOnError)
- f.TimeVar(t, "time", time.Time{}, formats, "Time")
+ f.TimeVar(t, "time", *t, formats, "Time")
return f
}
@@ -60,3 +61,28 @@ func TestTime(t *testing.T) {
}
}
}
+
+func usageForTimeFlagSet(t *testing.T, timeVar time.Time) string {
+ t.Helper()
+ formats := []string{time.RFC3339Nano, time.RFC1123Z}
+ f := setUpTimeVar(&timeVar, formats)
+ if err := f.Parse([]string{}); err != nil {
+ t.Fatalf("expected success, got %q", err)
+ }
+ return f.FlagUsages()
+}
+
+func TestTimeDefaultZero(t *testing.T) {
+ usage := usageForTimeFlagSet(t, time.Time{})
+ if strings.Contains(usage, "default") {
+ t.Errorf("expected no default value in usage, got %q", usage)
+ }
+}
+
+func TestTimeDefaultNonZero(t *testing.T) {
+ timeVar := time.Date(2025, 1, 1, 1, 1, 1, 0, time.UTC)
+ usage := usageForTimeFlagSet(t, timeVar)
+ if !strings.Contains(usage, "default") || !strings.Contains(usage, "2025") {
+ t.Errorf("expected default value in usage, got %q", usage)
+ }
+}