From 2819b5233b60d42b7302cda41fd590f18f42a00a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Bourgois?= Date: Mon, 2 Mar 2020 14:35:05 +0100 Subject: [PATCH 1/5] chore: improve human marshal for nil value --- internal/human/marshal_func.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/internal/human/marshal_func.go b/internal/human/marshal_func.go index 96acb93b19..15b0011994 100644 --- a/internal/human/marshal_func.go +++ b/internal/human/marshal_func.go @@ -58,6 +58,12 @@ func RegisterMarshalerFunc(i interface{}, f MarshalerFunc) { // DefaultMarshalerFunc is used by default for all non-registered type func defaultMarshalerFunc(i interface{}, opt *MarshalOpt) (string, error) { + if i == nil { + i = "-" + } + if i.(string) == "" { + i = "-" + } return fmt.Sprint(i), nil } From 99e5947bbd430b4297606de28008bb4bade3034f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Bourgois?= Date: Mon, 2 Mar 2020 14:44:00 +0100 Subject: [PATCH 2/5] fix --- internal/human/marshal.go | 6 +++++- internal/human/marshal_test.go | 12 ++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/internal/human/marshal.go b/internal/human/marshal.go index f53c8a7fcb..27a34d1c5c 100644 --- a/internal/human/marshal.go +++ b/internal/human/marshal.go @@ -39,12 +39,16 @@ func Marshal(data interface{}, opt *MarshalOpt) (string, error) { } rValue := reflect.ValueOf(data) + if !rValue.IsValid() { + return defaultMarshalerFunc(nil, opt) + } + rType := rValue.Type() switch { // If data is nil case isInterfaceNil(data): - return "", nil + return defaultMarshalerFunc(nil, opt) // If data has a registered MarshalerFunc call it case marshalerFuncs[rType] != nil: diff --git a/internal/human/marshal_test.go b/internal/human/marshal_test.go index b52e4c4681..78cf3b3393 100644 --- a/internal/human/marshal_test.go +++ b/internal/human/marshal_test.go @@ -154,4 +154,16 @@ func TestMarshal(t *testing.T) { `, err: nil, })) + + t.Run("empty string", run(&testCase{ + data: "", + result: `-`, + err: nil, + })) + + t.Run("nil", run(&testCase{ + data: nil, + result: `-`, + err: nil, + })) } From e8fcb66b77d8134e76ddd5cb36ae413c6dc05bed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Bourgois?= Date: Mon, 2 Mar 2020 14:47:12 +0100 Subject: [PATCH 3/5] fix --- internal/human/marshal_func.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/internal/human/marshal_func.go b/internal/human/marshal_func.go index 15b0011994..4c956f8365 100644 --- a/internal/human/marshal_func.go +++ b/internal/human/marshal_func.go @@ -61,9 +61,14 @@ func defaultMarshalerFunc(i interface{}, opt *MarshalOpt) (string, error) { if i == nil { i = "-" } - if i.(string) == "" { - i = "-" + + switch v := i.(type) { + case string: + if v == "" { + i = "-" + } } + return fmt.Sprint(i), nil } From 597da2217c48574aee624528ef3aa50da1390e1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Bourgois?= Date: Mon, 2 Mar 2020 14:53:09 +0100 Subject: [PATCH 4/5] fix test --- internal/human/marshal_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/human/marshal_test.go b/internal/human/marshal_test.go index 78cf3b3393..1f5a7510c4 100644 --- a/internal/human/marshal_test.go +++ b/internal/human/marshal_test.go @@ -103,7 +103,7 @@ func TestMarshal(t *testing.T) { strings.0 s1 strings.1 s2 time ` + humanDate + ` - struct.string + struct.string - struct.int 0 struct.bool false struct.time a long while ago From 88799f0362befc321b1244bb02c8fcdbd1e4581c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Bourgois?= Date: Mon, 2 Mar 2020 14:53:24 +0100 Subject: [PATCH 5/5] update goldens --- .../e2e/testdata/test-human-create-simple.stdout.golden | 2 +- .../testdata/test-human-create-with-args.stdout.golden | 2 +- .../e2e/testdata/test-human-delete-simple.stdout.golden | 2 +- internal/e2e/testdata/test-human-get-simple.stdout.golden | 2 +- .../e2e/testdata/test-human-list-simple.stdout.golden | 6 +++--- .../test-human-update-multiple-args.stdout.golden | 2 +- .../testdata/test-human-update-single-arg.stdout.golden | 2 +- .../test-create-server-simple-default.stdout.golden | 4 ++-- .../v1/testdata/test-get-server-simple.stdout.golden | 8 ++++---- .../v1/testdata/test-image-create-simple.stdout.golden | 2 +- .../v1/testdata/test-list-server-simple.stdout.golden | 2 +- .../v1/testdata/test-server-update-simple.stdout.golden | 4 ++-- 12 files changed, 19 insertions(+), 19 deletions(-) diff --git a/internal/e2e/testdata/test-human-create-simple.stdout.golden b/internal/e2e/testdata/test-human-create-simple.stdout.golden index 188b9abad2..eeb3f28675 100644 --- a/internal/e2e/testdata/test-human-create-simple.stdout.golden +++ b/internal/e2e/testdata/test-human-create-simple.stdout.golden @@ -11,5 +11,5 @@ hair-count 0 is-happy false eyes-color unknown status stopped -name +name - region fr-par diff --git a/internal/e2e/testdata/test-human-create-with-args.stdout.golden b/internal/e2e/testdata/test-human-create-with-args.stdout.golden index 4dccc0afd6..d9a3d3be63 100644 --- a/internal/e2e/testdata/test-human-create-with-args.stdout.golden +++ b/internal/e2e/testdata/test-human-create-with-args.stdout.golden @@ -11,5 +11,5 @@ hair-count 9223372036854775808 is-happy true eyes-color amber status stopped -name +name - region fr-par diff --git a/internal/e2e/testdata/test-human-delete-simple.stdout.golden b/internal/e2e/testdata/test-human-delete-simple.stdout.golden index 27717de5cd..96cb9218c3 100644 --- a/internal/e2e/testdata/test-human-delete-simple.stdout.golden +++ b/internal/e2e/testdata/test-human-delete-simple.stdout.golden @@ -11,5 +11,5 @@ hair-count 9223372036854775809 is-happy true eyes-color blue status stopped -name +name - region fr-par diff --git a/internal/e2e/testdata/test-human-get-simple.stdout.golden b/internal/e2e/testdata/test-human-get-simple.stdout.golden index 27717de5cd..96cb9218c3 100644 --- a/internal/e2e/testdata/test-human-get-simple.stdout.golden +++ b/internal/e2e/testdata/test-human-get-simple.stdout.golden @@ -11,5 +11,5 @@ hair-count 9223372036854775809 is-happy true eyes-color blue status stopped -name +name - region fr-par diff --git a/internal/e2e/testdata/test-human-list-simple.stdout.golden b/internal/e2e/testdata/test-human-list-simple.stdout.golden index 289c410396..e0365d651a 100644 --- a/internal/e2e/testdata/test-human-list-simple.stdout.golden +++ b/internal/e2e/testdata/test-human-list-simple.stdout.golden @@ -1,4 +1,4 @@ ID ORGANIZATION ID CREATED AT UPDATED AT HEIGHT SHOE SIZE ALTITUDE IN METER ALTITUDE IN MILLIMETER FINGERS COUNT HAIR COUNT IS HAPPY EYES COLOR STATUS NAME REGION -0194fdc2-fa2f-fcc0-41d3-ff12045b73c8 11111111-1111-1111-1111-111111111111 few seconds ago few seconds ago 0 0 0 0 0 0 false unknown stopped fr-par -62a5eee8-2abd-f44a-2d0b-75fb180daf48 11111111-1111-1111-1111-111111111111 few seconds ago few seconds ago 0 0 0 0 0 0 false unknown stopped fr-par -39465185-0fd4-a178-892e-e285ece15114 11111111-1111-1111-1111-111111111111 few seconds ago few seconds ago 0 0 0 0 0 0 false unknown stopped fr-par +0194fdc2-fa2f-fcc0-41d3-ff12045b73c8 11111111-1111-1111-1111-111111111111 few seconds ago few seconds ago 0 0 0 0 0 0 false unknown stopped - fr-par +62a5eee8-2abd-f44a-2d0b-75fb180daf48 11111111-1111-1111-1111-111111111111 few seconds ago few seconds ago 0 0 0 0 0 0 false unknown stopped - fr-par +39465185-0fd4-a178-892e-e285ece15114 11111111-1111-1111-1111-111111111111 few seconds ago few seconds ago 0 0 0 0 0 0 false unknown stopped - fr-par diff --git a/internal/e2e/testdata/test-human-update-multiple-args.stdout.golden b/internal/e2e/testdata/test-human-update-multiple-args.stdout.golden index 0352476d26..7c1a577724 100644 --- a/internal/e2e/testdata/test-human-update-multiple-args.stdout.golden +++ b/internal/e2e/testdata/test-human-update-multiple-args.stdout.golden @@ -11,5 +11,5 @@ hair-count 9223372036854775809 is-happy true eyes-color blue status stopped -name +name - region fr-par diff --git a/internal/e2e/testdata/test-human-update-single-arg.stdout.golden b/internal/e2e/testdata/test-human-update-single-arg.stdout.golden index febd2e5f46..d31e4d75c7 100644 --- a/internal/e2e/testdata/test-human-update-single-arg.stdout.golden +++ b/internal/e2e/testdata/test-human-update-single-arg.stdout.golden @@ -11,5 +11,5 @@ hair-count 9223372036854775808 is-happy false eyes-color amber status stopped -name +name - region fr-par diff --git a/internal/namespaces/instance/v1/testdata/test-create-server-simple-default.stdout.golden b/internal/namespaces/instance/v1/testdata/test-create-server-simple-default.stdout.golden index 47c92c9620..6864847529 100644 --- a/internal/namespaces/instance/v1/testdata/test-create-server-simple-default.stdout.golden +++ b/internal/namespaces/instance/v1/testdata/test-create-server-simple-default.stdout.golden @@ -15,7 +15,7 @@ image.creation-date few seconds ago image.modification-date few seconds ago image.default-bootscript x86_64 mainline 4.9.93 rev1 image.extra-volumes 0 -image.from-server +image.from-server - image.organization 51b656e3-4865-41e8-adbc-0c45bdd780db image.public true image.root-volume dd5f5c10-23b1-4c9c-8445-eb6740957c84 @@ -32,6 +32,6 @@ boot-type local volumes 1 security-group.id 980142a3-a959-4aee-8325-91a6ba787439 security-group.name Default security group -state-detail +state-detail - arch x86_64 zone fr-par-1 diff --git a/internal/namespaces/instance/v1/testdata/test-get-server-simple.stdout.golden b/internal/namespaces/instance/v1/testdata/test-get-server-simple.stdout.golden index b41282c6fb..3191ff98c5 100644 --- a/internal/namespaces/instance/v1/testdata/test-get-server-simple.stdout.golden +++ b/internal/namespaces/instance/v1/testdata/test-get-server-simple.stdout.golden @@ -16,7 +16,7 @@ image.creation-date few seconds ago image.modification-date few seconds ago image.default-bootscript x86_64 mainline 4.9.93 rev1 image.extra-volumes 0 -image.from-server +image.from-server - image.organization 51b656e3-4865-41e8-adbc-0c45bdd780db image.public true image.root-volume dd5f5c10-23b1-4c9c-8445-eb6740957c84 @@ -33,7 +33,7 @@ boot-type local volumes 1 security-group.id e5bf4522-94b4-4933-bebb-9b21f786b4af security-group.name Default security group -state-detail +state-detail - arch x86_64 zone fr-par-1 @@ -45,7 +45,7 @@ creation-date few seconds ago modification-date few seconds ago default-bootscript x86_64 mainline 4.9.93 rev1 extra-volumes 0 -from-server +from-server - organization 51b656e3-4865-41e8-adbc-0c45bdd780db public true root-volume dd5f5c10-23b1-4c9c-8445-eb6740957c84 @@ -57,4 +57,4 @@ Server - Allowed Actions: Volumes: ID NAME EXPORT URI SIZE VOLUME TYPE CREATION DATE MODIFICATION DATE ORGANIZATION STATE ZONE -db2275ad-aed3-4150-a106-0044e86b1e6b snapshot-de728daa-0bf6-4c64-abf5-a9477e791c83-2019-03-05_10:13 20 GB l_ssd few seconds ago few seconds ago 14d2f7ae-9775-414c-9bed-6810e060d500 available fr-par-1 +db2275ad-aed3-4150-a106-0044e86b1e6b snapshot-de728daa-0bf6-4c64-abf5-a9477e791c83-2019-03-05_10:13 - 20 GB l_ssd few seconds ago few seconds ago 14d2f7ae-9775-414c-9bed-6810e060d500 available fr-par-1 diff --git a/internal/namespaces/instance/v1/testdata/test-image-create-simple.stdout.golden b/internal/namespaces/instance/v1/testdata/test-image-create-simple.stdout.golden index 9733e0e60c..8753dc8881 100644 --- a/internal/namespaces/instance/v1/testdata/test-image-create-simple.stdout.golden +++ b/internal/namespaces/instance/v1/testdata/test-image-create-simple.stdout.golden @@ -4,7 +4,7 @@ arch x86_64 creation-date few seconds ago modification-date few seconds ago extra-volumes 0 -from-server +from-server - organization aba2d0d0-b01d-4d88-b322-935edc96d0fd public false root-volume 26a882cd-62d5-47d6-b52f-c3e677c806b5 diff --git a/internal/namespaces/instance/v1/testdata/test-list-server-simple.stdout.golden b/internal/namespaces/instance/v1/testdata/test-list-server-simple.stdout.golden index 1a5097eef2..fb8f8aa43d 100644 --- a/internal/namespaces/instance/v1/testdata/test-list-server-simple.stdout.golden +++ b/internal/namespaces/instance/v1/testdata/test-list-server-simple.stdout.golden @@ -1,2 +1,2 @@ ID NAME STATE ZONE PUBLIC IP PRIVATE IP IMAGE NAME TAGS MODIFICATION DATE CREATION DATE IMAGE ID PROTECTED VOLUMES SECURITY GROUP ID SECURITY GROUP NAME STATE DETAIL ARCH -18e19087-4435-420b-abf7-a47c50a77fe7 cli-srv-mystifying-brattain archived fr-par-1 163.172.170.53 Ubuntu Bionic Beaver [] few seconds ago few seconds ago f974feac-abae-4365-b988-8ec7d1cec10d false 1 49822f6c-1d32-465c-a017-720691d159b2 Default security group x86_64 +18e19087-4435-420b-abf7-a47c50a77fe7 cli-srv-mystifying-brattain archived fr-par-1 163.172.170.53 Ubuntu Bionic Beaver [] few seconds ago few seconds ago f974feac-abae-4365-b988-8ec7d1cec10d false 1 49822f6c-1d32-465c-a017-720691d159b2 Default security group - x86_64 diff --git a/internal/namespaces/instance/v1/testdata/test-server-update-simple.stdout.golden b/internal/namespaces/instance/v1/testdata/test-server-update-simple.stdout.golden index 64ea45cff3..0daaba72b0 100644 --- a/internal/namespaces/instance/v1/testdata/test-server-update-simple.stdout.golden +++ b/internal/namespaces/instance/v1/testdata/test-server-update-simple.stdout.golden @@ -15,7 +15,7 @@ server.image.creation-date few seconds ago server.image.modification-date few seconds ago server.image.default-bootscript x86_64 mainline 4.9.93 rev1 server.image.extra-volumes 0 -server.image.from-server +server.image.from-server - server.image.organization 51b656e3-4865-41e8-adbc-0c45bdd780db server.image.public true server.image.root-volume dd5f5c10-23b1-4c9c-8445-eb6740957c84 @@ -32,6 +32,6 @@ server.boot-type local server.volumes 1 server.security-group.id e5bf4522-94b4-4933-bebb-9b21f786b4af server.security-group.name Default security group -server.state-detail +server.state-detail - server.arch x86_64 server.zone fr-par-1