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 \"1MiB\", to a number of bytes. Raise an error if STR could not be
interpreted." interpreted."
(define unit-pos (define unit-pos
(string-rindex str char-set:digit)) (string-rindex str
(char-set-union (char-set #\.) char-set:digit)))
(define unit (define unit
(and unit-pos (substring str (+ 1 unit-pos)))) (and unit-pos (substring str (+ 1 unit-pos))))

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; 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. ;;; This file is part of GNU Guix.
;;; ;;;
@ -227,6 +227,10 @@ Second line" 24))
(expt 2 40) (expt 2 40)
(size->number "1T")) (size->number "1T"))
(test-equal "size->number, 1.M"
(expt 2 20)
(size->number "1.M"))
(test-assert "size->number, invalid unit" (test-assert "size->number, invalid unit"
(catch 'quit (catch 'quit
(lambda () (lambda ()