From 9e74f2d6c8e7b010001f2feb037cd885b1d3cbd0 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Mon, 29 Jun 2020 13:15:24 -0600 Subject: [PATCH] test: avoid too-large number on 32-bit CS --- .../racket-test-core/tests/racket/number.rktl | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/pkgs/racket-test-core/tests/racket/number.rktl b/pkgs/racket-test-core/tests/racket/number.rktl index a46c21fb8b..dc0b085774 100644 --- a/pkgs/racket-test-core/tests/racket/number.rktl +++ b/pkgs/racket-test-core/tests/racket/number.rktl @@ -2915,16 +2915,20 @@ (test 121 integer-length (+ (expt 2 120) 1)) (define (avoid-big-allocation?) - ;; A Raspberry Pi running Linux is a likely too-small device, - ;; so at least detect that one: - (and (file-exists? "/proc/meminfo") - (call-with-input-file* - "/proc/meminfo" - (lambda (i) - (define m (regexp-match #rx"MemTotal: +([0-9]+) kB" i)) - (and m - (< (string->number (bytes->string/utf-8 (cadr m))) - (* 1.5 1024 1024))))))) + (or + ;; A Raspberry Pi running Linux is a likely too-small device, + ;; so at least detect that one: + (and (file-exists? "/proc/meminfo") + (call-with-input-file* + "/proc/meminfo" + (lambda (i) + (define m (regexp-match #rx"MemTotal: +([0-9]+) kB" i)) + (and m + (< (string->number (bytes->string/utf-8 (cadr m))) + (* 1.5 1024 1024)))))) + ;; If (sub1 (expt 2 31)) is a bignum, then `expt` will likely give + ;; up + (not (fixnum? (sub1 (expt 2 31)))))) (unless (avoid-big-allocation?) ; don't attempt to print numbers that are billions of bits long