summaryrefslogtreecommitdiff
path: root/guix/tests.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2015-06-24 15:00:34 +0200
committerLudovic Courtès <ludo@gnu.org>2015-06-24 18:05:03 +0200
commit8de3df72bc96cc3f7739e61699831557852cea6b (patch)
tree54f5b186e73c69d7edef9e75becc4fe7c696bc41 /guix/tests.scm
parent31fbf4b6377d9a1c44eb3230b89f0bac47a202b4 (diff)
tests: Move 'file=?' to (guix tests).
* tests/nar.scm (file-tree-equal?)[file=?]: Move to... * guix/tests.scm (file=?): ... here. New procedure.
Diffstat (limited to 'guix/tests.scm')
-rw-r--r--guix/tests.scm15
1 files changed, 15 insertions, 0 deletions
diff --git a/guix/tests.scm b/guix/tests.scm
index a19eda250c..16b8cc7f8a 100644
--- a/guix/tests.scm
+++ b/guix/tests.scm
@@ -27,10 +27,12 @@
#:use-module (gnu packages bootstrap)
#:use-module (srfi srfi-34)
#:use-module (rnrs bytevectors)
+ #:use-module (rnrs io ports)
#:use-module (web uri)
#:export (open-connection-for-tests
random-text
random-bytevector
+ file=?
network-reachable?
shebang-too-long?
mock
@@ -88,6 +90,19 @@
(loop (1+ i)))
bv))))
+(define (file=? a b)
+ "Return true if files A and B have the same type and same content."
+ (and (eq? (stat:type (lstat a)) (stat:type (lstat b)))
+ (case (stat:type (lstat a))
+ ((regular)
+ (equal?
+ (call-with-input-file a get-bytevector-all)
+ (call-with-input-file b get-bytevector-all)))
+ ((symlink)
+ (string=? (readlink a) (readlink b)))
+ (else
+ (error "what?" (lstat a))))))
+
(define (network-reachable?)
"Return true if we can reach the Internet."
(false-if-exception (getaddrinfo "www.gnu.org" "80" AI_NUMERICSERV)))