diff options
| author | Paul Eggert | 2017-01-01 01:10:47 -0800 |
|---|---|---|
| committer | Paul Eggert | 2017-01-01 01:10:47 -0800 |
| commit | bcf244ef9be0fe61f4b9a48d3412b2c8a9f1edb9 (patch) | |
| tree | dc5dde303bce1fbe4f04300c3691cc1ee5874f43 /test | |
| parent | 772ca5db3eccdc0439d7bd18f98b7fdd38eb6397 (diff) | |
| parent | 2e2a8068031b79a6cc5502b8d4c9d849ebb1dae0 (diff) | |
| download | emacs-bcf244ef9be0fe61f4b9a48d3412b2c8a9f1edb9.tar.gz emacs-bcf244ef9be0fe61f4b9a48d3412b2c8a9f1edb9.zip | |
Merge from origin/emacs-25
2e2a806 Fix copyright years by hand
5badc81 Update copyright year to 2017
Diffstat (limited to 'test')
141 files changed, 3258 insertions, 132 deletions
diff --git a/test/ChangeLog.1 b/test/ChangeLog.1 index 367ca74b7b9..4491eb82d67 100644 --- a/test/ChangeLog.1 +++ b/test/ChangeLog.1 | |||
| @@ -2952,7 +2952,7 @@ | |||
| 2952 | ;; coding: utf-8 | 2952 | ;; coding: utf-8 |
| 2953 | ;; End: | 2953 | ;; End: |
| 2954 | 2954 | ||
| 2955 | Copyright (C) 2008-2016 Free Software Foundation, Inc. | 2955 | Copyright (C) 2008-2017 Free Software Foundation, Inc. |
| 2956 | 2956 | ||
| 2957 | This file is part of GNU Emacs. | 2957 | This file is part of GNU Emacs. |
| 2958 | 2958 | ||
diff --git a/test/Makefile.in b/test/Makefile.in index f2f27634c24..5849e9c3ac9 100644 --- a/test/Makefile.in +++ b/test/Makefile.in | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ### @configure_input@ | 1 | ### @configure_input@ |
| 2 | 2 | ||
| 3 | # Copyright (C) 2010-2016 Free Software Foundation, Inc. | 3 | # Copyright (C) 2010-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | # This file is part of GNU Emacs. | 5 | # This file is part of GNU Emacs. |
| 6 | 6 | ||
diff --git a/test/README b/test/README index fec84a8756c..fca20166821 100644 --- a/test/README +++ b/test/README | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | Copyright (C) 2008-2016 Free Software Foundation, Inc. | 1 | Copyright (C) 2008-2017 Free Software Foundation, Inc. |
| 2 | See the end of the file for license conditions. | 2 | See the end of the file for license conditions. |
| 3 | 3 | ||
| 4 | This directory contains files intended to test various aspects of | 4 | This directory contains files intended to test various aspects of |
diff --git a/test/automated/abbrev-tests.el b/test/automated/abbrev-tests.el new file mode 100644 index 00000000000..7adab32892e --- /dev/null +++ b/test/automated/abbrev-tests.el | |||
| @@ -0,0 +1,98 @@ | |||
| 1 | ;;; abbrev-tests.el --- Test suite for abbrevs. | ||
| 2 | |||
| 3 | ;; Copyright (C) 2015-2017 Free Software Foundation, Inc. | ||
| 4 | |||
| 5 | ;; Author: Eli Zaretskii <eliz@gnu.org> | ||
| 6 | ;; Keywords: abbrevs | ||
| 7 | |||
| 8 | ;; This file is part of GNU Emacs. | ||
| 9 | |||
| 10 | ;; GNU Emacs is free software: you can redistribute it and/or modify | ||
| 11 | ;; it under the terms of the GNU General Public License as published by | ||
| 12 | ;; the Free Software Foundation, either version 3 of the License, or | ||
| 13 | ;; (at your option) any later version. | ||
| 14 | |||
| 15 | ;; GNU Emacs is distributed in the hope that it will be useful, | ||
| 16 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 17 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 18 | ;; GNU General Public License for more details. | ||
| 19 | |||
| 20 | ;; You should have received a copy of the GNU General Public License | ||
| 21 | ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. | ||
| 22 | |||
| 23 | ;;; Commentary: | ||
| 24 | |||
| 25 | ;; `kill-all-abbrevs-test' will remove all user *and* system abbrevs | ||
| 26 | ;; if called noninteractively with the init file loaded. | ||
| 27 | |||
| 28 | ;;; Code: | ||
| 29 | |||
| 30 | (require 'ert) | ||
| 31 | (require 'abbrev) | ||
| 32 | (require 'seq) | ||
| 33 | |||
| 34 | ;; set up test abbrev table and abbrev entry | ||
| 35 | (defun setup-test-abbrev-table () | ||
| 36 | (defvar ert-test-abbrevs nil) | ||
| 37 | (define-abbrev-table 'ert-test-abbrevs '(("a-e-t" "abbrev-ert-test"))) | ||
| 38 | (abbrev-table-put ert-test-abbrevs :ert-test "ert-test-value") | ||
| 39 | ert-test-abbrevs) | ||
| 40 | |||
| 41 | (ert-deftest copy-abbrev-table-test () | ||
| 42 | (defvar foo-abbrev-table nil) ; Avoid compiler warning | ||
| 43 | (define-abbrev-table 'foo-abbrev-table | ||
| 44 | '()) | ||
| 45 | (should (abbrev-table-p foo-abbrev-table)) | ||
| 46 | ;; Bug 21828 | ||
| 47 | (let ((new-foo-abbrev-table | ||
| 48 | (condition-case nil | ||
| 49 | (copy-abbrev-table foo-abbrev-table) | ||
| 50 | (error nil)))) | ||
| 51 | (should (abbrev-table-p new-foo-abbrev-table))) | ||
| 52 | (should-not (string-equal (buffer-name) "*Backtrace*"))) | ||
| 53 | |||
| 54 | (ert-deftest kill-all-abbrevs-test () | ||
| 55 | "Test undefining all defined abbrevs" | ||
| 56 | (unless noninteractive | ||
| 57 | (ert-skip "Cannot test kill-all-abbrevs in interactive mode")) | ||
| 58 | |||
| 59 | (let ((num-tables 0)) | ||
| 60 | ;; ensure at least one abbrev exists | ||
| 61 | (should (abbrev-table-p (setup-test-abbrev-table))) | ||
| 62 | (setf num-tables (length abbrev-table-name-list)) | ||
| 63 | (kill-all-abbrevs) | ||
| 64 | |||
| 65 | ;; no tables should have been removed/added | ||
| 66 | (should (= num-tables (length abbrev-table-name-list))) | ||
| 67 | ;; number of empty tables should be the same as number of tables | ||
| 68 | (should (= num-tables (length (seq-filter | ||
| 69 | (lambda (table) | ||
| 70 | (abbrev-table-empty-p (symbol-value table))) | ||
| 71 | abbrev-table-name-list)))))) | ||
| 72 | |||
| 73 | (ert-deftest abbrev-table-name-test () | ||
| 74 | "Test returning name of abbrev-table" | ||
| 75 | (let ((ert-test-abbrevs (setup-test-abbrev-table)) | ||
| 76 | (no-such-table nil)) | ||
| 77 | (should (equal 'ert-test-abbrevs (abbrev-table-name ert-test-abbrevs))) | ||
| 78 | (should (equal nil (abbrev-table-name no-such-table))))) | ||
| 79 | |||
| 80 | (ert-deftest clear-abbrev-table-test () | ||
| 81 | "Test clearing single abbrev table" | ||
| 82 | (let ((ert-test-abbrevs (setup-test-abbrev-table))) | ||
| 83 | (should (equal "a-e-t" (symbol-name | ||
| 84 | (abbrev-symbol "a-e-t" ert-test-abbrevs)))) | ||
| 85 | (should (equal "abbrev-ert-test" (symbol-value | ||
| 86 | (abbrev-symbol "a-e-t" ert-test-abbrevs)))) | ||
| 87 | |||
| 88 | (clear-abbrev-table ert-test-abbrevs) | ||
| 89 | |||
| 90 | (should (equal "nil" (symbol-name | ||
| 91 | (abbrev-symbol "a-e-t" ert-test-abbrevs)))) | ||
| 92 | (should (equal nil (symbol-value | ||
| 93 | (abbrev-symbol "a-e-t" ert-test-abbrevs)))) | ||
| 94 | (should (equal t (abbrev-table-empty-p ert-test-abbrevs))))) | ||
| 95 | |||
| 96 | (provide 'abbrev-tests) | ||
| 97 | |||
| 98 | ;;; abbrev-tests.el ends here | ||
diff --git a/test/automated/cl-seq-tests.el b/test/automated/cl-seq-tests.el new file mode 100644 index 00000000000..d89bad9bfb4 --- /dev/null +++ b/test/automated/cl-seq-tests.el | |||
| @@ -0,0 +1,42 @@ | |||
| 1 | ;;; cl-seq-tests.el --- Tests for cl-seq.el functionality -*- lexical-binding: t; -*- | ||
| 2 | |||
| 3 | ;; Copyright (C) 2015-2017 Free Software Foundation, Inc. | ||
| 4 | |||
| 5 | ;; Author: Nicolas Richard <youngfrog@members.fsf.org> | ||
| 6 | |||
| 7 | ;; This file is part of GNU Emacs. | ||
| 8 | |||
| 9 | ;; GNU Emacs is free software: you can redistribute it and/or modify | ||
| 10 | ;; it under the terms of the GNU General Public License as published by | ||
| 11 | ;; the Free Software Foundation, either version 3 of the License, or | ||
| 12 | ;; (at your option) any later version. | ||
| 13 | |||
| 14 | ;; GNU Emacs is distributed in the hope that it will be useful, | ||
| 15 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 16 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 17 | ;; GNU General Public License for more details. | ||
| 18 | |||
| 19 | ;; You should have received a copy of the GNU General Public License | ||
| 20 | ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. | ||
| 21 | |||
| 22 | ;;; Commentary: | ||
| 23 | |||
| 24 | ;;; Code: | ||
| 25 | |||
| 26 | (require 'ert) | ||
| 27 | (require 'cl-seq) | ||
| 28 | |||
| 29 | (ert-deftest cl-union-test-00 () | ||
| 30 | (let ((str1 "foo") | ||
| 31 | (str2 (make-string 3 ?o))) | ||
| 32 | ;; Emacs may make two string literals eql when reading. | ||
| 33 | (aset str2 0 ?f) | ||
| 34 | (should (not (eql str1 str2))) | ||
| 35 | (should (equal str1 str2)) | ||
| 36 | (should (equal (cl-union (list str1) (list str2)) | ||
| 37 | (list str2))) | ||
| 38 | (should (equal (cl-union (list str1) (list str2) :test 'eql) | ||
| 39 | (list str1 str2))))) | ||
| 40 | |||
| 41 | (provide 'cl-seq-tests) | ||
| 42 | ;;; cl-seq-tests.el ends here | ||
diff --git a/test/automated/coding-tests.el b/test/automated/coding-tests.el new file mode 100644 index 00000000000..c0ad8d555b3 --- /dev/null +++ b/test/automated/coding-tests.el | |||
| @@ -0,0 +1,50 @@ | |||
| 1 | ;;; coding-tests.el --- tests for text encoding and decoding | ||
| 2 | |||
| 3 | ;; Copyright (C) 2015-2017 Free Software Foundation, Inc. | ||
| 4 | |||
| 5 | ;; Author: Eli Zaretskii <eliz@gnu.org> | ||
| 6 | |||
| 7 | ;; This file is part of GNU Emacs. | ||
| 8 | |||
| 9 | ;; GNU Emacs is free software: you can redistribute it and/or modify | ||
| 10 | ;; it under the terms of the GNU General Public License as published by | ||
| 11 | ;; the Free Software Foundation, either version 3 of the License, or | ||
| 12 | ;; (at your option) any later version. | ||
| 13 | |||
| 14 | ;; GNU Emacs is distributed in the hope that it will be useful, | ||
| 15 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 16 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 17 | ;; GNU General Public License for more details. | ||
| 18 | |||
| 19 | ;; You should have received a copy of the GNU General Public License | ||
| 20 | ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. | ||
| 21 | |||
| 22 | ;;; Code: | ||
| 23 | |||
| 24 | (require 'ert) | ||
| 25 | |||
| 26 | ;; Directory to hold test data files. | ||
| 27 | (defvar coding-tests-workdir | ||
| 28 | (expand-file-name "coding-tests" temporary-file-directory)) | ||
| 29 | |||
| 30 | ;; Remove all generated test files. | ||
| 31 | (defun coding-tests-remove-files () | ||
| 32 | (delete-directory coding-tests-workdir t)) | ||
| 33 | |||
| 34 | (ert-deftest ert-test-coding-bogus-coding-systems () | ||
| 35 | (unwind-protect | ||
| 36 | (let (test-file) | ||
| 37 | (or (file-directory-p coding-tests-workdir) | ||
| 38 | (mkdir coding-tests-workdir t)) | ||
| 39 | (setq test-file (expand-file-name "nonexistent" coding-tests-workdir)) | ||
| 40 | (if (file-exists-p test-file) | ||
| 41 | (delete-file test-file)) | ||
| 42 | (should-error | ||
| 43 | (let ((coding-system-for-read 'bogus)) | ||
| 44 | (insert-file-contents test-file))) | ||
| 45 | ;; See bug #21602. | ||
| 46 | (setq test-file (expand-file-name "writing" coding-tests-workdir)) | ||
| 47 | (should-error | ||
| 48 | (let ((coding-system-for-write (intern "\"us-ascii\""))) | ||
| 49 | (write-region "some text" nil test-file)))) | ||
| 50 | (coding-tests-remove-files))) | ||
diff --git a/test/automated/core-elisp-tests.el b/test/automated/core-elisp-tests.el new file mode 100644 index 00000000000..0851367f9bc --- /dev/null +++ b/test/automated/core-elisp-tests.el | |||
| @@ -0,0 +1,52 @@ | |||
| 1 | ;;; core-elisp-tests.el --- Testing some core Elisp rules | ||
| 2 | |||
| 3 | ;; Copyright (C) 2013-2017 Free Software Foundation, Inc. | ||
| 4 | |||
| 5 | ;; Author: Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 6 | ;; Keywords: | ||
| 7 | |||
| 8 | ;; This program is free software; you can redistribute it and/or modify | ||
| 9 | ;; it under the terms of the GNU General Public License as published by | ||
| 10 | ;; the Free Software Foundation, either version 3 of the License, or | ||
| 11 | ;; (at your option) any later version. | ||
| 12 | |||
| 13 | ;; This program is distributed in the hope that it will be useful, | ||
| 14 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 15 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 16 | ;; GNU General Public License for more details. | ||
| 17 | |||
| 18 | ;; You should have received a copy of the GNU General Public License | ||
| 19 | ;; along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 20 | |||
| 21 | ;;; Commentary: | ||
| 22 | |||
| 23 | ;; | ||
| 24 | |||
| 25 | ;;; Code: | ||
| 26 | |||
| 27 | (ert-deftest core-elisp-tests-1-defvar-in-let () | ||
| 28 | "Test some core Elisp rules." | ||
| 29 | (with-temp-buffer | ||
| 30 | ;; Check that when defvar is run within a let-binding, the toplevel default | ||
| 31 | ;; is properly initialized. | ||
| 32 | (should (equal (list (let ((c-e-x 1)) (defvar c-e-x 2) c-e-x) c-e-x) | ||
| 33 | '(1 2))) | ||
| 34 | (should (equal (list (let ((c-e-x 1)) | ||
| 35 | (defcustom c-e-x 2 "doc" :group 'blah :type 'integer) c-e-x) | ||
| 36 | c-e-x) | ||
| 37 | '(1 2))))) | ||
| 38 | |||
| 39 | (ert-deftest core-elisp-tests-2-window-configurations () | ||
| 40 | "Test properties of window-configurations." | ||
| 41 | (let ((wc (current-window-configuration))) | ||
| 42 | (with-current-buffer (window-buffer (frame-selected-window)) | ||
| 43 | (push-mark) | ||
| 44 | (activate-mark)) | ||
| 45 | (set-window-configuration wc) | ||
| 46 | (should (or (not mark-active) (mark))))) | ||
| 47 | |||
| 48 | (ert-deftest core-elisp-tests-3-backquote () | ||
| 49 | (should (eq 3 (eval ``,,'(+ 1 2))))) | ||
| 50 | |||
| 51 | (provide 'core-elisp-tests) | ||
| 52 | ;;; core-elisp-tests.el ends here | ||
diff --git a/test/automated/data-tests.el b/test/automated/data-tests.el new file mode 100644 index 00000000000..9abc9e7c68f --- /dev/null +++ b/test/automated/data-tests.el | |||
| @@ -0,0 +1,257 @@ | |||
| 1 | ;;; data-tests.el --- tests for src/data.c | ||
| 2 | |||
| 3 | ;; Copyright (C) 2013-2017 Free Software Foundation, Inc. | ||
| 4 | |||
| 5 | ;; This file is part of GNU Emacs. | ||
| 6 | |||
| 7 | ;; GNU Emacs is free software: you can redistribute it and/or modify | ||
| 8 | ;; it under the terms of the GNU General Public License as published by | ||
| 9 | ;; the Free Software Foundation, either version 3 of the License, or | ||
| 10 | ;; (at your option) any later version. | ||
| 11 | |||
| 12 | ;; GNU Emacs is distributed in the hope that it will be useful, | ||
| 13 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 14 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 15 | ;; GNU General Public License for more details. | ||
| 16 | |||
| 17 | ;; You should have received a copy of the GNU General Public License | ||
| 18 | ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. | ||
| 19 | |||
| 20 | ;;; Commentary: | ||
| 21 | |||
| 22 | ;;; Code: | ||
| 23 | |||
| 24 | (require 'cl-lib) | ||
| 25 | (eval-when-compile (require 'cl)) | ||
| 26 | |||
| 27 | (ert-deftest data-tests-= () | ||
| 28 | (should-error (=)) | ||
| 29 | (should (= 1)) | ||
| 30 | (should (= 2 2)) | ||
| 31 | (should (= 9 9 9 9 9 9 9 9 9)) | ||
| 32 | (should-not (apply #'= '(3 8 3))) | ||
| 33 | (should-error (= 9 9 'foo)) | ||
| 34 | ;; Short circuits before getting to bad arg | ||
| 35 | (should-not (= 9 8 'foo))) | ||
| 36 | |||
| 37 | (ert-deftest data-tests-< () | ||
| 38 | (should-error (<)) | ||
| 39 | (should (< 1)) | ||
| 40 | (should (< 2 3)) | ||
| 41 | (should (< -6 -1 0 2 3 4 8 9 999)) | ||
| 42 | (should-not (apply #'< '(3 8 3))) | ||
| 43 | (should-error (< 9 10 'foo)) | ||
| 44 | ;; Short circuits before getting to bad arg | ||
| 45 | (should-not (< 9 8 'foo))) | ||
| 46 | |||
| 47 | (ert-deftest data-tests-> () | ||
| 48 | (should-error (>)) | ||
| 49 | (should (> 1)) | ||
| 50 | (should (> 3 2)) | ||
| 51 | (should (> 6 1 0 -2 -3 -4 -8 -9 -999)) | ||
| 52 | (should-not (apply #'> '(3 8 3))) | ||
| 53 | (should-error (> 9 8 'foo)) | ||
| 54 | ;; Short circuits before getting to bad arg | ||
| 55 | (should-not (> 8 9 'foo))) | ||
| 56 | |||
| 57 | (ert-deftest data-tests-<= () | ||
| 58 | (should-error (<=)) | ||
| 59 | (should (<= 1)) | ||
| 60 | (should (<= 2 3)) | ||
| 61 | (should (<= -6 -1 -1 0 0 0 2 3 4 8 999)) | ||
| 62 | (should-not (apply #'<= '(3 8 3 3))) | ||
| 63 | (should-error (<= 9 10 'foo)) | ||
| 64 | ;; Short circuits before getting to bad arg | ||
| 65 | (should-not (<= 9 8 'foo))) | ||
| 66 | |||
| 67 | (ert-deftest data-tests->= () | ||
| 68 | (should-error (>=)) | ||
| 69 | (should (>= 1)) | ||
| 70 | (should (>= 3 2)) | ||
| 71 | (should (>= 666 1 0 0 -2 -3 -3 -3 -4 -8 -8 -9 -999)) | ||
| 72 | (should-not (apply #'>= '(3 8 3))) | ||
| 73 | (should-error (>= 9 8 'foo)) | ||
| 74 | ;; Short circuits before getting to bad arg | ||
| 75 | (should-not (>= 8 9 'foo))) | ||
| 76 | |||
| 77 | ;; Bool vector tests. Compactly represent bool vectors as hex | ||
| 78 | ;; strings. | ||
| 79 | |||
| 80 | (ert-deftest bool-vector-count-population-all-0-nil () | ||
| 81 | (cl-loop for sz in '(0 45 1 64 9 344) | ||
| 82 | do (let* ((bv (make-bool-vector sz nil))) | ||
| 83 | (should | ||
| 84 | (zerop | ||
| 85 | (bool-vector-count-population bv)))))) | ||
| 86 | |||
| 87 | (ert-deftest bool-vector-count-population-all-1-t () | ||
| 88 | (cl-loop for sz in '(0 45 1 64 9 344) | ||
| 89 | do (let* ((bv (make-bool-vector sz t))) | ||
| 90 | (should | ||
| 91 | (eql | ||
| 92 | (bool-vector-count-population bv) | ||
| 93 | sz))))) | ||
| 94 | |||
| 95 | (ert-deftest bool-vector-count-population-1-nil () | ||
| 96 | (let* ((bv (make-bool-vector 45 nil))) | ||
| 97 | (aset bv 40 t) | ||
| 98 | (aset bv 0 t) | ||
| 99 | (should | ||
| 100 | (eql | ||
| 101 | (bool-vector-count-population bv) | ||
| 102 | 2)))) | ||
| 103 | |||
| 104 | (ert-deftest bool-vector-count-population-1-t () | ||
| 105 | (let* ((bv (make-bool-vector 45 t))) | ||
| 106 | (aset bv 40 nil) | ||
| 107 | (aset bv 0 nil) | ||
| 108 | (should | ||
| 109 | (eql | ||
| 110 | (bool-vector-count-population bv) | ||
| 111 | 43)))) | ||
| 112 | |||
| 113 | (defun mock-bool-vector-count-consecutive (a b i) | ||
| 114 | (loop for i from i below (length a) | ||
| 115 | while (eq (aref a i) b) | ||
| 116 | sum 1)) | ||
| 117 | |||
| 118 | (defun test-bool-vector-bv-from-hex-string (desc) | ||
| 119 | (let (bv nchars nibbles) | ||
| 120 | (dolist (c (string-to-list desc)) | ||
| 121 | (push (string-to-number | ||
| 122 | (char-to-string c) | ||
| 123 | 16) | ||
| 124 | nibbles)) | ||
| 125 | (setf bv (make-bool-vector (* 4 (length nibbles)) nil)) | ||
| 126 | (let ((i 0)) | ||
| 127 | (dolist (n (nreverse nibbles)) | ||
| 128 | (dotimes (_ 4) | ||
| 129 | (aset bv i (> (logand 1 n) 0)) | ||
| 130 | (incf i) | ||
| 131 | (setf n (lsh n -1))))) | ||
| 132 | bv)) | ||
| 133 | |||
| 134 | (defun test-bool-vector-to-hex-string (bv) | ||
| 135 | (let (nibbles (v (cl-coerce bv 'list))) | ||
| 136 | (while v | ||
| 137 | (push (logior | ||
| 138 | (lsh (if (nth 0 v) 1 0) 0) | ||
| 139 | (lsh (if (nth 1 v) 1 0) 1) | ||
| 140 | (lsh (if (nth 2 v) 1 0) 2) | ||
| 141 | (lsh (if (nth 3 v) 1 0) 3)) | ||
| 142 | nibbles) | ||
| 143 | (setf v (nthcdr 4 v))) | ||
| 144 | (mapconcat (lambda (n) (format "%X" n)) | ||
| 145 | (nreverse nibbles) | ||
| 146 | ""))) | ||
| 147 | |||
| 148 | (defun test-bool-vector-count-consecutive-tc (desc) | ||
| 149 | "Run a test case for bool-vector-count-consecutive. | ||
| 150 | DESC is a string describing the test. It is a sequence of | ||
| 151 | hexadecimal digits describing the bool vector. We exhaustively | ||
| 152 | test all counts at all possible positions in the vector by | ||
| 153 | comparing the subr with a much slower lisp implementation." | ||
| 154 | (let ((bv (test-bool-vector-bv-from-hex-string desc))) | ||
| 155 | (loop | ||
| 156 | for lf in '(nil t) | ||
| 157 | do (loop | ||
| 158 | for pos from 0 upto (length bv) | ||
| 159 | for cnt = (mock-bool-vector-count-consecutive bv lf pos) | ||
| 160 | for rcnt = (bool-vector-count-consecutive bv lf pos) | ||
| 161 | unless (eql cnt rcnt) | ||
| 162 | do (error "FAILED testcase %S %3S %3S %3S" | ||
| 163 | pos lf cnt rcnt))))) | ||
| 164 | |||
| 165 | (defconst bool-vector-test-vectors | ||
| 166 | '("" | ||
| 167 | "0" | ||
| 168 | "F" | ||
| 169 | "0F" | ||
| 170 | "F0" | ||
| 171 | "00000000000000000000000000000FFFFF0000000" | ||
| 172 | "44a50234053fba3340000023444a50234053fba33400000234" | ||
| 173 | "12341234123456123412346001234123412345612341234600" | ||
| 174 | "44a50234053fba33400000234" | ||
| 175 | "1234123412345612341234600" | ||
| 176 | "44a50234053fba33400000234" | ||
| 177 | "1234123412345612341234600" | ||
| 178 | "44a502340" | ||
| 179 | "123412341" | ||
| 180 | "0000000000000000000000000" | ||
| 181 | "FFFFFFFFFFFFFFFF1")) | ||
| 182 | |||
| 183 | (ert-deftest bool-vector-count-consecutive () | ||
| 184 | (mapc #'test-bool-vector-count-consecutive-tc | ||
| 185 | bool-vector-test-vectors)) | ||
| 186 | |||
| 187 | (defun test-bool-vector-apply-mock-op (mock a b c) | ||
| 188 | "Compute (slowly) the correct result of a bool-vector set operation." | ||
| 189 | (let (changed nv) | ||
| 190 | (assert (eql (length b) (length c))) | ||
| 191 | (if a (setf nv a) | ||
| 192 | (setf a (make-bool-vector (length b) nil)) | ||
| 193 | (setf changed t)) | ||
| 194 | |||
| 195 | (loop for i below (length b) | ||
| 196 | for mockr = (funcall mock | ||
| 197 | (if (aref b i) 1 0) | ||
| 198 | (if (aref c i) 1 0)) | ||
| 199 | for r = (not (= 0 mockr)) | ||
| 200 | do (progn | ||
| 201 | (unless (eq (aref a i) r) | ||
| 202 | (setf changed t)) | ||
| 203 | (setf (aref a i) r))) | ||
| 204 | (if changed a))) | ||
| 205 | |||
| 206 | (defun test-bool-vector-binop (mock real) | ||
| 207 | "Test a binary set operation." | ||
| 208 | (loop for s1 in bool-vector-test-vectors | ||
| 209 | for bv1 = (test-bool-vector-bv-from-hex-string s1) | ||
| 210 | for vecs2 = (cl-remove-if-not | ||
| 211 | (lambda (x) (eql (length x) (length s1))) | ||
| 212 | bool-vector-test-vectors) | ||
| 213 | do (loop for s2 in vecs2 | ||
| 214 | for bv2 = (test-bool-vector-bv-from-hex-string s2) | ||
| 215 | for mock-result = (test-bool-vector-apply-mock-op | ||
| 216 | mock nil bv1 bv2) | ||
| 217 | for real-result = (funcall real bv1 bv2) | ||
| 218 | do (progn | ||
| 219 | (should (equal mock-result real-result)))))) | ||
| 220 | |||
| 221 | (ert-deftest bool-vector-intersection-op () | ||
| 222 | (test-bool-vector-binop | ||
| 223 | #'logand | ||
| 224 | #'bool-vector-intersection)) | ||
| 225 | |||
| 226 | (ert-deftest bool-vector-union-op () | ||
| 227 | (test-bool-vector-binop | ||
| 228 | #'logior | ||
| 229 | #'bool-vector-union)) | ||
| 230 | |||
| 231 | (ert-deftest bool-vector-xor-op () | ||
| 232 | (test-bool-vector-binop | ||
| 233 | #'logxor | ||
| 234 | #'bool-vector-exclusive-or)) | ||
| 235 | |||
| 236 | (ert-deftest bool-vector-set-difference-op () | ||
| 237 | (test-bool-vector-binop | ||
| 238 | (lambda (a b) (logand a (lognot b))) | ||
| 239 | #'bool-vector-set-difference)) | ||
| 240 | |||
| 241 | (ert-deftest bool-vector-change-detection () | ||
| 242 | (let* ((vc1 (test-bool-vector-bv-from-hex-string "abcdef")) | ||
| 243 | (vc2 (test-bool-vector-bv-from-hex-string "012345")) | ||
| 244 | (vc3 (make-bool-vector (length vc1) nil)) | ||
| 245 | (c1 (bool-vector-union vc1 vc2 vc3)) | ||
| 246 | (c2 (bool-vector-union vc1 vc2 vc3))) | ||
| 247 | (should (equal c1 (test-bool-vector-apply-mock-op | ||
| 248 | #'logior | ||
| 249 | nil | ||
| 250 | vc1 vc2))) | ||
| 251 | (should (not c2)))) | ||
| 252 | |||
| 253 | (ert-deftest bool-vector-not () | ||
| 254 | (let* ((v1 (test-bool-vector-bv-from-hex-string "FFFF3")) | ||
| 255 | (v2 (test-bool-vector-bv-from-hex-string "0000C")) | ||
| 256 | (v3 (bool-vector-not v1))) | ||
| 257 | (should (equal v2 v3)))) | ||
diff --git a/test/automated/help-fns.el b/test/automated/help-fns.el new file mode 100644 index 00000000000..2bcd71b83f6 --- /dev/null +++ b/test/automated/help-fns.el | |||
| @@ -0,0 +1,70 @@ | |||
| 1 | ;;; help-fns.el --- tests for help-fns.el | ||
| 2 | |||
| 3 | ;; Copyright (C) 2014-2017 Free Software Foundation, Inc. | ||
| 4 | |||
| 5 | ;; Maintainer: emacs-devel@gnu.org | ||
| 6 | |||
| 7 | ;; This file is part of GNU Emacs. | ||
| 8 | |||
| 9 | ;; GNU Emacs is free software: you can redistribute it and/or modify | ||
| 10 | ;; it under the terms of the GNU General Public License as published by | ||
| 11 | ;; the Free Software Foundation, either version 3 of the License, or | ||
| 12 | ;; (at your option) any later version. | ||
| 13 | |||
| 14 | ;; GNU Emacs is distributed in the hope that it will be useful, | ||
| 15 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 16 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 17 | ;; GNU General Public License for more details. | ||
| 18 | |||
| 19 | ;; You should have received a copy of the GNU General Public License | ||
| 20 | ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. | ||
| 21 | |||
| 22 | ;;; Commentary: | ||
| 23 | |||
| 24 | ;;; Code: | ||
| 25 | |||
| 26 | (require 'ert) | ||
| 27 | |||
| 28 | (autoload 'help-fns-test--macro "help-fns" nil nil t) | ||
| 29 | |||
| 30 | (ert-deftest help-fns-test-bug17410 () | ||
| 31 | "Test for http://debbugs.gnu.org/17410 ." | ||
| 32 | (describe-function 'help-fns-test--macro) | ||
| 33 | (with-current-buffer "*Help*" | ||
| 34 | (goto-char (point-min)) | ||
| 35 | (should (search-forward "autoloaded Lisp macro" (line-end-position))))) | ||
| 36 | |||
| 37 | (defun abc\\\[universal-argument\]b\`c\'d\\e\"f (x) | ||
| 38 | "A function with a funny name. | ||
| 39 | |||
| 40 | \(fn XYZZY)" | ||
| 41 | x) | ||
| 42 | |||
| 43 | (defun defgh\\\[universal-argument\]b\`c\'d\\e\"f (x) | ||
| 44 | "Another function with a funny name." | ||
| 45 | x) | ||
| 46 | |||
| 47 | (ert-deftest help-fns-test-funny-names () | ||
| 48 | "Test for help with functions with funny names." | ||
| 49 | (describe-function 'abc\\\[universal-argument\]b\`c\'d\\e\"f) | ||
| 50 | (with-current-buffer "*Help*" | ||
| 51 | (goto-char (point-min)) | ||
| 52 | (should (search-forward | ||
| 53 | "(abc\\\\\\[universal-argument\\]b\\`c\\'d\\\\e\\\"f XYZZY)"))) | ||
| 54 | (describe-function 'defgh\\\[universal-argument\]b\`c\'d\\e\"f) | ||
| 55 | (with-current-buffer "*Help*" | ||
| 56 | (goto-char (point-min)) | ||
| 57 | (should (search-forward | ||
| 58 | "(defgh\\\\\\[universal-argument\\]b\\`c\\'d\\\\e\\\"f X)")))) | ||
| 59 | |||
| 60 | (ert-deftest help-fns-test-describe-symbol () | ||
| 61 | "Test the `describe-symbol' function." | ||
| 62 | ;; 'describe-symbol' would originally signal an error for | ||
| 63 | ;; 'font-lock-comment-face'. | ||
| 64 | (describe-symbol 'font-lock-comment-face) | ||
| 65 | (with-current-buffer "*Help*" | ||
| 66 | (should (> (point-max) 1)) | ||
| 67 | (goto-char (point-min)) | ||
| 68 | (should (looking-at "^font-lock-comment-face is ")))) | ||
| 69 | |||
| 70 | ;;; help-fns.el ends here | ||
diff --git a/test/automated/lexbind-tests.el b/test/automated/lexbind-tests.el new file mode 100644 index 00000000000..483bd1a7cd4 --- /dev/null +++ b/test/automated/lexbind-tests.el | |||
| @@ -0,0 +1,75 @@ | |||
| 1 | ;;; lexbind-tests.el --- Testing the lexbind byte-compiler | ||
| 2 | |||
| 3 | ;; Copyright (C) 2011-2017 Free Software Foundation, Inc. | ||
| 4 | |||
| 5 | ;; Author: Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 6 | ;; Keywords: | ||
| 7 | |||
| 8 | ;; This program is free software; you can redistribute it and/or modify | ||
| 9 | ;; it under the terms of the GNU General Public License as published by | ||
| 10 | ;; the Free Software Foundation, either version 3 of the License, or | ||
| 11 | ;; (at your option) any later version. | ||
| 12 | |||
| 13 | ;; This program is distributed in the hope that it will be useful, | ||
| 14 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 15 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 16 | ;; GNU General Public License for more details. | ||
| 17 | |||
| 18 | ;; You should have received a copy of the GNU General Public License | ||
| 19 | ;; along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 20 | |||
| 21 | ;;; Commentary: | ||
| 22 | |||
| 23 | ;; | ||
| 24 | |||
| 25 | ;;; Code: | ||
| 26 | |||
| 27 | (require 'ert) | ||
| 28 | |||
| 29 | (defconst lexbind-tests | ||
| 30 | `( | ||
| 31 | (let ((f #'car)) | ||
| 32 | (let ((f (lambda (x) (cons (funcall f x) (cdr x))))) | ||
| 33 | (funcall f '(1 . 2)))) | ||
| 34 | ) | ||
| 35 | "List of expression for test. | ||
| 36 | Each element will be executed by interpreter and with | ||
| 37 | bytecompiled code, and their results compared.") | ||
| 38 | |||
| 39 | |||
| 40 | |||
| 41 | (defun lexbind-check-1 (pat) | ||
| 42 | "Return non-nil if PAT is the same whether directly evalled or compiled." | ||
| 43 | (let ((warning-minimum-log-level :emergency) | ||
| 44 | (byte-compile-warnings nil) | ||
| 45 | (v0 (condition-case nil | ||
| 46 | (eval pat t) | ||
| 47 | (error nil))) | ||
| 48 | (v1 (condition-case nil | ||
| 49 | (funcall (let ((lexical-binding t)) | ||
| 50 | (byte-compile `(lambda nil ,pat)))) | ||
| 51 | (error nil)))) | ||
| 52 | (equal v0 v1))) | ||
| 53 | |||
| 54 | (put 'lexbind-check-1 'ert-explainer 'lexbind-explain-1) | ||
| 55 | |||
| 56 | (defun lexbind-explain-1 (pat) | ||
| 57 | (let ((v0 (condition-case nil | ||
| 58 | (eval pat t) | ||
| 59 | (error nil))) | ||
| 60 | (v1 (condition-case nil | ||
| 61 | (funcall (let ((lexical-binding t)) | ||
| 62 | (byte-compile (list 'lambda nil pat)))) | ||
| 63 | (error nil)))) | ||
| 64 | (format "Expression `%s' gives `%s' if directly evalled, `%s' if compiled." | ||
| 65 | pat v0 v1))) | ||
| 66 | |||
| 67 | (ert-deftest lexbind-tests () | ||
| 68 | "Test the Emacs byte compiler lexbind handling." | ||
| 69 | (dolist (pat lexbind-tests) | ||
| 70 | (should (lexbind-check-1 pat)))) | ||
| 71 | |||
| 72 | |||
| 73 | |||
| 74 | (provide 'lexbind-tests) | ||
| 75 | ;;; lexbind-tests.el ends here | ||
diff --git a/test/automated/syntax-tests.el b/test/automated/syntax-tests.el new file mode 100644 index 00000000000..7afafdfa768 --- /dev/null +++ b/test/automated/syntax-tests.el | |||
| @@ -0,0 +1,97 @@ | |||
| 1 | ;;; syntax-tests.el --- Testing syntax rules and basic movement -*- lexical-binding: t -*- | ||
| 2 | |||
| 3 | ;; Copyright (C) 2014-2017 Free Software Foundation, Inc. | ||
| 4 | |||
| 5 | ;; Author: Daniel Colascione <dancol@dancol.org> | ||
| 6 | ;; Keywords: | ||
| 7 | |||
| 8 | ;; This program is free software; you can redistribute it and/or modify | ||
| 9 | ;; it under the terms of the GNU General Public License as published by | ||
| 10 | ;; the Free Software Foundation, either version 3 of the License, or | ||
| 11 | ;; (at your option) any later version. | ||
| 12 | |||
| 13 | ;; This program is distributed in the hope that it will be useful, | ||
| 14 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 15 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 16 | ;; GNU General Public License for more details. | ||
| 17 | |||
| 18 | ;; You should have received a copy of the GNU General Public License | ||
| 19 | ;; along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 20 | |||
| 21 | ;;; Commentary: | ||
| 22 | |||
| 23 | ;; | ||
| 24 | |||
| 25 | ;;; Code: | ||
| 26 | (require 'ert) | ||
| 27 | (require 'cl-lib) | ||
| 28 | |||
| 29 | (defun run-up-list-test (fn data start instructions) | ||
| 30 | (cl-labels ((posof (thing) | ||
| 31 | (and (symbolp thing) | ||
| 32 | (= (length (symbol-name thing)) 1) | ||
| 33 | (- (aref (symbol-name thing) 0) ?a -1)))) | ||
| 34 | (with-temp-buffer | ||
| 35 | (set-syntax-table (make-syntax-table)) | ||
| 36 | ;; Use a syntax table in which single quote is a string | ||
| 37 | ;; character so that we can embed the test data in a lisp string | ||
| 38 | ;; literal. | ||
| 39 | (modify-syntax-entry ?\' "\"") | ||
| 40 | (insert data) | ||
| 41 | (goto-char (posof start)) | ||
| 42 | (dolist (instruction instructions) | ||
| 43 | (cond ((posof instruction) | ||
| 44 | (funcall fn) | ||
| 45 | (should (eql (point) (posof instruction)))) | ||
| 46 | ((symbolp instruction) | ||
| 47 | (should-error (funcall fn) | ||
| 48 | :type instruction)) | ||
| 49 | (t (cl-assert nil nil "unknown ins"))))))) | ||
| 50 | |||
| 51 | (defmacro define-up-list-test (name fn data start &rest expected) | ||
| 52 | `(ert-deftest ,name () | ||
| 53 | (run-up-list-test ,fn ,data ',start ',expected))) | ||
| 54 | |||
| 55 | (define-up-list-test up-list-basic | ||
| 56 | (lambda () (up-list)) | ||
| 57 | (or "(1 1 (1 1) 1 (1 1) 1)") | ||
| 58 | ;; abcdefghijklmnopqrstuv | ||
| 59 | i k v scan-error) | ||
| 60 | |||
| 61 | (define-up-list-test up-list-with-forward-sexp-function | ||
| 62 | (lambda () | ||
| 63 | (let ((forward-sexp-function | ||
| 64 | (lambda (&optional arg) | ||
| 65 | (let ((forward-sexp-function nil)) | ||
| 66 | (forward-sexp arg))))) | ||
| 67 | (up-list))) | ||
| 68 | (or "(1 1 (1 1) 1 (1 1) 1)") | ||
| 69 | ;; abcdefghijklmnopqrstuv | ||
| 70 | i k v scan-error) | ||
| 71 | |||
| 72 | (define-up-list-test up-list-out-of-string | ||
| 73 | (lambda () (up-list 1 t)) | ||
| 74 | (or "1 (1 '2 2 (2 2 2' 1) 1") | ||
| 75 | ;; abcdefghijklmnopqrstuvwxy | ||
| 76 | o r u scan-error) | ||
| 77 | |||
| 78 | (define-up-list-test up-list-cross-string | ||
| 79 | (lambda () (up-list 1 t)) | ||
| 80 | (or "(1 '2 ( 2' 1 '2 ) 2' 1)") | ||
| 81 | ;; abcdefghijklmnopqrstuvwxy | ||
| 82 | i r u x scan-error) | ||
| 83 | |||
| 84 | (define-up-list-test up-list-no-cross-string | ||
| 85 | (lambda () (up-list 1 t t)) | ||
| 86 | (or "(1 '2 ( 2' 1 '2 ) 2' 1)") | ||
| 87 | ;; abcdefghijklmnopqrstuvwxy | ||
| 88 | i k x scan-error) | ||
| 89 | |||
| 90 | (define-up-list-test backward-up-list-basic | ||
| 91 | (lambda () (backward-up-list)) | ||
| 92 | (or "(1 1 (1 1) 1 (1 1) 1)") | ||
| 93 | ;; abcdefghijklmnopqrstuv | ||
| 94 | i f a scan-error) | ||
| 95 | |||
| 96 | (provide 'syntax-tests) | ||
| 97 | ;;; syntax-tests.el ends here | ||
diff --git a/test/automated/tramp-tests.el b/test/automated/tramp-tests.el new file mode 100644 index 00000000000..10e1bde51e7 --- /dev/null +++ b/test/automated/tramp-tests.el | |||
| @@ -0,0 +1,2383 @@ | |||
| 1 | ;;; tramp-tests.el --- Tests of remote file access | ||
| 2 | |||
| 3 | ;; Copyright (C) 2013-2017 Free Software Foundation, Inc. | ||
| 4 | |||
| 5 | ;; Author: Michael Albinus <michael.albinus@gmx.de> | ||
| 6 | |||
| 7 | ;; This program is free software: you can redistribute it and/or | ||
| 8 | ;; modify it under the terms of the GNU General Public License as | ||
| 9 | ;; published by the Free Software Foundation, either version 3 of the | ||
| 10 | ;; License, or (at your option) any later version. | ||
| 11 | ;; | ||
| 12 | ;; This program is distributed in the hope that it will be useful, but | ||
| 13 | ;; WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 14 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
| 15 | ;; General Public License for more details. | ||
| 16 | ;; | ||
| 17 | ;; You should have received a copy of the GNU General Public License | ||
| 18 | ;; along with this program. If not, see `http://www.gnu.org/licenses/'. | ||
| 19 | |||
| 20 | ;;; Commentary: | ||
| 21 | |||
| 22 | ;; The tests require a recent ert.el from Emacs 24.4. | ||
| 23 | |||
| 24 | ;; Some of the tests require access to a remote host files. Since | ||
| 25 | ;; this could be problematic, a mock-up connection method "mock" is | ||
| 26 | ;; used. Emulating a remote connection, it simply calls "sh -i". | ||
| 27 | ;; Tramp's file name handlers still run, so this test is sufficient | ||
| 28 | ;; except for connection establishing. | ||
| 29 | |||
| 30 | ;; If you want to test a real Tramp connection, set | ||
| 31 | ;; $REMOTE_TEMPORARY_FILE_DIRECTORY to a suitable value in order to | ||
| 32 | ;; overwrite the default value. If you want to skip tests accessing a | ||
| 33 | ;; remote host, set this environment variable to "/dev/null" or | ||
| 34 | ;; whatever is appropriate on your system. | ||
| 35 | |||
| 36 | ;; A whole test run can be performed calling the command `tramp-test-all'. | ||
| 37 | |||
| 38 | ;;; Code: | ||
| 39 | |||
| 40 | (require 'ert) | ||
| 41 | (require 'tramp) | ||
| 42 | (require 'vc) | ||
| 43 | (require 'vc-bzr) | ||
| 44 | (require 'vc-git) | ||
| 45 | (require 'vc-hg) | ||
| 46 | |||
| 47 | (autoload 'dired-uncache "dired") | ||
| 48 | (declare-function tramp-find-executable "tramp-sh") | ||
| 49 | (declare-function tramp-get-remote-path "tramp-sh") | ||
| 50 | (declare-function tramp-get-remote-stat "tramp-sh") | ||
| 51 | (declare-function tramp-get-remote-perl "tramp-sh") | ||
| 52 | (defvar tramp-copy-size-limit) | ||
| 53 | (defvar tramp-persistency-file-name) | ||
| 54 | (defvar tramp-remote-process-environment) | ||
| 55 | |||
| 56 | ;; There is no default value on w32 systems, which could work out of the box. | ||
| 57 | (defconst tramp-test-temporary-file-directory | ||
| 58 | (cond | ||
| 59 | ((getenv "REMOTE_TEMPORARY_FILE_DIRECTORY")) | ||
| 60 | ((eq system-type 'windows-nt) null-device) | ||
| 61 | (t (add-to-list | ||
| 62 | 'tramp-methods | ||
| 63 | '("mock" | ||
| 64 | (tramp-login-program "sh") | ||
| 65 | (tramp-login-args (("-i"))) | ||
| 66 | (tramp-remote-shell "/bin/sh") | ||
| 67 | (tramp-remote-shell-args ("-c")) | ||
| 68 | (tramp-connection-timeout 10))) | ||
| 69 | (format "/mock::%s" temporary-file-directory))) | ||
| 70 | "Temporary directory for Tramp tests.") | ||
| 71 | |||
| 72 | (setq password-cache-expiry nil | ||
| 73 | tramp-verbose 0 | ||
| 74 | tramp-copy-size-limit nil | ||
| 75 | tramp-message-show-message nil | ||
| 76 | tramp-persistency-file-name nil) | ||
| 77 | |||
| 78 | ;; This shall happen on hydra only. | ||
| 79 | (when (getenv "NIX_STORE") | ||
| 80 | (add-to-list 'tramp-remote-path 'tramp-own-remote-path)) | ||
| 81 | |||
| 82 | (defvar tramp--test-enabled-checked nil | ||
| 83 | "Cached result of `tramp--test-enabled'. | ||
| 84 | If the function did run, the value is a cons cell, the `cdr' | ||
| 85 | being the result.") | ||
| 86 | |||
| 87 | (defun tramp--test-enabled () | ||
| 88 | "Whether remote file access is enabled." | ||
| 89 | (unless (consp tramp--test-enabled-checked) | ||
| 90 | (setq | ||
| 91 | tramp--test-enabled-checked | ||
| 92 | (cons | ||
| 93 | t (ignore-errors | ||
| 94 | (and | ||
| 95 | (file-remote-p tramp-test-temporary-file-directory) | ||
| 96 | (file-directory-p tramp-test-temporary-file-directory) | ||
| 97 | (file-writable-p tramp-test-temporary-file-directory)))))) | ||
| 98 | |||
| 99 | (when (cdr tramp--test-enabled-checked) | ||
| 100 | ;; Cleanup connection. | ||
| 101 | (ignore-errors | ||
| 102 | (tramp-cleanup-connection | ||
| 103 | (tramp-dissect-file-name tramp-test-temporary-file-directory) | ||
| 104 | nil 'keep-password))) | ||
| 105 | |||
| 106 | ;; Return result. | ||
| 107 | (cdr tramp--test-enabled-checked)) | ||
| 108 | |||
| 109 | (defun tramp--test-make-temp-name (&optional local) | ||
| 110 | "Create a temporary file name for test." | ||
| 111 | (expand-file-name | ||
| 112 | (make-temp-name "tramp-test") | ||
| 113 | (if local temporary-file-directory tramp-test-temporary-file-directory))) | ||
| 114 | |||
| 115 | (defmacro tramp--instrument-test-case (verbose &rest body) | ||
| 116 | "Run BODY with `tramp-verbose' equal VERBOSE. | ||
| 117 | Print the the content of the Tramp debug buffer, if BODY does not | ||
| 118 | eval properly in `should', `should-not' or `should-error'. BODY | ||
| 119 | shall not contain a timeout." | ||
| 120 | (declare (indent 1) (debug (natnump body))) | ||
| 121 | `(let ((tramp-verbose ,verbose) | ||
| 122 | (tramp-message-show-message t) | ||
| 123 | (tramp-debug-on-error t) | ||
| 124 | (debug-ignored-errors | ||
| 125 | (cons "^make-symbolic-link not supported$" debug-ignored-errors))) | ||
| 126 | (unwind-protect | ||
| 127 | (progn ,@body) | ||
| 128 | (when (> tramp-verbose 3) | ||
| 129 | (with-parsed-tramp-file-name tramp-test-temporary-file-directory nil | ||
| 130 | (with-current-buffer (tramp-get-connection-buffer v) | ||
| 131 | (message "%s" (buffer-string))) | ||
| 132 | (with-current-buffer (tramp-get-debug-buffer v) | ||
| 133 | (message "%s" (buffer-string)))))))) | ||
| 134 | |||
| 135 | (ert-deftest tramp-test00-availability () | ||
| 136 | "Test availability of Tramp functions." | ||
| 137 | :expected-result (if (tramp--test-enabled) :passed :failed) | ||
| 138 | (message "Remote directory: `%s'" tramp-test-temporary-file-directory) | ||
| 139 | (should (ignore-errors | ||
| 140 | (and | ||
| 141 | (file-remote-p tramp-test-temporary-file-directory) | ||
| 142 | (file-directory-p tramp-test-temporary-file-directory) | ||
| 143 | (file-writable-p tramp-test-temporary-file-directory))))) | ||
| 144 | |||
| 145 | (ert-deftest tramp-test01-file-name-syntax () | ||
| 146 | "Check remote file name syntax." | ||
| 147 | ;; Simple cases. | ||
| 148 | (should (tramp-tramp-file-p "/method::")) | ||
| 149 | (should (tramp-tramp-file-p "/host:")) | ||
| 150 | (should (tramp-tramp-file-p "/user@:")) | ||
| 151 | (should (tramp-tramp-file-p "/user@host:")) | ||
| 152 | (should (tramp-tramp-file-p "/method:host:")) | ||
| 153 | (should (tramp-tramp-file-p "/method:user@:")) | ||
| 154 | (should (tramp-tramp-file-p "/method:user@host:")) | ||
| 155 | (should (tramp-tramp-file-p "/method:user@email@host:")) | ||
| 156 | |||
| 157 | ;; Using a port. | ||
| 158 | (should (tramp-tramp-file-p "/host#1234:")) | ||
| 159 | (should (tramp-tramp-file-p "/user@host#1234:")) | ||
| 160 | (should (tramp-tramp-file-p "/method:host#1234:")) | ||
| 161 | (should (tramp-tramp-file-p "/method:user@host#1234:")) | ||
| 162 | |||
| 163 | ;; Using an IPv4 address. | ||
| 164 | (should (tramp-tramp-file-p "/1.2.3.4:")) | ||
| 165 | (should (tramp-tramp-file-p "/user@1.2.3.4:")) | ||
| 166 | (should (tramp-tramp-file-p "/method:1.2.3.4:")) | ||
| 167 | (should (tramp-tramp-file-p "/method:user@1.2.3.4:")) | ||
| 168 | |||
| 169 | ;; Using an IPv6 address. | ||
| 170 | (should (tramp-tramp-file-p "/[]:")) | ||
| 171 | (should (tramp-tramp-file-p "/[::1]:")) | ||
| 172 | (should (tramp-tramp-file-p "/user@[::1]:")) | ||
| 173 | (should (tramp-tramp-file-p "/method:[::1]:")) | ||
| 174 | (should (tramp-tramp-file-p "/method:user@[::1]:")) | ||
| 175 | |||
| 176 | ;; Local file name part. | ||
| 177 | (should (tramp-tramp-file-p "/host:/:")) | ||
| 178 | (should (tramp-tramp-file-p "/method:::")) | ||
| 179 | (should (tramp-tramp-file-p "/method::/path/to/file")) | ||
| 180 | (should (tramp-tramp-file-p "/method::file")) | ||
| 181 | |||
| 182 | ;; Multihop. | ||
| 183 | (should (tramp-tramp-file-p "/method1:|method2::")) | ||
| 184 | (should (tramp-tramp-file-p "/method1:host1|host2:")) | ||
| 185 | (should (tramp-tramp-file-p "/method1:host1|method2:host2:")) | ||
| 186 | (should (tramp-tramp-file-p "/method1:user1@host1|method2:user2@host2:")) | ||
| 187 | (should (tramp-tramp-file-p | ||
| 188 | "/method1:user1@host1|method2:user2@host2|method3:user3@host3:")) | ||
| 189 | |||
| 190 | ;; No strings. | ||
| 191 | (should-not (tramp-tramp-file-p nil)) | ||
| 192 | (should-not (tramp-tramp-file-p 'symbol)) | ||
| 193 | ;; "/:" suppresses file name handlers. | ||
| 194 | (should-not (tramp-tramp-file-p "/::")) | ||
| 195 | (should-not (tramp-tramp-file-p "/:@:")) | ||
| 196 | (should-not (tramp-tramp-file-p "/:[]:")) | ||
| 197 | ;; Multihops require a method. | ||
| 198 | (should-not (tramp-tramp-file-p "/host1|host2:")) | ||
| 199 | ;; Methods or hostnames shall be at least two characters on MS Windows. | ||
| 200 | (when (memq system-type '(cygwin windows-nt)) | ||
| 201 | (should-not (tramp-tramp-file-p "/c:/path/to/file")) | ||
| 202 | (should-not (tramp-tramp-file-p "/c::/path/to/file")))) | ||
| 203 | |||
| 204 | (ert-deftest tramp-test02-file-name-dissect () | ||
| 205 | "Check remote file name components." | ||
| 206 | (let ((tramp-default-method "default-method") | ||
| 207 | (tramp-default-user "default-user") | ||
| 208 | (tramp-default-host "default-host")) | ||
| 209 | ;; Expand `tramp-default-user' and `tramp-default-host'. | ||
| 210 | (should (string-equal | ||
| 211 | (file-remote-p "/method::") | ||
| 212 | (format "/%s:%s@%s:" "method" "default-user" "default-host"))) | ||
| 213 | (should (string-equal (file-remote-p "/method::" 'method) "method")) | ||
| 214 | (should (string-equal (file-remote-p "/method::" 'user) "default-user")) | ||
| 215 | (should (string-equal (file-remote-p "/method::" 'host) "default-host")) | ||
| 216 | (should (string-equal (file-remote-p "/method::" 'localname) "")) | ||
| 217 | (should (string-equal (file-remote-p "/method::" 'hop) nil)) | ||
| 218 | |||
| 219 | ;; Expand `tramp-default-method' and `tramp-default-user'. | ||
| 220 | (should (string-equal | ||
| 221 | (file-remote-p "/host:") | ||
| 222 | (format "/%s:%s@%s:" "default-method" "default-user" "host"))) | ||
| 223 | (should (string-equal (file-remote-p "/host:" 'method) "default-method")) | ||
| 224 | (should (string-equal (file-remote-p "/host:" 'user) "default-user")) | ||
| 225 | (should (string-equal (file-remote-p "/host:" 'host) "host")) | ||
| 226 | (should (string-equal (file-remote-p "/host:" 'localname) "")) | ||
| 227 | (should (string-equal (file-remote-p "/host:" 'hop) nil)) | ||
| 228 | |||
| 229 | ;; Expand `tramp-default-method' and `tramp-default-host'. | ||
| 230 | (should (string-equal | ||
| 231 | (file-remote-p "/user@:") | ||
| 232 | (format "/%s:%s@%s:" "default-method""user" "default-host"))) | ||
| 233 | (should (string-equal (file-remote-p "/user@:" 'method) "default-method")) | ||
| 234 | (should (string-equal (file-remote-p "/user@:" 'user) "user")) | ||
| 235 | (should (string-equal (file-remote-p "/user@:" 'host) "default-host")) | ||
| 236 | (should (string-equal (file-remote-p "/user@:" 'localname) "")) | ||
| 237 | (should (string-equal (file-remote-p "/user@:" 'hop) nil)) | ||
| 238 | |||
| 239 | ;; Expand `tramp-default-method'. | ||
| 240 | (should (string-equal | ||
| 241 | (file-remote-p "/user@host:") | ||
| 242 | (format "/%s:%s@%s:" "default-method" "user" "host"))) | ||
| 243 | (should (string-equal | ||
| 244 | (file-remote-p "/user@host:" 'method) "default-method")) | ||
| 245 | (should (string-equal (file-remote-p "/user@host:" 'user) "user")) | ||
| 246 | (should (string-equal (file-remote-p "/user@host:" 'host) "host")) | ||
| 247 | (should (string-equal (file-remote-p "/user@host:" 'localname) "")) | ||
| 248 | (should (string-equal (file-remote-p "/user@host:" 'hop) nil)) | ||
| 249 | |||
| 250 | ;; Expand `tramp-default-user'. | ||
| 251 | (should (string-equal | ||
| 252 | (file-remote-p "/method:host:") | ||
| 253 | (format "/%s:%s@%s:" "method" "default-user" "host"))) | ||
| 254 | (should (string-equal (file-remote-p "/method:host:" 'method) "method")) | ||
| 255 | (should (string-equal (file-remote-p "/method:host:" 'user) "default-user")) | ||
| 256 | (should (string-equal (file-remote-p "/method:host:" 'host) "host")) | ||
| 257 | (should (string-equal (file-remote-p "/method:host:" 'localname) "")) | ||
| 258 | (should (string-equal (file-remote-p "/method:host:" 'hop) nil)) | ||
| 259 | |||
| 260 | ;; Expand `tramp-default-host'. | ||
| 261 | (should (string-equal | ||
| 262 | (file-remote-p "/method:user@:") | ||
| 263 | (format "/%s:%s@%s:" "method" "user" "default-host"))) | ||
| 264 | (should (string-equal (file-remote-p "/method:user@:" 'method) "method")) | ||
| 265 | (should (string-equal (file-remote-p "/method:user@:" 'user) "user")) | ||
| 266 | (should (string-equal (file-remote-p "/method:user@:" 'host) | ||
| 267 | "default-host")) | ||
| 268 | (should (string-equal (file-remote-p "/method:user@:" 'localname) "")) | ||
| 269 | (should (string-equal (file-remote-p "/method:user@:" 'hop) nil)) | ||
| 270 | |||
| 271 | ;; No expansion. | ||
| 272 | (should (string-equal | ||
| 273 | (file-remote-p "/method:user@host:") | ||
| 274 | (format "/%s:%s@%s:" "method" "user" "host"))) | ||
| 275 | (should (string-equal | ||
| 276 | (file-remote-p "/method:user@host:" 'method) "method")) | ||
| 277 | (should (string-equal (file-remote-p "/method:user@host:" 'user) "user")) | ||
| 278 | (should (string-equal (file-remote-p "/method:user@host:" 'host) "host")) | ||
| 279 | (should (string-equal (file-remote-p "/method:user@host:" 'localname) "")) | ||
| 280 | (should (string-equal (file-remote-p "/method:user@host:" 'hop) nil)) | ||
| 281 | |||
| 282 | ;; No expansion. | ||
| 283 | (should (string-equal | ||
| 284 | (file-remote-p "/method:user@email@host:") | ||
| 285 | (format "/%s:%s@%s:" "method" "user@email" "host"))) | ||
| 286 | (should (string-equal | ||
| 287 | (file-remote-p "/method:user@email@host:" 'method) "method")) | ||
| 288 | (should (string-equal | ||
| 289 | (file-remote-p "/method:user@email@host:" 'user) "user@email")) | ||
| 290 | (should (string-equal | ||
| 291 | (file-remote-p "/method:user@email@host:" 'host) "host")) | ||
| 292 | (should (string-equal | ||
| 293 | (file-remote-p "/method:user@email@host:" 'localname) "")) | ||
| 294 | (should (string-equal | ||
| 295 | (file-remote-p "/method:user@email@host:" 'hop) nil)) | ||
| 296 | |||
| 297 | ;; Expand `tramp-default-method' and `tramp-default-user'. | ||
| 298 | (should (string-equal | ||
| 299 | (file-remote-p "/host#1234:") | ||
| 300 | (format "/%s:%s@%s:" "default-method" "default-user" "host#1234"))) | ||
| 301 | (should (string-equal | ||
| 302 | (file-remote-p "/host#1234:" 'method) "default-method")) | ||
| 303 | (should (string-equal (file-remote-p "/host#1234:" 'user) "default-user")) | ||
| 304 | (should (string-equal (file-remote-p "/host#1234:" 'host) "host#1234")) | ||
| 305 | (should (string-equal (file-remote-p "/host#1234:" 'localname) "")) | ||
| 306 | (should (string-equal (file-remote-p "/host#1234:" 'hop) nil)) | ||
| 307 | |||
| 308 | ;; Expand `tramp-default-method'. | ||
| 309 | (should (string-equal | ||
| 310 | (file-remote-p "/user@host#1234:") | ||
| 311 | (format "/%s:%s@%s:" "default-method" "user" "host#1234"))) | ||
| 312 | (should (string-equal | ||
| 313 | (file-remote-p "/user@host#1234:" 'method) "default-method")) | ||
| 314 | (should (string-equal (file-remote-p "/user@host#1234:" 'user) "user")) | ||
| 315 | (should (string-equal (file-remote-p "/user@host#1234:" 'host) "host#1234")) | ||
| 316 | (should (string-equal (file-remote-p "/user@host#1234:" 'localname) "")) | ||
| 317 | (should (string-equal (file-remote-p "/user@host#1234:" 'hop) nil)) | ||
| 318 | |||
| 319 | ;; Expand `tramp-default-user'. | ||
| 320 | (should (string-equal | ||
| 321 | (file-remote-p "/method:host#1234:") | ||
| 322 | (format "/%s:%s@%s:" "method" "default-user" "host#1234"))) | ||
| 323 | (should (string-equal | ||
| 324 | (file-remote-p "/method:host#1234:" 'method) "method")) | ||
| 325 | (should (string-equal | ||
| 326 | (file-remote-p "/method:host#1234:" 'user) "default-user")) | ||
| 327 | (should (string-equal | ||
| 328 | (file-remote-p "/method:host#1234:" 'host) "host#1234")) | ||
| 329 | (should (string-equal (file-remote-p "/method:host#1234:" 'localname) "")) | ||
| 330 | (should (string-equal (file-remote-p "/method:host#1234:" 'hop) nil)) | ||
| 331 | |||
| 332 | ;; No expansion. | ||
| 333 | (should (string-equal | ||
| 334 | (file-remote-p "/method:user@host#1234:") | ||
| 335 | (format "/%s:%s@%s:" "method" "user" "host#1234"))) | ||
| 336 | (should (string-equal | ||
| 337 | (file-remote-p "/method:user@host#1234:" 'method) "method")) | ||
| 338 | (should (string-equal | ||
| 339 | (file-remote-p "/method:user@host#1234:" 'user) "user")) | ||
| 340 | (should (string-equal | ||
| 341 | (file-remote-p "/method:user@host#1234:" 'host) "host#1234")) | ||
| 342 | (should (string-equal | ||
| 343 | (file-remote-p "/method:user@host#1234:" 'localname) "")) | ||
| 344 | (should (string-equal | ||
| 345 | (file-remote-p "/method:user@host#1234:" 'hop) nil)) | ||
| 346 | |||
| 347 | ;; Expand `tramp-default-method' and `tramp-default-user'. | ||
| 348 | (should (string-equal | ||
| 349 | (file-remote-p "/1.2.3.4:") | ||
| 350 | (format "/%s:%s@%s:" "default-method" "default-user" "1.2.3.4"))) | ||
| 351 | (should (string-equal (file-remote-p "/1.2.3.4:" 'method) "default-method")) | ||
| 352 | (should (string-equal (file-remote-p "/1.2.3.4:" 'user) "default-user")) | ||
| 353 | (should (string-equal (file-remote-p "/1.2.3.4:" 'host) "1.2.3.4")) | ||
| 354 | (should (string-equal (file-remote-p "/1.2.3.4:" 'localname) "")) | ||
| 355 | (should (string-equal (file-remote-p "/1.2.3.4:" 'hop) nil)) | ||
| 356 | |||
| 357 | ;; Expand `tramp-default-method'. | ||
| 358 | (should (string-equal | ||
| 359 | (file-remote-p "/user@1.2.3.4:") | ||
| 360 | (format "/%s:%s@%s:" "default-method" "user" "1.2.3.4"))) | ||
| 361 | (should (string-equal | ||
| 362 | (file-remote-p "/user@1.2.3.4:" 'method) "default-method")) | ||
| 363 | (should (string-equal (file-remote-p "/user@1.2.3.4:" 'user) "user")) | ||
| 364 | (should (string-equal (file-remote-p "/user@1.2.3.4:" 'host) "1.2.3.4")) | ||
| 365 | (should (string-equal (file-remote-p "/user@1.2.3.4:" 'localname) "")) | ||
| 366 | (should (string-equal (file-remote-p "/user@1.2.3.4:" 'hop) nil)) | ||
| 367 | |||
| 368 | ;; Expand `tramp-default-user'. | ||
| 369 | (should (string-equal | ||
| 370 | (file-remote-p "/method:1.2.3.4:") | ||
| 371 | (format "/%s:%s@%s:" "method" "default-user" "1.2.3.4"))) | ||
| 372 | (should (string-equal (file-remote-p "/method:1.2.3.4:" 'method) "method")) | ||
| 373 | (should (string-equal | ||
| 374 | (file-remote-p "/method:1.2.3.4:" 'user) "default-user")) | ||
| 375 | (should (string-equal (file-remote-p "/method:1.2.3.4:" 'host) "1.2.3.4")) | ||
| 376 | (should (string-equal (file-remote-p "/method:1.2.3.4:" 'localname) "")) | ||
| 377 | (should (string-equal (file-remote-p "/method:1.2.3.4:" 'hop) nil)) | ||
| 378 | |||
| 379 | ;; No expansion. | ||
| 380 | (should (string-equal | ||
| 381 | (file-remote-p "/method:user@1.2.3.4:") | ||
| 382 | (format "/%s:%s@%s:" "method" "user" "1.2.3.4"))) | ||
| 383 | (should (string-equal | ||
| 384 | (file-remote-p "/method:user@1.2.3.4:" 'method) "method")) | ||
| 385 | (should (string-equal (file-remote-p "/method:user@1.2.3.4:" 'user) "user")) | ||
| 386 | (should (string-equal | ||
| 387 | (file-remote-p "/method:user@1.2.3.4:" 'host) "1.2.3.4")) | ||
| 388 | (should (string-equal | ||
| 389 | (file-remote-p "/method:user@1.2.3.4:" 'localname) "")) | ||
| 390 | (should (string-equal | ||
| 391 | (file-remote-p "/method:user@1.2.3.4:" 'hop) nil)) | ||
| 392 | |||
| 393 | ;; Expand `tramp-default-method', `tramp-default-user' and | ||
| 394 | ;; `tramp-default-host'. | ||
| 395 | (should (string-equal | ||
| 396 | (file-remote-p "/[]:") | ||
| 397 | (format | ||
| 398 | "/%s:%s@%s:" "default-method" "default-user" "default-host"))) | ||
| 399 | (should (string-equal (file-remote-p "/[]:" 'method) "default-method")) | ||
| 400 | (should (string-equal (file-remote-p "/[]:" 'user) "default-user")) | ||
| 401 | (should (string-equal (file-remote-p "/[]:" 'host) "default-host")) | ||
| 402 | (should (string-equal (file-remote-p "/[]:" 'localname) "")) | ||
| 403 | (should (string-equal (file-remote-p "/[]:" 'hop) nil)) | ||
| 404 | |||
| 405 | ;; Expand `tramp-default-method' and `tramp-default-user'. | ||
| 406 | (let ((tramp-default-host "::1")) | ||
| 407 | (should (string-equal | ||
| 408 | (file-remote-p "/[]:") | ||
| 409 | (format "/%s:%s@%s:" "default-method" "default-user" "[::1]"))) | ||
| 410 | (should (string-equal (file-remote-p "/[]:" 'method) "default-method")) | ||
| 411 | (should (string-equal (file-remote-p "/[]:" 'user) "default-user")) | ||
| 412 | (should (string-equal (file-remote-p "/[]:" 'host) "::1")) | ||
| 413 | (should (string-equal (file-remote-p "/[]:" 'localname) "")) | ||
| 414 | (should (string-equal (file-remote-p "/[]:" 'hop) nil))) | ||
| 415 | |||
| 416 | ;; Expand `tramp-default-method' and `tramp-default-user'. | ||
| 417 | (should (string-equal | ||
| 418 | (file-remote-p "/[::1]:") | ||
| 419 | (format "/%s:%s@%s:" "default-method" "default-user" "[::1]"))) | ||
| 420 | (should (string-equal (file-remote-p "/[::1]:" 'method) "default-method")) | ||
| 421 | (should (string-equal (file-remote-p "/[::1]:" 'user) "default-user")) | ||
| 422 | (should (string-equal (file-remote-p "/[::1]:" 'host) "::1")) | ||
| 423 | (should (string-equal (file-remote-p "/[::1]:" 'localname) "")) | ||
| 424 | (should (string-equal (file-remote-p "/[::1]:" 'hop) nil)) | ||
| 425 | |||
| 426 | ;; Expand `tramp-default-method'. | ||
| 427 | (should (string-equal | ||
| 428 | (file-remote-p "/user@[::1]:") | ||
| 429 | (format "/%s:%s@%s:" "default-method" "user" "[::1]"))) | ||
| 430 | (should (string-equal | ||
| 431 | (file-remote-p "/user@[::1]:" 'method) "default-method")) | ||
| 432 | (should (string-equal (file-remote-p "/user@[::1]:" 'user) "user")) | ||
| 433 | (should (string-equal (file-remote-p "/user@[::1]:" 'host) "::1")) | ||
| 434 | (should (string-equal (file-remote-p "/user@[::1]:" 'localname) "")) | ||
| 435 | (should (string-equal (file-remote-p "/user@[::1]:" 'hop) nil)) | ||
| 436 | |||
| 437 | ;; Expand `tramp-default-user'. | ||
| 438 | (should (string-equal | ||
| 439 | (file-remote-p "/method:[::1]:") | ||
| 440 | (format "/%s:%s@%s:" "method" "default-user" "[::1]"))) | ||
| 441 | (should (string-equal (file-remote-p "/method:[::1]:" 'method) "method")) | ||
| 442 | (should (string-equal | ||
| 443 | (file-remote-p "/method:[::1]:" 'user) "default-user")) | ||
| 444 | (should (string-equal (file-remote-p "/method:[::1]:" 'host) "::1")) | ||
| 445 | (should (string-equal (file-remote-p "/method:[::1]:" 'localname) "")) | ||
| 446 | (should (string-equal (file-remote-p "/method:[::1]:" 'hop) nil)) | ||
| 447 | |||
| 448 | ;; No expansion. | ||
| 449 | (should (string-equal | ||
| 450 | (file-remote-p "/method:user@[::1]:") | ||
| 451 | (format "/%s:%s@%s:" "method" "user" "[::1]"))) | ||
| 452 | (should (string-equal | ||
| 453 | (file-remote-p "/method:user@[::1]:" 'method) "method")) | ||
| 454 | (should (string-equal (file-remote-p "/method:user@[::1]:" 'user) "user")) | ||
| 455 | (should (string-equal (file-remote-p "/method:user@[::1]:" 'host) "::1")) | ||
| 456 | (should (string-equal | ||
| 457 | (file-remote-p "/method:user@[::1]:" 'localname) "")) | ||
| 458 | (should (string-equal (file-remote-p "/method:user@[::1]:" 'hop) nil)) | ||
| 459 | |||
| 460 | ;; Local file name part. | ||
| 461 | (should (string-equal (file-remote-p "/host:/:" 'localname) "/:")) | ||
| 462 | (should (string-equal (file-remote-p "/method:::" 'localname) ":")) | ||
| 463 | (should (string-equal (file-remote-p "/method:: " 'localname) " ")) | ||
| 464 | (should (string-equal (file-remote-p "/method::file" 'localname) "file")) | ||
| 465 | (should (string-equal | ||
| 466 | (file-remote-p "/method::/path/to/file" 'localname) | ||
| 467 | "/path/to/file")) | ||
| 468 | |||
| 469 | ;; Multihop. | ||
| 470 | (should | ||
| 471 | (string-equal | ||
| 472 | (file-remote-p "/method1:user1@host1|method2:user2@host2:/path/to/file") | ||
| 473 | (format "/%s:%s@%s|%s:%s@%s:" | ||
| 474 | "method1" "user1" "host1" "method2" "user2" "host2"))) | ||
| 475 | (should | ||
| 476 | (string-equal | ||
| 477 | (file-remote-p | ||
| 478 | "/method1:user1@host1|method2:user2@host2:/path/to/file" 'method) | ||
| 479 | "method2")) | ||
| 480 | (should | ||
| 481 | (string-equal | ||
| 482 | (file-remote-p | ||
| 483 | "/method1:user1@host1|method2:user2@host2:/path/to/file" 'user) | ||
| 484 | "user2")) | ||
| 485 | (should | ||
| 486 | (string-equal | ||
| 487 | (file-remote-p | ||
| 488 | "/method1:user1@host1|method2:user2@host2:/path/to/file" 'host) | ||
| 489 | "host2")) | ||
| 490 | (should | ||
| 491 | (string-equal | ||
| 492 | (file-remote-p | ||
| 493 | "/method1:user1@host1|method2:user2@host2:/path/to/file" 'localname) | ||
| 494 | "/path/to/file")) | ||
| 495 | (should | ||
| 496 | (string-equal | ||
| 497 | (file-remote-p | ||
| 498 | "/method1:user1@host1|method2:user2@host2:/path/to/file" 'hop) | ||
| 499 | (format "%s:%s@%s|" | ||
| 500 | "method1" "user1" "host1"))) | ||
| 501 | |||
| 502 | (should | ||
| 503 | (string-equal | ||
| 504 | (file-remote-p | ||
| 505 | "/method1:user1@host1|method2:user2@host2|method3:user3@host3:/path/to/file") | ||
| 506 | (format "/%s:%s@%s|%s:%s@%s|%s:%s@%s:" | ||
| 507 | "method1" "user1" "host1" | ||
| 508 | "method2" "user2" "host2" | ||
| 509 | "method3" "user3" "host3"))) | ||
| 510 | (should | ||
| 511 | (string-equal | ||
| 512 | (file-remote-p | ||
| 513 | "/method1:user1@host1|method2:user2@host2|method3:user3@host3:/path/to/file" | ||
| 514 | 'method) | ||
| 515 | "method3")) | ||
| 516 | (should | ||
| 517 | (string-equal | ||
| 518 | (file-remote-p | ||
| 519 | "/method1:user1@host1|method2:user2@host2|method3:user3@host3:/path/to/file" | ||
| 520 | 'user) | ||
| 521 | "user3")) | ||
| 522 | (should | ||
| 523 | (string-equal | ||
| 524 | (file-remote-p | ||
| 525 | "/method1:user1@host1|method2:user2@host2|method3:user3@host3:/path/to/file" | ||
| 526 | 'host) | ||
| 527 | "host3")) | ||
| 528 | (should | ||
| 529 | (string-equal | ||
| 530 | (file-remote-p | ||
| 531 | "/method1:user1@host1|method2:user2@host2|method3:user3@host3:/path/to/file" | ||
| 532 | 'localname) | ||
| 533 | "/path/to/file")) | ||
| 534 | (should | ||
| 535 | (string-equal | ||
| 536 | (file-remote-p | ||
| 537 | "/method1:user1@host1|method2:user2@host2|method3:user3@host3:/path/to/file" | ||
| 538 | 'hop) | ||
| 539 | (format "%s:%s@%s|%s:%s@%s|" | ||
| 540 | "method1" "user1" "host1" "method2" "user2" "host2"))))) | ||
| 541 | |||
| 542 | (ert-deftest tramp-test03-file-name-defaults () | ||
| 543 | "Check default values for some methods." | ||
| 544 | ;; Default values in tramp-adb.el. | ||
| 545 | (should (string-equal (file-remote-p "/adb::" 'host) "")) | ||
| 546 | ;; Default values in tramp-ftp.el. | ||
| 547 | (should (string-equal (file-remote-p "/ftp.host:" 'method) "ftp")) | ||
| 548 | (dolist (u '("ftp" "anonymous")) | ||
| 549 | (should (string-equal (file-remote-p (format "/%s@:" u) 'method) "ftp"))) | ||
| 550 | ;; Default values in tramp-gvfs.el. | ||
| 551 | (when (and (load "tramp-gvfs" 'noerror 'nomessage) | ||
| 552 | (symbol-value 'tramp-gvfs-enabled)) | ||
| 553 | (should (string-equal (file-remote-p "/synce::" 'user) nil))) | ||
| 554 | ;; Default values in tramp-gw.el. | ||
| 555 | (dolist (m '("tunnel" "socks")) | ||
| 556 | (should | ||
| 557 | (string-equal (file-remote-p (format "/%s::" m) 'user) (user-login-name)))) | ||
| 558 | ;; Default values in tramp-sh.el. | ||
| 559 | (dolist (h `("127.0.0.1" "[::1]" "localhost" "localhost6" ,(system-name))) | ||
| 560 | (should (string-equal (file-remote-p (format "/root@%s:" h) 'method) "su"))) | ||
| 561 | (dolist (m '("su" "sudo" "ksu")) | ||
| 562 | (should (string-equal (file-remote-p (format "/%s::" m) 'user) "root"))) | ||
| 563 | (dolist (m '("rcp" "remcp" "rsh" "telnet" "krlogin" "fcp")) | ||
| 564 | (should | ||
| 565 | (string-equal (file-remote-p (format "/%s::" m) 'user) (user-login-name)))) | ||
| 566 | ;; Default values in tramp-smb.el. | ||
| 567 | (should (string-equal (file-remote-p "/user%domain@host:" 'method) "smb")) | ||
| 568 | (should (string-equal (file-remote-p "/smb::" 'user) nil))) | ||
| 569 | |||
| 570 | (ert-deftest tramp-test04-substitute-in-file-name () | ||
| 571 | "Check `substitute-in-file-name'." | ||
| 572 | (should (string-equal (substitute-in-file-name "/method:host://foo") "/foo")) | ||
| 573 | (should | ||
| 574 | (string-equal | ||
| 575 | (substitute-in-file-name "/method:host:/path//foo") "/method:host:/foo")) | ||
| 576 | (should | ||
| 577 | (string-equal (substitute-in-file-name "/method:host:/path///foo") "/foo")) | ||
| 578 | (should | ||
| 579 | (string-equal | ||
| 580 | (substitute-in-file-name "/method:host:/path/~/foo") "/method:host:~/foo")) | ||
| 581 | (should | ||
| 582 | (string-equal (substitute-in-file-name "/method:host:/path//~/foo") "~/foo")) | ||
| 583 | (let (process-environment) | ||
| 584 | (should | ||
| 585 | (string-equal | ||
| 586 | (substitute-in-file-name "/method:host:/path/$FOO") | ||
| 587 | "/method:host:/path/$FOO")) | ||
| 588 | (setenv "FOO" "bla") | ||
| 589 | (should | ||
| 590 | (string-equal | ||
| 591 | (substitute-in-file-name "/method:host:/path/$FOO") | ||
| 592 | "/method:host:/path/bla")) | ||
| 593 | (should | ||
| 594 | (string-equal | ||
| 595 | (substitute-in-file-name "/method:host:/path/$$FOO") | ||
| 596 | "/method:host:/path/$FOO")))) | ||
| 597 | |||
| 598 | (ert-deftest tramp-test05-expand-file-name () | ||
| 599 | "Check `expand-file-name'." | ||
| 600 | (should | ||
| 601 | (string-equal | ||
| 602 | (expand-file-name "/method:host:/path/./file") "/method:host:/path/file")) | ||
| 603 | (should | ||
| 604 | (string-equal | ||
| 605 | (expand-file-name "/method:host:/path/../file") "/method:host:/file"))) | ||
| 606 | |||
| 607 | (ert-deftest tramp-test06-directory-file-name () | ||
| 608 | "Check `directory-file-name'. | ||
| 609 | This checks also `file-name-as-directory', `file-name-directory', | ||
| 610 | `file-name-nondirectory' and `unhandled-file-name-directory'." | ||
| 611 | (should | ||
| 612 | (string-equal | ||
| 613 | (directory-file-name "/method:host:/path/to/file") | ||
| 614 | "/method:host:/path/to/file")) | ||
| 615 | (should | ||
| 616 | (string-equal | ||
| 617 | (directory-file-name "/method:host:/path/to/file/") | ||
| 618 | "/method:host:/path/to/file")) | ||
| 619 | (should | ||
| 620 | (string-equal | ||
| 621 | (file-name-as-directory "/method:host:/path/to/file") | ||
| 622 | "/method:host:/path/to/file/")) | ||
| 623 | (should | ||
| 624 | (string-equal | ||
| 625 | (file-name-as-directory "/method:host:/path/to/file/") | ||
| 626 | "/method:host:/path/to/file/")) | ||
| 627 | (should | ||
| 628 | (string-equal | ||
| 629 | (file-name-directory "/method:host:/path/to/file") | ||
| 630 | "/method:host:/path/to/")) | ||
| 631 | (should | ||
| 632 | (string-equal | ||
| 633 | (file-name-directory "/method:host:/path/to/file/") | ||
| 634 | "/method:host:/path/to/file/")) | ||
| 635 | (should | ||
| 636 | (string-equal (file-name-nondirectory "/method:host:/path/to/file") "file")) | ||
| 637 | (should | ||
| 638 | (string-equal (file-name-nondirectory "/method:host:/path/to/file/") "")) | ||
| 639 | (should-not | ||
| 640 | (unhandled-file-name-directory "/method:host:/path/to/file"))) | ||
| 641 | |||
| 642 | (ert-deftest tramp-test07-file-exists-p () | ||
| 643 | "Check `file-exist-p', `write-region' and `delete-file'." | ||
| 644 | (skip-unless (tramp--test-enabled)) | ||
| 645 | |||
| 646 | (let ((tmp-name (tramp--test-make-temp-name))) | ||
| 647 | (should-not (file-exists-p tmp-name)) | ||
| 648 | (write-region "foo" nil tmp-name) | ||
| 649 | (should (file-exists-p tmp-name)) | ||
| 650 | (delete-file tmp-name) | ||
| 651 | (should-not (file-exists-p tmp-name)))) | ||
| 652 | |||
| 653 | (ert-deftest tramp-test08-file-local-copy () | ||
| 654 | "Check `file-local-copy'." | ||
| 655 | (skip-unless (tramp--test-enabled)) | ||
| 656 | |||
| 657 | (let ((tmp-name1 (tramp--test-make-temp-name)) | ||
| 658 | tmp-name2) | ||
| 659 | (unwind-protect | ||
| 660 | (progn | ||
| 661 | (write-region "foo" nil tmp-name1) | ||
| 662 | (should (setq tmp-name2 (file-local-copy tmp-name1))) | ||
| 663 | (with-temp-buffer | ||
| 664 | (insert-file-contents tmp-name2) | ||
| 665 | (should (string-equal (buffer-string) "foo"))) | ||
| 666 | ;; Check also that a file transfer with compression works. | ||
| 667 | (let ((default-directory tramp-test-temporary-file-directory) | ||
| 668 | (tramp-copy-size-limit 4) | ||
| 669 | (tramp-inline-compress-start-size 2)) | ||
| 670 | (delete-file tmp-name2) | ||
| 671 | (should (setq tmp-name2 (file-local-copy tmp-name1))))) | ||
| 672 | |||
| 673 | ;; Cleanup. | ||
| 674 | (ignore-errors | ||
| 675 | (delete-file tmp-name1) | ||
| 676 | (delete-file tmp-name2))))) | ||
| 677 | |||
| 678 | (ert-deftest tramp-test09-insert-file-contents () | ||
| 679 | "Check `insert-file-contents'." | ||
| 680 | (skip-unless (tramp--test-enabled)) | ||
| 681 | |||
| 682 | (let ((tmp-name (tramp--test-make-temp-name))) | ||
| 683 | (unwind-protect | ||
| 684 | (progn | ||
| 685 | (write-region "foo" nil tmp-name) | ||
| 686 | (with-temp-buffer | ||
| 687 | (insert-file-contents tmp-name) | ||
| 688 | (should (string-equal (buffer-string) "foo")) | ||
| 689 | (insert-file-contents tmp-name) | ||
| 690 | (should (string-equal (buffer-string) "foofoo")) | ||
| 691 | ;; Insert partly. | ||
| 692 | (insert-file-contents tmp-name nil 1 3) | ||
| 693 | (should (string-equal (buffer-string) "oofoofoo")) | ||
| 694 | ;; Replace. | ||
| 695 | (insert-file-contents tmp-name nil nil nil 'replace) | ||
| 696 | (should (string-equal (buffer-string) "foo")))) | ||
| 697 | |||
| 698 | ;; Cleanup. | ||
| 699 | (ignore-errors (delete-file tmp-name))))) | ||
| 700 | |||
| 701 | (ert-deftest tramp-test10-write-region () | ||
| 702 | "Check `write-region'." | ||
| 703 | (skip-unless (tramp--test-enabled)) | ||
| 704 | |||
| 705 | (let ((tmp-name (tramp--test-make-temp-name))) | ||
| 706 | (unwind-protect | ||
| 707 | (progn | ||
| 708 | (with-temp-buffer | ||
| 709 | (insert "foo") | ||
| 710 | (write-region nil nil tmp-name)) | ||
| 711 | (with-temp-buffer | ||
| 712 | (insert-file-contents tmp-name) | ||
| 713 | (should (string-equal (buffer-string) "foo"))) | ||
| 714 | ;; Append. | ||
| 715 | (with-temp-buffer | ||
| 716 | (insert "bla") | ||
| 717 | (write-region nil nil tmp-name 'append)) | ||
| 718 | (with-temp-buffer | ||
| 719 | (insert-file-contents tmp-name) | ||
| 720 | (should (string-equal (buffer-string) "foobla"))) | ||
| 721 | ;; Write string. | ||
| 722 | (write-region "foo" nil tmp-name) | ||
| 723 | (with-temp-buffer | ||
| 724 | (insert-file-contents tmp-name) | ||
| 725 | (should (string-equal (buffer-string) "foo"))) | ||
| 726 | ;; Write partly. | ||
| 727 | (with-temp-buffer | ||
| 728 | (insert "123456789") | ||
| 729 | (write-region 3 5 tmp-name)) | ||
| 730 | (with-temp-buffer | ||
| 731 | (insert-file-contents tmp-name) | ||
| 732 | (should (string-equal (buffer-string) "34")))) | ||
| 733 | |||
| 734 | ;; Cleanup. | ||
| 735 | (ignore-errors (delete-file tmp-name))))) | ||
| 736 | |||
| 737 | (ert-deftest tramp-test11-copy-file () | ||
| 738 | "Check `copy-file'." | ||
| 739 | (skip-unless (tramp--test-enabled)) | ||
| 740 | |||
| 741 | (let ((tmp-name1 (tramp--test-make-temp-name)) | ||
| 742 | (tmp-name2 (tramp--test-make-temp-name)) | ||
| 743 | (tmp-name3 (tramp--test-make-temp-name)) | ||
| 744 | (tmp-name4 (tramp--test-make-temp-name 'local)) | ||
| 745 | (tmp-name5 (tramp--test-make-temp-name 'local))) | ||
| 746 | |||
| 747 | ;; Copy on remote side. | ||
| 748 | (unwind-protect | ||
| 749 | (progn | ||
| 750 | (write-region "foo" nil tmp-name1) | ||
| 751 | (copy-file tmp-name1 tmp-name2) | ||
| 752 | (should (file-exists-p tmp-name2)) | ||
| 753 | (with-temp-buffer | ||
| 754 | (insert-file-contents tmp-name2) | ||
| 755 | (should (string-equal (buffer-string) "foo"))) | ||
| 756 | (should-error (copy-file tmp-name1 tmp-name2)) | ||
| 757 | (copy-file tmp-name1 tmp-name2 'ok) | ||
| 758 | (make-directory tmp-name3) | ||
| 759 | (copy-file tmp-name1 tmp-name3) | ||
| 760 | (should | ||
| 761 | (file-exists-p | ||
| 762 | (expand-file-name (file-name-nondirectory tmp-name1) tmp-name3)))) | ||
| 763 | |||
| 764 | ;; Cleanup. | ||
| 765 | (ignore-errors (delete-file tmp-name1)) | ||
| 766 | (ignore-errors (delete-file tmp-name2)) | ||
| 767 | (ignore-errors (delete-directory tmp-name3 'recursive))) | ||
| 768 | |||
| 769 | ;; Copy from remote side to local side. | ||
| 770 | (unwind-protect | ||
| 771 | (progn | ||
| 772 | (write-region "foo" nil tmp-name1) | ||
| 773 | (copy-file tmp-name1 tmp-name4) | ||
| 774 | (should (file-exists-p tmp-name4)) | ||
| 775 | (with-temp-buffer | ||
| 776 | (insert-file-contents tmp-name4) | ||
| 777 | (should (string-equal (buffer-string) "foo"))) | ||
| 778 | (should-error (copy-file tmp-name1 tmp-name4)) | ||
| 779 | (copy-file tmp-name1 tmp-name4 'ok) | ||
| 780 | (make-directory tmp-name5) | ||
| 781 | (copy-file tmp-name1 tmp-name5) | ||
| 782 | (should | ||
| 783 | (file-exists-p | ||
| 784 | (expand-file-name (file-name-nondirectory tmp-name1) tmp-name5)))) | ||
| 785 | |||
| 786 | ;; Cleanup. | ||
| 787 | (ignore-errors (delete-file tmp-name1)) | ||
| 788 | (ignore-errors (delete-file tmp-name4)) | ||
| 789 | (ignore-errors (delete-directory tmp-name5 'recursive))) | ||
| 790 | |||
| 791 | ;; Copy from local side to remote side. | ||
| 792 | (unwind-protect | ||
| 793 | (progn | ||
| 794 | (write-region "foo" nil tmp-name4 nil 'nomessage) | ||
| 795 | (copy-file tmp-name4 tmp-name1) | ||
| 796 | (should (file-exists-p tmp-name1)) | ||
| 797 | (with-temp-buffer | ||
| 798 | (insert-file-contents tmp-name1) | ||
| 799 | (should (string-equal (buffer-string) "foo"))) | ||
| 800 | (should-error (copy-file tmp-name4 tmp-name1)) | ||
| 801 | (copy-file tmp-name4 tmp-name1 'ok) | ||
| 802 | (make-directory tmp-name3) | ||
| 803 | (copy-file tmp-name4 tmp-name3) | ||
| 804 | (should | ||
| 805 | (file-exists-p | ||
| 806 | (expand-file-name (file-name-nondirectory tmp-name4) tmp-name3)))) | ||
| 807 | |||
| 808 | ;; Cleanup. | ||
| 809 | (ignore-errors (delete-file tmp-name1)) | ||
| 810 | (ignore-errors (delete-file tmp-name4)) | ||
| 811 | (ignore-errors (delete-directory tmp-name3 'recursive))))) | ||
| 812 | |||
| 813 | (ert-deftest tramp-test12-rename-file () | ||
| 814 | "Check `rename-file'." | ||
| 815 | (skip-unless (tramp--test-enabled)) | ||
| 816 | |||
| 817 | (let ((tmp-name1 (tramp--test-make-temp-name)) | ||
| 818 | (tmp-name2 (tramp--test-make-temp-name)) | ||
| 819 | (tmp-name3 (tramp--test-make-temp-name)) | ||
| 820 | (tmp-name4 (tramp--test-make-temp-name 'local)) | ||
| 821 | (tmp-name5 (tramp--test-make-temp-name 'local))) | ||
| 822 | |||
| 823 | ;; Rename on remote side. | ||
| 824 | (unwind-protect | ||
| 825 | (progn | ||
| 826 | (write-region "foo" nil tmp-name1) | ||
| 827 | (rename-file tmp-name1 tmp-name2) | ||
| 828 | (should-not (file-exists-p tmp-name1)) | ||
| 829 | (should (file-exists-p tmp-name2)) | ||
| 830 | (with-temp-buffer | ||
| 831 | (insert-file-contents tmp-name2) | ||
| 832 | (should (string-equal (buffer-string) "foo"))) | ||
| 833 | (write-region "foo" nil tmp-name1) | ||
| 834 | (should-error (rename-file tmp-name1 tmp-name2)) | ||
| 835 | (rename-file tmp-name1 tmp-name2 'ok) | ||
| 836 | (should-not (file-exists-p tmp-name1)) | ||
| 837 | (write-region "foo" nil tmp-name1) | ||
| 838 | (make-directory tmp-name3) | ||
| 839 | (rename-file tmp-name1 tmp-name3) | ||
| 840 | (should-not (file-exists-p tmp-name1)) | ||
| 841 | (should | ||
| 842 | (file-exists-p | ||
| 843 | (expand-file-name (file-name-nondirectory tmp-name1) tmp-name3)))) | ||
| 844 | |||
| 845 | ;; Cleanup. | ||
| 846 | (ignore-errors (delete-file tmp-name1)) | ||
| 847 | (ignore-errors (delete-file tmp-name2)) | ||
| 848 | (ignore-errors (delete-directory tmp-name3 'recursive))) | ||
| 849 | |||
| 850 | ;; Rename from remote side to local side. | ||
| 851 | (unwind-protect | ||
| 852 | (progn | ||
| 853 | (write-region "foo" nil tmp-name1) | ||
| 854 | (rename-file tmp-name1 tmp-name4) | ||
| 855 | (should-not (file-exists-p tmp-name1)) | ||
| 856 | (should (file-exists-p tmp-name4)) | ||
| 857 | (with-temp-buffer | ||
| 858 | (insert-file-contents tmp-name4) | ||
| 859 | (should (string-equal (buffer-string) "foo"))) | ||
| 860 | (write-region "foo" nil tmp-name1) | ||
| 861 | (should-error (rename-file tmp-name1 tmp-name4)) | ||
| 862 | (rename-file tmp-name1 tmp-name4 'ok) | ||
| 863 | (should-not (file-exists-p tmp-name1)) | ||
| 864 | (write-region "foo" nil tmp-name1) | ||
| 865 | (make-directory tmp-name5) | ||
| 866 | (rename-file tmp-name1 tmp-name5) | ||
| 867 | (should-not (file-exists-p tmp-name1)) | ||
| 868 | (should | ||
| 869 | (file-exists-p | ||
| 870 | (expand-file-name (file-name-nondirectory tmp-name1) tmp-name5)))) | ||
| 871 | |||
| 872 | ;; Cleanup. | ||
| 873 | (ignore-errors (delete-file tmp-name1)) | ||
| 874 | (ignore-errors (delete-file tmp-name4)) | ||
| 875 | (ignore-errors (delete-directory tmp-name5 'recursive))) | ||
| 876 | |||
| 877 | ;; Rename from local side to remote side. | ||
| 878 | (unwind-protect | ||
| 879 | (progn | ||
| 880 | (write-region "foo" nil tmp-name4 nil 'nomessage) | ||
| 881 | (rename-file tmp-name4 tmp-name1) | ||
| 882 | (should-not (file-exists-p tmp-name4)) | ||
| 883 | (should (file-exists-p tmp-name1)) | ||
| 884 | (with-temp-buffer | ||
| 885 | (insert-file-contents tmp-name1) | ||
| 886 | (should (string-equal (buffer-string) "foo"))) | ||
| 887 | (write-region "foo" nil tmp-name4 nil 'nomessage) | ||
| 888 | (should-error (rename-file tmp-name4 tmp-name1)) | ||
| 889 | (rename-file tmp-name4 tmp-name1 'ok) | ||
| 890 | (should-not (file-exists-p tmp-name4)) | ||
| 891 | (write-region "foo" nil tmp-name4 nil 'nomessage) | ||
| 892 | (make-directory tmp-name3) | ||
| 893 | (rename-file tmp-name4 tmp-name3) | ||
| 894 | (should-not (file-exists-p tmp-name4)) | ||
| 895 | (should | ||
| 896 | (file-exists-p | ||
| 897 | (expand-file-name (file-name-nondirectory tmp-name4) tmp-name3)))) | ||
| 898 | |||
| 899 | ;; Cleanup. | ||
| 900 | (ignore-errors (delete-file tmp-name1)) | ||
| 901 | (ignore-errors (delete-file tmp-name4)) | ||
| 902 | (ignore-errors (delete-directory tmp-name3 'recursive))))) | ||
| 903 | |||
| 904 | (ert-deftest tramp-test13-make-directory () | ||
| 905 | "Check `make-directory'. | ||
| 906 | This tests also `file-directory-p' and `file-accessible-directory-p'." | ||
| 907 | (skip-unless (tramp--test-enabled)) | ||
| 908 | |||
| 909 | (let* ((tmp-name1 (tramp--test-make-temp-name)) | ||
| 910 | (tmp-name2 (expand-file-name "foo/bar" tmp-name1))) | ||
| 911 | (unwind-protect | ||
| 912 | (progn | ||
| 913 | (make-directory tmp-name1) | ||
| 914 | (should (file-directory-p tmp-name1)) | ||
| 915 | (should (file-accessible-directory-p tmp-name1)) | ||
| 916 | (should-error (make-directory tmp-name2) :type 'file-error) | ||
| 917 | (make-directory tmp-name2 'parents) | ||
| 918 | (should (file-directory-p tmp-name2)) | ||
| 919 | (should (file-accessible-directory-p tmp-name2))) | ||
| 920 | |||
| 921 | ;; Cleanup. | ||
| 922 | (ignore-errors (delete-directory tmp-name1 'recursive))))) | ||
| 923 | |||
| 924 | (ert-deftest tramp-test14-delete-directory () | ||
| 925 | "Check `delete-directory'." | ||
| 926 | (skip-unless (tramp--test-enabled)) | ||
| 927 | |||
| 928 | (let ((tmp-name (tramp--test-make-temp-name))) | ||
| 929 | ;; Delete empty directory. | ||
| 930 | (make-directory tmp-name) | ||
| 931 | (should (file-directory-p tmp-name)) | ||
| 932 | (delete-directory tmp-name) | ||
| 933 | (should-not (file-directory-p tmp-name)) | ||
| 934 | ;; Delete non-empty directory. | ||
| 935 | (make-directory tmp-name) | ||
| 936 | (write-region "foo" nil (expand-file-name "bla" tmp-name)) | ||
| 937 | (should-error (delete-directory tmp-name) :type 'file-error) | ||
| 938 | (delete-directory tmp-name 'recursive) | ||
| 939 | (should-not (file-directory-p tmp-name)))) | ||
| 940 | |||
| 941 | (ert-deftest tramp-test15-copy-directory () | ||
| 942 | "Check `copy-directory'." | ||
| 943 | (skip-unless (tramp--test-enabled)) | ||
| 944 | (skip-unless | ||
| 945 | (not | ||
| 946 | (eq | ||
| 947 | (tramp-find-foreign-file-name-handler tramp-test-temporary-file-directory) | ||
| 948 | 'tramp-smb-file-name-handler))) | ||
| 949 | |||
| 950 | (let* ((tmp-name1 (tramp--test-make-temp-name)) | ||
| 951 | (tmp-name2 (tramp--test-make-temp-name)) | ||
| 952 | (tmp-name3 (expand-file-name | ||
| 953 | (file-name-nondirectory tmp-name1) tmp-name2)) | ||
| 954 | (tmp-name4 (expand-file-name "foo" tmp-name1)) | ||
| 955 | (tmp-name5 (expand-file-name "foo" tmp-name2)) | ||
| 956 | (tmp-name6 (expand-file-name "foo" tmp-name3))) | ||
| 957 | (unwind-protect | ||
| 958 | (progn | ||
| 959 | ;; Copy empty directory. | ||
| 960 | (make-directory tmp-name1) | ||
| 961 | (write-region "foo" nil tmp-name4) | ||
| 962 | (should (file-directory-p tmp-name1)) | ||
| 963 | (should (file-exists-p tmp-name4)) | ||
| 964 | (copy-directory tmp-name1 tmp-name2) | ||
| 965 | (should (file-directory-p tmp-name2)) | ||
| 966 | (should (file-exists-p tmp-name5)) | ||
| 967 | ;; Target directory does exist already. | ||
| 968 | (copy-directory tmp-name1 tmp-name2) | ||
| 969 | (should (file-directory-p tmp-name3)) | ||
| 970 | (should (file-exists-p tmp-name6))) | ||
| 971 | |||
| 972 | ;; Cleanup. | ||
| 973 | (ignore-errors | ||
| 974 | (delete-directory tmp-name1 'recursive) | ||
| 975 | (delete-directory tmp-name2 'recursive))))) | ||
| 976 | |||
| 977 | (ert-deftest tramp-test16-directory-files () | ||
| 978 | "Check `directory-files'." | ||
| 979 | (skip-unless (tramp--test-enabled)) | ||
| 980 | |||
| 981 | (let* ((tmp-name1 (tramp--test-make-temp-name)) | ||
| 982 | (tmp-name2 (expand-file-name "bla" tmp-name1)) | ||
| 983 | (tmp-name3 (expand-file-name "foo" tmp-name1))) | ||
| 984 | (unwind-protect | ||
| 985 | (progn | ||
| 986 | (make-directory tmp-name1) | ||
| 987 | (write-region "foo" nil tmp-name2) | ||
| 988 | (write-region "bla" nil tmp-name3) | ||
| 989 | (should (file-directory-p tmp-name1)) | ||
| 990 | (should (file-exists-p tmp-name2)) | ||
| 991 | (should (file-exists-p tmp-name3)) | ||
| 992 | (should (equal (directory-files tmp-name1) '("." ".." "bla" "foo"))) | ||
| 993 | (should (equal (directory-files tmp-name1 'full) | ||
| 994 | `(,(concat tmp-name1 "/.") | ||
| 995 | ,(concat tmp-name1 "/..") | ||
| 996 | ,tmp-name2 ,tmp-name3))) | ||
| 997 | (should (equal (directory-files | ||
| 998 | tmp-name1 nil directory-files-no-dot-files-regexp) | ||
| 999 | '("bla" "foo"))) | ||
| 1000 | (should (equal (directory-files | ||
| 1001 | tmp-name1 'full directory-files-no-dot-files-regexp) | ||
| 1002 | `(,tmp-name2 ,tmp-name3)))) | ||
| 1003 | |||
| 1004 | ;; Cleanup. | ||
| 1005 | (ignore-errors (delete-directory tmp-name1 'recursive))))) | ||
| 1006 | |||
| 1007 | (ert-deftest tramp-test17-insert-directory () | ||
| 1008 | "Check `insert-directory'." | ||
| 1009 | (skip-unless (tramp--test-enabled)) | ||
| 1010 | |||
| 1011 | (let* ((tmp-name1 (tramp--test-make-temp-name)) | ||
| 1012 | (tmp-name2 (expand-file-name "foo" tmp-name1)) | ||
| 1013 | ;; We test for the summary line. Keyword "total" could be localized. | ||
| 1014 | (process-environment | ||
| 1015 | (append '("LANG=C" "LANGUAGE=C" "LC_ALL=C") process-environment))) | ||
| 1016 | (unwind-protect | ||
| 1017 | (progn | ||
| 1018 | (make-directory tmp-name1) | ||
| 1019 | (write-region "foo" nil tmp-name2) | ||
| 1020 | (should (file-directory-p tmp-name1)) | ||
| 1021 | (should (file-exists-p tmp-name2)) | ||
| 1022 | (with-temp-buffer | ||
| 1023 | (insert-directory tmp-name1 nil) | ||
| 1024 | (goto-char (point-min)) | ||
| 1025 | (should (looking-at-p (regexp-quote tmp-name1)))) | ||
| 1026 | (with-temp-buffer | ||
| 1027 | (insert-directory tmp-name1 "-al") | ||
| 1028 | (goto-char (point-min)) | ||
| 1029 | (should (looking-at-p (format "^.+ %s$" (regexp-quote tmp-name1))))) | ||
| 1030 | (with-temp-buffer | ||
| 1031 | (insert-directory (file-name-as-directory tmp-name1) "-al") | ||
| 1032 | (goto-char (point-min)) | ||
| 1033 | (should | ||
| 1034 | (looking-at-p (format "^.+ %s/$" (regexp-quote tmp-name1))))) | ||
| 1035 | (with-temp-buffer | ||
| 1036 | (insert-directory | ||
| 1037 | (file-name-as-directory tmp-name1) "-al" nil 'full-directory-p) | ||
| 1038 | (goto-char (point-min)) | ||
| 1039 | (should | ||
| 1040 | (looking-at-p | ||
| 1041 | (concat | ||
| 1042 | ;; There might be a summary line. | ||
| 1043 | "\\(total.+[[:digit:]]+\n\\)?" | ||
| 1044 | ;; We don't know in which order ".", ".." and "foo" appear. | ||
| 1045 | "\\(.+ \\(\\.?\\.\\|foo\\)\n\\)\\{3\\}"))))) | ||
| 1046 | |||
| 1047 | ;; Cleanup. | ||
| 1048 | (ignore-errors (delete-directory tmp-name1 'recursive))))) | ||
| 1049 | |||
| 1050 | (ert-deftest tramp-test18-file-attributes () | ||
| 1051 | "Check `file-attributes'. | ||
| 1052 | This tests also `file-readable-p' and `file-regular-p'." | ||
| 1053 | (skip-unless (tramp--test-enabled)) | ||
| 1054 | |||
| 1055 | ;; We must use `file-truename' for the temporary directory, because | ||
| 1056 | ;; it could be located on a symlinked directory. This would let the | ||
| 1057 | ;; test fail. | ||
| 1058 | (let* ((tramp-test-temporary-file-directory | ||
| 1059 | (file-truename tramp-test-temporary-file-directory)) | ||
| 1060 | (tmp-name1 (tramp--test-make-temp-name)) | ||
| 1061 | (tmp-name2 (tramp--test-make-temp-name)) | ||
| 1062 | ;; File name with "//". | ||
| 1063 | (tmp-name3 | ||
| 1064 | (format | ||
| 1065 | "%s%s" | ||
| 1066 | (file-remote-p tmp-name1) | ||
| 1067 | (replace-regexp-in-string | ||
| 1068 | "/" "//" (file-remote-p tmp-name1 'localname)))) | ||
| 1069 | attr) | ||
| 1070 | (unwind-protect | ||
| 1071 | (progn | ||
| 1072 | (write-region "foo" nil tmp-name1) | ||
| 1073 | (should (file-exists-p tmp-name1)) | ||
| 1074 | (setq attr (file-attributes tmp-name1)) | ||
| 1075 | (should (consp attr)) | ||
| 1076 | (should (file-exists-p tmp-name1)) | ||
| 1077 | (should (file-readable-p tmp-name1)) | ||
| 1078 | (should (file-regular-p tmp-name1)) | ||
| 1079 | ;; We do not test inodes and device numbers. | ||
| 1080 | (should (null (car attr))) | ||
| 1081 | (should (numberp (nth 1 attr))) ;; Link. | ||
| 1082 | (should (numberp (nth 2 attr))) ;; Uid. | ||
| 1083 | (should (numberp (nth 3 attr))) ;; Gid. | ||
| 1084 | ;; Last access time. | ||
| 1085 | (should (stringp (current-time-string (nth 4 attr)))) | ||
| 1086 | ;; Last modification time. | ||
| 1087 | (should (stringp (current-time-string (nth 5 attr)))) | ||
| 1088 | ;; Last status change time. | ||
| 1089 | (should (stringp (current-time-string (nth 6 attr)))) | ||
| 1090 | (should (numberp (nth 7 attr))) ;; Size. | ||
| 1091 | (should (stringp (nth 8 attr))) ;; Modes. | ||
| 1092 | |||
| 1093 | (setq attr (file-attributes tmp-name1 'string)) | ||
| 1094 | (should (stringp (nth 2 attr))) ;; Uid. | ||
| 1095 | (should (stringp (nth 3 attr))) ;; Gid. | ||
| 1096 | |||
| 1097 | (condition-case err | ||
| 1098 | (progn | ||
| 1099 | (make-symbolic-link tmp-name1 tmp-name2) | ||
| 1100 | (should (file-exists-p tmp-name2)) | ||
| 1101 | (should (file-symlink-p tmp-name2)) | ||
| 1102 | (setq attr (file-attributes tmp-name2)) | ||
| 1103 | (should (string-equal | ||
| 1104 | (car attr) | ||
| 1105 | (file-remote-p (file-truename tmp-name1) 'localname))) | ||
| 1106 | (delete-file tmp-name2)) | ||
| 1107 | (file-error | ||
| 1108 | (should (string-equal (error-message-string err) | ||
| 1109 | "make-symbolic-link not supported")))) | ||
| 1110 | |||
| 1111 | ;; Check, that "//" in symlinks are handled properly. | ||
| 1112 | (with-temp-buffer | ||
| 1113 | (let ((default-directory tramp-test-temporary-file-directory)) | ||
| 1114 | (shell-command | ||
| 1115 | (format | ||
| 1116 | "ln -s %s %s" | ||
| 1117 | (tramp-file-name-localname (tramp-dissect-file-name tmp-name3)) | ||
| 1118 | (tramp-file-name-localname (tramp-dissect-file-name tmp-name2))) | ||
| 1119 | t))) | ||
| 1120 | (when (file-symlink-p tmp-name2) | ||
| 1121 | (setq attr (file-attributes tmp-name2)) | ||
| 1122 | (should | ||
| 1123 | (string-equal | ||
| 1124 | (car attr) | ||
| 1125 | (tramp-file-name-localname (tramp-dissect-file-name tmp-name3)))) | ||
| 1126 | (delete-file tmp-name2)) | ||
| 1127 | |||
| 1128 | (delete-file tmp-name1) | ||
| 1129 | (make-directory tmp-name1) | ||
| 1130 | (should (file-exists-p tmp-name1)) | ||
| 1131 | (should (file-readable-p tmp-name1)) | ||
| 1132 | (should-not (file-regular-p tmp-name1)) | ||
| 1133 | (setq attr (file-attributes tmp-name1)) | ||
| 1134 | (should (eq (car attr) t))) | ||
| 1135 | |||
| 1136 | ;; Cleanup. | ||
| 1137 | (ignore-errors (delete-directory tmp-name1)) | ||
| 1138 | (ignore-errors (delete-file tmp-name1)) | ||
| 1139 | (ignore-errors (delete-file tmp-name2))))) | ||
| 1140 | |||
| 1141 | (ert-deftest tramp-test19-directory-files-and-attributes () | ||
| 1142 | "Check `directory-files-and-attributes'." | ||
| 1143 | (skip-unless (tramp--test-enabled)) | ||
| 1144 | |||
| 1145 | ;; `directory-files-and-attributes' contains also values for "../". | ||
| 1146 | ;; Ensure that this doesn't change during tests, for | ||
| 1147 | ;; example due to handling temporary files. | ||
| 1148 | (let* ((tmp-name1 (tramp--test-make-temp-name)) | ||
| 1149 | (tmp-name2 (expand-file-name "bla" tmp-name1)) | ||
| 1150 | attr) | ||
| 1151 | (unwind-protect | ||
| 1152 | (progn | ||
| 1153 | (make-directory tmp-name1) | ||
| 1154 | (should (file-directory-p tmp-name1)) | ||
| 1155 | (make-directory tmp-name2) | ||
| 1156 | (should (file-directory-p tmp-name2)) | ||
| 1157 | (write-region "foo" nil (expand-file-name "foo" tmp-name2)) | ||
| 1158 | (write-region "bar" nil (expand-file-name "bar" tmp-name2)) | ||
| 1159 | (write-region "boz" nil (expand-file-name "boz" tmp-name2)) | ||
| 1160 | (setq attr (directory-files-and-attributes tmp-name2)) | ||
| 1161 | (should (consp attr)) | ||
| 1162 | ;; Dumb remote shells without perl(1) or stat(1) are not | ||
| 1163 | ;; able to return the date correctly. They say "don't know". | ||
| 1164 | (dolist (elt attr) | ||
| 1165 | (unless | ||
| 1166 | (equal | ||
| 1167 | (nth 5 | ||
| 1168 | (file-attributes (expand-file-name (car elt) tmp-name2))) | ||
| 1169 | '(0 0)) | ||
| 1170 | (should | ||
| 1171 | (equal (file-attributes (expand-file-name (car elt) tmp-name2)) | ||
| 1172 | (cdr elt))))) | ||
| 1173 | (setq attr (directory-files-and-attributes tmp-name2 'full)) | ||
| 1174 | (dolist (elt attr) | ||
| 1175 | (unless (equal (nth 5 (file-attributes (car elt))) '(0 0)) | ||
| 1176 | (should | ||
| 1177 | (equal (file-attributes (car elt)) (cdr elt))))) | ||
| 1178 | (setq attr (directory-files-and-attributes tmp-name2 nil "^b")) | ||
| 1179 | (should (equal (mapcar 'car attr) '("bar" "boz")))) | ||
| 1180 | |||
| 1181 | ;; Cleanup. | ||
| 1182 | (ignore-errors (delete-directory tmp-name1 'recursive))))) | ||
| 1183 | |||
| 1184 | (ert-deftest tramp-test20-file-modes () | ||
| 1185 | "Check `file-modes'. | ||
| 1186 | This tests also `file-executable-p', `file-writable-p' and `set-file-modes'." | ||
| 1187 | (skip-unless (tramp--test-enabled)) | ||
| 1188 | (skip-unless | ||
| 1189 | (not | ||
| 1190 | (memq | ||
| 1191 | (tramp-find-foreign-file-name-handler tramp-test-temporary-file-directory) | ||
| 1192 | '(tramp-adb-file-name-handler | ||
| 1193 | tramp-gvfs-file-name-handler | ||
| 1194 | tramp-smb-file-name-handler)))) | ||
| 1195 | |||
| 1196 | (let ((tmp-name (tramp--test-make-temp-name))) | ||
| 1197 | (unwind-protect | ||
| 1198 | (progn | ||
| 1199 | (write-region "foo" nil tmp-name) | ||
| 1200 | (should (file-exists-p tmp-name)) | ||
| 1201 | (set-file-modes tmp-name #o777) | ||
| 1202 | (should (= (file-modes tmp-name) #o777)) | ||
| 1203 | (should (file-executable-p tmp-name)) | ||
| 1204 | (should (file-writable-p tmp-name)) | ||
| 1205 | (set-file-modes tmp-name #o444) | ||
| 1206 | (should (= (file-modes tmp-name) #o444)) | ||
| 1207 | (should-not (file-executable-p tmp-name)) | ||
| 1208 | ;; A file is always writable for user "root". | ||
| 1209 | (unless (zerop (nth 2 (file-attributes tmp-name))) | ||
| 1210 | (should-not (file-writable-p tmp-name)))) | ||
| 1211 | |||
| 1212 | ;; Cleanup. | ||
| 1213 | (ignore-errors (delete-file tmp-name))))) | ||
| 1214 | |||
| 1215 | (ert-deftest tramp-test21-file-links () | ||
| 1216 | "Check `file-symlink-p'. | ||
| 1217 | This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'." | ||
| 1218 | (skip-unless (tramp--test-enabled)) | ||
| 1219 | |||
| 1220 | ;; We must use `file-truename' for the temporary directory, because | ||
| 1221 | ;; it could be located on a symlinked directory. This would let the | ||
| 1222 | ;; test fail. | ||
| 1223 | (let* ((tramp-test-temporary-file-directory | ||
| 1224 | (file-truename tramp-test-temporary-file-directory)) | ||
| 1225 | (tmp-name1 (tramp--test-make-temp-name)) | ||
| 1226 | (tmp-name2 (tramp--test-make-temp-name)) | ||
| 1227 | (tmp-name3 (tramp--test-make-temp-name 'local))) | ||
| 1228 | |||
| 1229 | ;; Check `make-symbolic-link'. | ||
| 1230 | (unwind-protect | ||
| 1231 | (progn | ||
| 1232 | (write-region "foo" nil tmp-name1) | ||
| 1233 | (should (file-exists-p tmp-name1)) | ||
| 1234 | ;; Method "smb" supports `make-symbolic-link' only if the | ||
| 1235 | ;; remote host has CIFS capabilities. tramp-adb.el and | ||
| 1236 | ;; tramp-gvfs.el do not support symbolic links at all. | ||
| 1237 | (condition-case err | ||
| 1238 | (make-symbolic-link tmp-name1 tmp-name2) | ||
| 1239 | (file-error | ||
| 1240 | (skip-unless | ||
| 1241 | (not (string-equal (error-message-string err) | ||
| 1242 | "make-symbolic-link not supported"))))) | ||
| 1243 | (should (file-symlink-p tmp-name2)) | ||
| 1244 | (should-error (make-symbolic-link tmp-name1 tmp-name2)) | ||
| 1245 | (make-symbolic-link tmp-name1 tmp-name2 'ok-if-already-exists) | ||
| 1246 | (should (file-symlink-p tmp-name2)) | ||
| 1247 | ;; `tmp-name3' is a local file name. | ||
| 1248 | (should-error (make-symbolic-link tmp-name1 tmp-name3))) | ||
| 1249 | |||
| 1250 | ;; Cleanup. | ||
| 1251 | (ignore-errors | ||
| 1252 | (delete-file tmp-name1) | ||
| 1253 | (delete-file tmp-name2))) | ||
| 1254 | |||
| 1255 | ;; Check `add-name-to-file'. | ||
| 1256 | (unwind-protect | ||
| 1257 | (progn | ||
| 1258 | (write-region "foo" nil tmp-name1) | ||
| 1259 | (should (file-exists-p tmp-name1)) | ||
| 1260 | (add-name-to-file tmp-name1 tmp-name2) | ||
| 1261 | (should-not (file-symlink-p tmp-name2)) | ||
| 1262 | (should-error (add-name-to-file tmp-name1 tmp-name2)) | ||
| 1263 | (add-name-to-file tmp-name1 tmp-name2 'ok-if-already-exists) | ||
| 1264 | (should-not (file-symlink-p tmp-name2)) | ||
| 1265 | ;; `tmp-name3' is a local file name. | ||
| 1266 | (should-error (add-name-to-file tmp-name1 tmp-name3))) | ||
| 1267 | |||
| 1268 | ;; Cleanup. | ||
| 1269 | (ignore-errors | ||
| 1270 | (delete-file tmp-name1) | ||
| 1271 | (delete-file tmp-name2))) | ||
| 1272 | |||
| 1273 | ;; Check `file-truename'. | ||
| 1274 | (unwind-protect | ||
| 1275 | (progn | ||
| 1276 | (write-region "foo" nil tmp-name1) | ||
| 1277 | (should (file-exists-p tmp-name1)) | ||
| 1278 | (make-symbolic-link tmp-name1 tmp-name2) | ||
| 1279 | (should (file-symlink-p tmp-name2)) | ||
| 1280 | (should-not (string-equal tmp-name2 (file-truename tmp-name2))) | ||
| 1281 | (should | ||
| 1282 | (string-equal (file-truename tmp-name1) (file-truename tmp-name2))) | ||
| 1283 | (should (file-equal-p tmp-name1 tmp-name2))) | ||
| 1284 | (ignore-errors | ||
| 1285 | (delete-file tmp-name1) | ||
| 1286 | (delete-file tmp-name2))) | ||
| 1287 | |||
| 1288 | ;; `file-truename' shall preserve trailing link of directories. | ||
| 1289 | (unless (file-symlink-p tramp-test-temporary-file-directory) | ||
| 1290 | (let* ((dir1 (directory-file-name tramp-test-temporary-file-directory)) | ||
| 1291 | (dir2 (file-name-as-directory dir1))) | ||
| 1292 | (should (string-equal (file-truename dir1) (expand-file-name dir1))) | ||
| 1293 | (should (string-equal (file-truename dir2) (expand-file-name dir2))))))) | ||
| 1294 | |||
| 1295 | (ert-deftest tramp-test22-file-times () | ||
| 1296 | "Check `set-file-times' and `file-newer-than-file-p'." | ||
| 1297 | (skip-unless (tramp--test-enabled)) | ||
| 1298 | (skip-unless | ||
| 1299 | (not | ||
| 1300 | (memq | ||
| 1301 | (tramp-find-foreign-file-name-handler tramp-test-temporary-file-directory) | ||
| 1302 | '(tramp-gvfs-file-name-handler tramp-smb-file-name-handler)))) | ||
| 1303 | |||
| 1304 | (let ((tmp-name1 (tramp--test-make-temp-name)) | ||
| 1305 | (tmp-name2 (tramp--test-make-temp-name)) | ||
| 1306 | (tmp-name3 (tramp--test-make-temp-name))) | ||
| 1307 | (unwind-protect | ||
| 1308 | (progn | ||
| 1309 | (write-region "foo" nil tmp-name1) | ||
| 1310 | (should (file-exists-p tmp-name1)) | ||
| 1311 | (should (consp (nth 5 (file-attributes tmp-name1)))) | ||
| 1312 | ;; '(0 0) means don't know, and will be replaced by | ||
| 1313 | ;; `current-time'. Therefore, we use '(0 1). | ||
| 1314 | ;; We skip the test, if the remote handler is not able to | ||
| 1315 | ;; set the correct time. | ||
| 1316 | (skip-unless (set-file-times tmp-name1 '(0 1))) | ||
| 1317 | ;; Dumb remote shells without perl(1) or stat(1) are not | ||
| 1318 | ;; able to return the date correctly. They say "don't know". | ||
| 1319 | (unless (equal (nth 5 (file-attributes tmp-name1)) '(0 0)) | ||
| 1320 | (should (equal (nth 5 (file-attributes tmp-name1)) '(0 1))) | ||
| 1321 | (write-region "bla" nil tmp-name2) | ||
| 1322 | (should (file-exists-p tmp-name2)) | ||
| 1323 | (should (file-newer-than-file-p tmp-name2 tmp-name1)) | ||
| 1324 | ;; `tmp-name3' does not exist. | ||
| 1325 | (should (file-newer-than-file-p tmp-name2 tmp-name3)) | ||
| 1326 | (should-not (file-newer-than-file-p tmp-name3 tmp-name1)))) | ||
| 1327 | |||
| 1328 | ;; Cleanup. | ||
| 1329 | (ignore-errors | ||
| 1330 | (delete-file tmp-name1) | ||
| 1331 | (delete-file tmp-name2))))) | ||
| 1332 | |||
| 1333 | (ert-deftest tramp-test23-visited-file-modtime () | ||
| 1334 | "Check `set-visited-file-modtime' and `verify-visited-file-modtime'." | ||
| 1335 | (skip-unless (tramp--test-enabled)) | ||
| 1336 | |||
| 1337 | (let ((tmp-name (tramp--test-make-temp-name))) | ||
| 1338 | (unwind-protect | ||
| 1339 | (progn | ||
| 1340 | (write-region "foo" nil tmp-name) | ||
| 1341 | (should (file-exists-p tmp-name)) | ||
| 1342 | (with-temp-buffer | ||
| 1343 | (insert-file-contents tmp-name) | ||
| 1344 | (should (verify-visited-file-modtime)) | ||
| 1345 | (set-visited-file-modtime '(0 1)) | ||
| 1346 | (should (verify-visited-file-modtime)) | ||
| 1347 | (should (equal (visited-file-modtime) '(0 1 0 0))))) | ||
| 1348 | |||
| 1349 | ;; Cleanup. | ||
| 1350 | (ignore-errors (delete-file tmp-name))))) | ||
| 1351 | |||
| 1352 | (ert-deftest tramp-test24-file-name-completion () | ||
| 1353 | "Check `file-name-completion' and `file-name-all-completions'." | ||
| 1354 | (skip-unless (tramp--test-enabled)) | ||
| 1355 | |||
| 1356 | (let ((tmp-name (tramp--test-make-temp-name))) | ||
| 1357 | (unwind-protect | ||
| 1358 | (progn | ||
| 1359 | (make-directory tmp-name) | ||
| 1360 | (should (file-directory-p tmp-name)) | ||
| 1361 | (write-region "foo" nil (expand-file-name "foo" tmp-name)) | ||
| 1362 | (write-region "bar" nil (expand-file-name "bold" tmp-name)) | ||
| 1363 | (make-directory (expand-file-name "boz" tmp-name)) | ||
| 1364 | (should (equal (file-name-completion "fo" tmp-name) "foo")) | ||
| 1365 | (should (equal (file-name-completion "b" tmp-name) "bo")) | ||
| 1366 | (should | ||
| 1367 | (equal (file-name-completion "b" tmp-name 'file-directory-p) "boz/")) | ||
| 1368 | (should (equal (file-name-all-completions "fo" tmp-name) '("foo"))) | ||
| 1369 | (should | ||
| 1370 | (equal (sort (file-name-all-completions "b" tmp-name) 'string-lessp) | ||
| 1371 | '("bold" "boz/")))) | ||
| 1372 | |||
| 1373 | ;; Cleanup. | ||
| 1374 | (ignore-errors (delete-directory tmp-name 'recursive))))) | ||
| 1375 | |||
| 1376 | (ert-deftest tramp-test25-load () | ||
| 1377 | "Check `load'." | ||
| 1378 | (skip-unless (tramp--test-enabled)) | ||
| 1379 | |||
| 1380 | (let ((tmp-name (tramp--test-make-temp-name))) | ||
| 1381 | (unwind-protect | ||
| 1382 | (progn | ||
| 1383 | (load tmp-name 'noerror 'nomessage) | ||
| 1384 | (should-not (featurep 'tramp-test-load)) | ||
| 1385 | (write-region "(provide 'tramp-test-load)" nil tmp-name) | ||
| 1386 | ;; `load' in lread.c does not pass `must-suffix'. Why? | ||
| 1387 | ;(should-error (load tmp-name nil 'nomessage 'nosuffix 'must-suffix)) | ||
| 1388 | (load tmp-name nil 'nomessage 'nosuffix) | ||
| 1389 | (should (featurep 'tramp-test-load))) | ||
| 1390 | |||
| 1391 | ;; Cleanup. | ||
| 1392 | (ignore-errors | ||
| 1393 | (and (featurep 'tramp-test-load) (unload-feature 'tramp-test-load)) | ||
| 1394 | (delete-file tmp-name))))) | ||
| 1395 | |||
| 1396 | (ert-deftest tramp-test26-process-file () | ||
| 1397 | "Check `process-file'." | ||
| 1398 | :tags '(:expensive-test) | ||
| 1399 | (skip-unless (tramp--test-enabled)) | ||
| 1400 | (skip-unless | ||
| 1401 | (not | ||
| 1402 | (memq | ||
| 1403 | (tramp-find-foreign-file-name-handler tramp-test-temporary-file-directory) | ||
| 1404 | '(tramp-gvfs-file-name-handler tramp-smb-file-name-handler)))) | ||
| 1405 | |||
| 1406 | (let* ((tmp-name (tramp--test-make-temp-name)) | ||
| 1407 | (fnnd (file-name-nondirectory tmp-name)) | ||
| 1408 | (default-directory tramp-test-temporary-file-directory) | ||
| 1409 | kill-buffer-query-functions) | ||
| 1410 | (unwind-protect | ||
| 1411 | (progn | ||
| 1412 | ;; We cannot use "/bin/true" and "/bin/false"; those paths | ||
| 1413 | ;; do not exist on hydra. | ||
| 1414 | (should (zerop (process-file "true"))) | ||
| 1415 | (should-not (zerop (process-file "false"))) | ||
| 1416 | (should-not (zerop (process-file "binary-does-not-exist"))) | ||
| 1417 | (with-temp-buffer | ||
| 1418 | (write-region "foo" nil tmp-name) | ||
| 1419 | (should (file-exists-p tmp-name)) | ||
| 1420 | (should (zerop (process-file "ls" nil t nil fnnd))) | ||
| 1421 | ;; `ls' could produce colorized output. | ||
| 1422 | (goto-char (point-min)) | ||
| 1423 | (while (re-search-forward tramp-color-escape-sequence-regexp nil t) | ||
| 1424 | (replace-match "" nil nil)) | ||
| 1425 | (should (string-equal (format "%s\n" fnnd) (buffer-string))) | ||
| 1426 | (should-not (get-buffer-window (current-buffer) t)) | ||
| 1427 | |||
| 1428 | ;; Second run. The output must be appended. | ||
| 1429 | (goto-char (point-max)) | ||
| 1430 | (should (zerop (process-file "ls" nil t t fnnd))) | ||
| 1431 | ;; `ls' could produce colorized output. | ||
| 1432 | (goto-char (point-min)) | ||
| 1433 | (while (re-search-forward tramp-color-escape-sequence-regexp nil t) | ||
| 1434 | (replace-match "" nil nil)) | ||
| 1435 | (should | ||
| 1436 | (string-equal (format "%s\n%s\n" fnnd fnnd) (buffer-string))) | ||
| 1437 | ;; A non-nil DISPLAY must not raise the buffer. | ||
| 1438 | (should-not (get-buffer-window (current-buffer) t)))) | ||
| 1439 | |||
| 1440 | ;; Cleanup. | ||
| 1441 | (ignore-errors (delete-file tmp-name))))) | ||
| 1442 | |||
| 1443 | (ert-deftest tramp-test27-start-file-process () | ||
| 1444 | "Check `start-file-process'." | ||
| 1445 | :tags '(:expensive-test) | ||
| 1446 | (skip-unless (tramp--test-enabled)) | ||
| 1447 | (skip-unless | ||
| 1448 | (not | ||
| 1449 | (memq | ||
| 1450 | (tramp-find-foreign-file-name-handler tramp-test-temporary-file-directory) | ||
| 1451 | '(tramp-adb-file-name-handler | ||
| 1452 | tramp-gvfs-file-name-handler | ||
| 1453 | tramp-smb-file-name-handler)))) | ||
| 1454 | |||
| 1455 | (let ((default-directory tramp-test-temporary-file-directory) | ||
| 1456 | (tmp-name (tramp--test-make-temp-name)) | ||
| 1457 | kill-buffer-query-functions proc) | ||
| 1458 | (unwind-protect | ||
| 1459 | (with-temp-buffer | ||
| 1460 | (setq proc (start-file-process "test1" (current-buffer) "cat")) | ||
| 1461 | (should (processp proc)) | ||
| 1462 | (should (equal (process-status proc) 'run)) | ||
| 1463 | (process-send-string proc "foo") | ||
| 1464 | (process-send-eof proc) | ||
| 1465 | ;; Read output. | ||
| 1466 | (with-timeout (10 (ert-fail "`start-file-process' timed out")) | ||
| 1467 | (while (< (- (point-max) (point-min)) (length "foo")) | ||
| 1468 | (accept-process-output proc 1))) | ||
| 1469 | (should (string-equal (buffer-string) "foo"))) | ||
| 1470 | |||
| 1471 | ;; Cleanup. | ||
| 1472 | (ignore-errors (delete-process proc))) | ||
| 1473 | |||
| 1474 | (unwind-protect | ||
| 1475 | (with-temp-buffer | ||
| 1476 | (write-region "foo" nil tmp-name) | ||
| 1477 | (should (file-exists-p tmp-name)) | ||
| 1478 | (setq proc | ||
| 1479 | (start-file-process | ||
| 1480 | "test2" (current-buffer) | ||
| 1481 | "cat" (file-name-nondirectory tmp-name))) | ||
| 1482 | (should (processp proc)) | ||
| 1483 | ;; Read output. | ||
| 1484 | (with-timeout (10 (ert-fail "`start-file-process' timed out")) | ||
| 1485 | (while (< (- (point-max) (point-min)) (length "foo")) | ||
| 1486 | (accept-process-output proc 1))) | ||
| 1487 | (should (string-equal (buffer-string) "foo"))) | ||
| 1488 | |||
| 1489 | ;; Cleanup. | ||
| 1490 | (ignore-errors | ||
| 1491 | (delete-process proc) | ||
| 1492 | (delete-file tmp-name))) | ||
| 1493 | |||
| 1494 | (unwind-protect | ||
| 1495 | (with-temp-buffer | ||
| 1496 | (setq proc (start-file-process "test3" (current-buffer) "cat")) | ||
| 1497 | (should (processp proc)) | ||
| 1498 | (should (equal (process-status proc) 'run)) | ||
| 1499 | (set-process-filter | ||
| 1500 | proc | ||
| 1501 | (lambda (p s) (with-current-buffer (process-buffer p) (insert s)))) | ||
| 1502 | (process-send-string proc "foo") | ||
| 1503 | (process-send-eof proc) | ||
| 1504 | ;; Read output. | ||
| 1505 | (with-timeout (10 (ert-fail "`start-file-process' timed out")) | ||
| 1506 | (while (< (- (point-max) (point-min)) (length "foo")) | ||
| 1507 | (accept-process-output proc 1))) | ||
| 1508 | (should (string-equal (buffer-string) "foo"))) | ||
| 1509 | |||
| 1510 | ;; Cleanup. | ||
| 1511 | (ignore-errors (delete-process proc))))) | ||
| 1512 | |||
| 1513 | (ert-deftest tramp-test28-shell-command () | ||
| 1514 | "Check `shell-command'." | ||
| 1515 | :tags '(:expensive-test) | ||
| 1516 | (skip-unless (tramp--test-enabled)) | ||
| 1517 | (skip-unless | ||
| 1518 | (not | ||
| 1519 | (memq | ||
| 1520 | (tramp-find-foreign-file-name-handler tramp-test-temporary-file-directory) | ||
| 1521 | '(tramp-adb-file-name-handler | ||
| 1522 | tramp-gvfs-file-name-handler | ||
| 1523 | tramp-smb-file-name-handler)))) | ||
| 1524 | |||
| 1525 | (let ((tmp-name (tramp--test-make-temp-name)) | ||
| 1526 | (default-directory tramp-test-temporary-file-directory) | ||
| 1527 | kill-buffer-query-functions) | ||
| 1528 | (unwind-protect | ||
| 1529 | (with-temp-buffer | ||
| 1530 | (write-region "foo" nil tmp-name) | ||
| 1531 | (should (file-exists-p tmp-name)) | ||
| 1532 | (shell-command | ||
| 1533 | (format "ls %s" (file-name-nondirectory tmp-name)) (current-buffer)) | ||
| 1534 | ;; `ls' could produce colorized output. | ||
| 1535 | (goto-char (point-min)) | ||
| 1536 | (while (re-search-forward tramp-color-escape-sequence-regexp nil t) | ||
| 1537 | (replace-match "" nil nil)) | ||
| 1538 | (should | ||
| 1539 | (string-equal | ||
| 1540 | (format "%s\n" (file-name-nondirectory tmp-name)) (buffer-string)))) | ||
| 1541 | |||
| 1542 | ;; Cleanup. | ||
| 1543 | (ignore-errors (delete-file tmp-name))) | ||
| 1544 | |||
| 1545 | (unwind-protect | ||
| 1546 | (with-temp-buffer | ||
| 1547 | (write-region "foo" nil tmp-name) | ||
| 1548 | (should (file-exists-p tmp-name)) | ||
| 1549 | (async-shell-command | ||
| 1550 | (format "ls %s" (file-name-nondirectory tmp-name)) (current-buffer)) | ||
| 1551 | (set-process-sentinel (get-buffer-process (current-buffer)) nil) | ||
| 1552 | ;; Read output. | ||
| 1553 | (with-timeout (10 (ert-fail "`async-shell-command' timed out")) | ||
| 1554 | (while (< (- (point-max) (point-min)) | ||
| 1555 | (1+ (length (file-name-nondirectory tmp-name)))) | ||
| 1556 | (accept-process-output (get-buffer-process (current-buffer)) 1))) | ||
| 1557 | ;; `ls' could produce colorized output. | ||
| 1558 | (goto-char (point-min)) | ||
| 1559 | (while (re-search-forward tramp-color-escape-sequence-regexp nil t) | ||
| 1560 | (replace-match "" nil nil)) | ||
| 1561 | ;; There might be a nasty "Process *Async Shell* finished" message. | ||
| 1562 | (goto-char (point-min)) | ||
| 1563 | (forward-line) | ||
| 1564 | (narrow-to-region (point-min) (point)) | ||
| 1565 | (should | ||
| 1566 | (string-equal | ||
| 1567 | (format "%s\n" (file-name-nondirectory tmp-name)) (buffer-string)))) | ||
| 1568 | |||
| 1569 | ;; Cleanup. | ||
| 1570 | (ignore-errors (delete-file tmp-name))) | ||
| 1571 | |||
| 1572 | (unwind-protect | ||
| 1573 | (with-temp-buffer | ||
| 1574 | (write-region "foo" nil tmp-name) | ||
| 1575 | (should (file-exists-p tmp-name)) | ||
| 1576 | (async-shell-command "read line; ls $line" (current-buffer)) | ||
| 1577 | (set-process-sentinel (get-buffer-process (current-buffer)) nil) | ||
| 1578 | (process-send-string | ||
| 1579 | (get-buffer-process (current-buffer)) | ||
| 1580 | (format "%s\n" (file-name-nondirectory tmp-name))) | ||
| 1581 | ;; Read output. | ||
| 1582 | (with-timeout (10 (ert-fail "`async-shell-command' timed out")) | ||
| 1583 | (while (< (- (point-max) (point-min)) | ||
| 1584 | (1+ (length (file-name-nondirectory tmp-name)))) | ||
| 1585 | (accept-process-output (get-buffer-process (current-buffer)) 1))) | ||
| 1586 | ;; `ls' could produce colorized output. | ||
| 1587 | (goto-char (point-min)) | ||
| 1588 | (while (re-search-forward tramp-color-escape-sequence-regexp nil t) | ||
| 1589 | (replace-match "" nil nil)) | ||
| 1590 | ;; There might be a nasty "Process *Async Shell* finished" message. | ||
| 1591 | (goto-char (point-min)) | ||
| 1592 | (forward-line) | ||
| 1593 | (narrow-to-region (point-min) (point)) | ||
| 1594 | (should | ||
| 1595 | (string-equal | ||
| 1596 | (format "%s\n" (file-name-nondirectory tmp-name)) (buffer-string)))) | ||
| 1597 | |||
| 1598 | ;; Cleanup. | ||
| 1599 | (ignore-errors (delete-file tmp-name))))) | ||
| 1600 | |||
| 1601 | (defun tramp-test--shell-command-to-string-asynchronously (command) | ||
| 1602 | "Like `shell-command-to-string', but for asynchronous processes." | ||
| 1603 | (with-temp-buffer | ||
| 1604 | (async-shell-command command (current-buffer)) | ||
| 1605 | ;; Suppress nasty messages. | ||
| 1606 | (set-process-sentinel (get-buffer-process (current-buffer)) nil) | ||
| 1607 | (while (get-buffer-process (current-buffer)) | ||
| 1608 | (accept-process-output (get-buffer-process (current-buffer)) 0.1)) | ||
| 1609 | (accept-process-output) | ||
| 1610 | (buffer-substring-no-properties (point-min) (point-max)))) | ||
| 1611 | |||
| 1612 | ;; This test is inspired by Bug#23952. | ||
| 1613 | (ert-deftest tramp-test29-environment-variables () | ||
| 1614 | "Check that remote processes set / unset environment variables properly." | ||
| 1615 | :tags '(:expensive-test) | ||
| 1616 | (skip-unless (tramp--test-enabled)) | ||
| 1617 | (skip-unless | ||
| 1618 | (eq | ||
| 1619 | (tramp-find-foreign-file-name-handler tramp-test-temporary-file-directory) | ||
| 1620 | 'tramp-sh-file-name-handler)) | ||
| 1621 | |||
| 1622 | (dolist (this-shell-command-to-string | ||
| 1623 | '(;; Synchronously. | ||
| 1624 | shell-command-to-string | ||
| 1625 | ;; Asynchronously. | ||
| 1626 | tramp-test--shell-command-to-string-asynchronously)) | ||
| 1627 | |||
| 1628 | (let ((default-directory tramp-test-temporary-file-directory) | ||
| 1629 | (shell-file-name "/bin/sh") | ||
| 1630 | (envvar (concat "VAR_" (upcase (md5 (current-time-string))))) | ||
| 1631 | kill-buffer-query-functions) | ||
| 1632 | |||
| 1633 | (unwind-protect | ||
| 1634 | ;; Set a value. | ||
| 1635 | (let ((process-environment | ||
| 1636 | (cons (concat envvar "=foo") process-environment))) | ||
| 1637 | ;; Default value. | ||
| 1638 | (should | ||
| 1639 | (string-match | ||
| 1640 | "foo" | ||
| 1641 | (funcall | ||
| 1642 | this-shell-command-to-string | ||
| 1643 | (format "echo -n ${%s:?bla}" envvar)))))) | ||
| 1644 | |||
| 1645 | (unwind-protect | ||
| 1646 | ;; Set the empty value. | ||
| 1647 | (let ((process-environment | ||
| 1648 | (cons (concat envvar "=") process-environment))) | ||
| 1649 | ;; Value is null. | ||
| 1650 | (should | ||
| 1651 | (string-match | ||
| 1652 | "bla" | ||
| 1653 | (funcall | ||
| 1654 | this-shell-command-to-string | ||
| 1655 | (format "echo -n ${%s:?bla}" envvar)))) | ||
| 1656 | ;; Variable is set. | ||
| 1657 | (should | ||
| 1658 | (string-match | ||
| 1659 | (regexp-quote envvar) | ||
| 1660 | (funcall this-shell-command-to-string "set"))))) | ||
| 1661 | |||
| 1662 | ;; We force a reconnect, in order to have a clean environment. | ||
| 1663 | (tramp-cleanup-connection | ||
| 1664 | (tramp-dissect-file-name tramp-test-temporary-file-directory) | ||
| 1665 | 'keep-debug 'keep-password) | ||
| 1666 | (unwind-protect | ||
| 1667 | ;; Unset the variable. | ||
| 1668 | (let ((tramp-remote-process-environment | ||
| 1669 | (cons (concat envvar "=foo") | ||
| 1670 | tramp-remote-process-environment))) | ||
| 1671 | ;; Set the initial value, we want to unset below. | ||
| 1672 | (should | ||
| 1673 | (string-match | ||
| 1674 | "foo" | ||
| 1675 | (funcall | ||
| 1676 | this-shell-command-to-string | ||
| 1677 | (format "echo -n ${%s:?bla}" envvar)))) | ||
| 1678 | (let ((process-environment | ||
| 1679 | (cons envvar process-environment))) | ||
| 1680 | ;; Variable is unset. | ||
| 1681 | (should | ||
| 1682 | (string-match | ||
| 1683 | "bla" | ||
| 1684 | (funcall | ||
| 1685 | this-shell-command-to-string | ||
| 1686 | (format "echo -n ${%s:?bla}" envvar)))) | ||
| 1687 | ;; Variable is unset. | ||
| 1688 | (should-not | ||
| 1689 | (string-match | ||
| 1690 | (regexp-quote envvar) | ||
| 1691 | (funcall this-shell-command-to-string "set"))))))))) | ||
| 1692 | |||
| 1693 | (ert-deftest tramp-test30-vc-registered () | ||
| 1694 | "Check `vc-registered'." | ||
| 1695 | :tags '(:expensive-test) | ||
| 1696 | (skip-unless (tramp--test-enabled)) | ||
| 1697 | (skip-unless | ||
| 1698 | (eq | ||
| 1699 | (tramp-find-foreign-file-name-handler tramp-test-temporary-file-directory) | ||
| 1700 | 'tramp-sh-file-name-handler)) | ||
| 1701 | |||
| 1702 | (let* ((default-directory tramp-test-temporary-file-directory) | ||
| 1703 | (tmp-name1 (tramp--test-make-temp-name)) | ||
| 1704 | (tmp-name2 (expand-file-name "foo" tmp-name1)) | ||
| 1705 | (tramp-remote-process-environment tramp-remote-process-environment) | ||
| 1706 | (vc-handled-backends | ||
| 1707 | (with-parsed-tramp-file-name tramp-test-temporary-file-directory nil | ||
| 1708 | (cond | ||
| 1709 | ((tramp-find-executable v vc-git-program (tramp-get-remote-path v)) | ||
| 1710 | '(Git)) | ||
| 1711 | ((tramp-find-executable v vc-hg-program (tramp-get-remote-path v)) | ||
| 1712 | '(Hg)) | ||
| 1713 | ((tramp-find-executable v vc-bzr-program (tramp-get-remote-path v)) | ||
| 1714 | (setq tramp-remote-process-environment | ||
| 1715 | (cons (format "BZR_HOME=%s" | ||
| 1716 | (file-remote-p tmp-name1 'localname)) | ||
| 1717 | tramp-remote-process-environment)) | ||
| 1718 | ;; We must force a reconnect, in order to activate $BZR_HOME. | ||
| 1719 | (tramp-cleanup-connection | ||
| 1720 | (tramp-dissect-file-name tramp-test-temporary-file-directory) | ||
| 1721 | nil 'keep-password) | ||
| 1722 | '(Bzr)) | ||
| 1723 | (t nil))))) | ||
| 1724 | (skip-unless vc-handled-backends) | ||
| 1725 | (message "%s" vc-handled-backends) | ||
| 1726 | |||
| 1727 | (unwind-protect | ||
| 1728 | (progn | ||
| 1729 | (make-directory tmp-name1) | ||
| 1730 | (write-region "foo" nil tmp-name2) | ||
| 1731 | (should (file-directory-p tmp-name1)) | ||
| 1732 | (should (file-exists-p tmp-name2)) | ||
| 1733 | (should-not (vc-registered tmp-name1)) | ||
| 1734 | (should-not (vc-registered tmp-name2)) | ||
| 1735 | |||
| 1736 | (let ((default-directory tmp-name1)) | ||
| 1737 | ;; Create empty repository, and register the file. | ||
| 1738 | ;; Sometimes, creation of repository fails (bzr!); we skip | ||
| 1739 | ;; the test then. | ||
| 1740 | (condition-case nil | ||
| 1741 | (vc-create-repo (car vc-handled-backends)) | ||
| 1742 | (error (skip-unless nil))) | ||
| 1743 | ;; The structure of VC-FILESET is not documented. Let's | ||
| 1744 | ;; hope it won't change. | ||
| 1745 | (condition-case nil | ||
| 1746 | (vc-register | ||
| 1747 | (list (car vc-handled-backends) | ||
| 1748 | (list (file-name-nondirectory tmp-name2)))) | ||
| 1749 | ;; `vc-register' has changed its arguments in Emacs 25.1. | ||
| 1750 | (error | ||
| 1751 | (vc-register | ||
| 1752 | nil (list (car vc-handled-backends) | ||
| 1753 | (list (file-name-nondirectory tmp-name2)))))) | ||
| 1754 | ;; vc-git uses an own process sentinel, Tramp's sentinel | ||
| 1755 | ;; for flushing the cache isn't used. | ||
| 1756 | (dired-uncache (concat (file-remote-p default-directory) "/")) | ||
| 1757 | (should (vc-registered (file-name-nondirectory tmp-name2))))) | ||
| 1758 | |||
| 1759 | ;; Cleanup. | ||
| 1760 | (ignore-errors (delete-directory tmp-name1 'recursive))))) | ||
| 1761 | |||
| 1762 | (ert-deftest tramp-test31-make-auto-save-file-name () | ||
| 1763 | "Check `make-auto-save-file-name'." | ||
| 1764 | (skip-unless (tramp--test-enabled)) | ||
| 1765 | |||
| 1766 | (let ((tmp-name1 (tramp--test-make-temp-name)) | ||
| 1767 | (tmp-name2 (tramp--test-make-temp-name))) | ||
| 1768 | |||
| 1769 | (unwind-protect | ||
| 1770 | (progn | ||
| 1771 | ;; Use default `auto-save-file-name-transforms' mechanism. | ||
| 1772 | (let (tramp-auto-save-directory) | ||
| 1773 | (with-temp-buffer | ||
| 1774 | (setq buffer-file-name tmp-name1) | ||
| 1775 | (should | ||
| 1776 | (string-equal | ||
| 1777 | (make-auto-save-file-name) | ||
| 1778 | ;; This is taken from original `make-auto-save-file-name'. | ||
| 1779 | (expand-file-name | ||
| 1780 | (format | ||
| 1781 | "#%s#" | ||
| 1782 | (subst-char-in-string | ||
| 1783 | ?/ ?! (replace-regexp-in-string "!" "!!" tmp-name1))) | ||
| 1784 | temporary-file-directory))))) | ||
| 1785 | |||
| 1786 | ;; No mapping. | ||
| 1787 | (let (tramp-auto-save-directory auto-save-file-name-transforms) | ||
| 1788 | (with-temp-buffer | ||
| 1789 | (setq buffer-file-name tmp-name1) | ||
| 1790 | (should | ||
| 1791 | (string-equal | ||
| 1792 | (make-auto-save-file-name) | ||
| 1793 | (expand-file-name | ||
| 1794 | (format "#%s#" (file-name-nondirectory tmp-name1)) | ||
| 1795 | tramp-test-temporary-file-directory))))) | ||
| 1796 | |||
| 1797 | ;; Use default `tramp-auto-save-directory' mechanism. | ||
| 1798 | (let ((tramp-auto-save-directory tmp-name2)) | ||
| 1799 | (with-temp-buffer | ||
| 1800 | (setq buffer-file-name tmp-name1) | ||
| 1801 | (should | ||
| 1802 | (string-equal | ||
| 1803 | (make-auto-save-file-name) | ||
| 1804 | ;; This is taken from Tramp. | ||
| 1805 | (expand-file-name | ||
| 1806 | (format | ||
| 1807 | "#%s#" | ||
| 1808 | (tramp-subst-strs-in-string | ||
| 1809 | '(("_" . "|") | ||
| 1810 | ("/" . "_a") | ||
| 1811 | (":" . "_b") | ||
| 1812 | ("|" . "__") | ||
| 1813 | ("[" . "_l") | ||
| 1814 | ("]" . "_r")) | ||
| 1815 | tmp-name1)) | ||
| 1816 | tmp-name2))) | ||
| 1817 | (should (file-directory-p tmp-name2)))) | ||
| 1818 | |||
| 1819 | ;; Relative file names shall work, too. | ||
| 1820 | (let ((tramp-auto-save-directory ".")) | ||
| 1821 | (with-temp-buffer | ||
| 1822 | (setq buffer-file-name tmp-name1 | ||
| 1823 | default-directory tmp-name2) | ||
| 1824 | (should | ||
| 1825 | (string-equal | ||
| 1826 | (make-auto-save-file-name) | ||
| 1827 | ;; This is taken from Tramp. | ||
| 1828 | (expand-file-name | ||
| 1829 | (format | ||
| 1830 | "#%s#" | ||
| 1831 | (tramp-subst-strs-in-string | ||
| 1832 | '(("_" . "|") | ||
| 1833 | ("/" . "_a") | ||
| 1834 | (":" . "_b") | ||
| 1835 | ("|" . "__") | ||
| 1836 | ("[" . "_l") | ||
| 1837 | ("]" . "_r")) | ||
| 1838 | tmp-name1)) | ||
| 1839 | tmp-name2))) | ||
| 1840 | (should (file-directory-p tmp-name2))))) | ||
| 1841 | |||
| 1842 | ;; Cleanup. | ||
| 1843 | (ignore-errors (delete-file tmp-name1)) | ||
| 1844 | (ignore-errors (delete-directory tmp-name2 'recursive))))) | ||
| 1845 | |||
| 1846 | (defun tramp--test-adb-p () | ||
| 1847 | "Check, whether the remote host runs Android. | ||
| 1848 | This requires restrictions of file name syntax." | ||
| 1849 | (tramp-adb-file-name-p tramp-test-temporary-file-directory)) | ||
| 1850 | |||
| 1851 | (defun tramp--test-ftp-p () | ||
| 1852 | "Check, whether an FTP-like method is used. | ||
| 1853 | This does not support globbing characters in file names (yet)." | ||
| 1854 | ;; Globbing characters are ??, ?* and ?\[. | ||
| 1855 | (and (eq (tramp-find-foreign-file-name-handler | ||
| 1856 | tramp-test-temporary-file-directory) | ||
| 1857 | 'tramp-sh-file-name-handler) | ||
| 1858 | (string-match | ||
| 1859 | "ftp$" (file-remote-p tramp-test-temporary-file-directory 'method)))) | ||
| 1860 | |||
| 1861 | (defun tramp--test-gvfs-p () | ||
| 1862 | "Check, whether the remote host runs a GVFS based method. | ||
| 1863 | This requires restrictions of file name syntax." | ||
| 1864 | (tramp-gvfs-file-name-p tramp-test-temporary-file-directory)) | ||
| 1865 | |||
| 1866 | (defun tramp--test-smb-or-windows-nt-p () | ||
| 1867 | "Check, whether the locale or remote host runs MS Windows. | ||
| 1868 | This requires restrictions of file name syntax." | ||
| 1869 | (or (eq system-type 'windows-nt) | ||
| 1870 | (tramp-smb-file-name-p tramp-test-temporary-file-directory))) | ||
| 1871 | |||
| 1872 | (defun tramp--test-hpux-p () | ||
| 1873 | "Check, whether the remote host runs HP-UX. | ||
| 1874 | Several special characters do not work properly there." | ||
| 1875 | ;; We must refill the cache. `file-truename' does it. | ||
| 1876 | (with-parsed-tramp-file-name | ||
| 1877 | (file-truename tramp-test-temporary-file-directory) nil | ||
| 1878 | (string-match "^HP-UX" (tramp-get-connection-property v "uname" "")))) | ||
| 1879 | |||
| 1880 | (defun tramp--test-check-files (&rest files) | ||
| 1881 | "Run a simple but comprehensive test over every file in FILES." | ||
| 1882 | ;; We must use `file-truename' for the temporary directory, because | ||
| 1883 | ;; it could be located on a symlinked directory. This would let the | ||
| 1884 | ;; test fail. | ||
| 1885 | (let* ((tramp-test-temporary-file-directory | ||
| 1886 | (file-truename tramp-test-temporary-file-directory)) | ||
| 1887 | (tmp-name1 (tramp--test-make-temp-name)) | ||
| 1888 | (tmp-name2 (tramp--test-make-temp-name 'local)) | ||
| 1889 | (files (delq nil files))) | ||
| 1890 | (unwind-protect | ||
| 1891 | (progn | ||
| 1892 | (make-directory tmp-name1) | ||
| 1893 | (make-directory tmp-name2) | ||
| 1894 | (dolist (elt files) | ||
| 1895 | (let* ((file1 (expand-file-name elt tmp-name1)) | ||
| 1896 | (file2 (expand-file-name elt tmp-name2)) | ||
| 1897 | (file3 (expand-file-name (concat elt "foo") tmp-name1))) | ||
| 1898 | (write-region elt nil file1) | ||
| 1899 | (should (file-exists-p file1)) | ||
| 1900 | |||
| 1901 | ;; Check file contents. | ||
| 1902 | (with-temp-buffer | ||
| 1903 | (insert-file-contents file1) | ||
| 1904 | (should (string-equal (buffer-string) elt))) | ||
| 1905 | |||
| 1906 | ;; Copy file both directions. | ||
| 1907 | (copy-file file1 tmp-name2) | ||
| 1908 | (should (file-exists-p file2)) | ||
| 1909 | (delete-file file1) | ||
| 1910 | (should-not (file-exists-p file1)) | ||
| 1911 | (copy-file file2 tmp-name1) | ||
| 1912 | (should (file-exists-p file1)) | ||
| 1913 | |||
| 1914 | ;; Method "smb" supports `make-symbolic-link' only if the | ||
| 1915 | ;; remote host has CIFS capabilities. tramp-adb.el and | ||
| 1916 | ;; tramp-gvfs.el do not support symbolic links at all. | ||
| 1917 | (condition-case err | ||
| 1918 | (progn | ||
| 1919 | (make-symbolic-link file1 file3) | ||
| 1920 | (should (file-symlink-p file3)) | ||
| 1921 | (should | ||
| 1922 | (string-equal | ||
| 1923 | (expand-file-name file1) (file-truename file3))) | ||
| 1924 | (should | ||
| 1925 | (string-equal | ||
| 1926 | (car (file-attributes file3)) | ||
| 1927 | (file-remote-p (file-truename file1) 'localname))) | ||
| 1928 | ;; Check file contents. | ||
| 1929 | (with-temp-buffer | ||
| 1930 | (insert-file-contents file3) | ||
| 1931 | (should (string-equal (buffer-string) elt))) | ||
| 1932 | (delete-file file3)) | ||
| 1933 | (file-error | ||
| 1934 | (should (string-equal (error-message-string err) | ||
| 1935 | "make-symbolic-link not supported")))))) | ||
| 1936 | |||
| 1937 | ;; Check file names. | ||
| 1938 | (should (equal (directory-files | ||
| 1939 | tmp-name1 nil directory-files-no-dot-files-regexp) | ||
| 1940 | (sort (copy-sequence files) 'string-lessp))) | ||
| 1941 | (should (equal (directory-files | ||
| 1942 | tmp-name2 nil directory-files-no-dot-files-regexp) | ||
| 1943 | (sort (copy-sequence files) 'string-lessp))) | ||
| 1944 | |||
| 1945 | ;; `substitute-in-file-name' could return different values. | ||
| 1946 | ;; For `adb', there could be strange file permissions | ||
| 1947 | ;; preventing overwriting a file. We don't care in this | ||
| 1948 | ;; testcase. | ||
| 1949 | (dolist (elt files) | ||
| 1950 | (let ((file1 | ||
| 1951 | (substitute-in-file-name (expand-file-name elt tmp-name1))) | ||
| 1952 | (file2 | ||
| 1953 | (substitute-in-file-name (expand-file-name elt tmp-name2)))) | ||
| 1954 | (ignore-errors (write-region elt nil file1)) | ||
| 1955 | (should (file-exists-p file1)) | ||
| 1956 | (ignore-errors (write-region elt nil file2 nil 'nomessage)) | ||
| 1957 | (should (file-exists-p file2)))) | ||
| 1958 | |||
| 1959 | (should (equal (directory-files | ||
| 1960 | tmp-name1 nil directory-files-no-dot-files-regexp) | ||
| 1961 | (directory-files | ||
| 1962 | tmp-name2 nil directory-files-no-dot-files-regexp))) | ||
| 1963 | |||
| 1964 | ;; Check directory creation. We use a subdirectory "foo" | ||
| 1965 | ;; in order to avoid conflicts with previous file name tests. | ||
| 1966 | (dolist (elt files) | ||
| 1967 | (let* ((elt1 (concat elt "foo")) | ||
| 1968 | (file1 (expand-file-name (concat "foo/" elt) tmp-name1)) | ||
| 1969 | (file2 (expand-file-name elt file1)) | ||
| 1970 | (file3 (expand-file-name elt1 file1))) | ||
| 1971 | (make-directory file1 'parents) | ||
| 1972 | (should (file-directory-p file1)) | ||
| 1973 | (write-region elt nil file2) | ||
| 1974 | (should (file-exists-p file2)) | ||
| 1975 | (should | ||
| 1976 | (equal | ||
| 1977 | (directory-files file1 nil directory-files-no-dot-files-regexp) | ||
| 1978 | `(,elt))) | ||
| 1979 | (should | ||
| 1980 | (equal | ||
| 1981 | (caar (directory-files-and-attributes | ||
| 1982 | file1 nil directory-files-no-dot-files-regexp)) | ||
| 1983 | elt)) | ||
| 1984 | |||
| 1985 | ;; Check symlink in `directory-files-and-attributes'. | ||
| 1986 | (condition-case err | ||
| 1987 | (progn | ||
| 1988 | (make-symbolic-link file2 file3) | ||
| 1989 | (should (file-symlink-p file3)) | ||
| 1990 | (should | ||
| 1991 | (string-equal | ||
| 1992 | (caar (directory-files-and-attributes | ||
| 1993 | file1 nil (regexp-quote elt1))) | ||
| 1994 | elt1)) | ||
| 1995 | (should | ||
| 1996 | (string-equal | ||
| 1997 | (cadr (car (directory-files-and-attributes | ||
| 1998 | file1 nil (regexp-quote elt1)))) | ||
| 1999 | (file-remote-p (file-truename file2) 'localname))) | ||
| 2000 | (delete-file file3) | ||
| 2001 | (should-not (file-exists-p file3))) | ||
| 2002 | (file-error | ||
| 2003 | (should (string-equal (error-message-string err) | ||
| 2004 | "make-symbolic-link not supported")))) | ||
| 2005 | |||
| 2006 | (delete-file file2) | ||
| 2007 | (should-not (file-exists-p file2)) | ||
| 2008 | (delete-directory file1) | ||
| 2009 | (should-not (file-exists-p file1))))) | ||
| 2010 | |||
| 2011 | ;; Cleanup. | ||
| 2012 | (ignore-errors (delete-directory tmp-name1 'recursive)) | ||
| 2013 | (ignore-errors (delete-directory tmp-name2 'recursive))))) | ||
| 2014 | |||
| 2015 | (defun tramp--test-special-characters () | ||
| 2016 | "Perform the test in `tramp-test32-special-characters*'." | ||
| 2017 | ;; Newlines, slashes and backslashes in file names are not | ||
| 2018 | ;; supported. So we don't test. And we don't test the tab | ||
| 2019 | ;; character on Windows or Cygwin, because the backslash is | ||
| 2020 | ;; interpreted as a path separator, preventing "\t" from being | ||
| 2021 | ;; expanded to <TAB>. | ||
| 2022 | (tramp--test-check-files | ||
| 2023 | (if (or (tramp--test-gvfs-p) (tramp--test-smb-or-windows-nt-p)) | ||
| 2024 | "foo bar baz" | ||
| 2025 | (if (or (tramp--test-adb-p) (eq system-type 'cygwin)) | ||
| 2026 | " foo bar baz " | ||
| 2027 | " foo\tbar baz\t")) | ||
| 2028 | "$foo$bar$$baz$" | ||
| 2029 | "-foo-bar-baz-" | ||
| 2030 | "%foo%bar%baz%" | ||
| 2031 | "&foo&bar&baz&" | ||
| 2032 | (unless (or (tramp--test-ftp-p) | ||
| 2033 | (tramp--test-gvfs-p) | ||
| 2034 | (tramp--test-smb-or-windows-nt-p)) | ||
| 2035 | "?foo?bar?baz?") | ||
| 2036 | (unless (or (tramp--test-ftp-p) | ||
| 2037 | (tramp--test-gvfs-p) | ||
| 2038 | (tramp--test-smb-or-windows-nt-p)) | ||
| 2039 | "*foo*bar*baz*") | ||
| 2040 | (if (or (tramp--test-gvfs-p) (tramp--test-smb-or-windows-nt-p)) | ||
| 2041 | "'foo'bar'baz'" | ||
| 2042 | "'foo\"bar'baz\"") | ||
| 2043 | "#foo~bar#baz~" | ||
| 2044 | (if (or (tramp--test-gvfs-p) (tramp--test-smb-or-windows-nt-p)) | ||
| 2045 | "!foo!bar!baz!" | ||
| 2046 | "!foo|bar!baz|") | ||
| 2047 | (if (or (tramp--test-gvfs-p) (tramp--test-smb-or-windows-nt-p)) | ||
| 2048 | ";foo;bar;baz;" | ||
| 2049 | ":foo;bar:baz;") | ||
| 2050 | (unless (or (tramp--test-gvfs-p) (tramp--test-smb-or-windows-nt-p)) | ||
| 2051 | "<foo>bar<baz>") | ||
| 2052 | "(foo)bar(baz)" | ||
| 2053 | (unless (or (tramp--test-ftp-p) (tramp--test-gvfs-p)) "[foo]bar[baz]") | ||
| 2054 | "{foo}bar{baz}")) | ||
| 2055 | |||
| 2056 | ;; These tests are inspired by Bug#17238. | ||
| 2057 | (ert-deftest tramp-test32-special-characters () | ||
| 2058 | "Check special characters in file names." | ||
| 2059 | (skip-unless (tramp--test-enabled)) | ||
| 2060 | |||
| 2061 | (tramp--test-special-characters)) | ||
| 2062 | |||
| 2063 | (ert-deftest tramp-test32-special-characters-with-stat () | ||
| 2064 | "Check special characters in file names. | ||
| 2065 | Use the `stat' command." | ||
| 2066 | :tags '(:expensive-test) | ||
| 2067 | (skip-unless (tramp--test-enabled)) | ||
| 2068 | (skip-unless | ||
| 2069 | (eq | ||
| 2070 | (tramp-find-foreign-file-name-handler tramp-test-temporary-file-directory) | ||
| 2071 | 'tramp-sh-file-name-handler)) | ||
| 2072 | (with-parsed-tramp-file-name tramp-test-temporary-file-directory nil | ||
| 2073 | (skip-unless (tramp-get-remote-stat v))) | ||
| 2074 | |||
| 2075 | (let ((tramp-connection-properties | ||
| 2076 | (append | ||
| 2077 | `((,(regexp-quote (file-remote-p tramp-test-temporary-file-directory)) | ||
| 2078 | "perl" nil)) | ||
| 2079 | tramp-connection-properties))) | ||
| 2080 | (tramp--test-special-characters))) | ||
| 2081 | |||
| 2082 | (ert-deftest tramp-test32-special-characters-with-perl () | ||
| 2083 | "Check special characters in file names. | ||
| 2084 | Use the `perl' command." | ||
| 2085 | :tags '(:expensive-test) | ||
| 2086 | (skip-unless (tramp--test-enabled)) | ||
| 2087 | (skip-unless | ||
| 2088 | (eq | ||
| 2089 | (tramp-find-foreign-file-name-handler tramp-test-temporary-file-directory) | ||
| 2090 | 'tramp-sh-file-name-handler)) | ||
| 2091 | (with-parsed-tramp-file-name tramp-test-temporary-file-directory nil | ||
| 2092 | (skip-unless (tramp-get-remote-perl v))) | ||
| 2093 | |||
| 2094 | (let ((tramp-connection-properties | ||
| 2095 | (append | ||
| 2096 | `((,(regexp-quote (file-remote-p tramp-test-temporary-file-directory)) | ||
| 2097 | "stat" nil) | ||
| 2098 | ;; See `tramp-sh-handle-file-truename'. | ||
| 2099 | (,(regexp-quote (file-remote-p tramp-test-temporary-file-directory)) | ||
| 2100 | "readlink" nil)) | ||
| 2101 | tramp-connection-properties))) | ||
| 2102 | (tramp--test-special-characters))) | ||
| 2103 | |||
| 2104 | (ert-deftest tramp-test32-special-characters-with-ls () | ||
| 2105 | "Check special characters in file names. | ||
| 2106 | Use the `ls' command." | ||
| 2107 | :tags '(:expensive-test) | ||
| 2108 | (skip-unless (tramp--test-enabled)) | ||
| 2109 | (skip-unless | ||
| 2110 | (eq | ||
| 2111 | (tramp-find-foreign-file-name-handler tramp-test-temporary-file-directory) | ||
| 2112 | 'tramp-sh-file-name-handler)) | ||
| 2113 | |||
| 2114 | (let ((tramp-connection-properties | ||
| 2115 | (append | ||
| 2116 | `((,(regexp-quote (file-remote-p tramp-test-temporary-file-directory)) | ||
| 2117 | "perl" nil) | ||
| 2118 | (,(regexp-quote (file-remote-p tramp-test-temporary-file-directory)) | ||
| 2119 | "stat" nil) | ||
| 2120 | ;; See `tramp-sh-handle-file-truename'. | ||
| 2121 | (,(regexp-quote (file-remote-p tramp-test-temporary-file-directory)) | ||
| 2122 | "readlink" nil)) | ||
| 2123 | tramp-connection-properties))) | ||
| 2124 | (tramp--test-special-characters))) | ||
| 2125 | |||
| 2126 | (defun tramp--test-utf8 () | ||
| 2127 | "Perform the test in `tramp-test33-utf8*'." | ||
| 2128 | (let* ((utf8 (if (and (eq system-type 'darwin) | ||
| 2129 | (memq 'utf-8-hfs (coding-system-list))) | ||
| 2130 | 'utf-8-hfs 'utf-8)) | ||
| 2131 | (coding-system-for-read utf8) | ||
| 2132 | (coding-system-for-write utf8) | ||
| 2133 | (file-name-coding-system utf8)) | ||
| 2134 | (tramp--test-check-files | ||
| 2135 | (unless (tramp--test-hpux-p) "Γυρίστε το Γαλαξία με Ώτο Στοπ") | ||
| 2136 | (unless (tramp--test-hpux-p) | ||
| 2137 | "أصبح بوسعك الآن تنزيل نسخة كاملة من موسوعة ويكيبيديا العربية لتصفحها بلا اتصال بالإنترنت") | ||
| 2138 | "银河系漫游指南系列" | ||
| 2139 | "Автостопом по гала́ктике"))) | ||
| 2140 | |||
| 2141 | (ert-deftest tramp-test33-utf8 () | ||
| 2142 | "Check UTF8 encoding in file names and file contents." | ||
| 2143 | (skip-unless (tramp--test-enabled)) | ||
| 2144 | |||
| 2145 | (tramp--test-utf8)) | ||
| 2146 | |||
| 2147 | (ert-deftest tramp-test33-utf8-with-stat () | ||
| 2148 | "Check UTF8 encoding in file names and file contents. | ||
| 2149 | Use the `stat' command." | ||
| 2150 | :tags '(:expensive-test) | ||
| 2151 | (skip-unless (tramp--test-enabled)) | ||
| 2152 | (skip-unless | ||
| 2153 | (eq | ||
| 2154 | (tramp-find-foreign-file-name-handler tramp-test-temporary-file-directory) | ||
| 2155 | 'tramp-sh-file-name-handler)) | ||
| 2156 | (with-parsed-tramp-file-name tramp-test-temporary-file-directory nil | ||
| 2157 | (skip-unless (tramp-get-remote-stat v))) | ||
| 2158 | |||
| 2159 | (let ((tramp-connection-properties | ||
| 2160 | (append | ||
| 2161 | `((,(regexp-quote (file-remote-p tramp-test-temporary-file-directory)) | ||
| 2162 | "perl" nil)) | ||
| 2163 | tramp-connection-properties))) | ||
| 2164 | (tramp--test-utf8))) | ||
| 2165 | |||
| 2166 | (ert-deftest tramp-test33-utf8-with-perl () | ||
| 2167 | "Check UTF8 encoding in file names and file contents. | ||
| 2168 | Use the `perl' command." | ||
| 2169 | :tags '(:expensive-test) | ||
| 2170 | (skip-unless (tramp--test-enabled)) | ||
| 2171 | (skip-unless | ||
| 2172 | (eq | ||
| 2173 | (tramp-find-foreign-file-name-handler tramp-test-temporary-file-directory) | ||
| 2174 | 'tramp-sh-file-name-handler)) | ||
| 2175 | (with-parsed-tramp-file-name tramp-test-temporary-file-directory nil | ||
| 2176 | (skip-unless (tramp-get-remote-perl v))) | ||
| 2177 | |||
| 2178 | (let ((tramp-connection-properties | ||
| 2179 | (append | ||
| 2180 | `((,(regexp-quote (file-remote-p tramp-test-temporary-file-directory)) | ||
| 2181 | "stat" nil) | ||
| 2182 | ;; See `tramp-sh-handle-file-truename'. | ||
| 2183 | (,(regexp-quote (file-remote-p tramp-test-temporary-file-directory)) | ||
| 2184 | "readlink" nil)) | ||
| 2185 | tramp-connection-properties))) | ||
| 2186 | (tramp--test-utf8))) | ||
| 2187 | |||
| 2188 | (ert-deftest tramp-test33-utf8-with-ls () | ||
| 2189 | "Check UTF8 encoding in file names and file contents. | ||
| 2190 | Use the `ls' command." | ||
| 2191 | :tags '(:expensive-test) | ||
| 2192 | (skip-unless (tramp--test-enabled)) | ||
| 2193 | (skip-unless | ||
| 2194 | (eq | ||
| 2195 | (tramp-find-foreign-file-name-handler tramp-test-temporary-file-directory) | ||
| 2196 | 'tramp-sh-file-name-handler)) | ||
| 2197 | |||
| 2198 | (let ((tramp-connection-properties | ||
| 2199 | (append | ||
| 2200 | `((,(regexp-quote (file-remote-p tramp-test-temporary-file-directory)) | ||
| 2201 | "perl" nil) | ||
| 2202 | (,(regexp-quote (file-remote-p tramp-test-temporary-file-directory)) | ||
| 2203 | "stat" nil) | ||
| 2204 | ;; See `tramp-sh-handle-file-truename'. | ||
| 2205 | (,(regexp-quote (file-remote-p tramp-test-temporary-file-directory)) | ||
| 2206 | "readlink" nil)) | ||
| 2207 | tramp-connection-properties))) | ||
| 2208 | (tramp--test-utf8))) | ||
| 2209 | |||
| 2210 | ;; This test is inspired by Bug#16928. | ||
| 2211 | (ert-deftest tramp-test34-asynchronous-requests () | ||
| 2212 | "Check parallel asynchronous requests. | ||
| 2213 | Such requests could arrive from timers, process filters and | ||
| 2214 | process sentinels. They shall not disturb each other." | ||
| 2215 | ;; Mark as failed until bug has been fixed. | ||
| 2216 | :expected-result :failed | ||
| 2217 | :tags '(:expensive-test) | ||
| 2218 | (skip-unless (tramp--test-enabled)) | ||
| 2219 | (skip-unless | ||
| 2220 | (eq | ||
| 2221 | (tramp-find-foreign-file-name-handler tramp-test-temporary-file-directory) | ||
| 2222 | 'tramp-sh-file-name-handler)) | ||
| 2223 | |||
| 2224 | ;; Keep instrumentation verbosity 0 until Tramp bug is fixed. This | ||
| 2225 | ;; has the side effect, that this test fails instead to abort. Good | ||
| 2226 | ;; for hydra. | ||
| 2227 | (tramp--instrument-test-case 0 | ||
| 2228 | (let* ((tmp-name (tramp--test-make-temp-name)) | ||
| 2229 | (default-directory tmp-name) | ||
| 2230 | (remote-file-name-inhibit-cache t) | ||
| 2231 | timer buffers kill-buffer-query-functions) | ||
| 2232 | |||
| 2233 | (unwind-protect | ||
| 2234 | (progn | ||
| 2235 | (make-directory tmp-name) | ||
| 2236 | |||
| 2237 | ;; Setup a timer in order to raise an ordinary command again | ||
| 2238 | ;; and again. `vc-registered' is well suited, because there | ||
| 2239 | ;; are many checks. | ||
| 2240 | (setq | ||
| 2241 | timer | ||
| 2242 | (run-at-time | ||
| 2243 | 0 1 | ||
| 2244 | (lambda () | ||
| 2245 | (when buffers | ||
| 2246 | (vc-registered | ||
| 2247 | (buffer-name (nth (random (length buffers)) buffers))))))) | ||
| 2248 | |||
| 2249 | ;; Create temporary buffers. The number of buffers | ||
| 2250 | ;; corresponds to the number of processes; it could be | ||
| 2251 | ;; increased in order to make pressure on Tramp. | ||
| 2252 | (dotimes (i 5) | ||
| 2253 | (add-to-list 'buffers (generate-new-buffer "*temp*"))) | ||
| 2254 | |||
| 2255 | ;; Open asynchronous processes. Set process sentinel. | ||
| 2256 | (dolist (buf buffers) | ||
| 2257 | (async-shell-command "read line; touch $line; echo $line" buf) | ||
| 2258 | (set-process-sentinel | ||
| 2259 | (get-buffer-process buf) | ||
| 2260 | (lambda (proc _state) | ||
| 2261 | (delete-file (buffer-name (process-buffer proc)))))) | ||
| 2262 | |||
| 2263 | ;; Send a string. Use a random order of the buffers. Mix | ||
| 2264 | ;; with regular operation. | ||
| 2265 | (let ((buffers (copy-sequence buffers)) | ||
| 2266 | buf) | ||
| 2267 | (while buffers | ||
| 2268 | (setq buf (nth (random (length buffers)) buffers)) | ||
| 2269 | (process-send-string | ||
| 2270 | (get-buffer-process buf) (format "'%s'\n" buf)) | ||
| 2271 | (file-attributes (buffer-name buf)) | ||
| 2272 | (setq buffers (delq buf buffers)))) | ||
| 2273 | |||
| 2274 | ;; Wait until the whole output has been read. | ||
| 2275 | (with-timeout ((* 10 (length buffers)) | ||
| 2276 | (ert-fail "`async-shell-command' timed out")) | ||
| 2277 | (let ((buffers (copy-sequence buffers)) | ||
| 2278 | buf) | ||
| 2279 | (while buffers | ||
| 2280 | (setq buf (nth (random (length buffers)) buffers)) | ||
| 2281 | (if (ignore-errors | ||
| 2282 | (memq (process-status (get-buffer-process buf)) | ||
| 2283 | '(run open))) | ||
| 2284 | (accept-process-output (get-buffer-process buf) 0.1) | ||
| 2285 | (setq buffers (delq buf buffers)))))) | ||
| 2286 | |||
| 2287 | ;; Check. | ||
| 2288 | (dolist (buf buffers) | ||
| 2289 | (with-current-buffer buf | ||
| 2290 | (should | ||
| 2291 | (string-equal (format "'%s'\n" buf) (buffer-string))))) | ||
| 2292 | (should-not | ||
| 2293 | (directory-files tmp-name nil directory-files-no-dot-files-regexp))) | ||
| 2294 | |||
| 2295 | ;; Cleanup. | ||
| 2296 | (ignore-errors (cancel-timer timer)) | ||
| 2297 | (ignore-errors (delete-directory tmp-name 'recursive)) | ||
| 2298 | (dolist (buf buffers) | ||
| 2299 | (ignore-errors (kill-buffer buf))))))) | ||
| 2300 | |||
| 2301 | (ert-deftest tramp-test35-recursive-load () | ||
| 2302 | "Check that Tramp does not fail due to recursive load." | ||
| 2303 | (skip-unless (tramp--test-enabled)) | ||
| 2304 | |||
| 2305 | (dolist (code | ||
| 2306 | (list | ||
| 2307 | (format | ||
| 2308 | "(expand-file-name %S)" | ||
| 2309 | tramp-test-temporary-file-directory) | ||
| 2310 | (format | ||
| 2311 | "(let ((default-directory %S)) (expand-file-name %S))" | ||
| 2312 | tramp-test-temporary-file-directory | ||
| 2313 | temporary-file-directory))) | ||
| 2314 | (should-not | ||
| 2315 | (string-match | ||
| 2316 | "Recursive load" | ||
| 2317 | (shell-command-to-string | ||
| 2318 | (format | ||
| 2319 | "%s -batch -Q -L %s --eval %s" | ||
| 2320 | (expand-file-name invocation-name invocation-directory) | ||
| 2321 | (mapconcat 'shell-quote-argument load-path " -L ") | ||
| 2322 | (shell-quote-argument code))))))) | ||
| 2323 | |||
| 2324 | (ert-deftest tramp-test36-unload () | ||
| 2325 | "Check that Tramp and its subpackages unload completely. | ||
| 2326 | Since it unloads Tramp, it shall be the last test to run." | ||
| 2327 | ;; Mark as failed until all symbols are unbound. | ||
| 2328 | :expected-result (if (featurep 'tramp) :failed :passed) | ||
| 2329 | :tags '(:expensive-test) | ||
| 2330 | (when (featurep 'tramp) | ||
| 2331 | (unload-feature 'tramp 'force) | ||
| 2332 | ;; No Tramp feature must be left. | ||
| 2333 | (should-not (featurep 'tramp)) | ||
| 2334 | (should-not (all-completions "tramp" (delq 'tramp-tests features))) | ||
| 2335 | ;; `file-name-handler-alist' must be clean. | ||
| 2336 | (should-not (all-completions "tramp" (mapcar 'cdr file-name-handler-alist))) | ||
| 2337 | ;; There shouldn't be left a bound symbol. We do not regard our | ||
| 2338 | ;; test symbols, and the Tramp unload hooks. | ||
| 2339 | (mapatoms | ||
| 2340 | (lambda (x) | ||
| 2341 | (and (or (boundp x) (functionp x)) | ||
| 2342 | (string-match "^tramp" (symbol-name x)) | ||
| 2343 | (not (string-match "^tramp--?test" (symbol-name x))) | ||
| 2344 | (not (string-match "unload-hook$" (symbol-name x))) | ||
| 2345 | (ert-fail (format "`%s' still bound" x))))) | ||
| 2346 | ;; There shouldn't be left a hook function containing a Tramp | ||
| 2347 | ;; function. We do not regard the Tramp unload hooks. | ||
| 2348 | (mapatoms | ||
| 2349 | (lambda (x) | ||
| 2350 | (and (boundp x) | ||
| 2351 | (string-match "-hooks?$" (symbol-name x)) | ||
| 2352 | (not (string-match "unload-hook$" (symbol-name x))) | ||
| 2353 | (consp (symbol-value x)) | ||
| 2354 | (ignore-errors (all-completions "tramp" (symbol-value x))) | ||
| 2355 | (ert-fail (format "Hook `%s' still contains Tramp function" x))))))) | ||
| 2356 | |||
| 2357 | ;; TODO: | ||
| 2358 | |||
| 2359 | ;; * dired-compress-file | ||
| 2360 | ;; * dired-uncache | ||
| 2361 | ;; * file-acl | ||
| 2362 | ;; * file-ownership-preserved-p | ||
| 2363 | ;; * file-selinux-context | ||
| 2364 | ;; * find-backup-file-name | ||
| 2365 | ;; * set-file-acl | ||
| 2366 | ;; * set-file-selinux-context | ||
| 2367 | |||
| 2368 | ;; * Work on skipped tests. Make a comment, when it is impossible. | ||
| 2369 | ;; * Fix `tramp-test15-copy-directory' for `smb'. Using tar in a pipe | ||
| 2370 | ;; doesn't work well when an interactive password must be provided. | ||
| 2371 | ;; * Fix `tramp-test27-start-file-process' on MS Windows (`process-send-eof'?). | ||
| 2372 | ;; * Fix Bug#16928. Set expected error of `tramp-test34-asynchronous-requests'. | ||
| 2373 | ;; * Fix `tramp-test36-unload' (Not all symbols are unbound). Set | ||
| 2374 | ;; expected error. | ||
| 2375 | |||
| 2376 | (defun tramp-test-all (&optional interactive) | ||
| 2377 | "Run all tests for \\[tramp]." | ||
| 2378 | (interactive "p") | ||
| 2379 | (funcall | ||
| 2380 | (if interactive 'ert-run-tests-interactively 'ert-run-tests-batch) "^tramp")) | ||
| 2381 | |||
| 2382 | (provide 'tramp-tests) | ||
| 2383 | ;;; tramp-tests.el ends here | ||
diff --git a/test/lisp/auth-source-tests.el b/test/lisp/auth-source-tests.el index 5faa1fe20bf..e73f55e2bfa 100644 --- a/test/lisp/auth-source-tests.el +++ b/test/lisp/auth-source-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; auth-source-tests.el --- Tests for auth-source.el -*- lexical-binding: t; -*- | 1 | ;;; auth-source-tests.el --- Tests for auth-source.el -*- lexical-binding: t; -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2015-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2015-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Damien Cassou <damien@cassou.me>, | 5 | ;; Author: Damien Cassou <damien@cassou.me>, |
| 6 | ;; Nicolas Petton <nicolas@petton.fr> | 6 | ;; Nicolas Petton <nicolas@petton.fr> |
diff --git a/test/lisp/autorevert-tests.el b/test/lisp/autorevert-tests.el index 2f951c0c9aa..aea855ae02f 100644 --- a/test/lisp/autorevert-tests.el +++ b/test/lisp/autorevert-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; auto-revert-tests.el --- Tests of auto-revert | 1 | ;;; auto-revert-tests.el --- Tests of auto-revert |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2015-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2015-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Michael Albinus <michael.albinus@gmx.de> | 5 | ;; Author: Michael Albinus <michael.albinus@gmx.de> |
| 6 | 6 | ||
diff --git a/test/lisp/calc/calc-tests.el b/test/lisp/calc/calc-tests.el index c1fb1695c78..8f56d48d01d 100644 --- a/test/lisp/calc/calc-tests.el +++ b/test/lisp/calc/calc-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; calc-tests.el --- tests for calc -*- lexical-binding: t; -*- | 1 | ;;; calc-tests.el --- tests for calc -*- lexical-binding: t; -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2014-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2014-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Leo Liu <sdl.web@gmail.com> | 5 | ;; Author: Leo Liu <sdl.web@gmail.com> |
| 6 | ;; Keywords: maint | 6 | ;; Keywords: maint |
diff --git a/test/lisp/calendar/icalendar-tests.el b/test/lisp/calendar/icalendar-tests.el index 307d687f2af..3e090029808 100644 --- a/test/lisp/calendar/icalendar-tests.el +++ b/test/lisp/calendar/icalendar-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;; icalendar-tests.el --- Test suite for icalendar.el | 1 | ;; icalendar-tests.el --- Test suite for icalendar.el |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2005, 2008-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2005, 2008-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Ulf Jasper <ulf.jasper@web.de> | 5 | ;; Author: Ulf Jasper <ulf.jasper@web.de> |
| 6 | ;; Created: March 2005 | 6 | ;; Created: March 2005 |
diff --git a/test/lisp/char-fold-tests.el b/test/lisp/char-fold-tests.el index 485254aa6cf..d86c731b6e3 100644 --- a/test/lisp/char-fold-tests.el +++ b/test/lisp/char-fold-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; char-fold-tests.el --- Tests for char-fold.el -*- lexical-binding: t; -*- | 1 | ;;; char-fold-tests.el --- Tests for char-fold.el -*- lexical-binding: t; -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2013-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2013-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Artur Malabarba <bruce.connor.am@gmail.com> | 5 | ;; Author: Artur Malabarba <bruce.connor.am@gmail.com> |
| 6 | 6 | ||
diff --git a/test/lisp/comint-tests.el b/test/lisp/comint-tests.el index 576be238408..3205c9e4cd3 100644 --- a/test/lisp/comint-tests.el +++ b/test/lisp/comint-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; comint-testsuite.el | 1 | ;;; comint-testsuite.el |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2010-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2010-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; This file is part of GNU Emacs. | 5 | ;; This file is part of GNU Emacs. |
| 6 | 6 | ||
diff --git a/test/lisp/dabbrev-tests.el b/test/lisp/dabbrev-tests.el index 9c7a8385535..5baa31558e7 100644 --- a/test/lisp/dabbrev-tests.el +++ b/test/lisp/dabbrev-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; dabbrev-tests.el --- Test suite for dabbrev. | 1 | ;;; dabbrev-tests.el --- Test suite for dabbrev. |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2016-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Alan Third <alan@idiocy.org> | 5 | ;; Author: Alan Third <alan@idiocy.org> |
| 6 | ;; Keywords: dabbrev | 6 | ;; Keywords: dabbrev |
diff --git a/test/lisp/descr-text-tests.el b/test/lisp/descr-text-tests.el index 9e851c3a119..df0f8453161 100644 --- a/test/lisp/descr-text-tests.el +++ b/test/lisp/descr-text-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; descr-text-test.el --- ERT tests for descr-text.el -*- lexical-binding: t -*- | 1 | ;;; descr-text-test.el --- ERT tests for descr-text.el -*- lexical-binding: t -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2014, 2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2014, 2016-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Michal Nazarewicz <mina86@mina86.com> | 5 | ;; Author: Michal Nazarewicz <mina86@mina86.com> |
| 6 | 6 | ||
diff --git a/test/lisp/electric-tests.el b/test/lisp/electric-tests.el index 17b4e024ab2..78a37650619 100644 --- a/test/lisp/electric-tests.el +++ b/test/lisp/electric-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; electric-tests.el --- tests for electric.el | 1 | ;;; electric-tests.el --- tests for electric.el |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2013-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2013-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: João Távora <joaotavora@gmail.com> | 5 | ;; Author: João Távora <joaotavora@gmail.com> |
| 6 | ;; Keywords: | 6 | ;; Keywords: |
diff --git a/test/lisp/emacs-lisp/bytecomp-tests.el b/test/lisp/emacs-lisp/bytecomp-tests.el index 91d438eae0f..bc47c82c1e1 100644 --- a/test/lisp/emacs-lisp/bytecomp-tests.el +++ b/test/lisp/emacs-lisp/bytecomp-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; bytecomp-tests.el | 1 | ;;; bytecomp-tests.el |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2008-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2008-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Shigeru Fukaya <shigeru.fukaya@gmail.com> | 5 | ;; Author: Shigeru Fukaya <shigeru.fukaya@gmail.com> |
| 6 | ;; Author: Stefan Monnier <monnier@iro.umontreal.ca> | 6 | ;; Author: Stefan Monnier <monnier@iro.umontreal.ca> |
diff --git a/test/lisp/emacs-lisp/cl-generic-tests.el b/test/lisp/emacs-lisp/cl-generic-tests.el index dee10fe285e..0768e31f7e6 100644 --- a/test/lisp/emacs-lisp/cl-generic-tests.el +++ b/test/lisp/emacs-lisp/cl-generic-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; cl-generic-tests.el --- Tests for cl-generic.el functionality -*- lexical-binding: t; -*- | 1 | ;;; cl-generic-tests.el --- Tests for cl-generic.el functionality -*- lexical-binding: t; -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2015-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2015-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Stefan Monnier <monnier@iro.umontreal.ca> | 5 | ;; Author: Stefan Monnier <monnier@iro.umontreal.ca> |
| 6 | 6 | ||
diff --git a/test/lisp/emacs-lisp/cl-lib-tests.el b/test/lisp/emacs-lisp/cl-lib-tests.el index cbaf70fc4bb..5edc3e72bf2 100644 --- a/test/lisp/emacs-lisp/cl-lib-tests.el +++ b/test/lisp/emacs-lisp/cl-lib-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; cl-lib.el --- tests for emacs-lisp/cl-lib.el -*- lexical-binding:t -*- | 1 | ;;; cl-lib.el --- tests for emacs-lisp/cl-lib.el -*- lexical-binding:t -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2013-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2013-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; This file is part of GNU Emacs. | 5 | ;; This file is part of GNU Emacs. |
| 6 | 6 | ||
diff --git a/test/lisp/emacs-lisp/eieio-tests/eieio-test-methodinvoke.el b/test/lisp/emacs-lisp/eieio-tests/eieio-test-methodinvoke.el index eb26047da2f..09edea461d1 100644 --- a/test/lisp/emacs-lisp/eieio-tests/eieio-test-methodinvoke.el +++ b/test/lisp/emacs-lisp/eieio-tests/eieio-test-methodinvoke.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; eieio-testsinvoke.el -- eieio tests for method invocation | 1 | ;;; eieio-testsinvoke.el -- eieio tests for method invocation |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2005, 2008, 2010, 2013-2016 Free Software Foundation, | 3 | ;; Copyright (C) 2005, 2008, 2010, 2013-2017 Free Software Foundation, |
| 4 | ;; Inc. | 4 | ;; Inc. |
| 5 | 5 | ||
| 6 | ;; Author: Eric M. Ludlam <zappo@gnu.org> | 6 | ;; Author: Eric M. Ludlam <zappo@gnu.org> |
diff --git a/test/lisp/emacs-lisp/eieio-tests/eieio-test-persist.el b/test/lisp/emacs-lisp/eieio-tests/eieio-test-persist.el index 2f8d65e512e..da4cc5f51f3 100644 --- a/test/lisp/emacs-lisp/eieio-tests/eieio-test-persist.el +++ b/test/lisp/emacs-lisp/eieio-tests/eieio-test-persist.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; eieio-persist.el --- Tests for eieio-persistent class | 1 | ;;; eieio-persist.el --- Tests for eieio-persistent class |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2011-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2011-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Eric M. Ludlam <eric@siege-engine.com> | 5 | ;; Author: Eric M. Ludlam <eric@siege-engine.com> |
| 6 | 6 | ||
diff --git a/test/lisp/emacs-lisp/eieio-tests/eieio-tests.el b/test/lisp/emacs-lisp/eieio-tests/eieio-tests.el index 9665beb490e..db601abbd0a 100644 --- a/test/lisp/emacs-lisp/eieio-tests/eieio-tests.el +++ b/test/lisp/emacs-lisp/eieio-tests/eieio-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; eieio-tests.el -- eieio tests routines | 1 | ;;; eieio-tests.el -- eieio tests routines |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 1999-2003, 2005-2010, 2012-2016 Free Software | 3 | ;; Copyright (C) 1999-2003, 2005-2010, 2012-2017 Free Software |
| 4 | ;; Foundation, Inc. | 4 | ;; Foundation, Inc. |
| 5 | 5 | ||
| 6 | ;; Author: Eric M. Ludlam <zappo@gnu.org> | 6 | ;; Author: Eric M. Ludlam <zappo@gnu.org> |
diff --git a/test/lisp/emacs-lisp/ert-tests.el b/test/lisp/emacs-lisp/ert-tests.el index 83fddd15165..fc5790c3659 100644 --- a/test/lisp/emacs-lisp/ert-tests.el +++ b/test/lisp/emacs-lisp/ert-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; ert-tests.el --- ERT's self-tests -*- lexical-binding: t -*- | 1 | ;;; ert-tests.el --- ERT's self-tests -*- lexical-binding: t -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2007-2008, 2010-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2007-2008, 2010-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Christian Ohler <ohler@gnu.org> | 5 | ;; Author: Christian Ohler <ohler@gnu.org> |
| 6 | 6 | ||
diff --git a/test/lisp/emacs-lisp/ert-x-tests.el b/test/lisp/emacs-lisp/ert-x-tests.el index ef8642aebfb..4615d08e303 100644 --- a/test/lisp/emacs-lisp/ert-x-tests.el +++ b/test/lisp/emacs-lisp/ert-x-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; ert-x-tests.el --- Tests for ert-x.el | 1 | ;;; ert-x-tests.el --- Tests for ert-x.el |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2008, 2010-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2008, 2010-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Phil Hagelberg | 5 | ;; Author: Phil Hagelberg |
| 6 | ;; Christian Ohler <ohler@gnu.org> | 6 | ;; Christian Ohler <ohler@gnu.org> |
diff --git a/test/lisp/emacs-lisp/generator-tests.el b/test/lisp/emacs-lisp/generator-tests.el index 8ed0f2a240d..1a567ac70fc 100644 --- a/test/lisp/emacs-lisp/generator-tests.el +++ b/test/lisp/emacs-lisp/generator-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; generator-tests.el --- Testing generators -*- lexical-binding: t -*- | 1 | ;;; generator-tests.el --- Testing generators -*- lexical-binding: t -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2015-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2015-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Daniel Colascione <dancol@dancol.org> | 5 | ;; Author: Daniel Colascione <dancol@dancol.org> |
| 6 | ;; Keywords: | 6 | ;; Keywords: |
diff --git a/test/lisp/emacs-lisp/let-alist-tests.el b/test/lisp/emacs-lisp/let-alist-tests.el index 657a27a67dc..fbcde4e3cbf 100644 --- a/test/lisp/emacs-lisp/let-alist-tests.el +++ b/test/lisp/emacs-lisp/let-alist-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; let-alist.el --- tests for file handling. -*- lexical-binding: t; -*- | 1 | ;;; let-alist.el --- tests for file handling. -*- lexical-binding: t; -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2012-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2012-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; This file is part of GNU Emacs. | 5 | ;; This file is part of GNU Emacs. |
| 6 | 6 | ||
diff --git a/test/lisp/emacs-lisp/map-tests.el b/test/lisp/emacs-lisp/map-tests.el index 0af1c656e09..07e85cc5391 100644 --- a/test/lisp/emacs-lisp/map-tests.el +++ b/test/lisp/emacs-lisp/map-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; map-tests.el --- Tests for map.el -*- lexical-binding:t -*- | 1 | ;;; map-tests.el --- Tests for map.el -*- lexical-binding:t -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2015-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2015-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Nicolas Petton <nicolas@petton.fr> | 5 | ;; Author: Nicolas Petton <nicolas@petton.fr> |
| 6 | ;; Maintainer: emacs-devel@gnu.org | 6 | ;; Maintainer: emacs-devel@gnu.org |
diff --git a/test/lisp/emacs-lisp/nadvice-tests.el b/test/lisp/emacs-lisp/nadvice-tests.el index cd51599b86a..b228da6cdb8 100644 --- a/test/lisp/emacs-lisp/nadvice-tests.el +++ b/test/lisp/emacs-lisp/nadvice-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; advice-tests.el --- Test suite for the new advice thingy. | 1 | ;;; advice-tests.el --- Test suite for the new advice thingy. |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2012-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2012-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; This file is part of GNU Emacs. | 5 | ;; This file is part of GNU Emacs. |
| 6 | 6 | ||
diff --git a/test/lisp/emacs-lisp/package-tests.el b/test/lisp/emacs-lisp/package-tests.el index 3d2801e3d70..2e4666e7fe3 100644 --- a/test/lisp/emacs-lisp/package-tests.el +++ b/test/lisp/emacs-lisp/package-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; package-test.el --- Tests for the Emacs package system | 1 | ;;; package-test.el --- Tests for the Emacs package system |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2013-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2013-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Daniel Hackney <dan@haxney.org> | 5 | ;; Author: Daniel Hackney <dan@haxney.org> |
| 6 | ;; Version: 1.0 | 6 | ;; Version: 1.0 |
diff --git a/test/lisp/emacs-lisp/pcase-tests.el b/test/lisp/emacs-lisp/pcase-tests.el index a428e4092f1..ef0b2f6b246 100644 --- a/test/lisp/emacs-lisp/pcase-tests.el +++ b/test/lisp/emacs-lisp/pcase-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; pcase-tests.el --- Test suite for pcase macro. | 1 | ;;; pcase-tests.el --- Test suite for pcase macro. |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2012-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2012-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; This file is part of GNU Emacs. | 5 | ;; This file is part of GNU Emacs. |
| 6 | 6 | ||
diff --git a/test/lisp/emacs-lisp/regexp-opt-tests.el b/test/lisp/emacs-lisp/regexp-opt-tests.el index 01119a3374f..92626317052 100644 --- a/test/lisp/emacs-lisp/regexp-opt-tests.el +++ b/test/lisp/emacs-lisp/regexp-opt-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; regexp-tests.el --- Test suite for regular expression handling. | 1 | ;;; regexp-tests.el --- Test suite for regular expression handling. |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2013-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2013-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Stefan Monnier <monnier@iro.umontreal.ca> | 5 | ;; Author: Stefan Monnier <monnier@iro.umontreal.ca> |
| 6 | ;; Keywords: internal | 6 | ;; Keywords: internal |
diff --git a/test/lisp/emacs-lisp/seq-tests.el b/test/lisp/emacs-lisp/seq-tests.el index a7a43471de3..788524bedb5 100644 --- a/test/lisp/emacs-lisp/seq-tests.el +++ b/test/lisp/emacs-lisp/seq-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; seq-tests.el --- Tests for sequences.el | 1 | ;;; seq-tests.el --- Tests for sequences.el |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2014-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2014-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Nicolas Petton <nicolas@petton.fr> | 5 | ;; Author: Nicolas Petton <nicolas@petton.fr> |
| 6 | ;; Maintainer: emacs-devel@gnu.org | 6 | ;; Maintainer: emacs-devel@gnu.org |
diff --git a/test/lisp/emacs-lisp/subr-x-tests.el b/test/lisp/emacs-lisp/subr-x-tests.el index e30b5d8f549..2b2a5cd0d71 100644 --- a/test/lisp/emacs-lisp/subr-x-tests.el +++ b/test/lisp/emacs-lisp/subr-x-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; subr-x-tests.el --- Testing the extended lisp routines | 1 | ;;; subr-x-tests.el --- Testing the extended lisp routines |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2014-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2014-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Fabián E. Gallina <fgallina@gnu.org> | 5 | ;; Author: Fabián E. Gallina <fgallina@gnu.org> |
| 6 | ;; Keywords: | 6 | ;; Keywords: |
diff --git a/test/lisp/emacs-lisp/tabulated-list-test.el b/test/lisp/emacs-lisp/tabulated-list-test.el index 0fb8dee7fd1..b3a09ee375c 100644 --- a/test/lisp/emacs-lisp/tabulated-list-test.el +++ b/test/lisp/emacs-lisp/tabulated-list-test.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; tabulated-list-test.el --- Tests for emacs-lisp/tabulated-list.el -*- lexical-binding: t; -*- | 1 | ;;; tabulated-list-test.el --- Tests for emacs-lisp/tabulated-list.el -*- lexical-binding: t; -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2015-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2015-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Artur Malabarba <bruce.connor.am@gmail.com> | 5 | ;; Author: Artur Malabarba <bruce.connor.am@gmail.com> |
| 6 | 6 | ||
diff --git a/test/lisp/emacs-lisp/thunk-tests.el b/test/lisp/emacs-lisp/thunk-tests.el index f995d362c7d..89bf1f50113 100644 --- a/test/lisp/emacs-lisp/thunk-tests.el +++ b/test/lisp/emacs-lisp/thunk-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; thunk-tests.el --- Tests for thunk.el -*- lexical-binding: t -*- | 1 | ;;; thunk-tests.el --- Tests for thunk.el -*- lexical-binding: t -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2015-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2015-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Nicolas Petton <nicolas@petton.fr> | 5 | ;; Author: Nicolas Petton <nicolas@petton.fr> |
| 6 | ;; Maintainer: emacs-devel@gnu.org | 6 | ;; Maintainer: emacs-devel@gnu.org |
diff --git a/test/lisp/emacs-lisp/timer-tests.el b/test/lisp/emacs-lisp/timer-tests.el index e3cdec73232..b12a365ff3b 100644 --- a/test/lisp/emacs-lisp/timer-tests.el +++ b/test/lisp/emacs-lisp/timer-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; timer-tests.el --- tests for timers -*- lexical-binding:t -*- | 1 | ;;; timer-tests.el --- tests for timers -*- lexical-binding:t -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2013-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2013-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; This file is part of GNU Emacs. | 5 | ;; This file is part of GNU Emacs. |
| 6 | 6 | ||
diff --git a/test/lisp/emulation/viper-tests.el b/test/lisp/emulation/viper-tests.el index 2c63b24fae0..67ce5b6fbb0 100644 --- a/test/lisp/emulation/viper-tests.el +++ b/test/lisp/emulation/viper-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; viper-tests.el --- tests for viper. | 1 | ;;; viper-tests.el --- tests for viper. |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2016-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; This file is part of GNU Emacs. | 5 | ;; This file is part of GNU Emacs. |
| 6 | 6 | ||
diff --git a/test/lisp/epg-tests.el b/test/lisp/epg-tests.el index d51ab23f71e..ea2b62c3584 100644 --- a/test/lisp/epg-tests.el +++ b/test/lisp/epg-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; epg-tests.el --- Test suite for epg.el -*- lexical-binding: t -*- | 1 | ;;; epg-tests.el --- Test suite for epg.el -*- lexical-binding: t -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2013-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2013-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; This file is part of GNU Emacs. | 5 | ;; This file is part of GNU Emacs. |
| 6 | 6 | ||
diff --git a/test/lisp/eshell/eshell.el b/test/lisp/eshell/eshell.el index d5676dd1daf..dee6c17e025 100644 --- a/test/lisp/eshell/eshell.el +++ b/test/lisp/eshell/eshell.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; tests/eshell.el --- Eshell test suite | 1 | ;;; tests/eshell.el --- Eshell test suite |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 1999-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 1999-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: John Wiegley <johnw@gnu.org> | 5 | ;; Author: John Wiegley <johnw@gnu.org> |
| 6 | 6 | ||
diff --git a/test/lisp/faces-tests.el b/test/lisp/faces-tests.el index 809ba24d210..a30ba25f8f0 100644 --- a/test/lisp/faces-tests.el +++ b/test/lisp/faces-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; faces-tests.el --- Tests for faces.el -*- lexical-binding: t; -*- | 1 | ;;; faces-tests.el --- Tests for faces.el -*- lexical-binding: t; -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2013-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2013-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Artur Malabarba <bruce.connor.am@gmail.com> | 5 | ;; Author: Artur Malabarba <bruce.connor.am@gmail.com> |
| 6 | ;; Keywords: | 6 | ;; Keywords: |
diff --git a/test/lisp/filenotify-tests.el b/test/lisp/filenotify-tests.el index bd7f191dac6..2c085b34de9 100644 --- a/test/lisp/filenotify-tests.el +++ b/test/lisp/filenotify-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; filenotify-tests.el --- Tests of file notifications -*- lexical-binding: t; -*- | 1 | ;;; filenotify-tests.el --- Tests of file notifications -*- lexical-binding: t; -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2013-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2013-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Michael Albinus <michael.albinus@gmx.de> | 5 | ;; Author: Michael Albinus <michael.albinus@gmx.de> |
| 6 | 6 | ||
diff --git a/test/lisp/files-tests.el b/test/lisp/files-tests.el index 6fbe993bfdd..9d456c512b0 100644 --- a/test/lisp/files-tests.el +++ b/test/lisp/files-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; files-tests.el --- tests for files.el. | 1 | ;;; files-tests.el --- tests for files.el. |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2012-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2012-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; This file is part of GNU Emacs. | 5 | ;; This file is part of GNU Emacs. |
| 6 | 6 | ||
diff --git a/test/lisp/gnus/gnus-tests.el b/test/lisp/gnus/gnus-tests.el index 6801ce69a3e..47c49b38c42 100644 --- a/test/lisp/gnus/gnus-tests.el +++ b/test/lisp/gnus/gnus-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; gnus-tests.el --- Wrapper for the Gnus tests | 1 | ;;; gnus-tests.el --- Wrapper for the Gnus tests |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2011-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2011-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Teodor Zlatanov <tzz@lifelogs.com> | 5 | ;; Author: Teodor Zlatanov <tzz@lifelogs.com> |
| 6 | 6 | ||
diff --git a/test/lisp/gnus/message-tests.el b/test/lisp/gnus/message-tests.el index 13c15e33b27..40367251420 100644 --- a/test/lisp/gnus/message-tests.el +++ b/test/lisp/gnus/message-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; message-mode-tests.el --- Tests for message-mode -*- lexical-binding: t; -*- | 1 | ;;; message-mode-tests.el --- Tests for message-mode -*- lexical-binding: t; -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2015-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2015-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: João Távora <joaotavora@gmail.com> | 5 | ;; Author: João Távora <joaotavora@gmail.com> |
| 6 | 6 | ||
diff --git a/test/lisp/imenu-tests.el b/test/lisp/imenu-tests.el index b6e0f604d0e..480368fcbb6 100644 --- a/test/lisp/imenu-tests.el +++ b/test/lisp/imenu-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; imenu-tests.el --- Test suite for imenu. | 1 | ;;; imenu-tests.el --- Test suite for imenu. |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2013-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2013-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Masatake YAMATO <yamato@redhat.com> | 5 | ;; Author: Masatake YAMATO <yamato@redhat.com> |
| 6 | ;; Keywords: tools convenience | 6 | ;; Keywords: tools convenience |
diff --git a/test/lisp/info-xref-tests.el b/test/lisp/info-xref-tests.el index bc3115042bc..9ae07c33fd9 100644 --- a/test/lisp/info-xref-tests.el +++ b/test/lisp/info-xref-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; info-xref.el --- tests for info-xref.el | 1 | ;;; info-xref.el --- tests for info-xref.el |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2013-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2013-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; This file is part of GNU Emacs. | 5 | ;; This file is part of GNU Emacs. |
| 6 | 6 | ||
diff --git a/test/lisp/international/mule-util-tests.el b/test/lisp/international/mule-util-tests.el index 9846aa13295..356ee33232f 100644 --- a/test/lisp/international/mule-util-tests.el +++ b/test/lisp/international/mule-util-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; mule-util --- tests for international/mule-util.el | 1 | ;;; mule-util --- tests for international/mule-util.el |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2002-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2002-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; This file is part of GNU Emacs. | 5 | ;; This file is part of GNU Emacs. |
| 6 | 6 | ||
diff --git a/test/lisp/isearch-tests.el b/test/lisp/isearch-tests.el index 52f312d0b97..e5cae8237e1 100644 --- a/test/lisp/isearch-tests.el +++ b/test/lisp/isearch-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; isearch-tests.el --- Tests for isearch.el -*- lexical-binding: t; -*- | 1 | ;;; isearch-tests.el --- Tests for isearch.el -*- lexical-binding: t; -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2013-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2013-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Artur Malabarba <bruce.connor.am@gmail.com> | 5 | ;; Author: Artur Malabarba <bruce.connor.am@gmail.com> |
| 6 | 6 | ||
diff --git a/test/lisp/json-tests.el b/test/lisp/json-tests.el index 78cebb45eed..66fc25ad1c0 100644 --- a/test/lisp/json-tests.el +++ b/test/lisp/json-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; json-tests.el --- Test suite for json.el | 1 | ;;; json-tests.el --- Test suite for json.el |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2015-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2015-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Dmitry Gutov <dgutov@yandex.ru> | 5 | ;; Author: Dmitry Gutov <dgutov@yandex.ru> |
| 6 | 6 | ||
diff --git a/test/lisp/mail/rmail-tests.el b/test/lisp/mail/rmail-tests.el index 2f18372146a..6cf9053bc0d 100644 --- a/test/lisp/mail/rmail-tests.el +++ b/test/lisp/mail/rmail-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; rmail-tests.el --- Test suite. -*- lexical-binding: t -*- | 1 | ;;; rmail-tests.el --- Test suite. -*- lexical-binding: t -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2015-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2015-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; This file is part of GNU Emacs. | 5 | ;; This file is part of GNU Emacs. |
| 6 | 6 | ||
diff --git a/test/lisp/man-tests.el b/test/lisp/man-tests.el index b1cc4437256..b9f47f50c20 100644 --- a/test/lisp/man-tests.el +++ b/test/lisp/man-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; man-tests.el --- Test suite for man. | 1 | ;;; man-tests.el --- Test suite for man. |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2013-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2013-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Wolfgang Jenkner <wjenkner@inode.at> | 5 | ;; Author: Wolfgang Jenkner <wjenkner@inode.at> |
| 6 | ;; Keywords: help, internal, unix | 6 | ;; Keywords: help, internal, unix |
diff --git a/test/lisp/minibuffer-tests.el b/test/lisp/minibuffer-tests.el index 0f2abf45673..efed8f8bed4 100644 --- a/test/lisp/minibuffer-tests.el +++ b/test/lisp/minibuffer-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; completion-tests.el --- Tests for completion functions -*- lexical-binding: t; -*- | 1 | ;;; completion-tests.el --- Tests for completion functions -*- lexical-binding: t; -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2013-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2013-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Stefan Monnier <monnier@iro.umontreal.ca> | 5 | ;; Author: Stefan Monnier <monnier@iro.umontreal.ca> |
| 6 | ;; Keywords: | 6 | ;; Keywords: |
diff --git a/test/lisp/net/dbus-tests.el b/test/lisp/net/dbus-tests.el index 12be1637109..525709b92e7 100644 --- a/test/lisp/net/dbus-tests.el +++ b/test/lisp/net/dbus-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; dbus-tests.el --- Tests of D-Bus integration into Emacs | 1 | ;;; dbus-tests.el --- Tests of D-Bus integration into Emacs |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2013-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2013-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Michael Albinus <michael.albinus@gmx.de> | 5 | ;; Author: Michael Albinus <michael.albinus@gmx.de> |
| 6 | 6 | ||
diff --git a/test/lisp/net/newsticker-tests.el b/test/lisp/net/newsticker-tests.el index d8531083e60..56064f781de 100644 --- a/test/lisp/net/newsticker-tests.el +++ b/test/lisp/net/newsticker-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; newsticker-testsuite.el --- Test suite for newsticker. | 1 | ;;; newsticker-testsuite.el --- Test suite for newsticker. |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2003-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2003-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Ulf Jasper <ulf.jasper@web.de> | 5 | ;; Author: Ulf Jasper <ulf.jasper@web.de> |
| 6 | ;; Keywords: News, RSS, Atom | 6 | ;; Keywords: News, RSS, Atom |
diff --git a/test/lisp/net/sasl-scram-rfc-tests.el b/test/lisp/net/sasl-scram-rfc-tests.el index 130de240481..96cec77c56d 100644 --- a/test/lisp/net/sasl-scram-rfc-tests.el +++ b/test/lisp/net/sasl-scram-rfc-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; sasl-scram-rfc-tests.el --- tests for SCRAM-SHA-1 -*- lexical-binding: t; -*- | 1 | ;;; sasl-scram-rfc-tests.el --- tests for SCRAM-SHA-1 -*- lexical-binding: t; -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2014-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2014-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Magnus Henoch <magnus.henoch@gmail.com> | 5 | ;; Author: Magnus Henoch <magnus.henoch@gmail.com> |
| 6 | 6 | ||
diff --git a/test/lisp/obarray-tests.el b/test/lisp/obarray-tests.el index 92345b7198e..9a2d65d8b41 100644 --- a/test/lisp/obarray-tests.el +++ b/test/lisp/obarray-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; obarray-tests.el --- Tests for obarray -*- lexical-binding: t; -*- | 1 | ;;; obarray-tests.el --- Tests for obarray -*- lexical-binding: t; -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2015-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2015-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Przemysław Wojnowski <esperanto@cumego.com> | 5 | ;; Author: Przemysław Wojnowski <esperanto@cumego.com> |
| 6 | 6 | ||
diff --git a/test/lisp/progmodes/compile-tests.el b/test/lisp/progmodes/compile-tests.el index 9f61c20fd5e..5c8c9c2a81f 100644 --- a/test/lisp/progmodes/compile-tests.el +++ b/test/lisp/progmodes/compile-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; compile-tests.el --- Test suite for compile.el. -*- lexical-binding: t; -*- | 1 | ;;; compile-tests.el --- Test suite for compile.el. -*- lexical-binding: t; -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2011-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2011-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Chong Yidong <cyd@stupidchicken.com> | 5 | ;; Author: Chong Yidong <cyd@stupidchicken.com> |
| 6 | ;; Keywords: internal | 6 | ;; Keywords: internal |
diff --git a/test/lisp/progmodes/elisp-mode-tests.el b/test/lisp/progmodes/elisp-mode-tests.el index 12e61cf8d18..93c428b2d2b 100644 --- a/test/lisp/progmodes/elisp-mode-tests.el +++ b/test/lisp/progmodes/elisp-mode-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; elisp-mode-tests.el --- Tests for emacs-lisp-mode -*- lexical-binding: t; -*- | 1 | ;;; elisp-mode-tests.el --- Tests for emacs-lisp-mode -*- lexical-binding: t; -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2015-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2015-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Dmitry Gutov <dgutov@yandex.ru> | 5 | ;; Author: Dmitry Gutov <dgutov@yandex.ru> |
| 6 | ;; Author: Stephen Leake <stephen_leake@member.fsf.org> | 6 | ;; Author: Stephen Leake <stephen_leake@member.fsf.org> |
diff --git a/test/lisp/progmodes/f90.el b/test/lisp/progmodes/f90.el index 29c608847f1..cda39eda376 100644 --- a/test/lisp/progmodes/f90.el +++ b/test/lisp/progmodes/f90.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; f90.el --- tests for progmodes/f90.el | 1 | ;;; f90.el --- tests for progmodes/f90.el |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2011-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2011-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Glenn Morris <rgm@gnu.org> | 5 | ;; Author: Glenn Morris <rgm@gnu.org> |
| 6 | 6 | ||
diff --git a/test/lisp/progmodes/flymake-tests.el b/test/lisp/progmodes/flymake-tests.el index 386516190bb..9bf6e7aa178 100644 --- a/test/lisp/progmodes/flymake-tests.el +++ b/test/lisp/progmodes/flymake-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; flymake-tests.el --- Test suite for flymake | 1 | ;;; flymake-tests.el --- Test suite for flymake |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2011-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2011-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Eduard Wiebe <usenet@pusto.de> | 5 | ;; Author: Eduard Wiebe <usenet@pusto.de> |
| 6 | 6 | ||
diff --git a/test/lisp/progmodes/python-tests.el b/test/lisp/progmodes/python-tests.el index f6564dd58cc..94c356b589e 100644 --- a/test/lisp/progmodes/python-tests.el +++ b/test/lisp/progmodes/python-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; python-tests.el --- Test suite for python.el | 1 | ;;; python-tests.el --- Test suite for python.el |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2013-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2013-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; This file is part of GNU Emacs. | 5 | ;; This file is part of GNU Emacs. |
| 6 | 6 | ||
diff --git a/test/lisp/progmodes/ruby-mode-tests.el b/test/lisp/progmodes/ruby-mode-tests.el index 97f277bff41..f04483f6d7c 100644 --- a/test/lisp/progmodes/ruby-mode-tests.el +++ b/test/lisp/progmodes/ruby-mode-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; ruby-mode-tests.el --- Test suite for ruby-mode | 1 | ;;; ruby-mode-tests.el --- Test suite for ruby-mode |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2012-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2012-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; This file is part of GNU Emacs. | 5 | ;; This file is part of GNU Emacs. |
| 6 | 6 | ||
diff --git a/test/lisp/progmodes/subword-tests.el b/test/lisp/progmodes/subword-tests.el index 5a562765bb1..39512efdbe1 100644 --- a/test/lisp/progmodes/subword-tests.el +++ b/test/lisp/progmodes/subword-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; subword-tests.el --- Testing the subword rules | 1 | ;;; subword-tests.el --- Testing the subword rules |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2011-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2011-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Stefan Monnier <monnier@iro.umontreal.ca> | 5 | ;; Author: Stefan Monnier <monnier@iro.umontreal.ca> |
| 6 | ;; Keywords: | 6 | ;; Keywords: |
diff --git a/test/lisp/progmodes/xref-tests.el b/test/lisp/progmodes/xref-tests.el index 2b745816c62..b7f0f0526c6 100644 --- a/test/lisp/progmodes/xref-tests.el +++ b/test/lisp/progmodes/xref-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; xref-tests.el --- tests for xref | 1 | ;;; xref-tests.el --- tests for xref |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2016-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Dmitry Gutov <dgutov@yandex.ru> | 5 | ;; Author: Dmitry Gutov <dgutov@yandex.ru> |
| 6 | 6 | ||
diff --git a/test/lisp/replace-tests.el b/test/lisp/replace-tests.el index 2b71348f350..adef5a3f3dc 100644 --- a/test/lisp/replace-tests.el +++ b/test/lisp/replace-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; replace-tests.el --- tests for replace.el. | 1 | ;;; replace-tests.el --- tests for replace.el. |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2010-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2010-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Nicolas Richard <youngfrog@members.fsf.org> | 5 | ;; Author: Nicolas Richard <youngfrog@members.fsf.org> |
| 6 | ;; Author: Juri Linkov <juri@jurta.org> | 6 | ;; Author: Juri Linkov <juri@jurta.org> |
diff --git a/test/lisp/simple-tests.el b/test/lisp/simple-tests.el index d022240ae5c..6194cada1c6 100644 --- a/test/lisp/simple-tests.el +++ b/test/lisp/simple-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; simple-test.el --- Tests for simple.el -*- lexical-binding: t; -*- | 1 | ;;; simple-test.el --- Tests for simple.el -*- lexical-binding: t; -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2015-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2015-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Artur Malabarba <bruce.connor.am@gmail.com> | 5 | ;; Author: Artur Malabarba <bruce.connor.am@gmail.com> |
| 6 | 6 | ||
diff --git a/test/lisp/sort-tests.el b/test/lisp/sort-tests.el index f3a182cdc14..f6cbe90d5bf 100644 --- a/test/lisp/sort-tests.el +++ b/test/lisp/sort-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; sort-tests.el --- Tests for sort.el -*- lexical-binding: t; -*- | 1 | ;;; sort-tests.el --- Tests for sort.el -*- lexical-binding: t; -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2015-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2015-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Artur Malabarba <bruce.connor.am@gmail.com> | 5 | ;; Author: Artur Malabarba <bruce.connor.am@gmail.com> |
| 6 | 6 | ||
diff --git a/test/lisp/subr-tests.el b/test/lisp/subr-tests.el index 82a70ca072b..3c5dbcdbd76 100644 --- a/test/lisp/subr-tests.el +++ b/test/lisp/subr-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; subr-tests.el --- Tests for subr.el | 1 | ;;; subr-tests.el --- Tests for subr.el |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2015-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2015-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Oleh Krehel <ohwoeowho@gmail.com>, | 5 | ;; Author: Oleh Krehel <ohwoeowho@gmail.com>, |
| 6 | ;; Nicolas Petton <nicolas@petton.fr> | 6 | ;; Nicolas Petton <nicolas@petton.fr> |
diff --git a/test/lisp/textmodes/reftex-tests.el b/test/lisp/textmodes/reftex-tests.el index 12ec7f5a394..55db66c58dc 100644 --- a/test/lisp/textmodes/reftex-tests.el +++ b/test/lisp/textmodes/reftex-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; reftex-tests.el --- Test suite for reftex. -*- lexical-binding: t -*- | 1 | ;;; reftex-tests.el --- Test suite for reftex. -*- lexical-binding: t -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2013-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2013-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Rüdiger Sonderfeld <ruediger@c-plusplus.de> | 5 | ;; Author: Rüdiger Sonderfeld <ruediger@c-plusplus.de> |
| 6 | ;; Keywords: internal | 6 | ;; Keywords: internal |
diff --git a/test/lisp/textmodes/sgml-mode-tests.el b/test/lisp/textmodes/sgml-mode-tests.el index 4184e2c3802..e1aa3e8857e 100644 --- a/test/lisp/textmodes/sgml-mode-tests.el +++ b/test/lisp/textmodes/sgml-mode-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; sgml-mode-tests.el --- Tests for sgml-mode | 1 | ;;; sgml-mode-tests.el --- Tests for sgml-mode |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2015-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2015-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Przemysław Wojnowski <esperanto@cumego.com> | 5 | ;; Author: Przemysław Wojnowski <esperanto@cumego.com> |
| 6 | ;; Keywords: tests | 6 | ;; Keywords: tests |
diff --git a/test/lisp/textmodes/tildify-tests.el b/test/lisp/textmodes/tildify-tests.el index 8b50cf72868..0a82b2521fb 100644 --- a/test/lisp/textmodes/tildify-tests.el +++ b/test/lisp/textmodes/tildify-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; tildify-test.el --- ERT tests for tildify.el -*- lexical-binding: t -*- | 1 | ;;; tildify-test.el --- ERT tests for tildify.el -*- lexical-binding: t -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2014-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2014-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Michal Nazarewicz <mina86@mina86.com> | 5 | ;; Author: Michal Nazarewicz <mina86@mina86.com> |
| 6 | ;; Version: 4.5 | 6 | ;; Version: 4.5 |
diff --git a/test/lisp/thingatpt-tests.el b/test/lisp/thingatpt-tests.el index 6d73d9001ae..d4449eacbf9 100644 --- a/test/lisp/thingatpt-tests.el +++ b/test/lisp/thingatpt-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; thingatpt.el --- tests for thing-at-point. | 1 | ;;; thingatpt.el --- tests for thing-at-point. |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2013-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2013-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; This file is part of GNU Emacs. | 5 | ;; This file is part of GNU Emacs. |
| 6 | 6 | ||
diff --git a/test/lisp/url/url-expand-tests.el b/test/lisp/url/url-expand-tests.el index 6d1d54d4ffc..2debbdeb753 100644 --- a/test/lisp/url/url-expand-tests.el +++ b/test/lisp/url/url-expand-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; url-expand-tests.el --- Test suite for relative URI/URL resolution. | 1 | ;;; url-expand-tests.el --- Test suite for relative URI/URL resolution. |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2012-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2012-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Alain Schneble <a.s@realize.ch> | 5 | ;; Author: Alain Schneble <a.s@realize.ch> |
| 6 | ;; Version: 1.0 | 6 | ;; Version: 1.0 |
diff --git a/test/lisp/url/url-future-tests.el b/test/lisp/url/url-future-tests.el index 87298cc1b96..64d045219ba 100644 --- a/test/lisp/url/url-future-tests.el +++ b/test/lisp/url/url-future-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; url-future-tests.el --- Test suite for url-future. | 1 | ;;; url-future-tests.el --- Test suite for url-future. |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2011-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2011-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Teodor Zlatanov <tzz@lifelogs.com> | 5 | ;; Author: Teodor Zlatanov <tzz@lifelogs.com> |
| 6 | ;; Keywords: data | 6 | ;; Keywords: data |
diff --git a/test/lisp/url/url-parse-tests.el b/test/lisp/url/url-parse-tests.el index 77c5320e351..05da7280aa2 100644 --- a/test/lisp/url/url-parse-tests.el +++ b/test/lisp/url/url-parse-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; url-parse-tests.el --- Test suite for URI/URL parsing. | 1 | ;;; url-parse-tests.el --- Test suite for URI/URL parsing. |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2012-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2012-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Alain Schneble <a.s@realize.ch> | 5 | ;; Author: Alain Schneble <a.s@realize.ch> |
| 6 | ;; Version: 1.0 | 6 | ;; Version: 1.0 |
diff --git a/test/lisp/url/url-util-tests.el b/test/lisp/url/url-util-tests.el index 2f1de5103d6..c3375890c01 100644 --- a/test/lisp/url/url-util-tests.el +++ b/test/lisp/url/url-util-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; url-util-tests.el --- Test suite for url-util. | 1 | ;;; url-util-tests.el --- Test suite for url-util. |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2012-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2012-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Teodor Zlatanov <tzz@lifelogs.com> | 5 | ;; Author: Teodor Zlatanov <tzz@lifelogs.com> |
| 6 | ;; Keywords: data | 6 | ;; Keywords: data |
diff --git a/test/lisp/vc/add-log-tests.el b/test/lisp/vc/add-log-tests.el index 71be5a9eadc..3e7bc7fdf0d 100644 --- a/test/lisp/vc/add-log-tests.el +++ b/test/lisp/vc/add-log-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; add-log-tests.el --- Test suite for add-log. | 1 | ;;; add-log-tests.el --- Test suite for add-log. |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2013-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2013-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Masatake YAMATO <yamato@redhat.com> | 5 | ;; Author: Masatake YAMATO <yamato@redhat.com> |
| 6 | ;; Keywords: vc tools | 6 | ;; Keywords: vc tools |
diff --git a/test/lisp/vc/vc-bzr-tests.el b/test/lisp/vc/vc-bzr-tests.el index f27e6588cf2..fc7d8f8283f 100644 --- a/test/lisp/vc/vc-bzr-tests.el +++ b/test/lisp/vc/vc-bzr-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; vc-bzr.el --- tests for vc/vc-bzr.el | 1 | ;;; vc-bzr.el --- tests for vc/vc-bzr.el |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2011-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2011-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Glenn Morris <rgm@gnu.org> | 5 | ;; Author: Glenn Morris <rgm@gnu.org> |
| 6 | ;; Maintainer: emacs-devel@gnu.org | 6 | ;; Maintainer: emacs-devel@gnu.org |
diff --git a/test/lisp/vc/vc-hg.el b/test/lisp/vc/vc-hg.el index ba966598c4d..8e4c9739e08 100644 --- a/test/lisp/vc/vc-hg.el +++ b/test/lisp/vc/vc-hg.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; vc-hg.el --- tests for vc/vc-hg.el | 1 | ;;; vc-hg.el --- tests for vc/vc-hg.el |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2016-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Dmitry Gutov <dgutov@yandex.ru> | 5 | ;; Author: Dmitry Gutov <dgutov@yandex.ru> |
| 6 | ;; Maintainer: emacs-devel@gnu.org | 6 | ;; Maintainer: emacs-devel@gnu.org |
diff --git a/test/lisp/vc/vc-tests.el b/test/lisp/vc/vc-tests.el index b54a45dd323..ad4399db032 100644 --- a/test/lisp/vc/vc-tests.el +++ b/test/lisp/vc/vc-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; vc-tests.el --- Tests of different backends of vc.el | 1 | ;;; vc-tests.el --- Tests of different backends of vc.el |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2014-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2014-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Michael Albinus <michael.albinus@gmx.de> | 5 | ;; Author: Michael Albinus <michael.albinus@gmx.de> |
| 6 | 6 | ||
diff --git a/test/lisp/xml-tests.el b/test/lisp/xml-tests.el index 488d2c6f920..0f2182a6a75 100644 --- a/test/lisp/xml-tests.el +++ b/test/lisp/xml-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; xml-parse-tests.el --- Test suite for XML parsing. | 1 | ;;; xml-parse-tests.el --- Test suite for XML parsing. |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2012-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2012-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Chong Yidong <cyd@stupidchicken.com> | 5 | ;; Author: Chong Yidong <cyd@stupidchicken.com> |
| 6 | ;; Keywords: internal | 6 | ;; Keywords: internal |
diff --git a/test/lisp/xt-mouse-tests.el b/test/lisp/xt-mouse-tests.el index c7e835c0311..c0e97f57479 100644 --- a/test/lisp/xt-mouse-tests.el +++ b/test/lisp/xt-mouse-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; xt-mouse-tests.el --- Test suite for xt-mouse. -*- lexical-binding: t; -*- | 1 | ;;; xt-mouse-tests.el --- Test suite for xt-mouse. -*- lexical-binding: t; -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2016-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Philipp Stephani <phst@google.com> | 5 | ;; Author: Philipp Stephani <phst@google.com> |
| 6 | 6 | ||
diff --git a/test/manual/biditest.el b/test/manual/biditest.el index c1a575017f8..c315749e187 100644 --- a/test/manual/biditest.el +++ b/test/manual/biditest.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; biditest.el --- test bidi reordering in GNU Emacs display engine. | 1 | ;;; biditest.el --- test bidi reordering in GNU Emacs display engine. |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2013-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2013-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Eli Zaretskii | 5 | ;; Author: Eli Zaretskii |
| 6 | ;; Maintainer: emacs-devel@gnu.org | 6 | ;; Maintainer: emacs-devel@gnu.org |
diff --git a/test/manual/cedet/cedet-utests.el b/test/manual/cedet/cedet-utests.el index ae9d576f0f5..b8396b822b9 100644 --- a/test/manual/cedet/cedet-utests.el +++ b/test/manual/cedet/cedet-utests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; cedet-utests.el --- Run all unit tests in the CEDET suite. | 1 | ;;; cedet-utests.el --- Run all unit tests in the CEDET suite. |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2008-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2008-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Eric M. Ludlam <eric@siege-engine.com> | 5 | ;; Author: Eric M. Ludlam <eric@siege-engine.com> |
| 6 | 6 | ||
diff --git a/test/manual/cedet/ede-tests.el b/test/manual/cedet/ede-tests.el index 32971e441ef..fdad01c1ff1 100644 --- a/test/manual/cedet/ede-tests.el +++ b/test/manual/cedet/ede-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; ede-tests.el --- Some tests for the Emacs Development Environment | 1 | ;;; ede-tests.el --- Some tests for the Emacs Development Environment |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2008-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2008-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Eric M. Ludlam <eric@siege-engine.com> | 5 | ;; Author: Eric M. Ludlam <eric@siege-engine.com> |
| 6 | 6 | ||
diff --git a/test/manual/cedet/semantic-ia-utest.el b/test/manual/cedet/semantic-ia-utest.el index a5b70b8326f..cf89daf1490 100644 --- a/test/manual/cedet/semantic-ia-utest.el +++ b/test/manual/cedet/semantic-ia-utest.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; semantic-ia-utest.el --- Analyzer unit tests | 1 | ;;; semantic-ia-utest.el --- Analyzer unit tests |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2008-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2008-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Eric M. Ludlam <eric@siege-engine.com> | 5 | ;; Author: Eric M. Ludlam <eric@siege-engine.com> |
| 6 | 6 | ||
diff --git a/test/manual/cedet/semantic-tests.el b/test/manual/cedet/semantic-tests.el index 179851fafeb..bfcba7e6772 100644 --- a/test/manual/cedet/semantic-tests.el +++ b/test/manual/cedet/semantic-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; semantic-utest.el --- Miscellaneous Semantic tests. | 1 | ;;; semantic-utest.el --- Miscellaneous Semantic tests. |
| 2 | 2 | ||
| 3 | ;;; Copyright (C) 2003-2004, 2007-2016 Free Software Foundation, Inc. | 3 | ;;; Copyright (C) 2003-2004, 2007-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Eric M. Ludlam <zappo@gnu.org> | 5 | ;; Author: Eric M. Ludlam <zappo@gnu.org> |
| 6 | 6 | ||
diff --git a/test/manual/cedet/semantic-utest-c.el b/test/manual/cedet/semantic-utest-c.el index ec09b96211f..26ce4009277 100644 --- a/test/manual/cedet/semantic-utest-c.el +++ b/test/manual/cedet/semantic-utest-c.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; semantic-utest-c.el --- C based parsing tests. | 1 | ;;; semantic-utest-c.el --- C based parsing tests. |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2008-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2008-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Eric M. Ludlam <eric@siege-engine.com> | 5 | ;; Author: Eric M. Ludlam <eric@siege-engine.com> |
| 6 | 6 | ||
diff --git a/test/manual/cedet/semantic-utest.el b/test/manual/cedet/semantic-utest.el index d26d6118d2d..f735e552413 100644 --- a/test/manual/cedet/semantic-utest.el +++ b/test/manual/cedet/semantic-utest.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; semantic-utest.el --- Tests for semantic's parsing system. | 1 | ;;; semantic-utest.el --- Tests for semantic's parsing system. |
| 2 | 2 | ||
| 3 | ;;; Copyright (C) 2003-2004, 2007-2016 Free Software Foundation, Inc. | 3 | ;;; Copyright (C) 2003-2004, 2007-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Eric M. Ludlam <zappo@gnu.org> | 5 | ;; Author: Eric M. Ludlam <zappo@gnu.org> |
| 6 | 6 | ||
diff --git a/test/manual/cedet/srecode-tests.el b/test/manual/cedet/srecode-tests.el index 18beb9291fa..36256a70597 100644 --- a/test/manual/cedet/srecode-tests.el +++ b/test/manual/cedet/srecode-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; srecode-tests.el --- Some tests for CEDET's srecode | 1 | ;;; srecode-tests.el --- Some tests for CEDET's srecode |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2008-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2008-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Eric M. Ludlam <eric@siege-engine.com> | 5 | ;; Author: Eric M. Ludlam <eric@siege-engine.com> |
| 6 | 6 | ||
diff --git a/test/manual/cedet/tests/test.c b/test/manual/cedet/tests/test.c index 0aa8852b8a9..a46486927a7 100644 --- a/test/manual/cedet/tests/test.c +++ b/test/manual/cedet/tests/test.c | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | /* test.c --- Semantic unit test for C. | 1 | /* test.c --- Semantic unit test for C. |
| 2 | 2 | ||
| 3 | Copyright (C) 2001-2016 Free Software Foundation, Inc. | 3 | Copyright (C) 2001-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | Author: Eric M. Ludlam <eric@siege-engine.com> | 5 | Author: Eric M. Ludlam <eric@siege-engine.com> |
| 6 | 6 | ||
diff --git a/test/manual/cedet/tests/test.el b/test/manual/cedet/tests/test.el index 15517da0dc2..a0efd40acce 100644 --- a/test/manual/cedet/tests/test.el +++ b/test/manual/cedet/tests/test.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; test.el --- Unit test file for Semantic Emacs Lisp support. | 1 | ;;; test.el --- Unit test file for Semantic Emacs Lisp support. |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2005-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2005-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Eric M. Ludlam <eric@siege-engine.com> | 5 | ;; Author: Eric M. Ludlam <eric@siege-engine.com> |
| 6 | 6 | ||
diff --git a/test/manual/cedet/tests/test.make b/test/manual/cedet/tests/test.make index 1eb71f7ccc8..46421da54d6 100644 --- a/test/manual/cedet/tests/test.make +++ b/test/manual/cedet/tests/test.make | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | # test.make --- Semantic unit test for Make -*- makefile -*- | 1 | # test.make --- Semantic unit test for Make -*- makefile -*- |
| 2 | 2 | ||
| 3 | # Copyright (C) 2001-2002, 2010-2016 Free Software Foundation, Inc. | 3 | # Copyright (C) 2001-2002, 2010-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | # Author: Eric M. Ludlam <eric@siege-engine.com> | 5 | # Author: Eric M. Ludlam <eric@siege-engine.com> |
| 6 | 6 | ||
diff --git a/test/manual/cedet/tests/testdoublens.cpp b/test/manual/cedet/tests/testdoublens.cpp index 63c4deedd08..e9a6ba52673 100644 --- a/test/manual/cedet/tests/testdoublens.cpp +++ b/test/manual/cedet/tests/testdoublens.cpp | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | // testdoublens.cpp --- semantic-ia-utest completion engine unit tests | 1 | // testdoublens.cpp --- semantic-ia-utest completion engine unit tests |
| 2 | 2 | ||
| 3 | // Copyright (C) 2008-2016 Free Software Foundation, Inc. | 3 | // Copyright (C) 2008-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | // Author: Eric M. Ludlam <eric@siege-engine.com> | 5 | // Author: Eric M. Ludlam <eric@siege-engine.com> |
| 6 | 6 | ||
diff --git a/test/manual/cedet/tests/testdoublens.hpp b/test/manual/cedet/tests/testdoublens.hpp index 6d2a0f0755e..556f068d586 100644 --- a/test/manual/cedet/tests/testdoublens.hpp +++ b/test/manual/cedet/tests/testdoublens.hpp | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | // testdoublens.hpp --- Header file used in one of the Semantic tests | 1 | // testdoublens.hpp --- Header file used in one of the Semantic tests |
| 2 | 2 | ||
| 3 | // Copyright (C) 2008-2016 Free Software Foundation, Inc. | 3 | // Copyright (C) 2008-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | // Author: Eric M. Ludlam <eric@siege-engine.com> | 5 | // Author: Eric M. Ludlam <eric@siege-engine.com> |
| 6 | 6 | ||
diff --git a/test/manual/cedet/tests/testjavacomp.java b/test/manual/cedet/tests/testjavacomp.java index f0abfc97b06..c32a17ca248 100644 --- a/test/manual/cedet/tests/testjavacomp.java +++ b/test/manual/cedet/tests/testjavacomp.java | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | // testjavacomp.java --- Semantic unit test for Java | 1 | // testjavacomp.java --- Semantic unit test for Java |
| 2 | 2 | ||
| 3 | // Copyright (C) 2009-2016 Free Software Foundation, Inc. | 3 | // Copyright (C) 2009-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | // Author: Eric M. Ludlam <eric@siege-engine.com> | 5 | // Author: Eric M. Ludlam <eric@siege-engine.com> |
| 6 | 6 | ||
diff --git a/test/manual/cedet/tests/testpolymorph.cpp b/test/manual/cedet/tests/testpolymorph.cpp index 94ae9d90413..27aa08b155b 100644 --- a/test/manual/cedet/tests/testpolymorph.cpp +++ b/test/manual/cedet/tests/testpolymorph.cpp | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | /** testpolymorph.cpp --- A sequence of polymorphism examples. | 1 | /** testpolymorph.cpp --- A sequence of polymorphism examples. |
| 2 | * | 2 | * |
| 3 | * Copyright (C) 2009-2016 Free Software Foundation, Inc. | 3 | * Copyright (C) 2009-2017 Free Software Foundation, Inc. |
| 4 | * | 4 | * |
| 5 | * Author: Eric M. Ludlam <eric@siege-engine.com> | 5 | * Author: Eric M. Ludlam <eric@siege-engine.com> |
| 6 | * | 6 | * |
diff --git a/test/manual/cedet/tests/testspp.c b/test/manual/cedet/tests/testspp.c index cfb3996db47..02eab53afb6 100644 --- a/test/manual/cedet/tests/testspp.c +++ b/test/manual/cedet/tests/testspp.c | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | /* testspp.cpp --- Semantic unit test for the C preprocessor | 1 | /* testspp.cpp --- Semantic unit test for the C preprocessor |
| 2 | 2 | ||
| 3 | Copyright (C) 2007-2016 Free Software Foundation, Inc. | 3 | Copyright (C) 2007-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | Author: Eric M. Ludlam <eric@siege-engine.com> | 5 | Author: Eric M. Ludlam <eric@siege-engine.com> |
| 6 | 6 | ||
diff --git a/test/manual/cedet/tests/testsppreplace.c b/test/manual/cedet/tests/testsppreplace.c index fbbaa75fee1..56ef320f752 100644 --- a/test/manual/cedet/tests/testsppreplace.c +++ b/test/manual/cedet/tests/testsppreplace.c | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* testsppreplace.c --- unit test for CPP/SPP Replacement | 1 | /* testsppreplace.c --- unit test for CPP/SPP Replacement |
| 2 | Copyright (C) 2007-2016 Free Software Foundation, Inc. | 2 | Copyright (C) 2007-2017 Free Software Foundation, Inc. |
| 3 | 3 | ||
| 4 | Author: Eric M. Ludlam <eric@siege-engine.com> | 4 | Author: Eric M. Ludlam <eric@siege-engine.com> |
| 5 | 5 | ||
diff --git a/test/manual/cedet/tests/testsppreplaced.c b/test/manual/cedet/tests/testsppreplaced.c index 8cbe05bd4f7..3ba90aa4ddb 100644 --- a/test/manual/cedet/tests/testsppreplaced.c +++ b/test/manual/cedet/tests/testsppreplaced.c | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* testsppreplaced.c --- unit test for CPP/SPP Replacement | 1 | /* testsppreplaced.c --- unit test for CPP/SPP Replacement |
| 2 | Copyright (C) 2007-2016 Free Software Foundation, Inc. | 2 | Copyright (C) 2007-2017 Free Software Foundation, Inc. |
| 3 | 3 | ||
| 4 | Author: Eric M. Ludlam <eric@siege-engine.com> | 4 | Author: Eric M. Ludlam <eric@siege-engine.com> |
| 5 | 5 | ||
diff --git a/test/manual/cedet/tests/testsubclass.cpp b/test/manual/cedet/tests/testsubclass.cpp index 2cb9e763888..e74ca43124a 100644 --- a/test/manual/cedet/tests/testsubclass.cpp +++ b/test/manual/cedet/tests/testsubclass.cpp | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | // testsubclass.cpp --- unit test for analyzer and complex C++ inheritance | 1 | // testsubclass.cpp --- unit test for analyzer and complex C++ inheritance |
| 2 | 2 | ||
| 3 | // Copyright (C) 2007-2016 Free Software Foundation, Inc. | 3 | // Copyright (C) 2007-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | // Author: Eric M. Ludlam <eric@siege-engine.com> | 5 | // Author: Eric M. Ludlam <eric@siege-engine.com> |
| 6 | 6 | ||
diff --git a/test/manual/cedet/tests/testsubclass.hh b/test/manual/cedet/tests/testsubclass.hh index 7c93f8ec02d..6f199c20bd3 100644 --- a/test/manual/cedet/tests/testsubclass.hh +++ b/test/manual/cedet/tests/testsubclass.hh | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | // testsubclass.hh --- unit test for analyzer and complex C++ inheritance | 1 | // testsubclass.hh --- unit test for analyzer and complex C++ inheritance |
| 2 | 2 | ||
| 3 | // Copyright (C) 2007-2016 Free Software Foundation, Inc. | 3 | // Copyright (C) 2007-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | // Author: Eric M. Ludlam <eric@siege-engine.com> | 5 | // Author: Eric M. Ludlam <eric@siege-engine.com> |
| 6 | 6 | ||
diff --git a/test/manual/cedet/tests/testtypedefs.cpp b/test/manual/cedet/tests/testtypedefs.cpp index 312a77f0058..e6c91f736bf 100644 --- a/test/manual/cedet/tests/testtypedefs.cpp +++ b/test/manual/cedet/tests/testtypedefs.cpp | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | // testtypedefs.cpp --- Sample with some fake bits out of std::string | 1 | // testtypedefs.cpp --- Sample with some fake bits out of std::string |
| 2 | 2 | ||
| 3 | // Copyright (C) 2008-2016 Free Software Foundation, Inc. | 3 | // Copyright (C) 2008-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | // Author: Eric M. Ludlam <eric@siege-engine.com> | 5 | // Author: Eric M. Ludlam <eric@siege-engine.com> |
| 6 | 6 | ||
diff --git a/test/manual/cedet/tests/testvarnames.c b/test/manual/cedet/tests/testvarnames.c index 419361d1dbc..dbc4afb46ba 100644 --- a/test/manual/cedet/tests/testvarnames.c +++ b/test/manual/cedet/tests/testvarnames.c | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /* testvarnames.cpp | 1 | /* testvarnames.cpp |
| 2 | Test variable and function names, lists of variables on one line, etc. | 2 | Test variable and function names, lists of variables on one line, etc. |
| 3 | 3 | ||
| 4 | Copyright (C) 2008-2016 Free Software Foundation, Inc. | 4 | Copyright (C) 2008-2017 Free Software Foundation, Inc. |
| 5 | 5 | ||
| 6 | Author: Eric M. Ludlam <eric@siege-engine.com> | 6 | Author: Eric M. Ludlam <eric@siege-engine.com> |
| 7 | 7 | ||
diff --git a/test/manual/etags/c-src/abbrev.c b/test/manual/etags/c-src/abbrev.c index b7d137cd9bd..c01eee419ff 100644 --- a/test/manual/etags/c-src/abbrev.c +++ b/test/manual/etags/c-src/abbrev.c | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* Primitives for word-abbrev mode. | 1 | /* Primitives for word-abbrev mode. |
| 2 | Copyright (C) 1985-1986, 1993, 1996, 1998, 2016 Free Software | 2 | Copyright (C) 1985-1986, 1993, 1996, 1998, 2016-2017 Free Software |
| 3 | Foundation, Inc. | 3 | Foundation, Inc. |
| 4 | 4 | ||
| 5 | This file is part of GNU Emacs. | 5 | This file is part of GNU Emacs. |
diff --git a/test/manual/etags/c-src/emacs/src/gmalloc.c b/test/manual/etags/c-src/emacs/src/gmalloc.c index 683ee0c9502..79b2040e321 100644 --- a/test/manual/etags/c-src/emacs/src/gmalloc.c +++ b/test/manual/etags/c-src/emacs/src/gmalloc.c | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* Declarations for `malloc' and friends. | 1 | /* Declarations for `malloc' and friends. |
| 2 | Copyright (C) 1990-1993, 1995-1996, 1999, 2002-2007, 2013-2016 Free | 2 | Copyright (C) 1990-1993, 1995-1996, 1999, 2002-2007, 2013-2017 Free |
| 3 | Software Foundation, Inc. | 3 | Software Foundation, Inc. |
| 4 | Written May 1989 by Mike Haertel. | 4 | Written May 1989 by Mike Haertel. |
| 5 | 5 | ||
diff --git a/test/manual/etags/c-src/emacs/src/keyboard.c b/test/manual/etags/c-src/emacs/src/keyboard.c index 68584ee71fc..5a651497d73 100644 --- a/test/manual/etags/c-src/emacs/src/keyboard.c +++ b/test/manual/etags/c-src/emacs/src/keyboard.c | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | /* Keyboard and mouse input; editor command loop. | 1 | /* Keyboard and mouse input; editor command loop. |
| 2 | 2 | ||
| 3 | Copyright (C) 1985-1989, 1993-1997, 1999-2016 Free Software Foundation, | 3 | Copyright (C) 1985-1989, 1993-1997, 1999-2017 Free Software Foundation, |
| 4 | Inc. | 4 | Inc. |
| 5 | 5 | ||
| 6 | This file is part of GNU Emacs. | 6 | This file is part of GNU Emacs. |
diff --git a/test/manual/etags/c-src/emacs/src/lisp.h b/test/manual/etags/c-src/emacs/src/lisp.h index db8722917ea..688589624fe 100644 --- a/test/manual/etags/c-src/emacs/src/lisp.h +++ b/test/manual/etags/c-src/emacs/src/lisp.h | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | /* Fundamental definitions for GNU Emacs Lisp interpreter. | 1 | /* Fundamental definitions for GNU Emacs Lisp interpreter. |
| 2 | 2 | ||
| 3 | Copyright (C) 1985-1987, 1993-1995, 1997-2016 Free Software Foundation, | 3 | Copyright (C) 1985-1987, 1993-1995, 1997-2017 Free Software Foundation, |
| 4 | Inc. | 4 | Inc. |
| 5 | 5 | ||
| 6 | This file is part of GNU Emacs. | 6 | This file is part of GNU Emacs. |
diff --git a/test/manual/etags/c-src/emacs/src/regex.h b/test/manual/etags/c-src/emacs/src/regex.h index f97c1cb38c1..2ed6238730f 100644 --- a/test/manual/etags/c-src/emacs/src/regex.h +++ b/test/manual/etags/c-src/emacs/src/regex.h | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /* Definitions for data structures and routines for the regular | 1 | /* Definitions for data structures and routines for the regular |
| 2 | expression library, version 0.12. | 2 | expression library, version 0.12. |
| 3 | 3 | ||
| 4 | Copyright (C) 1985, 1989-1993, 1995, 2000-2016 Free Software | 4 | Copyright (C) 1985, 1989-1993, 1995, 2000-2017 Free Software |
| 5 | Foundation, Inc. | 5 | Foundation, Inc. |
| 6 | 6 | ||
| 7 | This program is free software; you can redistribute it and/or modify | 7 | This program is free software; you can redistribute it and/or modify |
diff --git a/test/manual/etags/c-src/etags.c b/test/manual/etags/c-src/etags.c index 453419897bc..e8321f05ff4 100644 --- a/test/manual/etags/c-src/etags.c +++ b/test/manual/etags/c-src/etags.c | |||
| @@ -28,7 +28,7 @@ OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN | |||
| 28 | IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 28 | IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 29 | 29 | ||
| 30 | 30 | ||
| 31 | Copyright (C) 1984, 1987-1989, 1993-1995, 1998-2016 Free Software | 31 | Copyright (C) 1984, 1987-1989, 1993-1995, 1998-2017 Free Software |
| 32 | Foundation, Inc. | 32 | Foundation, Inc. |
| 33 | 33 | ||
| 34 | This file is not considered part of GNU Emacs. | 34 | This file is not considered part of GNU Emacs. |
diff --git a/test/manual/etags/c-src/exit.c b/test/manual/etags/c-src/exit.c index 86afda9ed01..b1952bfddb9 100644 --- a/test/manual/etags/c-src/exit.c +++ b/test/manual/etags/c-src/exit.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* Copyright (C) 1991, 2016 Free Software Foundation, Inc. | 1 | /* Copyright (C) 1991, 2016-2017 Free Software Foundation, Inc. |
| 2 | This file is part of the GNU C Library. | 2 | This file is part of the GNU C Library. |
| 3 | 3 | ||
| 4 | The GNU C Library is free software; you can redistribute it and/or | 4 | The GNU C Library is free software; you can redistribute it and/or |
diff --git a/test/manual/etags/c-src/exit.strange_suffix b/test/manual/etags/c-src/exit.strange_suffix index 86afda9ed01..b1952bfddb9 100644 --- a/test/manual/etags/c-src/exit.strange_suffix +++ b/test/manual/etags/c-src/exit.strange_suffix | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* Copyright (C) 1991, 2016 Free Software Foundation, Inc. | 1 | /* Copyright (C) 1991, 2016-2017 Free Software Foundation, Inc. |
| 2 | This file is part of the GNU C Library. | 2 | This file is part of the GNU C Library. |
| 3 | 3 | ||
| 4 | The GNU C Library is free software; you can redistribute it and/or | 4 | The GNU C Library is free software; you can redistribute it and/or |
diff --git a/test/manual/etags/c-src/getopt.h b/test/manual/etags/c-src/getopt.h index aa2eb1dc173..aa66fac4ecd 100644 --- a/test/manual/etags/c-src/getopt.h +++ b/test/manual/etags/c-src/getopt.h | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* Declarations for getopt. | 1 | /* Declarations for getopt. |
| 2 | Copyright (C) 1989-1992, 2016 Free Software Foundation, Inc. | 2 | Copyright (C) 1989-1992, 2016-2017 Free Software Foundation, Inc. |
| 3 | 3 | ||
| 4 | This program is free software; you can redistribute it and/or modify it | 4 | This program is free software; you can redistribute it and/or modify it |
| 5 | under the terms of the GNU General Public License as published by the | 5 | under the terms of the GNU General Public License as published by the |
diff --git a/test/manual/etags/c-src/sysdep.h b/test/manual/etags/c-src/sysdep.h index 6409fcc1e1d..2c121cf53a9 100644 --- a/test/manual/etags/c-src/sysdep.h +++ b/test/manual/etags/c-src/sysdep.h | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* Copyright (C) 1992-1993, 2016 Free Software Foundation, Inc. | 1 | /* Copyright (C) 1992-1993, 2016-2017 Free Software Foundation, Inc. |
| 2 | This file is part of the GNU C Library. | 2 | This file is part of the GNU C Library. |
| 3 | 3 | ||
| 4 | The GNU C Library is free software; you can redistribute it and/or | 4 | The GNU C Library is free software; you can redistribute it and/or |
diff --git a/test/manual/etags/el-src/emacs/lisp/progmodes/etags.el b/test/manual/etags/el-src/emacs/lisp/progmodes/etags.el index 5d28657e28b..955859803df 100644 --- a/test/manual/etags/el-src/emacs/lisp/progmodes/etags.el +++ b/test/manual/etags/el-src/emacs/lisp/progmodes/etags.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; etags.el --- etags facility for Emacs -*- lexical-binding: t -*- | 1 | ;;; etags.el --- etags facility for Emacs -*- lexical-binding: t -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 1985-1986, 1988-1989, 1992-1996, 1998, 2000-2016 Free | 3 | ;; Copyright (C) 1985-1986, 1988-1989, 1992-1996, 1998, 2000-2017 Free |
| 4 | ;; Software Foundation, Inc. | 4 | ;; Software Foundation, Inc. |
| 5 | 5 | ||
| 6 | ;; Author: Roland McGrath <roland@gnu.org> | 6 | ;; Author: Roland McGrath <roland@gnu.org> |
diff --git a/test/manual/etags/tex-src/texinfo.tex b/test/manual/etags/tex-src/texinfo.tex index aa745c68471..e98f24cda69 100644 --- a/test/manual/etags/tex-src/texinfo.tex +++ b/test/manual/etags/tex-src/texinfo.tex | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | %% TeX macros to handle texinfo files | 1 | %% TeX macros to handle texinfo files |
| 2 | 2 | ||
| 3 | % Copyright (C) 1985-1986, 1988, 1990-1991, 2016 Free Software | 3 | % Copyright (C) 1985-1986, 1988, 1990-1991, 2016-2017 Free Software |
| 4 | % Foundation, Inc. | 4 | % Foundation, Inc. |
| 5 | 5 | ||
| 6 | %This texinfo.tex file is free software; you can redistribute it and/or | 6 | %This texinfo.tex file is free software; you can redistribute it and/or |
diff --git a/test/manual/etags/y-src/cccp.c b/test/manual/etags/y-src/cccp.c index 022fbe0a72f..380243c6fa4 100644 --- a/test/manual/etags/y-src/cccp.c +++ b/test/manual/etags/y-src/cccp.c | |||
| @@ -320,7 +320,7 @@ static const short yycheck[] = | |||
| 320 | #line 3 "/usr/share/bison/bison.simple" | 320 | #line 3 "/usr/share/bison/bison.simple" |
| 321 | 321 | ||
| 322 | /* Skeleton output parser for bison, | 322 | /* Skeleton output parser for bison, |
| 323 | Copyright (C) 1984, 1989-1990, 2000-2001, 2016 Free Software | 323 | Copyright (C) 1984, 1989-1990, 2000-2001, 2016-2017 Free Software |
| 324 | Foundation, Inc. | 324 | Foundation, Inc. |
| 325 | 325 | ||
| 326 | This program is free software; you can redistribute it and/or modify | 326 | This program is free software; you can redistribute it and/or modify |
diff --git a/test/manual/etags/y-src/parse.c b/test/manual/etags/y-src/parse.c index d21af68b9bb..f8d836e649d 100644 --- a/test/manual/etags/y-src/parse.c +++ b/test/manual/etags/y-src/parse.c | |||
| @@ -28,7 +28,8 @@ | |||
| 28 | 28 | ||
| 29 | #line 1 "y-src/parse.y" | 29 | #line 1 "y-src/parse.y" |
| 30 | 30 | ||
| 31 | /* Copyright (C) 1990, 1992-1993, 2016 Free Software Foundation, Inc. | 31 | /* Copyright (C) 1990, 1992-1993, 2016-2017 Free Software Foundation, |
| 32 | * Inc. | ||
| 32 | 33 | ||
| 33 | This file is part of Oleo, the GNU Spreadsheet. | 34 | This file is part of Oleo, the GNU Spreadsheet. |
| 34 | 35 | ||
diff --git a/test/manual/etags/y-src/parse.y b/test/manual/etags/y-src/parse.y index 824c98d6245..b40847dd559 100644 --- a/test/manual/etags/y-src/parse.y +++ b/test/manual/etags/y-src/parse.y | |||
| @@ -1,5 +1,6 @@ | |||
| 1 | %{ | 1 | %{ |
| 2 | /* Copyright (C) 1990, 1992-1993, 2016 Free Software Foundation, Inc. | 2 | /* Copyright (C) 1990, 1992-1993, 2016-2017 Free Software Foundation, |
| 3 | * Inc. | ||
| 3 | 4 | ||
| 4 | This file is part of Oleo, the GNU Spreadsheet. | 5 | This file is part of Oleo, the GNU Spreadsheet. |
| 5 | 6 | ||
diff --git a/test/manual/indent/pascal.pas b/test/manual/indent/pascal.pas index 2d09eb775a4..fd225fd35d1 100644 --- a/test/manual/indent/pascal.pas +++ b/test/manual/indent/pascal.pas | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | { GPC demo program for the CRT unit. | 1 | { GPC demo program for the CRT unit. |
| 2 | 2 | ||
| 3 | Copyright (C) 1999-2006, 2013-2016 Free Software Foundation, Inc. | 3 | Copyright (C) 1999-2006, 2013-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | Author: Frank Heckenbach <frank@pascal.gnu.de> | 5 | Author: Frank Heckenbach <frank@pascal.gnu.de> |
| 6 | 6 | ||
diff --git a/test/manual/redisplay-testsuite.el b/test/manual/redisplay-testsuite.el index 37a5649dc1b..694d55ab1db 100644 --- a/test/manual/redisplay-testsuite.el +++ b/test/manual/redisplay-testsuite.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; redisplay-testsuite.el --- Test suite for redisplay. | 1 | ;;; redisplay-testsuite.el --- Test suite for redisplay. |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2009-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2009-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Chong Yidong <cyd@stupidchicken.com> | 5 | ;; Author: Chong Yidong <cyd@stupidchicken.com> |
| 6 | ;; Keywords: internal | 6 | ;; Keywords: internal |
diff --git a/test/manual/rmailmm.el b/test/manual/rmailmm.el index 96acbc4735e..fc570fa42b4 100644 --- a/test/manual/rmailmm.el +++ b/test/manual/rmailmm.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; rmailmm.el --- tests for mail/rmailmm.el | 1 | ;;; rmailmm.el --- tests for mail/rmailmm.el |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2006-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2006-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; This file is part of GNU Emacs. | 5 | ;; This file is part of GNU Emacs. |
| 6 | 6 | ||
diff --git a/test/src/alloc-tests.el b/test/src/alloc-tests.el index 97c6b4f8070..af4ad6c6355 100644 --- a/test/src/alloc-tests.el +++ b/test/src/alloc-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; alloc-tests.el --- alloc tests -*- lexical-binding: t -*- | 1 | ;;; alloc-tests.el --- alloc tests -*- lexical-binding: t -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2015-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2015-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Daniel Colascione <dancol@dancol.org> | 5 | ;; Author: Daniel Colascione <dancol@dancol.org> |
| 6 | ;; Keywords: | 6 | ;; Keywords: |
diff --git a/test/src/buffer-tests.el b/test/src/buffer-tests.el index 62875216a31..793dddd8bd4 100644 --- a/test/src/buffer-tests.el +++ b/test/src/buffer-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; buffer-tests.el --- tests for buffer.c functions -*- lexical-binding: t -*- | 1 | ;;; buffer-tests.el --- tests for buffer.c functions -*- lexical-binding: t -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2015-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2015-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; This file is part of GNU Emacs. | 5 | ;; This file is part of GNU Emacs. |
| 6 | 6 | ||
diff --git a/test/src/cmds-tests.el b/test/src/cmds-tests.el index 4a30d9872a1..207ae75a21d 100644 --- a/test/src/cmds-tests.el +++ b/test/src/cmds-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; cmds-tests.el --- Testing some Emacs commands | 1 | ;;; cmds-tests.el --- Testing some Emacs commands |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2013-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2013-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Nicolas Richard <youngfrog@members.fsf.org> | 5 | ;; Author: Nicolas Richard <youngfrog@members.fsf.org> |
| 6 | ;; Keywords: | 6 | ;; Keywords: |
diff --git a/test/src/coding-tests.el b/test/src/coding-tests.el index bd494bc26f8..cfcd080281f 100644 --- a/test/src/coding-tests.el +++ b/test/src/coding-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; coding-tests.el --- tests for text encoding and decoding | 1 | ;;; coding-tests.el --- tests for text encoding and decoding |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2013-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2013-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Eli Zaretskii <eliz@gnu.org> | 5 | ;; Author: Eli Zaretskii <eliz@gnu.org> |
| 6 | ;; Author: Kenichi Handa <handa@gnu.org> | 6 | ;; Author: Kenichi Handa <handa@gnu.org> |
diff --git a/test/src/decompress-tests.el b/test/src/decompress-tests.el index f0264ec548d..eaec0d01a7b 100644 --- a/test/src/decompress-tests.el +++ b/test/src/decompress-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; decompress-tests.el --- Test suite for decompress. | 1 | ;;; decompress-tests.el --- Test suite for decompress. |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2013-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2013-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Lars Ingebrigtsen <larsi@gnus.org> | 5 | ;; Author: Lars Ingebrigtsen <larsi@gnus.org> |
| 6 | 6 | ||
diff --git a/test/src/fns-tests.el b/test/src/fns-tests.el index c533bad3cdc..ee3c5dc77e4 100644 --- a/test/src/fns-tests.el +++ b/test/src/fns-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; fns-tests.el --- tests for src/fns.c | 1 | ;;; fns-tests.el --- tests for src/fns.c |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2014-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2014-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; This file is part of GNU Emacs. | 5 | ;; This file is part of GNU Emacs. |
| 6 | 6 | ||
diff --git a/test/src/font-tests.el b/test/src/font-tests.el index f0f0d31efc7..dc48577025c 100644 --- a/test/src/font-tests.el +++ b/test/src/font-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; font-tests.el --- Test suite for font-related functions. | 1 | ;;; font-tests.el --- Test suite for font-related functions. |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2011-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2011-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Chong Yidong <cyd@stupidchicken.com> | 5 | ;; Author: Chong Yidong <cyd@stupidchicken.com> |
| 6 | ;; Keywords: internal | 6 | ;; Keywords: internal |
diff --git a/test/src/inotify-tests.el b/test/src/inotify-tests.el index 54977925f86..f30aecc9c4f 100644 --- a/test/src/inotify-tests.el +++ b/test/src/inotify-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; inotify-tests.el --- Test suite for inotify. -*- lexical-binding: t -*- | 1 | ;;; inotify-tests.el --- Test suite for inotify. -*- lexical-binding: t -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2012-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2012-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Rüdiger Sonderfeld <ruediger@c-plusplus.de> | 5 | ;; Author: Rüdiger Sonderfeld <ruediger@c-plusplus.de> |
| 6 | ;; Keywords: internal | 6 | ;; Keywords: internal |
diff --git a/test/src/keymap-tests.el b/test/src/keymap-tests.el index 26d34858703..c5b9d0cc71c 100644 --- a/test/src/keymap-tests.el +++ b/test/src/keymap-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; keymap-tests.el --- Test suite for src/keymap.c | 1 | ;;; keymap-tests.el --- Test suite for src/keymap.c |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2015-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2015-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Juanma Barranquero <lekktu@gmail.com> | 5 | ;; Author: Juanma Barranquero <lekktu@gmail.com> |
| 6 | 6 | ||
diff --git a/test/src/print-tests.el b/test/src/print-tests.el index 1abfa53581c..b3ffc23e120 100644 --- a/test/src/print-tests.el +++ b/test/src/print-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; print-tests.el --- tests for src/print.c -*- lexical-binding: t; -*- | 1 | ;;; print-tests.el --- tests for src/print.c -*- lexical-binding: t; -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2014-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2014-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; This file is part of GNU Emacs. | 5 | ;; This file is part of GNU Emacs. |
| 6 | 6 | ||
diff --git a/test/src/process-tests.el b/test/src/process-tests.el index 8cc59bf9feb..04dc903f3a9 100644 --- a/test/src/process-tests.el +++ b/test/src/process-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; process-tests.el --- Testing the process facilities | 1 | ;;; process-tests.el --- Testing the process facilities |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2013-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2013-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; This program is free software; you can redistribute it and/or modify | 5 | ;; This program is free software; you can redistribute it and/or modify |
| 6 | ;; it under the terms of the GNU General Public License as published by | 6 | ;; it under the terms of the GNU General Public License as published by |
diff --git a/test/src/textprop-tests.el b/test/src/textprop-tests.el index ceb48d1b2db..d4c8925b5db 100644 --- a/test/src/textprop-tests.el +++ b/test/src/textprop-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; textprop-tests.el --- Test suite for text properties. | 1 | ;;; textprop-tests.el --- Test suite for text properties. |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2015-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2015-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Wolfgang Jenkner <wjenkner@inode.at> | 5 | ;; Author: Wolfgang Jenkner <wjenkner@inode.at> |
| 6 | ;; Keywords: internal | 6 | ;; Keywords: internal |
diff --git a/test/src/undo-tests.el b/test/src/undo-tests.el index b1c786993e8..fbd3bf84a42 100644 --- a/test/src/undo-tests.el +++ b/test/src/undo-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; undo-tests.el --- Tests of primitive-undo | 1 | ;;; undo-tests.el --- Tests of primitive-undo |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2012-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2012-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Aaron S. Hawley <aaron.s.hawley@gmail.com> | 5 | ;; Author: Aaron S. Hawley <aaron.s.hawley@gmail.com> |
| 6 | 6 | ||
diff --git a/test/src/xml-tests.el b/test/src/xml-tests.el index dc60197b59e..1550887f77d 100644 --- a/test/src/xml-tests.el +++ b/test/src/xml-tests.el | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; libxml-parse-tests.el --- Test suite for libxml parsing. | 1 | ;;; libxml-parse-tests.el --- Test suite for libxml parsing. |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 2014-2016 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2014-2017 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: Ulf Jasper <ulf.jasper@web.de> | 5 | ;; Author: Ulf Jasper <ulf.jasper@web.de> |
| 6 | ;; Keywords: internal | 6 | ;; Keywords: internal |