XEmacs 21.4.17 "Jumbo Shrimp".
[chise/xemacs-chise.git.1] / 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 XEmacs.
9
10 ;; XEmacs is free software; you can redistribute it and/or modify it
11 ;; under the terms of the GNU General Public License as published by
12 ;; the Free Software Foundation; either version 2, or (at your option)
13 ;; any later version.
14
15 ;; XEmacs is distributed in the hope that it will be useful, but
16 ;; 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 XEmacs; see the file COPYING.  If not, write to the Free
22 ;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
23 ;; 02111-1307, USA.
24
25 ;;; Synched up with: Not in FSF.
26
27 ;;; Commentary:
28
29 ;; Test tag support.
30 ;; See test-harness.el for instructions on how to run these tests.
31
32 (let ((testfile "tag-test.c")
33       (tagfile "TAGS")
34       (tags-build-completion-table nil))
35
36   (cd (temp-directory))
37
38   ;; Create a TAGS file
39   (with-temp-file tagfile
40     (insert
41 "\f
42 tag-test.c,99
43 struct mystruct \7fmystruct\ 12,1
44 struct mystruct *foo\(\7f4,23
45 DEFUN \(\"require\", Frequire,\7frequire,\ 17,51
46 "))
47
48   ;; Create the test file
49   (with-temp-file testfile
50     (insert
51 "
52 struct mystruct { };
53
54 struct mystruct *foo\(\) {
55 }
56
57 DEFUN \(\"require\", Frequire, 1, 2, 0, /*
58 If feature FEATURE is not loaded, load it from FILENAME.
59 If FEATURE is not a member of the list `features', then the feature
60 is not loaded; so load the file FILENAME.
61 If FILENAME is omitted, the printname of FEATURE is used as the file name.
62 */
63        \(feature, filename\)\)
64 {
65 }
66 "))
67
68   (let ((tags-always-exact t))
69
70     ;; Search for the tag "mystruct"; this should succeed
71     (find-tag "mystruct")
72     (Assert (eq (point) 2))
73
74     ;; Search again.  The search should fail, based on the patch that
75     ;; Sven Grundmann submitted for 21.4.16.
76     (Check-Error-Message error "No more entries matching mystruct"
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         (find-tag "require")
85       (t t))
86     (Assert (eq (point) 52)))
87
88   (kill-buffer testfile)
89   (delete-file testfile)
90   (kill-buffer tagfile)
91   (delete-file tagfile))