]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix parsing netrc entries with ports
authorEli Zaretskii <eliz@gnu.org>
Thu, 17 Dec 2015 18:31:25 +0000 (20:31 +0200)
committerEli Zaretskii <eliz@gnu.org>
Thu, 17 Dec 2015 18:31:25 +0000 (20:31 +0200)
* lisp/gnus/auth-source.el (auth-source-ensure-strings): Don't
make a list out of 't'.  (Bug#22188)

* test/automated/auth-source-tests.el
(auth-source-test-netrc-parse-entry): New test.

lisp/gnus/auth-source.el
test/automated/auth-source-tests.el

index 9d842c04f642c235ef186cfee38123557759c995..10d32d4507087501de8e828dd42e309280fc75dd 100644 (file)
@@ -919,13 +919,15 @@ while \(:host t) would find all host entries."
   prompt)
 
 (defun auth-source-ensure-strings (values)
-  (unless (listp values)
-    (setq values (list values)))
-  (mapcar (lambda (value)
-            (if (numberp value)
-                (format "%s" value)
-              value))
-          values))
+  (if (eq values t)
+      values
+    (unless (listp values)
+      (setq values (list values)))
+    (mapcar (lambda (value)
+             (if (numberp value)
+                 (format "%s" value)
+               value))
+           values)))
 
 ;;; Backend specific parsing: netrc/authinfo backend
 
index 0b49b9013f7491716a3da6cf7731eb2e6b18754f..dd70d546d5ccf20d570a94a7165d61d6952f5bfb 100644 (file)
                                     (:search-function . auth-source-secrets-search)
                                     (:create-function . auth-source-secrets-create)))))
 
+(defun auth-source--test-netrc-parse-entry (entry host user port)
+  "Parse a netrc entry from buffer."
+  (auth-source-forget-all-cached)
+  (setq port (auth-source-ensure-strings port))
+  (with-temp-buffer
+    (insert entry)
+    (goto-char (point-min))
+    (let* ((check (lambda(alist)
+                   (and alist
+                        (auth-source-search-collection
+                         host
+                         (or
+                          (auth-source--aget alist "machine")
+                          (auth-source--aget alist "host")
+                          t))
+                        (auth-source-search-collection
+                         user
+                         (or
+                          (auth-source--aget alist "login")
+                          (auth-source--aget alist "account")
+                          (auth-source--aget alist "user")
+                          t))
+                        (auth-source-search-collection
+                         port
+                         (or
+                          (auth-source--aget alist "port")
+                          (auth-source--aget alist "protocol")
+                          t)))))
+          (entries (auth-source-netrc-parse-entries check 1)))
+      entries)))
+
+(ert-deftest auth-source-test-netrc-parse-entry ()
+  (should (equal (auth-source--test-netrc-parse-entry
+                  "machine mymachine1 login user1 password pass1\n" t t t)
+                 '((("password" . "pass1")
+                    ("login" . "user1")
+                    ("machine" . "mymachine1")))))
+  (should (equal (auth-source--test-netrc-parse-entry
+                  "machine mymachine1 login user1 password pass1 port 100\n"
+                  t t t)
+                 '((("port" . "100")
+                    ("password" . "pass1")
+                    ("login" . "user1")
+                    ("machine" . "mymachine1"))))))
+
 (provide 'auth-source-tests)
 ;;; auth-source-tests.el ends here