Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support marshalling a null URI #90

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

YuviGold
Copy link

@YuviGold YuviGold commented Oct 1, 2021

Currently, in case trying to marshal a null URI struct, it tries to call
u.String() function and panics.
The marshal behavior should match the unmarshal behavior and return a
null bytes array.

Before changing the scalar.go module, the new test scenario of a nil URI would panic

Stacktrace (click to expand)
--- FAIL: TestURI_MarshalJSON (0.00s)
panic: runtime error: invalid memory address or nil pointer dereference [recovered]
	panic: runtime error: invalid memory address or nil pointer dereference [recovered]
	panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x8 pc=0x5c948a]

goroutine 12 [running]:
testing.tRunner.func1.2(0x6f4160, 0x937ed0)
	/usr/lib/golang/src/testing/testing.go:1143 +0x332
testing.tRunner.func1(0xc00016a600)
	/usr/lib/golang/src/testing/testing.go:1146 +0x4b6
panic(0x6f4160, 0x937ed0)
	/usr/lib/golang/src/runtime/panic.go:965 +0x1b9
encoding/json.(*encodeState).marshal.func1(0xc00005fde8)
	/usr/lib/golang/src/encoding/json/encode.go:328 +0x8d
panic(0x6f4160, 0x937ed0)
	/usr/lib/golang/src/runtime/panic.go:965 +0x1b9
net/url.(*URL).String(0x0, 0xc00005fc28, 0x40d765)
	/usr/lib/golang/src/net/url/url.go:813 +0x4a
github.com/shurcooL/githubv4.URI.MarshalJSON(0x0, 0x734de0, 0x0, 0x7f9358c93a18, 0x0, 0x1)
	/home/yuvalg/work/github/githubv4/scalar.go:80 +0x2f
encoding/json.marshalerEncoder(0xc00014e080, 0x734de0, 0x0, 0x19, 0xc000000100)
	/usr/lib/golang/src/encoding/json/encode.go:479 +0xad
encoding/json.condAddrEncoder.encode(0x760d40, 0x760d98, 0xc00014e080, 0x734de0, 0x0, 0x19, 0x730100)
	/usr/lib/golang/src/encoding/json/encode.go:961 +0xb2
encoding/json.(*encodeState).reflectValue(0xc00014e080, 0x734de0, 0x0, 0x19, 0xc000040100)
	/usr/lib/golang/src/encoding/json/encode.go:360 +0x82
encoding/json.(*encodeState).marshal(0xc00014e080, 0x734de0, 0x0, 0xc000150100, 0x0, 0x0)
	/usr/lib/golang/src/encoding/json/encode.go:332 +0xf9
encoding/json.Marshal(0x734de0, 0x0, 0x7ed6e5, 0x26, 0x438, 0x4f4f60, 0x8cc078)
	/usr/lib/golang/src/encoding/json/encode.go:161 +0x52
github.com/shurcooL/githubv4_test.TestURI_MarshalJSON(0xc00016a600)
	/home/yuvalg/work/github/githubv4/scalar_test.go:30 +0x158
testing.tRunner(0xc00016a600, 0x760f98)
	/usr/lib/golang/src/testing/testing.go:1193 +0xef
created by testing.(*T).Run
	/usr/lib/golang/src/testing/testing.go:1238 +0x2b3
FAIL	github.com/shurcooL/githubv4	0.005s
?   	github.com/shurcooL/githubv4/example/githubv4dev	[no test files]

=== Failed
=== FAIL: . TestURI_MarshalJSON (0.00s)

Currently in case trying to marshal a null URI struct, it tries to call
`u.String()` function and panics.
The marshal behavior should match the unmarshal behavior and return a
`null` bytes array.
@YuviGold
Copy link
Author

YuviGold commented Oct 1, 2021

cc @dmitshur

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant