]> git.eshelyaron.com Git - emacs.git/commitdiff
Port xref-tests to master branch
authorPaul Eggert <eggert@cs.ucla.edu>
Fri, 6 May 2016 17:09:13 +0000 (10:09 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Fri, 6 May 2016 17:09:53 +0000 (10:09 -0700)
Also, add a test to make this problem less likely in the future.
* test/Makefile.in (check-no-automated-subdir): New rule.
(check, check-expensive, check-maybe): Depend on it.
* test/automated/data/xref/file1.txt: Rename to ...
* test/data/xref/file1.txt: ... here.
* test/automated/data/xref/file2.txt: Rename to ...
* test/data/xref/file2.txt: ... here.
* test/automated/xref-tests.el: Rename to ...
* test/lisp/progmodes/xref-tests.el: ... here.
(xref-tests-data-dir): Use EMACS_TEST_DIRECTORY.

test/Makefile.in
test/automated/data/xref/file1.txt [deleted file]
test/automated/data/xref/file2.txt [deleted file]
test/automated/xref-tests.el [deleted file]
test/data/xref/file1.txt [new file with mode: 0644]
test/data/xref/file2.txt [new file with mode: 0644]
test/lisp/progmodes/xref-tests.el [new file with mode: 0644]

index 26d7e591c7a2b23b77fa5064418d3c4512a6d47a..7ebc0ded4e78ed4937ebe2965ddb189d5c7cc2ed 100644 (file)
@@ -148,18 +148,25 @@ endef
 
 $(foreach test,${TESTS},$(eval $(call test_template,${test})))
 
+## Check that there is no 'automated' subdirectory, which would
+## indicate an incomplete merge from an older version of Emacs where
+## the tests were arranged differently.
+.PHONY: check-no-automated-subdir
+check-no-automated-subdir:
+       test ! -d $(srcdir)/automated
+
 ## Include dependencies between test files and the files they test.
 ## We could do this without the file and eval directly, but then we
 ## would have to run Emacs for every make invocation, and it might not
 ## be available during clean.
 -include make-test-deps.mk
 ## Rerun all default tests.
-check: mostlyclean
+check: mostlyclean check-no-automated-subdir
        @${MAKE} check-doit SELECTOR="${SELECTOR_ACTUAL}"
 
 ## Rerun all default and expensive tests.
 .PHONY: check-expensive
-check-expensive: mostlyclean
+check-expensive: mostlyclean check-no-automated-subdir
        @${MAKE} check-doit SELECTOR="${SELECTOR_EXPENSIVE}"
 
 ## Re-run all tests which are outdated. A test is outdated if its
@@ -168,7 +175,7 @@ check-expensive: mostlyclean
 ## determined by a heuristic and does not identify the full dependency
 ## graph. See make-test-deps.emacs-lisp for details.
 .PHONY: check-maybe
-check-maybe:
+check-maybe: check-no-automated-subdir
        @${MAKE} check-doit SELECTOR="${SELECTOR_ACTUAL}"
 
 ## Run the tests.
diff --git a/test/automated/data/xref/file1.txt b/test/automated/data/xref/file1.txt
deleted file mode 100644 (file)
index 5d7cc54..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-foo foo
-bar
diff --git a/test/automated/data/xref/file2.txt b/test/automated/data/xref/file2.txt
deleted file mode 100644 (file)
index 9f075f2..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-
-bar
diff --git a/test/automated/xref-tests.el b/test/automated/xref-tests.el
deleted file mode 100644 (file)
index 079b196..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-;;; xref-tests.el --- tests for xref
-
-;; Copyright (C) 2016 Free Software Foundation, Inc.
-
-;; Author: Dmitry Gutov <dgutov@yandex.ru>
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs is free software: you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;;; Code:
-
-(require 'xref)
-(require 'cl-lib)
-
-(defvar xref-tests-data-dir
-  (expand-file-name "data/xref/"
-                    (file-name-directory (or load-file-name (buffer-file-name)))))
-
-(ert-deftest xref-collect-matches-finds-none-for-some-regexp ()
-  (should (null (xref-collect-matches "zzz" "*" xref-tests-data-dir nil))))
-
-(ert-deftest xref-collect-matches-finds-some-for-bar ()
-  (let* ((matches (xref-collect-matches "bar" "*" xref-tests-data-dir nil))
-         (locs (cl-sort (mapcar #'xref-item-location matches)
-                        #'string<
-                        :key #'xref-location-group)))
-    (should (= 2 (length matches)))
-    (should (string-match-p "file1\\.txt\\'" (xref-location-group (nth 0 locs))))
-    (should (string-match-p "file2\\.txt\\'" (xref-location-group (nth 1 locs))))))
-
-(ert-deftest xref-collect-matches-finds-two-matches-on-the-same-line ()
-  (let* ((matches (xref-collect-matches "foo" "*" xref-tests-data-dir nil))
-         (locs (mapcar #'xref-item-location matches)))
-    (should (= 2 (length matches)))
-    (should (string-match-p "file1\\.txt\\'" (xref-location-group (nth 0 locs))))
-    (should (string-match-p "file1\\.txt\\'" (xref-location-group (nth 1 locs))))
-    (should (equal 1 (xref-location-line (nth 0 locs))))
-    (should (equal 1 (xref-location-line (nth 1 locs))))
-    (should (equal 0 (xref-file-location-column (nth 0 locs))))
-    (should (equal 4 (xref-file-location-column (nth 1 locs))))))
-
-(ert-deftest xref-collect-matches-finds-an-empty-line-regexp-match ()
-  (let* ((matches (xref-collect-matches "^$" "*" xref-tests-data-dir nil))
-         (locs (mapcar #'xref-item-location matches)))
-    (should (= 1 (length matches)))
-    (should (string-match-p "file2\\.txt\\'" (xref-location-group (nth 0 locs))))
-    (should (equal 1 (xref-location-line (nth 0 locs))))
-    (should (equal 0 (xref-file-location-column (nth 0 locs))))))
-
-(ert-deftest xref--buf-pairs-iterator-groups-markers-by-buffers-1 ()
-  (let* ((xrefs (xref-collect-matches "foo" "*" xref-tests-data-dir nil))
-         (iter (xref--buf-pairs-iterator xrefs))
-         (cons (funcall iter :next)))
-    (should (null (funcall iter :next)))
-    (should (string-match "file1\\.txt\\'" (buffer-file-name (car cons))))
-    (should (= 2 (length (cdr cons))))))
-
-(ert-deftest xref--buf-pairs-iterator-groups-markers-by-buffers-2 ()
-  (let* ((xrefs (xref-collect-matches "bar" "*" xref-tests-data-dir nil))
-         (iter (xref--buf-pairs-iterator xrefs))
-         (cons1 (funcall iter :next))
-         (cons2 (funcall iter :next)))
-    (should (null (funcall iter :next)))
-    (should-not (equal (car cons1) (car cons2)))
-    (should (= 1 (length (cdr cons1))))
-    (should (= 1 (length (cdr cons2))))))
-
-(ert-deftest xref--buf-pairs-iterator-cleans-up-markers ()
-  (let* ((xrefs (xref-collect-matches "bar" "*" xref-tests-data-dir nil))
-         (iter (xref--buf-pairs-iterator xrefs))
-         (cons1 (funcall iter :next))
-         (cons2 (funcall iter :next)))
-    (funcall iter :cleanup)
-    (should (null (marker-position (car (nth 0 (cdr cons1))))))
-    (should (null (marker-position (cdr (nth 0 (cdr cons1))))))
-    (should (null (marker-position (car (nth 0 (cdr cons2))))))
-    (should (null (marker-position (cdr (nth 0 (cdr cons2))))))))
diff --git a/test/data/xref/file1.txt b/test/data/xref/file1.txt
new file mode 100644 (file)
index 0000000..5d7cc54
--- /dev/null
@@ -0,0 +1,2 @@
+foo foo
+bar
diff --git a/test/data/xref/file2.txt b/test/data/xref/file2.txt
new file mode 100644 (file)
index 0000000..9f075f2
--- /dev/null
@@ -0,0 +1,2 @@
+
+bar
diff --git a/test/lisp/progmodes/xref-tests.el b/test/lisp/progmodes/xref-tests.el
new file mode 100644 (file)
index 0000000..2b74581
--- /dev/null
@@ -0,0 +1,91 @@
+;;; xref-tests.el --- tests for xref
+
+;; Copyright (C) 2016 Free Software Foundation, Inc.
+
+;; Author: Dmitry Gutov <dgutov@yandex.ru>
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;; Code:
+
+(require 'xref)
+(require 'cl-lib)
+
+(defvar xref-tests-data-dir
+  (expand-file-name "data/xref/"
+                    (getenv "EMACS_TEST_DIRECTORY")))
+
+(ert-deftest xref-collect-matches-finds-none-for-some-regexp ()
+  (should (null (xref-collect-matches "zzz" "*" xref-tests-data-dir nil))))
+
+(ert-deftest xref-collect-matches-finds-some-for-bar ()
+  (let* ((matches (xref-collect-matches "bar" "*" xref-tests-data-dir nil))
+         (locs (cl-sort (mapcar #'xref-item-location matches)
+                        #'string<
+                        :key #'xref-location-group)))
+    (should (= 2 (length matches)))
+    (should (string-match-p "file1\\.txt\\'" (xref-location-group (nth 0 locs))))
+    (should (string-match-p "file2\\.txt\\'" (xref-location-group (nth 1 locs))))))
+
+(ert-deftest xref-collect-matches-finds-two-matches-on-the-same-line ()
+  (let* ((matches (xref-collect-matches "foo" "*" xref-tests-data-dir nil))
+         (locs (mapcar #'xref-item-location matches)))
+    (should (= 2 (length matches)))
+    (should (string-match-p "file1\\.txt\\'" (xref-location-group (nth 0 locs))))
+    (should (string-match-p "file1\\.txt\\'" (xref-location-group (nth 1 locs))))
+    (should (equal 1 (xref-location-line (nth 0 locs))))
+    (should (equal 1 (xref-location-line (nth 1 locs))))
+    (should (equal 0 (xref-file-location-column (nth 0 locs))))
+    (should (equal 4 (xref-file-location-column (nth 1 locs))))))
+
+(ert-deftest xref-collect-matches-finds-an-empty-line-regexp-match ()
+  (let* ((matches (xref-collect-matches "^$" "*" xref-tests-data-dir nil))
+         (locs (mapcar #'xref-item-location matches)))
+    (should (= 1 (length matches)))
+    (should (string-match-p "file2\\.txt\\'" (xref-location-group (nth 0 locs))))
+    (should (equal 1 (xref-location-line (nth 0 locs))))
+    (should (equal 0 (xref-file-location-column (nth 0 locs))))))
+
+(ert-deftest xref--buf-pairs-iterator-groups-markers-by-buffers-1 ()
+  (let* ((xrefs (xref-collect-matches "foo" "*" xref-tests-data-dir nil))
+         (iter (xref--buf-pairs-iterator xrefs))
+         (cons (funcall iter :next)))
+    (should (null (funcall iter :next)))
+    (should (string-match "file1\\.txt\\'" (buffer-file-name (car cons))))
+    (should (= 2 (length (cdr cons))))))
+
+(ert-deftest xref--buf-pairs-iterator-groups-markers-by-buffers-2 ()
+  (let* ((xrefs (xref-collect-matches "bar" "*" xref-tests-data-dir nil))
+         (iter (xref--buf-pairs-iterator xrefs))
+         (cons1 (funcall iter :next))
+         (cons2 (funcall iter :next)))
+    (should (null (funcall iter :next)))
+    (should-not (equal (car cons1) (car cons2)))
+    (should (= 1 (length (cdr cons1))))
+    (should (= 1 (length (cdr cons2))))))
+
+(ert-deftest xref--buf-pairs-iterator-cleans-up-markers ()
+  (let* ((xrefs (xref-collect-matches "bar" "*" xref-tests-data-dir nil))
+         (iter (xref--buf-pairs-iterator xrefs))
+         (cons1 (funcall iter :next))
+         (cons2 (funcall iter :next)))
+    (funcall iter :cleanup)
+    (should (null (marker-position (car (nth 0 (cdr cons1))))))
+    (should (null (marker-position (cdr (nth 0 (cdr cons1))))))
+    (should (null (marker-position (car (nth 0 (cdr cons2))))))
+    (should (null (marker-position (cdr (nth 0 (cdr cons2))))))))