]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
guile: Fix tests to match the `exit' behavior introduced in Guile 2.0.1.
authorLudovic Courtès <ludo@gnu.org>
Thu, 28 Apr 2011 17:41:08 +0000 (19:41 +0200)
committerLudovic Courtès <ludo@gnu.org>
Thu, 28 Apr 2011 17:55:48 +0000 (19:55 +0200)
This fix makes tests behave correctly wrt. to the Guile bug fix at
<http://git.sv.gnu.org/cgit/guile.git/commit/?id=e309f3bf9ee910c4772353ca3ff95f6f4ef466b5>.

12 files changed:
guile/modules/Makefile.am
guile/modules/gnutls/build/tests.scm [new file with mode: 0644]
guile/tests/anonymous-auth.scm
guile/tests/errors.scm
guile/tests/openpgp-auth.scm
guile/tests/openpgp-keyring.scm
guile/tests/openpgp-keys.scm
guile/tests/pkcs-import-export.scm
guile/tests/session-record-port.scm
guile/tests/srp-base64.scm
guile/tests/x509-auth.scm
guile/tests/x509-certificates.scm

index c1829ed553cc296930fc3e27589e49c6a6b8adec..d1b1cac8404313fab6ea502862f59e7ab4968568 100644 (file)
@@ -1,5 +1,5 @@
 #  GnuTLS --- Guile bindings for GnuTLS.
-#  Copyright (C) 2007, 2010 Free Software Foundation, Inc.
+#  Copyright (C) 2007, 2010, 2011 Free Software Foundation, Inc.
 #
 #  GnuTLS is free software; you can redistribute it and/or
 #  modify it under the terms of the GNU Lesser General Public
@@ -25,4 +25,5 @@ documentation_modules = system/documentation/README           \
 
 EXTRA_DIST = gnutls/build/enums.scm gnutls/build/smobs.scm     \
             gnutls/build/utils.scm gnutls/build/priorities.scm \
+            gnutls/build/tests.scm                             \
              $(documentation_modules)
diff --git a/guile/modules/gnutls/build/tests.scm b/guile/modules/gnutls/build/tests.scm
new file mode 100644 (file)
index 0000000..ca3985f
--- /dev/null
@@ -0,0 +1,41 @@
+;;; GnuTLS --- Guile bindings for GnuTLS.
+;;; Copyright (C) 2011 Free Software Foundation, Inc.
+;;;
+;;; GnuTLS is free software; you can redistribute it and/or
+;;; modify it under the terms of the GNU Lesser General Public
+;;; License as published by the Free Software Foundation; either
+;;; version 2.1 of the License, or (at your option) any later version.
+;;;
+;;; GnuTLS is distributed in the hope that it will be useful,
+;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;;; Lesser General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU Lesser General Public
+;;; License along with GnuTLS; if not, write to the Free Software
+;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+;;; Written by Ludovic Courtès <ludo@gnu.org>.
+
+(define-module (gnutls build tests)
+  #:export (run-test))
+
+(define (run-test thunk)
+  "Call `(exit (THUNK))'.  If THUNK raises an exception, then call `(exit 1)' and
+display a backtrace.  Otherwise, return THUNK's return value."
+  (exit
+   (catch #t
+     thunk
+     (lambda (key . args)
+       ;; Never reached.
+       (exit 1))
+     (lambda (key . args)
+       (dynamic-wind ;; to be on the safe side
+         (lambda () #t)
+         (lambda ()
+           (format (current-error-port)
+                   "~%throw to `~a' with args ~s~%" key args)
+           (display-backtrace (make-stack #t) (current-output-port)))
+         (lambda ()
+           (exit 1)))
+       (exit 1)))))
index be04fcdeeb5cd133fa0962979565c3de1efb1073..8f5e5ae3a8a4e2e3b79757cf6e5a925475ba3297 100644 (file)
@@ -24,6 +24,7 @@
 ;;;
 
 (use-modules (gnutls)
+             (gnutls build tests)
              (srfi srfi-4))
 
 
 ;; (set-log-procedure! (lambda (level str)
 ;;                       (format #t "[~a|~a] ~a" (getpid) level str)))
 
-(dynamic-wind
-    (lambda ()
-      #t)
-
+(run-test
     (lambda ()
       (let ((socket-pair (socketpair PF_UNIX SOCK_STREAM 0))
             (pid         (primitive-fork)))
@@ -71,7 +69,7 @@
               (record-send client %message)
               (bye client close-request/rdwr)
 
-              (exit))
+              (primitive-exit))
 
             (let ((server (make-session connection-end/server)))
               ;; server-side
               (let* ((buf (make-u8vector (u8vector-length %message)))
                      (amount (record-receive! server buf)))
                 (bye server close-request/rdwr)
-                (exit (= amount (u8vector-length %message))
-                      (equal? buf %message)))))))
-
-    (lambda ()
-      ;; failure
-      (exit 1)))
+                (and (= amount (u8vector-length %message))
+                     (equal? buf %message))))))))
 
 ;;; arch-tag: 8c98de24-0a53-4290-974e-4b071ad162a0
