Initial git import
[sxemacs] / tests / automated / tag-tests.el
1 ;; Copyright (C) 2004 Vin Shelton
2
3 ;; Author: Vin Shelton <acs@xemacs.org>
4 ;; Maintainer: Vin Shelton <acs@xemacs.org>
5 ;; Created: 2004
6 ;; Keywords: tests
7
8 ;; This file is part of SXEmacs.
9
10 ;; SXEmacs is free software: you can redistribute it and/or modify it
11 ;; under the terms of the GNU General Public License as published by the
12 ;; Free Software Foundation, either version 3 of the License, or (at your
13 ;; option) any later version.
14
15 ;; SXEmacs is distributed in the hope that it will be
16 ;; useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
18 ;; General Public License for more details.
19
20 ;; You should have received a copy of the GNU General Public License
21 ;; along with this program.  If not, see <http://www.gnu.org/licenses/>. 
22
23 ;;; Synched up with: Not in FSF.
24
25 ;;; Commentary:
26
27 ;; Test tag support.
28 ;; See test-harness.el for instructions on how to run these tests.
29
30 (let ((testfile "tag-test.c")
31       (tagfile "TAGS")
32       (tags-build-completion-table nil))
33
34   (cd (temp-directory))
35
36   ;; Create a TAGS file
37   (with-temp-file tagfile
38     (insert
39 "\f
40 tag-test.c,99
41 struct mystruct \7fmystruct\ 12,1
42 struct mystruct *foo\(\7f4,23
43 DEFUN \(\"require\", Frequire,\7frequire,\ 17,51
44 "))
45
46   ;; Create the test file
47   (with-temp-file testfile
48     (insert
49 "
50 struct mystruct { };
51
52 struct mystruct *foo\(\) {
53 }
54
55 DEFUN \(\"require\", Frequire, 1, 2, 0, /*
56 If feature FEATURE is not loaded, load it from FILENAME.
57 If FEATURE is not a member of the list `features', then the feature
58 is not loaded; so load the file FILENAME.
59 If FILENAME is omitted, the printname of FEATURE is used as the file name.
60 */
61        \(feature, filename\)\)
62 {
63 }
64 "))
65
66   (let ((tags-always-exact t))
67
68     ;; Search for the tag "mystruct"; this should succeed
69     (Silence-Message
70      (find-tag "mystruct"))
71     (Assert (eq (point) 2))
72
73     ;; Search again.  The search should fail, based on the patch that
74     ;; Sven Grundmann submitted for 21.4.16.
75     (Check-Error-Message error "No more entries matching mystruct"
76                          (Silence-Message
77                           (tags-loop-continue))))
78
79   (let ((tags-always-exact nil))
80
81     ;; Search for the definition of "require". Until the etags.el upgrade
82     ;; from 21.5 in 21.4.16, this test would fail.
83     (condition-case nil
84         (Silence-Message
85          (find-tag "require"))
86       (t t))
87     (Assert (eq (point) 52)))
88
89   (kill-buffer testfile)
90   (delete-file testfile)
91   (kill-buffer tagfile)
92   (delete-file tagfile))