tests: Improve handling of Windows newlines.
authorJustus Winter <justus@g10code.com>
Fri, 7 Oct 2016 14:16:15 +0000 (16:16 +0200)
committerJustus Winter <justus@g10code.com>
Fri, 7 Oct 2016 14:25:55 +0000 (16:25 +0200)
* tests/gpgscm/lib.scm (string-split-newlines): New function.
* tests/openpgp/default-key.scm: Use new function.
* tests/openpgp/defs.scm: Likewise.
* tests/openpgp/export.scm: Likewise.
* tests/openpgp/import.scm: Likewise.

Signed-off-by: Justus Winter <justus@g10code.com>
tests/gpgscm/lib.scm
tests/openpgp/default-key.scm
tests/openpgp/defs.scm
tests/openpgp/export.scm
tests/openpgp/import.scm

index fe28262..e4ab483 100644 (file)
 (assert (string=? "bar" (cadr (string-split "foo:bar:baz" #\:))))
 (assert (string=? "baz" (caddr (string-split "foo:bar:baz" #\:))))
 
+;; Split haystack at newlines.
+(define (string-split-newlines haystack)
+  (if *win32*
+      (map (lambda (line) (if (string-suffix? line "\r")
+                             (substring line 0 (- (string-length line) 1))
+                             line))
+          (string-split haystack #\newline))
+      (string-split haystack #\newline)))
+
 ;; Trim the prefix of S containing only characters that make PREDICATE
 ;; true.
 (define (string-ltrim predicate s)
index 4433658..07cc8c0 100755 (executable)
@@ -71,6 +71,6 @@
        (unless (any (lambda (line)
                       (and (string-prefix? line ":pubkey enc packet:")
                            (string-suffix? line "45117079")))
-                    (string-split c #\newline))
+                    (string-split-newlines c))
            (exit 1))))))
  '("8BC90111" "3E880CFF" "F5F77B83" "45117079" "1EA97479"))
index 4a968da..e484e86 100644 (file)
@@ -91,7 +91,7 @@
 (define (gpg-with-colons args)
   (let ((s (call-popen `(,@GPG --with-colons ,@args) "")))
     (map (lambda (line) (string-split line #\:))
-        (string-split s #\newline))))
+        (string-split-newlines s))))
 
 (define (get-config what)
   (string-split (caddar (gpg-with-colons `(--list-config ,what))) #\;))
    (lambda (line)
      (let ((p (string-split line #\:)))
        (list (string->number (cadr p)) (caddr p))))
-   (string-split
-    (call-popen `(,@GPG --with-colons ,@args) input) #\newline)))
+   (string-split-newlines
+    (call-popen `(,@GPG --with-colons ,@args) input))))
 
 ;; Dearmor a file.
 (define (dearmor source-name sink-name)
index 8291705..f7a23f4 100755 (executable)
                    "Signature packet not found"))
 
 (define (check-exported-public-key packet-dump keyid)
-  (let ((dump (string-split packet-dump #\newline)))
+  (let ((dump (string-split-newlines packet-dump)))
     (check-for (lambda (l) (string-prefix? l ":public key packet:")) dump
               "Public key packet not found")
     (check-exported-key dump keyid)))
 
 (define (check-exported-private-key packet-dump keyid)
-  (let ((dump (string-split packet-dump #\newline)))
+  (let ((dump (string-split-newlines packet-dump)))
     (check-for (lambda (l) (string-prefix? l ":secret key packet:")) dump
               "Secret key packet not found")
     (check-exported-key dump keyid)))
index 580acea..98f3ad9 100755 (executable)
@@ -36,7 +36,7 @@
     (unless (any (lambda (line)
                   (and (string-prefix? line "rvk:")
                        (string-contains? line ":0EE5BE979282D80B9F7540F1CCD2ED94D21739E9:")))
-                (string-split c #\newline))
+                (string-split-newlines c))
            (exit 1)))))
 
 (define fpr1 "9E669861368BCA0BE42DAF7DDDA252EBB8EBE1AF")
@@ -55,6 +55,6 @@
                 (lambda (line)
                   (and (string-prefix? line "pub:")
                        (string-contains? line ":4096:1:DDA252EBB8EBE1AF:")))
-                (string-split c #\newline))))
+                (string-split-newlines c))))
       (unless (= 2 (length keys))
              (error "Importing keys with long id collision failed"))))))