index cec649164904c992d706eb5bfaa21733055e0c54..65b4ae9fa6c2766b9ba2133399a2ddde147adb78 100644 (file)
@@ -1,5 +1,5 @@
 ;;; GnuTLS --- Guile bindings for GnuTLS.
-;;; Copyright (C) 2007, 2010 Free Software Foundation, Inc.
+;;; Copyright (C) 2007, 2010, 2011 Free Software Foundation, Inc.
 ;;;
 ;;; GnuTLS is free software; you can redistribute it and/or
 ;;; modify it under the terms of the GNU Lesser General Public
 ;;; Test the error/exception mechanism.
 ;;;
 
-(use-modules (gnutls))
-
-(dynamic-wind
-    (lambda ()
-      #t)
+(use-modules (gnutls)
+             (gnutls build tests))
 
+(run-test
     (lambda ()
       (let ((s (make-session connection-end/server)))
         (catch 'gnutls-error
           (lambda ()
             (handshake s))
           (lambda (key err function . currently-unused)
-            (exit (and (eq? key 'gnutls-error)
-                       err
-                       (string? (error->string err))
-                       (eq? function 'handshake)))))))
-
-    (lambda ()
-      ;; failure
-      (exit 1)))
+            (and (eq? key 'gnutls-error)
+                 err
+                 (string? (error->string err))
+                 (eq? function 'handshake)))))))
 
 ;;; arch-tag: 73ed6229-378d-4a12-a5c6-4c2586c6e3a2
index 61481830ebd3f7042296242bbcac1644b3564d51..9e3a3e49c7bc389cc66c54dc09cbc74ffe4dbfdc 100644 (file)
@@ -25,6 +25,7 @@
 
 (use-modules (gnutls)
              (gnutls extra)
+             (gnutls build tests)
              (srfi srfi-4))
 
 
 ;; (set-log-procedure! (lambda (level str)
 ;;                       (format #t "[~a|~a] ~a" (getpid) level str)))
 
-(dynamic-wind
-    (lambda ()
-      #t)
-
+(run-test
     (lambda ()
       (let ((socket-pair (socketpair PF_UNIX SOCK_STREAM 0))
             (pub         (import-key import-openpgp-certificate
@@ -87,7 +85,7 @@
                 (write %message (session-record-port client))
                 (bye client close-request/rdwr)
 
-                (exit))
+                (primitive-exit))
 
               (let ((server (make-session connection-end/server))
                     (rsa    (import-rsa-params "rsa-parameters.pem"))
                 (let ((msg (read (session-record-port server)))
                       (auth-type (session-authentication-type server)))
                   (bye server close-request/rdwr)
-                  (exit (and (eq? auth-type credentials/certificate)
-                             (equal? msg %message)))))))))
-
-    (lambda ()
-      ;; failure
-      (exit 1)))
+                  (and (eq? auth-type credentials/certificate)
+                       (equal? msg %message)))))))))
 
 ;;; arch-tag: 1a973ed5-f45d-45a4-8160-900b6a8c27ff
index e5cffc5d8760c9525818239aada0365fb3b6b49b..576a9db97741eeb3700bb68d31f0bce4499da20d 100644 (file)
@@ -1,5 +1,5 @@
 ;;; GnuTLS-extra --- Guile bindings for GnuTLS-EXTRA.
-;;; Copyright (C) 2007, 2010 Free Software Foundation, Inc.
+;;; Copyright (C) 2007, 2010, 2011 Free Software Foundation, Inc.
 ;;;
 ;;; GnuTLS-extra is free software; you can redistribute it and/or modify
 ;;; it under the terms of the GNU General Public License as published by
@@ -24,6 +24,7 @@
 ;;;
 
 (use-modules (gnutls extra) (gnutls)
+             (gnutls build tests)
              (srfi srfi-1)
              (srfi srfi-4))
 
                     (openpgp-keyring-contains-key-id? keyring id))
                   %ids-in-keyring)))))
 
-(dynamic-wind
-
-    (lambda ()
-      #t)
-
-    (lambda ()
-      (exit
-       (every valid-keyring?
-              (list %raw-keyring-file
-                    %ascii-keyring-file)
-              (list openpgp-certificate-format/raw
-                    openpgp-certificate-format/base64))))
-
+(run-test
     (lambda ()
-      ;; failure
-      (exit 1)))
+      (every valid-keyring?
+             (list %raw-keyring-file
+                   %ascii-keyring-file)
+             (list openpgp-certificate-format/raw
+                   openpgp-certificate-format/base64))))
 
 ;;; arch-tag: 516bf608-5c8b-4787-abe9-5f7b6e6d660b
index 6049984336188a0fef508f4739f3b8ecf9a84b6a..2ded32da545f0e6d144ea8897d74830221fc4554 100644 (file)
@@ -1,5 +1,5 @@
 ;;; GnuTLS-extra --- Guile bindings for GnuTLS-EXTRA.
-;;; Copyright (C) 2007, 2010 Free Software Foundation, Inc.
+;;; Copyright (C) 2007, 2010, 2011 Free Software Foundation, Inc.
 ;;;
 ;;; GnuTLS-extra is free software; you can redistribute it and/or modify
 ;;; it under the terms of the GNU General Public License as published by
@@ -25,6 +25,7 @@
 
 (use-modules (gnutls)
              (gnutls extra)
+             (gnutls build tests)
              (srfi srfi-1)
              (srfi srfi-4)
              (srfi srfi-11))
   (stat:size (stat file)))
 
 
-(dynamic-wind
-
-    (lambda ()
-      #t)
-
+(run-test
     (lambda ()
       (let ((raw-pubkey  (make-u8vector (file-size %certificate-file)))
             (raw-privkey (make-u8vector (file-size %private-key-file))))
               (sec (import-openpgp-private-key raw-privkey
                                            openpgp-certificate-format/base64)))
 
-          (exit (and (openpgp-certificate? pub)
-                     (openpgp-private-key? sec)
-                     (equal? (openpgp-certificate-id pub) %key-id)
-                     (u8vector? (openpgp-certificate-fingerprint pub))
-                     (every string? (openpgp-certificate-names pub))
-                     (member (openpgp-certificate-version pub) '(3 4))
-                     (list? (openpgp-certificate-usage pub))
-                     (let-values (((pk bits)
-                                   (openpgp-certificate-algorithm pub)))
-                       (and (string? (pk-algorithm->string pk))
-                            (number? bits))))))))
-
-    (lambda ()
-      ;; failure
-      (exit 1)))
+          (and (openpgp-certificate? pub)
+               (openpgp-private-key? sec)
+               (equal? (openpgp-certificate-id pub) %key-id)
+               (u8vector? (openpgp-certificate-fingerprint pub))
+               (every string? (openpgp-certificate-names pub))
+               (member (openpgp-certificate-version pub) '(3 4))
+               (list? (openpgp-certificate-usage pub))
+               (let-values (((pk bits)
+                             (openpgp-certificate-algorithm pub)))
+                 (and (string? (pk-algorithm->string pk))
+                      (number? bits))))))))
 
 ;;; arch-tag: 2ee2a377-7f4d-4031-92a8-275090e4f83d
index 8900f159920ea006b42572faaa30957b916f27c8..4121b1822c4bf1695c27f197a1134420fbc76a96 100644 (file)
@@ -1,5 +1,5 @@
 ;;; GnuTLS --- Guile bindings for GnuTLS.
-;;; Copyright (C) 2007, 2010 Free Software Foundation, Inc.
+;;; Copyright (C) 2007, 2010, 2011 Free Software Foundation, Inc.
 ;;;
 ;;; GnuTLS is free software; you can redistribute it and/or
 ;;; modify it under the terms of the GNU Lesser General Public
@@ -23,6 +23,7 @@
 ;;;
 
 (use-modules (gnutls)
+             (gnutls build tests)
              (srfi srfi-4))
 
 (define (import-something import-proc file fmt)
   (import-something pkcs3-import-dh-parameters file
                     x509-certificate-format/pem))
 
-(dynamic-wind
-
-    (lambda ()
-      #t)
-
-    (lambda ()
-      (exit
-       (let* ((dh-params (import-dh-params "dh-parameters.pem"))
-              (export
-               (pkcs3-export-dh-parameters dh-params
-                                           x509-certificate-format/pem)))
-         (and (u8vector? export)
-              (let ((import
-                     (pkcs3-import-dh-parameters export
-                                                 x509-certificate-format/pem)))
-                (dh-parameters? import))))))
-
+(run-test
     (lambda ()
-      ;; failure
-      (exit 1)))
+      (let* ((dh-params (import-dh-params "dh-parameters.pem"))
+             (export
+              (pkcs3-export-dh-parameters dh-params
+                                          x509-certificate-format/pem)))
+        (and (u8vector? export)
+             (let ((import
+                    (pkcs3-import-dh-parameters export
+                                                x509-certificate-format/pem)))
+               (dh-parameters? import))))))
 
 ;;; arch-tag: adff0f07-479e-421e-b47f-8956e06b9902
index a41ea2cd63f009c0f76833ccea01dbcfdb66fd6c..1d53d9b264984307475f8354316b2f1a5de941cd 100644 (file)
@@ -1,5 +1,5 @@
 ;;; GnuTLS --- Guile bindings for GnuTLS.
-;;; Copyright (C) 2007, 2010 Free Software Foundation, Inc.
+;;; Copyright (C) 2007, 2010, 2011 Free Software Foundation, Inc.
 ;;;
 ;;; GnuTLS is free software; you can redistribute it and/or
 ;;; modify it under the terms of the GNU Lesser General Public
@@ -24,6 +24,7 @@
 ;;;
 
 (use-modules (gnutls)
+             (gnutls build tests)
              (srfi srfi-4))
 
 
 ;; (set-log-procedure! (lambda (level str)
 ;;                       (format #t "[~a|~a] ~a" (getpid) level str)))
 
-(dynamic-wind
-    (lambda ()
-      #t)
-
+(run-test
     (lambda ()
       ;; Stress the GC.  In 0.0, this triggered an abort due to
       ;; "scm_unprotect_object called during GC".
               (uniform-vector-write %message (session-record-port client))
               (bye client close-request/rdwr)
 
-              (exit))
+              (primitive-exit))
 
             (let ((server (make-session connection-end/server)))
               ;; server-side
                 (bye server close-request/rdwr)
 
                 ;; Make sure we got everything right.
-                (exit (eq? (session-record-port server)
-                           (session-record-port server))
-                      (= amount (u8vector-length %message))
-                      (equal? buf %message)
-                      (eof-object?
-                       (read-char (session-record-port server)))))))))
-
-    (lambda ()
-      ;; failure
-      (exit 1)))
+                (and (eq? (session-record-port server)
+                          (session-record-port server))
+                     (= amount (u8vector-length %message))
+                     (equal? buf %message)
+                     (eof-object?
+                      (read-char (session-record-port server))))))))))
 
 ;;; arch-tag: e873226a-d0b6-4a93-87ec-a1b5ad2ae8a2
