Use lexical-binding in netrc.el and add tests

* lisp/net/netrc.el: Use lexical-binding.
(netrc-file): Remove redundant :group arg.
* test/lisp/net/netrc-resources/authinfo:
* test/lisp/net/netrc-resources/services:
* test/lisp/net/netrc-tests.el: New files.
This commit is contained in:
Stefan Kangas 2020-10-28 03:22:12 +01:00
parent 01d67bc845
commit 039ffaf69f
4 changed files with 64 additions and 3 deletions

View file

@ -1,4 +1,5 @@
;;; netrc.el --- .netrc parsing functionality
;;; netrc.el --- .netrc parsing functionality -*- lexical-binding: t -*-
;; Copyright (C) 1996-2020 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
@ -40,8 +41,7 @@
(defcustom netrc-file "~/.authinfo"
"File where user credentials are stored."
:version "24.1"
:type 'file
:group 'netrc)
:type 'file)
(defvar netrc-services-file "/etc/services"
"The name of the services file.")

View file

@ -0,0 +1,2 @@
machine imap.example.org login jrh@example.org password "*foobar*"
machine ftp.example.org login jrh password "*baz*"

View file

@ -0,0 +1,6 @@
tcpmux 1/tcp # TCP port service multiplexer
smtp 25/tcp mail
http 80/tcp www # WorldWideWeb HTTP
kerberos 88/tcp kerberos5 krb5 kerberos-sec # Kerberos v5
kerberos 88/udp kerberos5 krb5 kerberos-sec # Kerberos v5
rtmp 1/ddp # Routing Table Maintenance Protocol

View file

@ -0,0 +1,53 @@
;;; netrc-tests.el --- Tests for netrc.el -*- lexical-binding:t -*-
;; Copyright (C) 2020 Free Software Foundation, Inc.
;; Author: Stefan Kangas <stefankangas@gmail.com>
;; This file is part of GNU Emacs.
;; GNU Emacs is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; GNU Emacs 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 General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
;;; Code:
(require 'ert)
(require 'ert-x)
(require 'netrc)
(ert-deftest test-netrc-parse-services ()
(let ((netrc-services-file (ert-resource-file "services")))
(should (equal (netrc-parse-services)
'(("tcpmux" 1 tcp)
("smtp" 25 tcp)
("http" 80 tcp)
("kerberos" 88 tcp)
("kerberos" 88 udp)
("rtmp" 1 ddp))))))
(ert-deftest test-netrc-find-service-name ()
(let ((netrc-services-file (ert-resource-file "services")))
(should (equal (netrc-find-service-name 25) "smtp"))
(should (equal (netrc-find-service-name 88 'udp) "kerberos"))
(should-not (netrc-find-service-name 12345))))
(ert-deftest test-netrc-credentials ()
(let ((netrc-file (ert-resource-file "authinfo")))
(should (equal (netrc-credentials "imap.example.org")
'("jrh@example.org" "*foobar*")))
(should (equal (netrc-credentials "ftp.example.org")
'("jrh" "*baz*")))))
(provide 'netrc-tests)
;;; netrc-tests.el ends here