diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/http.scm | 61 |
1 files changed, 46 insertions, 15 deletions
diff --git a/tests/http.scm b/tests/http.scm index 4d278d7..4c5214d 100644 --- a/tests/http.scm +++ b/tests/http.scm @@ -1,5 +1,6 @@ ;;; http.scm -- tests for (cuirass http) module ;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org> +;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of Cuirass. ;;; @@ -17,24 +18,54 @@ ;;; along with Cuirass. If not, see <http://www.gnu.org/licenses/>. (use-modules (cuirass http) + (json) + (srfi srfi-1) (srfi srfi-64)) +(define (hash-table-keys table) + (hash-fold (lambda (key value rest) + (cons key rest)) + '() + table)) + +(define (hash-table=? t1 t2) + (and (lset= equal? + (hash-table-keys t1) + (hash-table-keys t2)) + (hash-fold (lambda (key value result) + (and result + (let ((equal? (if (hash-table? value) + hash-table=? + equal?))) + (equal? value + (hash-ref t2 key))))) + #t + t1))) + (test-begin "http") -(test-equal "spec->json-string" - (string-append "{" - "\"boolean\" : false," - "\"string\" : \"guix\"," - "\"alist\" : {\"subset\" : \"hello\"}," - "\"list\" : [1, \"2\", \"three\"]," - "\"symbol\" : \"hydra-jobs\"," - "\"number\" : 1" - "}") - (spec->json-string '((#:number . 1) - (string . "guix") - ("symbol" . hydra-jobs) - (#:alist (subset . "hello")) - (list 1 "2" #:three) - ("boolean" . #f)))) +(test-assert "spec->json-string" + ;; Note: We cannot compare the strings directly because field ordering + ;; depends on the hash algorithm used in Guile's hash tables, and that + ;; algorithm changed in Guile 2.2. + (hash-table=? + (call-with-input-string + (string-append "{" + "\"boolean\" : false," + "\"string\" : \"guix\"," + "\"alist\" : {\"subset\" : \"hello\"}," + "\"list\" : [1, \"2\", \"three\"]," + "\"symbol\" : \"hydra-jobs\"," + "\"number\" : 1" + "}") + json->scm) + (call-with-input-string + (spec->json-string '((#:number . 1) + (string . "guix") + ("symbol" . hydra-jobs) + (#:alist (subset . "hello")) + (list 1 "2" #:three) + ("boolean" . #f))) + json->scm))) (test-end) |