index c928f25306ff439810d81cac41772c592523ada0..484288a50f9f6d63058b516bdc9c9394cb1e4e87 100644 (file)
@@ -1,5 +1,5 @@
 ;;; GnuTLS --- Guile bindings for GnuTLS.
-;;; Copyright (C) 2007, 2010 Free Software Foundation, Inc.
+;;; Copyright (C) 2007, 2010, 2011 Free Software Foundation, Inc.
 ;;;
 ;;; GnuTLS is free software; you can redistribute it and/or
 ;;; modify it under the terms of the GNU Lesser General Public
@@ -22,7 +22,8 @@
 ;;; Test SRP base64 encoding and decoding.
 ;;;
 
-(use-modules (gnutls))
+(use-modules (gnutls)
+             (gnutls build tests))
 
 (define %message
   "GnuTLS is free software; you can redistribute it and/or
@@ -30,10 +31,12 @@ modify it under the terms of the GNU Lesser General Public
 License as published by the Free Software Foundation; either
 version 2.1 of the License, or (at your option) any later version.")
 
-(exit (let ((encoded (srp-base64-encode %message)))
-        (and (string? encoded)
-             (string=? (srp-base64-decode encoded)
-                       %message))))
+(run-test
+ (lambda ()
+   (let ((encoded (srp-base64-encode %message)))
+     (and (string? encoded)
+          (string=? (srp-base64-decode encoded)
+                    %message)))))
 
 
 ;;; arch-tag: ea1534a5-d513-4208-9a75-54bd4710f915
index 5e0663298a1793b24e6514ca2cec3b351dcf57fe..433b745504be7a1a49ac3cea9eb86de27578c439 100644 (file)
@@ -1,5 +1,5 @@
 ;;; GnuTLS --- Guile bindings for GnuTLS.
-;;; Copyright (C) 2007, 2010 Free Software Foundation, Inc.
+;;; Copyright (C) 2007, 2010, 2011 Free Software Foundation, Inc.
 ;;;
 ;;; GnuTLS is free software; you can redistribute it and/or
 ;;; modify it under the terms of the GNU Lesser General Public
@@ -24,6 +24,7 @@
 ;;;
 
 (use-modules (gnutls)
+             (gnutls build tests)
              (srfi srfi-4))
 
 
 ;; (set-log-procedure! (lambda (level str)
 ;;                       (format #t "[~a|~a] ~a" (getpid) level str)))
 
-(dynamic-wind
-    (lambda ()
-      #t)
-
+(run-test
     (lambda ()
       (let ((socket-pair (socketpair PF_UNIX SOCK_STREAM 0))
             (pub         (import-key import-x509-certificate
@@ -95,7 +93,7 @@
                 (write %message (session-record-port client))
                 (bye client close-request/rdwr)
 
-                (exit))
+                (primitive-exit))
 
               (let ((server (make-session connection-end/server))
                     (rsa    (import-rsa-params "rsa-parameters.pem"))
                 (let ((msg (read (session-record-port server)))
                       (auth-type (session-authentication-type server)))
                   (bye server close-request/rdwr)
-                  (exit (and (eq? auth-type credentials/certificate)
-                             (equal? msg %message)))))))))
-
-    (lambda ()
-      ;; failure
-      (exit 1)))
+                  (and (eq? auth-type credentials/certificate)
+                       (equal? msg %message)))))))))
 
 ;;; arch-tag: 1f88f835-a5c8-4fd6-94b6-5a13571ba03d
