From: Stefan Kangas Date: Wed, 2 Sep 2020 03:02:18 +0000 (+0200) Subject: Use lexical-binding in pcmpl-linux.el and add tests X-Git-Tag: emacs-28.0.90~6284 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=a50b8397f476b794f06aafb2b755e011566fbc2b;p=emacs.git Use lexical-binding in pcmpl-linux.el and add tests * lisp/pcmpl-linux.el: Use lexical-binding. (pcmpl-linux-fs-modules-path-format) (pcmpl-linux-mtab-file): New constants. (pcmpl-linux-fs-types, pcmpl-linux-mounted-directories): Use above new constants. * test/lisp/pcmpl-linux-resources/fs/ext4/.keep: * test/lisp/pcmpl-linux-resources/mtab: * test/lisp/pcmpl-linux-tests.el: New files. --- diff --git a/lisp/pcmpl-linux.el b/lisp/pcmpl-linux.el index 6e036434ef2..df9d24507a0 100644 --- a/lisp/pcmpl-linux.el +++ b/lisp/pcmpl-linux.el @@ -1,4 +1,4 @@ -;;; pcmpl-linux.el --- functions for dealing with GNU/Linux completions +;;; pcmpl-linux.el --- functions for dealing with GNU/Linux completions -*- lexical-binding: t -*- ;; Copyright (C) 1999-2020 Free Software Foundation, Inc. @@ -65,18 +65,22 @@ (pcomplete-opt "hVanfFrsvwt(pcmpl-linux-fs-types)o?L?U?") (while (pcomplete-here (pcomplete-entries) nil 'identity))) +(defconst pcmpl-linux-fs-modules-path-format "/lib/modules/%s/kernel/fs/") + (defun pcmpl-linux-fs-types () "Return a list of available fs modules on GNU/Linux systems." (let ((kernel-ver (pcomplete-process-result "uname" "-r"))) (directory-files - (concat "/lib/modules/" kernel-ver "/kernel/fs/")))) + (format pcmpl-linux-fs-modules-path-format kernel-ver)))) + +(defconst pcmpl-linux-mtab-file "/etc/mtab") (defun pcmpl-linux-mounted-directories () "Return a list of mounted directory names." (let (points) - (when (file-readable-p "/etc/mtab") + (when (file-readable-p pcmpl-linux-mtab-file) (with-temp-buffer - (insert-file-contents-literally "/etc/mtab") + (insert-file-contents-literally pcmpl-linux-mtab-file) (while (not (eobp)) (let* ((line (buffer-substring (point) (line-end-position))) (args (split-string line " "))) diff --git a/test/lisp/pcmpl-linux-resources/fs/ext4/.keep b/test/lisp/pcmpl-linux-resources/fs/ext4/.keep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/test/lisp/pcmpl-linux-resources/mtab b/test/lisp/pcmpl-linux-resources/mtab new file mode 100644 index 00000000000..ea33abd7b0a --- /dev/null +++ b/test/lisp/pcmpl-linux-resources/mtab @@ -0,0 +1,11 @@ +/dev/sdb1 / ext3 rw,relatime,errors=remount-ro 0 0 +proc /proc proc rw,noexec,nosuid,nodev 0 0 +/sys /sys sysfs rw,noexec,nosuid,nodev 0 0 +varrun /var/run tmpfs rw,noexec,nosuid,nodev,mode=0755 0 0 +varlock /var/lock tmpfs rw,noexec,nosuid,nodev,mode=1777 0 0 +udev /dev tmpfs rw,mode=0755 0 0 +devshm /dev/shm tmpfs rw 0 0 +devpts /dev/pts devpts rw,gid=5,mode=620 0 0 +lrm /lib/modules/2.6.24-16-generic/volatile tmpfs rw 0 0 +securityfs /sys/kernel/security securityfs rw 0 0 +gvfs-fuse-daemon /home/alice/.gvfs fuse.gvfs-fuse-daemon rw,nosuid,nodev,user=alice 0 0 diff --git a/test/lisp/pcmpl-linux-tests.el b/test/lisp/pcmpl-linux-tests.el new file mode 100644 index 00000000000..cf7e6288fdb --- /dev/null +++ b/test/lisp/pcmpl-linux-tests.el @@ -0,0 +1,51 @@ +;;; pcmpl-linux-tests.el --- Tests for pcmpl-linux.el -*- lexical-binding: t -*- + +;; Copyright (C) 2020 Free Software Foundation, Inc. + +;; 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 . + +;;; Commentary: + +;;; Code: + +(require 'ert) +(require 'pcmpl-linux) + +(defvar pcmpl-linux-tests-data-dir + (file-truename + (expand-file-name "pcmpl-linux-resources/" + (file-name-directory (or load-file-name + buffer-file-name)))) + "Base directory of pcmpl-linux-tests.el data files.") + +(ert-deftest pcmpl-linux-test-fs-types () + (let ((pcmpl-linux-fs-modules-path-format (expand-file-name "fs" + pcmpl-linux-tests-data-dir))) + ;; FIXME: Shouldn't return "." and ".." + (should (equal (pcmpl-linux-fs-types) + '("." ".." "ext4"))))) + +(ert-deftest pcmpl-linux-test-mounted-directories () + (let ((pcmpl-linux-mtab-file (expand-file-name "mtab" + pcmpl-linux-tests-data-dir))) + (should (equal (pcmpl-linux-mounted-directories) + '("/" "/dev" "/dev/pts" "/dev/shm" "/home/alice/.gvfs" + "/lib/modules/2.6.24-16-generic/volatile" "/proc" "/sys" + "/sys/kernel/security" "/var/lock" "/var/run"))))) + +(provide 'pcmpl-linux-tests) + +;;; pcmpl-linux-tests.el ends here