diff options
author | Ludovic Courtès <ludo@gnu.org> | 2020-02-23 12:42:58 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2020-02-23 12:47:13 +0100 |
commit | fa99c4bbc7acdb8def9ce14a05aacb73f99fe3b1 (patch) | |
tree | 953d26ba2fc7e05c0b04ab45cb0fed8b0a1d25b9 | |
parent | 9f2fef4fb164df81034c2b114292d836a9f6d4f8 (diff) | |
download | guix-fa99c4bbc7acdb8def9ce14a05aacb73f99fe3b1.tar guix-fa99c4bbc7acdb8def9ce14a05aacb73f99fe3b1.tar.gz |
ui: (size->number "1.M") is correctly parsed.
Reported by Pierre Neidhardt <mail@ambrevar.xyz>.
* guix/ui.scm (size->number)[unit-pos]: Add #\. to CHAR-SET:DIGIT.
* tests/ui.scm ("size->number, 1.M"): New test.
-rw-r--r-- | guix/ui.scm | 3 | ||||
-rw-r--r-- | tests/ui.scm | 6 |
2 files changed, 7 insertions, 2 deletions
diff --git a/guix/ui.scm b/guix/ui.scm index dce97fb7b9..db932ecacb 100644 --- a/guix/ui.scm +++ b/guix/ui.scm @@ -591,7 +591,8 @@ nicely." \"1MiB\", to a number of bytes. Raise an error if STR could not be interpreted." (define unit-pos - (string-rindex str char-set:digit)) + (string-rindex str + (char-set-union (char-set #\.) char-set:digit))) (define unit (and unit-pos (substring str (+ 1 unit-pos)))) diff --git a/tests/ui.scm b/tests/ui.scm index d8573e88d8..05eace6721 100644 --- a/tests/ui.scm +++ b/tests/ui.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -227,6 +227,10 @@ Second line" 24)) (expt 2 40) (size->number "1T")) +(test-equal "size->number, 1.M" + (expt 2 20) + (size->number "1.M")) + (test-assert "size->number, invalid unit" (catch 'quit (lambda () |