index fda227bbaa637f3cc907df407b7fc719c1e8b0d4..67c1885b62da90d98479bbebd0d0044f695cd970 100644 (file)
@@ -1,5 +1,5 @@
 ;;; GnuTLS --- Guile bindings for GnuTLS.
-;;; Copyright (C) 2007, 2010 Free Software Foundation, Inc.
+;;; Copyright (C) 2007, 2010, 2011 Free Software Foundation, Inc.
 ;;;
 ;;; GnuTLS is free software; you can redistribute it and/or
 ;;; modify it under the terms of the GNU Lesser General Public
@@ -23,6 +23,7 @@
 ;;;
 
 (use-modules (gnutls)
+             (gnutls build tests)
              (srfi srfi-4)
              (srfi srfi-11))
 
   (stat:size (stat file)))
 
 
-(dynamic-wind
-
-    (lambda ()
-      #t)
-
+(run-test
     (lambda ()
       (let ((raw-certificate (make-u8vector (file-size %certificate-file)))
             (raw-privkey     (make-u8vector (file-size %private-key-file))))
               (sec  (import-x509-private-key raw-privkey
                                              x509-certificate-format/pem)))
 
-          (exit (and (x509-certificate? cert)
-                     (x509-private-key? sec)
-                     (string? (x509-certificate-dn cert))
-                     (string? (x509-certificate-issuer-dn cert))
-                     (string=? (x509-certificate-dn-oid cert 0) %first-oid)
-                     (eq? (x509-certificate-signature-algorithm cert)
-                          %signature-algorithm)
-                     (x509-certificate-matches-hostname? cert "localhost")
-                     (let-values (((type name)
-                                   (x509-certificate-subject-alternative-name
-                                    cert 0)))
-                       (and (string? name)
-                            (string?
-                             (x509-subject-alternative-name->string type)))))))))
-
-    (lambda ()
-      ;; failure
-      (exit 1)))
+          (and (x509-certificate? cert)
+               (x509-private-key? sec)
+               (string? (x509-certificate-dn cert))
+               (string? (x509-certificate-issuer-dn cert))
+               (string=? (x509-certificate-dn-oid cert 0) %first-oid)
+               (eq? (x509-certificate-signature-algorithm cert)
+                    %signature-algorithm)
+               (x509-certificate-matches-hostname? cert "localhost")
+               (let-values (((type name)
+                             (x509-certificate-subject-alternative-name
+                              cert 0)))
+                 (and (string? name)
+                      (string?
+                       (x509-subject-alternative-name->string type)))))))))
 
 ;;; arch-tag: eef09b52-30e8-472a-8b93-cb636434f6eb