summaryrefslogtreecommitdiff
path: root/parse_test.go
diff options
context:
space:
mode:
authorAlex Flint <[email protected]>2021-09-18 08:55:40 -0700
committerAlex Flint <[email protected]>2021-09-18 08:55:40 -0700
commitf2f876420ce7c64673cdf97ed8071db8ef46e5f2 (patch)
tree8441653724d058566ba492200900a5c6cca84d17 /parse_test.go
parent7cc8da61cf3da353167fcc83ad4e751f3c82ec97 (diff)
parent66cb696e79be30bc979cb003ef8bdecc78266ced (diff)
Merge remote-tracking branch 'origin/master' into usage-for-subcommands
Diffstat (limited to 'parse_test.go')
-rw-r--r--parse_test.go42
1 files changed, 42 insertions, 0 deletions
diff --git a/parse_test.go b/parse_test.go
index 695b1d8..284e386 100644
--- a/parse_test.go
+++ b/parse_test.go
@@ -5,6 +5,7 @@ import (
"fmt"
"net"
"net/mail"
+ "net/url"
"os"
"strings"
"testing"
@@ -961,6 +962,24 @@ func TestPtrToIP(t *testing.T) {
assert.Equal(t, "192.168.0.1", args.Host.String())
}
+func TestURL(t *testing.T) {
+ var args struct {
+ URL url.URL
+ }
+ err := parse("--url https://example.com/get?item=xyz", &args)
+ require.NoError(t, err)
+ assert.Equal(t, "https://example.com/get?item=xyz", args.URL.String())
+}
+
+func TestPtrToURL(t *testing.T) {
+ var args struct {
+ URL *url.URL
+ }
+ err := parse("--url http://example.com/#xyz", &args)
+ require.NoError(t, err)
+ assert.Equal(t, "http://example.com/#xyz", args.URL.String())
+}
+
func TestIPSlice(t *testing.T) {
var args struct {
Host []net.IP
@@ -1095,6 +1114,29 @@ func TestEmbeddedWithDuplicateField2(t *testing.T) {
assert.Equal(t, "", args.U.A)
}
+func TestUnexportedEmbedded(t *testing.T) {
+ type embeddedArgs struct {
+ Foo string
+ }
+ var args struct {
+ embeddedArgs
+ }
+ err := parse("--foo bar", &args)
+ require.NoError(t, err)
+ assert.Equal(t, "bar", args.Foo)
+}
+
+func TestIgnoredEmbedded(t *testing.T) {
+ type embeddedArgs struct {
+ Foo string
+ }
+ var args struct {
+ embeddedArgs `arg:"-"`
+ }
+ err := parse("--foo bar", &args)
+ require.Error(t, err)
+}
+
func TestEmptyArgs(t *testing.T) {
origArgs := os.Args