aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorPaul Eggert2017-01-01 01:10:47 -0800
committerPaul Eggert2017-01-01 01:10:47 -0800
commitbcf244ef9be0fe61f4b9a48d3412b2c8a9f1edb9 (patch)
treedc5dde303bce1fbe4f04300c3691cc1ee5874f43 /test
parent772ca5db3eccdc0439d7bd18f98b7fdd38eb6397 (diff)
parent2e2a8068031b79a6cc5502b8d4c9d849ebb1dae0 (diff)
downloademacs-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')
-rw-r--r--test/ChangeLog.12
-rw-r--r--test/Makefile.in2
-rw-r--r--test/README2
-rw-r--r--test/automated/abbrev-tests.el98
-rw-r--r--test/automated/cl-seq-tests.el42
-rw-r--r--test/automated/coding-tests.el50
-rw-r--r--test/automated/core-elisp-tests.el52
-rw-r--r--test/automated/data-tests.el257
-rw-r--r--test/automated/help-fns.el70
-rw-r--r--test/automated/lexbind-tests.el75
-rw-r--r--test/automated/syntax-tests.el97
-rw-r--r--test/automated/tramp-tests.el2383
-rw-r--r--test/lisp/auth-source-tests.el2
-rw-r--r--test/lisp/autorevert-tests.el2
-rw-r--r--test/lisp/calc/calc-tests.el2
-rw-r--r--test/lisp/calendar/icalendar-tests.el2
-rw-r--r--test/lisp/char-fold-tests.el2
-rw-r--r--test/lisp/comint-tests.el2
-rw-r--r--test/lisp/dabbrev-tests.el2
-rw-r--r--test/lisp/descr-text-tests.el2
-rw-r--r--test/lisp/electric-tests.el2
-rw-r--r--test/lisp/emacs-lisp/bytecomp-tests.el2
-rw-r--r--test/lisp/emacs-lisp/cl-generic-tests.el2
-rw-r--r--test/lisp/emacs-lisp/cl-lib-tests.el2
-rw-r--r--test/lisp/emacs-lisp/eieio-tests/eieio-test-methodinvoke.el2
-rw-r--r--test/lisp/emacs-lisp/eieio-tests/eieio-test-persist.el2
-rw-r--r--test/lisp/emacs-lisp/eieio-tests/eieio-tests.el2
-rw-r--r--test/lisp/emacs-lisp/ert-tests.el2
-rw-r--r--test/lisp/emacs-lisp/ert-x-tests.el2
-rw-r--r--test/lisp/emacs-lisp/generator-tests.el2
-rw-r--r--test/lisp/emacs-lisp/let-alist-tests.el2
-rw-r--r--test/lisp/emacs-lisp/map-tests.el2
-rw-r--r--test/lisp/emacs-lisp/nadvice-tests.el2
-rw-r--r--test/lisp/emacs-lisp/package-tests.el2
-rw-r--r--test/lisp/emacs-lisp/pcase-tests.el2
-rw-r--r--test/lisp/emacs-lisp/regexp-opt-tests.el2
-rw-r--r--test/lisp/emacs-lisp/seq-tests.el2
-rw-r--r--test/lisp/emacs-lisp/subr-x-tests.el2
-rw-r--r--test/lisp/emacs-lisp/tabulated-list-test.el2
-rw-r--r--test/lisp/emacs-lisp/thunk-tests.el2
-rw-r--r--test/lisp/emacs-lisp/timer-tests.el2
-rw-r--r--test/lisp/emulation/viper-tests.el2
-rw-r--r--test/lisp/epg-tests.el2
-rw-r--r--test/lisp/eshell/eshell.el2
-rw-r--r--test/lisp/faces-tests.el2
-rw-r--r--test/lisp/filenotify-tests.el2
-rw-r--r--test/lisp/files-tests.el2
-rw-r--r--test/lisp/gnus/gnus-tests.el2
-rw-r--r--test/lisp/gnus/message-tests.el2
-rw-r--r--test/lisp/imenu-tests.el2
-rw-r--r--test/lisp/info-xref-tests.el2
-rw-r--r--test/lisp/international/mule-util-tests.el2
-rw-r--r--test/lisp/isearch-tests.el2
-rw-r--r--test/lisp/json-tests.el2
-rw-r--r--test/lisp/mail/rmail-tests.el2
-rw-r--r--test/lisp/man-tests.el2
-rw-r--r--test/lisp/minibuffer-tests.el2
-rw-r--r--test/lisp/net/dbus-tests.el2
-rw-r--r--test/lisp/net/newsticker-tests.el2
-rw-r--r--test/lisp/net/sasl-scram-rfc-tests.el2
-rw-r--r--test/lisp/obarray-tests.el2
-rw-r--r--test/lisp/progmodes/compile-tests.el2
-rw-r--r--test/lisp/progmodes/elisp-mode-tests.el2
-rw-r--r--test/lisp/progmodes/f90.el2
-rw-r--r--test/lisp/progmodes/flymake-tests.el2
-rw-r--r--test/lisp/progmodes/python-tests.el2
-rw-r--r--test/lisp/progmodes/ruby-mode-tests.el2
-rw-r--r--test/lisp/progmodes/subword-tests.el2
-rw-r--r--test/lisp/progmodes/xref-tests.el2
-rw-r--r--test/lisp/replace-tests.el2
-rw-r--r--test/lisp/simple-tests.el2
-rw-r--r--test/lisp/sort-tests.el2
-rw-r--r--test/lisp/subr-tests.el2
-rw-r--r--test/lisp/textmodes/reftex-tests.el2
-rw-r--r--test/lisp/textmodes/sgml-mode-tests.el2
-rw-r--r--test/lisp/textmodes/tildify-tests.el2
-rw-r--r--test/lisp/thingatpt-tests.el2
-rw-r--r--test/lisp/url/url-expand-tests.el2
-rw-r--r--test/lisp/url/url-future-tests.el2
-rw-r--r--test/lisp/url/url-parse-tests.el2
-rw-r--r--test/lisp/url/url-util-tests.el2
-rw-r--r--test/lisp/vc/add-log-tests.el2
-rw-r--r--test/lisp/vc/vc-bzr-tests.el2
-rw-r--r--test/lisp/vc/vc-hg.el2
-rw-r--r--test/lisp/vc/vc-tests.el2
-rw-r--r--test/lisp/xml-tests.el2
-rw-r--r--test/lisp/xt-mouse-tests.el2
-rw-r--r--test/manual/biditest.el2
-rw-r--r--test/manual/cedet/cedet-utests.el2
-rw-r--r--test/manual/cedet/ede-tests.el2
-rw-r--r--test/manual/cedet/semantic-ia-utest.el2
-rw-r--r--test/manual/cedet/semantic-tests.el2
-rw-r--r--test/manual/cedet/semantic-utest-c.el2
-rw-r--r--test/manual/cedet/semantic-utest.el2
-rw-r--r--test/manual/cedet/srecode-tests.el2
-rw-r--r--test/manual/cedet/tests/test.c2
-rw-r--r--test/manual/cedet/tests/test.el2
-rw-r--r--test/manual/cedet/tests/test.make2
-rw-r--r--test/manual/cedet/tests/testdoublens.cpp2
-rw-r--r--test/manual/cedet/tests/testdoublens.hpp2
-rw-r--r--test/manual/cedet/tests/testjavacomp.java2
-rw-r--r--test/manual/cedet/tests/testpolymorph.cpp2
-rw-r--r--test/manual/cedet/tests/testspp.c2
-rw-r--r--test/manual/cedet/tests/testsppreplace.c2
-rw-r--r--test/manual/cedet/tests/testsppreplaced.c2
-rw-r--r--test/manual/cedet/tests/testsubclass.cpp2
-rw-r--r--test/manual/cedet/tests/testsubclass.hh2
-rw-r--r--test/manual/cedet/tests/testtypedefs.cpp2
-rw-r--r--test/manual/cedet/tests/testvarnames.c2
-rw-r--r--test/manual/etags/c-src/abbrev.c2
-rw-r--r--test/manual/etags/c-src/emacs/src/gmalloc.c2
-rw-r--r--test/manual/etags/c-src/emacs/src/keyboard.c2
-rw-r--r--test/manual/etags/c-src/emacs/src/lisp.h2
-rw-r--r--test/manual/etags/c-src/emacs/src/regex.h2
-rw-r--r--test/manual/etags/c-src/etags.c2
-rw-r--r--test/manual/etags/c-src/exit.c2
-rw-r--r--test/manual/etags/c-src/exit.strange_suffix2
-rw-r--r--test/manual/etags/c-src/getopt.h2
-rw-r--r--test/manual/etags/c-src/sysdep.h2
-rw-r--r--test/manual/etags/el-src/emacs/lisp/progmodes/etags.el2
-rw-r--r--test/manual/etags/tex-src/texinfo.tex2
-rw-r--r--test/manual/etags/y-src/cccp.c2
-rw-r--r--test/manual/etags/y-src/parse.c3
-rw-r--r--test/manual/etags/y-src/parse.y3
-rw-r--r--test/manual/indent/pascal.pas2
-rw-r--r--test/manual/redisplay-testsuite.el2
-rw-r--r--test/manual/rmailmm.el2
-rw-r--r--test/src/alloc-tests.el2
-rw-r--r--test/src/buffer-tests.el2
-rw-r--r--test/src/cmds-tests.el2
-rw-r--r--test/src/coding-tests.el2
-rw-r--r--test/src/decompress-tests.el2
-rw-r--r--test/src/fns-tests.el2
-rw-r--r--test/src/font-tests.el2
-rw-r--r--test/src/inotify-tests.el2
-rw-r--r--test/src/keymap-tests.el2
-rw-r--r--test/src/print-tests.el2
-rw-r--r--test/src/process-tests.el2
-rw-r--r--test/src/textprop-tests.el2
-rw-r--r--test/src/undo-tests.el2
-rw-r--r--test/src/xml-tests.el2
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 @@
1Copyright (C) 2008-2016 Free Software Foundation, Inc. 1Copyright (C) 2008-2017 Free Software Foundation, Inc.
2See the end of the file for license conditions. 2See the end of the file for license conditions.
3 3
4This directory contains files intended to test various aspects of 4This 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.
150DESC is a string describing the test. It is a sequence of
151hexadecimal digits describing the bool vector. We exhaustively
152test all counts at all possible positions in the vector by
153comparing 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.
36Each element will be executed by interpreter and with
37bytecompiled 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'.
84If the function did run, the value is a cons cell, the `cdr'
85being 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.
117Print the the content of the Tramp debug buffer, if BODY does not
118eval properly in `should', `should-not' or `should-error'. BODY
119shall 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'.
609This 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'.
906This 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'.
1052This 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'.
1186This 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'.
1217This 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.
1848This 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.
1853This 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.
1863This 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.
1868This 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.
1874Several 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.
2065Use 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.
2084Use 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.
2106Use 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.
2149Use 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.
2168Use 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.
2190Use 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.
2213Such requests could arrive from timers, process filters and
2214process 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.
2326Since 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
5This file is part of GNU Emacs. 5This 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
3Copyright (C) 1985-1989, 1993-1997, 1999-2016 Free Software Foundation, 3Copyright (C) 1985-1989, 1993-1997, 1999-2017 Free Software Foundation,
4Inc. 4Inc.
5 5
6This file is part of GNU Emacs. 6This 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
3Copyright (C) 1985-1987, 1993-1995, 1997-2016 Free Software Foundation, 3Copyright (C) 1985-1987, 1993-1995, 1997-2017 Free Software Foundation,
4Inc. 4Inc.
5 5
6This file is part of GNU Emacs. 6This 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
28IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 29
30 30
31Copyright (C) 1984, 1987-1989, 1993-1995, 1998-2016 Free Software 31Copyright (C) 1984, 1987-1989, 1993-1995, 1998-2017 Free Software
32Foundation, Inc. 32Foundation, Inc.
33 33
34This file is not considered part of GNU Emacs. 34This 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.
2This file is part of the GNU C Library. 2This file is part of the GNU C Library.
3 3
4The GNU C Library is free software; you can redistribute it and/or 4The 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.
2This file is part of the GNU C Library. 2This file is part of the GNU C Library.
3 3
4The GNU C Library is free software; you can redistribute it and/or 4The 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.
2This file is part of the GNU C Library. 2This file is part of the GNU C Library.
3 3
4The GNU C Library is free software; you can redistribute it and/or 4The 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
33This file is part of Oleo, the GNU Spreadsheet. 34This 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
4This file is part of Oleo, the GNU Spreadsheet. 5This 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
3Copyright (C) 1999-2006, 2013-2016 Free Software Foundation, Inc. 3Copyright (C) 1999-2006, 2013-2017 Free Software Foundation, Inc.
4 4
5Author: Frank Heckenbach <frank@pascal.gnu.de> 5Author: 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