1
0
mirror of https://github.com/golang/go synced 2024-11-18 05:54:49 -07:00
go/src/testing
Håvard Haugen 74245b0353 testing/quick: terminate for arbitrary recursive types
Recursive types R containing slices of R's did not terminate despite the
effort in CL 10821.

For recursive types there was a competition between slice expansion by a
factor 'complexSize', and termination with probability '1/complexSize'
which lead to stack overflow as soon as a recursive struct had slices
pointing to its own type.

Fix this by shrinking the size hint as a function of recursion depth.
This has the dual effect of reducing the number of elements generated
per slice and also increasing the probability for termination.

Fixes #11148.

Change-Id: Ib61155b4f2e2de3873d508d63a1f4be759426d67
Reviewed-on: https://go-review.googlesource.com/13830
Reviewed-by: Adam Langley <agl@golang.org>
2015-08-29 19:23:37 +00:00
..
iotest
quick testing/quick: terminate for arbitrary recursive types 2015-08-29 19:23:37 +00:00
allocs_test.go
allocs.go
benchmark_test.go
benchmark.go
cover.go
example.go
export_test.go
testing_test.go
testing.go runtime/trace: add new package 2015-07-22 15:47:16 +00:00