Skip to content
This repository was archived by the owner on Jun 10, 2024. It is now read-only.

Commit 2913794

Browse files
committed
Don't randomize arity for apply/2 non-empty arguments
Randomizing led to Alloc too easily, so fix the arity to 1 and the incorrect arguments length to 2.
1 parent 82efe3c commit 2913794

File tree

1 file changed

+15
-50
lines changed

1 file changed

+15
-50
lines changed

lumen_runtime/src/otp/erlang/apply_2/test/with_function/with_non_empty_proper_list_arguments.rs

+15-50
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,14 @@
11
use super::*;
22

3-
use std::ops::RangeInclusive;
43
use std::sync::Arc;
54

6-
use proptest::collection::SizeRange;
75
use proptest::strategy::{Just, Strategy};
86

97
use liblumen_alloc::badarity;
108
use liblumen_alloc::erts::process::code::Code;
119
use liblumen_alloc::erts::process::Process;
1210
use liblumen_alloc::erts::ModuleFunctionArity;
1311

14-
use crate::process::spawn::options::Options;
1512
use crate::test::strategy::term::closure;
1613

1714
#[test]
@@ -21,62 +18,30 @@ fn without_arity_errors_badarg() {
2118
&strategy::process()
2219
.prop_flat_map(|arc_process| {
2320
(
24-
Just(arc_process),
21+
Just(arc_process.clone()),
2522
module_function_arity::module(),
2623
module_function_arity::function(),
27-
1_u8..=255_u8,
28-
)
29-
})
30-
.prop_flat_map(|(arc_process, module, function, arity)| {
31-
(
32-
Just(arc_process.clone()),
33-
Just(module),
34-
Just(function),
35-
Just(arity.clone()),
36-
(Just(arc_process), module_function_arity::arity())
37-
.prop_filter(
38-
"Arguments arity cannot match function arity",
39-
move |(_, list_arity)| *list_arity != arity,
40-
)
41-
.prop_flat_map(|(arc_process, list_arity)| {
42-
let range_inclusive: RangeInclusive<usize> =
43-
(list_arity as usize)..=(list_arity as usize);
44-
let size_range: SizeRange = range_inclusive.into();
45-
46-
(
47-
Just(arc_process.clone()),
48-
proptest::collection::vec(
49-
strategy::term(arc_process.clone()),
50-
size_range,
51-
),
52-
)
53-
.prop_map(
54-
|(arc_process, vec)| {
55-
arc_process.list_from_slice(&vec).unwrap()
56-
},
57-
)
58-
}),
24+
strategy::term(arc_process.clone()),
25+
strategy::term(arc_process),
5926
)
6027
})
61-
.prop_map(|(arc_process, module, function, arity, arguments)| {
62-
(
63-
arc_process.clone(),
64-
closure(&arc_process.clone(), module, function, arity),
65-
arguments,
66-
)
67-
}),
28+
.prop_map(
29+
|(arc_process, module, function, first_argument, second_argument)| {
30+
(
31+
arc_process.clone(),
32+
closure(&arc_process.clone(), module, function, 1),
33+
arc_process
34+
.list_from_slice(&[first_argument, second_argument])
35+
.unwrap(),
36+
)
37+
},
38+
),
6839
|(arc_process, function, arguments)| {
69-
let size_in_words = function.size_in_words() + arguments.size_in_words();
70-
let options = Options {
71-
min_heap_size: Some(size_in_words),
72-
..Default::default()
73-
};
74-
7540
let Ready {
7641
arc_process: child_arc_process,
7742
result,
7843
} = run_until_ready(
79-
options,
44+
Default::default(),
8045
|child_process| {
8146
let child_function = function.clone_to_process(child_process);
8247
let child_arguments = arguments.clone_to_process(child_process);

0 commit comments

Comments
 (0)