syscalls: 'interface-address' can return #f.

Fixes <http://bugs.gnu.org/22612>.
Reported by Danny Milosavljevic <dannym@scratchpost.org>.

* tests/syscalls.scm ("network-interfaces returns one or more
interfaces"): Accept 'interface-address' value of #f.
This commit is contained in:
Ludovic Courtès 2016-03-25 17:29:36 +01:00
parent 001dae0d74
commit 7adbe85e60
1 changed files with 6 additions and 2 deletions

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 David Thompson <davet@gnu.org> ;;; Copyright © 2015 David Thompson <davet@gnu.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
@ -223,7 +223,11 @@
((interfaces ..1) ((interfaces ..1)
(list (every interface? interfaces) (list (every interface? interfaces)
(every string? (map interface-name interfaces)) (every string? (map interface-name interfaces))
(every vector? (map interface-address interfaces)))))) (every (lambda (sockaddr)
;; Sometimes interfaces have no associated address.
(or (vector? sockaddr)
(not sockaddr)))
(map interface-address interfaces))))))
(test-equal "network-interfaces returns \"lo\"" (test-equal "network-interfaces returns \"lo\""
(list #t (make-socket-address AF_INET (inet-pton AF_INET "127.0.0.1") 0)) (list #t (make-socket-address AF_INET (inet-pton AF_INET "127.0.0.1") 0))