v2 / vlib / v / parser / parse_file_spawn_execute_regression_test.v
32 lines · 29 sloc · 852 bytes · fd504030dfc5085f4509d3d078f6150c38a4aea9
Raw
1import os
2import time
3import v.ast
4import v.parser
5import v.pref
6import v.util
7
8fn run_true_exit_code() int {
9 return os.execute('true').exit_code
10}
11
12fn spawn_execute_elapsed_ms() (i64, int) {
13 sw := time.new_stopwatch()
14 t := spawn run_true_exit_code()
15 exit_code := t.wait()
16 return sw.elapsed().milliseconds(), exit_code
17}
18
19fn test_parse_file_does_not_poison_spawn_execute_on_macos() {
20 $if !macos {
21 return
22 }
23 util.timing_set_should_print(false)
24 before_ms, before_exit_code := spawn_execute_elapsed_ms()
25 assert before_exit_code == 0
26 mut table := ast.new_table()
27 prefs := pref.new_preferences()
28 _ := parser.parse_file(@FILE, mut table, .skip_comments, prefs)
29 after_ms, after_exit_code := spawn_execute_elapsed_ms()
30 assert after_exit_code == 0
31 assert after_ms < 5000, 'spawn + os.execute slowed down from ${before_ms}ms to ${after_ms}ms'
32}
33