From dc149c1127c45e889263a3164fa9757f69ceca09 Mon Sep 17 00:00:00 2001 From: aclich Date: Fri, 12 May 2023 12:13:47 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=F0=9F=90=9B=20change=20test=20case=20to?= =?UTF-8?q?=20avoid=20mssql=20driver=20issue?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit change test cases from bytes to string to avoid mssql driver issue --- tests/embedded_struct_test.go | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/tests/embedded_struct_test.go b/tests/embedded_struct_test.go index 08533f31..4314f88c 100644 --- a/tests/embedded_struct_test.go +++ b/tests/embedded_struct_test.go @@ -142,7 +142,7 @@ func TestEmbeddedPointerTypeStruct(t *testing.T) { t.Errorf("Expected to get back a nil Author but got: %v", hnPost.Author) } - now := time.Now() + now := time.Now().Round(time.Second) NewPost := HNPost{ BasePost: &BasePost{Title: "embedded_pointer_type2"}, Author: &Author{ @@ -190,18 +190,26 @@ type Content struct { } func (c Content) Value() (driver.Value, error) { - return json.Marshal(c) + // mssql driver with issue on handling null bytes https://github.com/denisenkom/go-mssqldb/issues/530, + b, err := json.Marshal(c) + return string(b[:]), err } func (c *Content) Scan(src interface{}) error { - b, ok := src.([]byte) - if !ok { - return errors.New("Embedded.Scan byte assertion failed") - } - var value Content - if err := json.Unmarshal(b, &value); err != nil { - return err + str, ok := src.(string) + if !ok { + byt, ok := src.([]byte) + if !ok { + return errors.New("Embedded.Scan byte assertion failed") + } + if err := json.Unmarshal(byt, &value); err != nil { + return err + } + } else { + if err := json.Unmarshal([]byte(str), &value); err != nil { + return err + } } *c = value