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.
This commit is contained in:
Ludovic Courtès 2020-02-23 12:42:58 +01:00
parent 9f2fef4fb1
commit fa99c4bbc7
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
2 changed files with 7 additions and 2 deletions

View 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))))

View 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 ()