From acd627fa46fd496443ca2196d2d7e44787d66bdf Mon Sep 17 00:00:00 2001 From: Emily Date: Thu, 14 Aug 2025 17:15:17 +0100 Subject: [PATCH] tests/functional/lang: Add tests for `builtins.fromTOML` overflow This adds regression tests for fromTOML overflow/underflow behavior. Previous versions of toml11 used to saturate, but this was never an intended behavior (and Snix/Nix 2.3/toml11 >= 4.0 validate this). (cherry picked from Lix [1,2]) [1]: https://git.lix.systems/lix-project/lix/commit/7ee442079dfbae4fe2d2fbb91a7226b87251cd65 [2]: https://git.lix.systems/lix-project/lix/commit/4de09b6b5493db4bd7f6348255a1fdcb38b9ed2f --- .../lang/eval-fail-fromTOML-overflow.err.exp | 13 +++++++++++++ .../functional/lang/eval-fail-fromTOML-overflow.nix | 1 + .../lang/eval-fail-fromTOML-underflow.err.exp | 13 +++++++++++++ .../lang/eval-fail-fromTOML-underflow.nix | 1 + 4 files changed, 28 insertions(+) create mode 100644 tests/functional/lang/eval-fail-fromTOML-overflow.err.exp create mode 100644 tests/functional/lang/eval-fail-fromTOML-overflow.nix create mode 100644 tests/functional/lang/eval-fail-fromTOML-underflow.err.exp create mode 100644 tests/functional/lang/eval-fail-fromTOML-underflow.nix diff --git a/tests/functional/lang/eval-fail-fromTOML-overflow.err.exp b/tests/functional/lang/eval-fail-fromTOML-overflow.err.exp new file mode 100644 index 000000000..14b0e31c1 --- /dev/null +++ b/tests/functional/lang/eval-fail-fromTOML-overflow.err.exp @@ -0,0 +1,13 @@ +error: + … while calling the 'fromTOML' builtin + at /pwd/lang/eval-fail-fromTOML-overflow.nix:1:1: + 1| builtins.fromTOML ''attr = 9223372036854775808'' + | ^ + 2| + + error: while parsing TOML: [error] toml::parse_dec_integer: too large integer: current max digits = 2^63 + --> fromTOML + | + 1 | attr = 9223372036854775808 + | ^-- must be < 2^63 + diff --git a/tests/functional/lang/eval-fail-fromTOML-overflow.nix b/tests/functional/lang/eval-fail-fromTOML-overflow.nix new file mode 100644 index 000000000..17f0448b3 --- /dev/null +++ b/tests/functional/lang/eval-fail-fromTOML-overflow.nix @@ -0,0 +1 @@ +builtins.fromTOML ''attr = 9223372036854775808'' diff --git a/tests/functional/lang/eval-fail-fromTOML-underflow.err.exp b/tests/functional/lang/eval-fail-fromTOML-underflow.err.exp new file mode 100644 index 000000000..28f1079dc --- /dev/null +++ b/tests/functional/lang/eval-fail-fromTOML-underflow.err.exp @@ -0,0 +1,13 @@ +error: + … while calling the 'fromTOML' builtin + at /pwd/lang/eval-fail-fromTOML-underflow.nix:1:1: + 1| builtins.fromTOML ''attr = -9223372036854775809'' + | ^ + 2| + + error: while parsing TOML: [error] toml::parse_dec_integer: too large integer: current max digits = 2^63 + --> fromTOML + | + 1 | attr = -9223372036854775809 + | ^-- must be < 2^63 + diff --git a/tests/functional/lang/eval-fail-fromTOML-underflow.nix b/tests/functional/lang/eval-fail-fromTOML-underflow.nix new file mode 100644 index 000000000..923fdf354 --- /dev/null +++ b/tests/functional/lang/eval-fail-fromTOML-underflow.nix @@ -0,0 +1 @@ +builtins.fromTOML ''attr = -9223372036854775809''