Here we check the validation of the timeout field of the cram stanza. First we check the version guard. $ cat > dune-project < (lang dune 3.19) > EOF $ cat > dune < (cram > (timeout 1)) > EOF $ dune build File "dune", line 2, characters 1-12: 2 | (timeout 1)) ^^^^^^^^^^^ Error: 'timeout' is only available since version 3.20 of the dune language. Please update your dune-project file to have (lang dune 3.20). [1] Next we check some invalid values: $ cat > dune-project < (lang dune 3.20) > EOF $ cat > test.t < $ echo hi > EOF Negative values fail immediately. $ cat > dune < (cram > (timeout -1.0)) > EOF $ dune test test.t File "dune", line 2, characters 10-14: 2 | (timeout -1.0)) ^^^^ Error: Timeout value must be a non-negative float. [1] Checking some currently accepted float values: $ test() { > echo "(cram (timeout $1))" > dune > dune build > } $ test -1 File "dune", line 1, characters 15-17: 1 | (cram (timeout -1)) ^^ Error: Timeout value must be a non-negative float. [1] $ test Inf $ test +Inf $ test -Inf File "dune", line 1, characters 15-19: 1 | (cram (timeout -Inf)) ^^^^ Error: Timeout value must be a non-negative float. [1] $ test nan File "dune", line 1, characters 15-18: 1 | (cram (timeout nan)) ^^^ Error: Timeout value must be a non-negative float. [1] $ test .5 $ test 0. $ test 1. $ test 1.0e1 $ test 1e1 $ test 1e-1 $ test 1e+1 $ test 1e308 $ test 1e-324 Invalid values should be vetted correctly: $ test File "dune", line 1, characters 6-16: 1 | (cram (timeout )) ^^^^^^^^^^ Error: Not enough arguments for "timeout" [1] $ test foo File "dune", line 1, characters 15-18: 1 | (cram (timeout foo)) ^^^ Error: Float expected [1] $ test --1 File "dune", line 1, characters 15-18: 1 | (cram (timeout --1)) ^^^ Error: Float expected [1] $ test 1..0 File "dune", line 1, characters 15-19: 1 | (cram (timeout 1..0)) ^^^^ Error: Float expected [1] $ test 1e File "dune", line 1, characters 15-17: 1 | (cram (timeout 1e)) ^^ Error: Float expected [1] $ test 1.0.0 File "dune", line 1, characters 15-20: 1 | (cram (timeout 1.0.0)) ^^^^^ Error: Float expected [1]