ui: (size->number "1.M") is correctly parsed.
authorLudovic Courtès <ludo@gnu.org>
Sun, 23 Feb 2020 11:42:58 +0000 (12:42 +0100)
committerLudovic Courtès <ludo@gnu.org>
Sun, 23 Feb 2020 11:47:13 +0000 (12:47 +0100)
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.

guix/ui.scm
tests/ui.scm

index dce97fb..db932ec 100644 (file)
@@ -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))))
index d8573e8..05eace6 100644 (file)
@@ -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 ()