aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Högberg <[email protected]>2018-02-28 09:09:28 +0100
committerJohn Högberg <[email protected]>2018-02-28 09:09:28 +0100
commitdb8ad9dbc43669a134ce515a23ba6f8881b8a4a8 (patch)
treec7bf8bb0b05a5e833af0902d2d3c0ef513879c71
parentabe17be1e6f2ab51606c6a3b19d6a16a429f95a8 (diff)
parent3f79a3d1b490e829403529fd245ab8d5120d5e0e (diff)
downloadotp-db8ad9dbc43669a134ce515a23ba6f8881b8a4a8.tar.gz
otp-db8ad9dbc43669a134ce515a23ba6f8881b8a4a8.tar.bz2
otp-db8ad9dbc43669a134ce515a23ba6f8881b8a4a8.zip
Merge branch 'john/stdlib/regex-test-stability' into maint
* john/stdlib/regex-test-stability: Make re_SUITE:sub_binaries less unstable
-rw-r--r--lib/stdlib/test/re_SUITE.erl15
1 files changed, 9 insertions, 6 deletions
diff --git a/lib/stdlib/test/re_SUITE.erl b/lib/stdlib/test/re_SUITE.erl
index 71f86e32e5..7b82647416 100644
--- a/lib/stdlib/test/re_SUITE.erl
+++ b/lib/stdlib/test/re_SUITE.erl
@@ -894,10 +894,13 @@ match_limit(Config) when is_list(Config) ->
%% Test that we get sub-binaries if subject is a binary and we capture
%% binaries.
sub_binaries(Config) when is_list(Config) ->
- Bin = list_to_binary(lists:seq(1,255)),
- {match,[B,C]}=re:run(Bin,"(a)",[{capture,all,binary}]),
- 255 = binary:referenced_byte_size(B),
- 255 = binary:referenced_byte_size(C),
- {match,[D]}=re:run(Bin,"(a)",[{capture,[1],binary}]),
- 255 = binary:referenced_byte_size(D),
+ %% The GC can auto-convert tiny sub-binaries to heap binaries, so we
+ %% extract large sequences to make the test more stable.
+ Bin = << <<I>> || I <- lists:seq(1, 4096) >>,
+ {match,[B,C]}=re:run(Bin,"a(.+)$",[{capture,all,binary}]),
+ true = byte_size(B) =/= byte_size(C),
+ 4096 = binary:referenced_byte_size(B),
+ 4096 = binary:referenced_byte_size(C),
+ {match,[D]}=re:run(Bin,"a(.+)$",[{capture,[1],binary}]),
+ 4096 = binary:referenced_byte_size(D),
ok.