annotate lisp/test-harness.el @ 5518:3cc7470ea71c

gnuclient: if TMPDIR was set and connect failed, try again with /tmp 2011-06-03 Aidan Kehoe <kehoea@parhasard.net> * gnuslib.c (connect_to_unix_server): Retry with /tmp as a directory in which to search for Unix sockets if an attempt to connect with some other directory failed (which may be because gnuclient and gnuserv don't share an environment value for TMPDIR, or because gnuserv was compiled with USE_TMPDIR turned off).
author Aidan Kehoe <kehoea@parhasard.net>
date Fri, 03 Jun 2011 18:40:57 +0100
parents ac37a5f7e5be
children ebd367b82ccd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1 ;; test-harness.el --- Run Emacs Lisp test suites.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2
1751
5a9a66ba67ca [xemacs-hg @ 2003-10-15 08:56:35 by stephent]
stephent
parents: 1722
diff changeset
3 ;;; Copyright (C) 1998, 2002, 2003 Free Software Foundation, Inc.
4856
9bf09492cff7 Clean up macro Assert
Ben Wing <ben@xemacs.org>
parents: 4855
diff changeset
4 ;;; Copyright (C) 2002, 2010 Ben Wing.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
5
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
6 ;; Author: Martin Buchholz
1761
db7c7e251153 [xemacs-hg @ 2003-10-23 12:48:45 by stephent]
stephent
parents: 1758
diff changeset
7 ;; Maintainer: Stephen J. Turnbull <stephen@xemacs.org>
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
8 ;; Keywords: testing
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
9
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
10 ;; This file is part of XEmacs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
11
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5274
diff changeset
12 ;; XEmacs is free software: you can redistribute it and/or modify it
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5274
diff changeset
13 ;; under the terms of the GNU General Public License as published by the
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5274
diff changeset
14 ;; Free Software Foundation, either version 3 of the License, or (at your
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5274
diff changeset
15 ;; option) any later version.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
16
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5274
diff changeset
17 ;; XEmacs is distributed in the hope that it will be useful, but WITHOUT
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5274
diff changeset
18 ;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5274
diff changeset
19 ;; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5274
diff changeset
20 ;; for more details.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
21
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
22 ;; You should have received a copy of the GNU General Public License
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5274
diff changeset
23 ;; along with XEmacs. If not, see <http://www.gnu.org/licenses/>.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
24
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
25 ;;; Synched up with: Not in FSF.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
26
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
27 ;;; Commentary:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
28
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
29 ;;; A test suite harness for testing XEmacs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
30 ;;; The actual tests are in other files in this directory.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
31 ;;; Basically you just create files of emacs-lisp, and use the
1095
0d33547d9ed3 [xemacs-hg @ 2002-11-11 15:39:03 by stephent]
stephent
parents: 973
diff changeset
32 ;;; Assert, Check-Error, Check-Message, and Check-Error-Message functions
0d33547d9ed3 [xemacs-hg @ 2002-11-11 15:39:03 by stephent]
stephent
parents: 973
diff changeset
33 ;;; to create tests. See `test-harness-from-buffer' below.
0d33547d9ed3 [xemacs-hg @ 2002-11-11 15:39:03 by stephent]
stephent
parents: 973
diff changeset
34 ;;; Don't suppress tests just because they're due to known bugs not yet
1413
aa15a2bbba1a [xemacs-hg @ 2003-04-15 15:56:56 by stephent]
stephent
parents: 1231
diff changeset
35 ;;; fixed -- use the Known-Bug-Expect-Failure and
aa15a2bbba1a [xemacs-hg @ 2003-04-15 15:56:56 by stephent]
stephent
parents: 1231
diff changeset
36 ;;; Implementation-Incomplete-Expect-Failure wrapper macros to mark them.
1095
0d33547d9ed3 [xemacs-hg @ 2002-11-11 15:39:03 by stephent]
stephent
parents: 973
diff changeset
37 ;;; A lot of the tests we run push limits; suppress Ebola message with the
0d33547d9ed3 [xemacs-hg @ 2002-11-11 15:39:03 by stephent]
stephent
parents: 973
diff changeset
38 ;;; Ignore-Ebola wrapper macro.
3472
43b4a54fbf66 [xemacs-hg @ 2006-06-24 14:30:36 by stephent]
stephent
parents: 3471
diff changeset
39 ;;; Some noisy code will call `message'. Output from `message' can be
43b4a54fbf66 [xemacs-hg @ 2006-06-24 14:30:36 by stephent]
stephent
parents: 3471
diff changeset
40 ;;; suppressed with the Silence-Message macro. Functions that are known to
43b4a54fbf66 [xemacs-hg @ 2006-06-24 14:30:36 by stephent]
stephent
parents: 3471
diff changeset
41 ;;; issue messages include `write-region', `find-tag', `tag-loop-continue',
43b4a54fbf66 [xemacs-hg @ 2006-06-24 14:30:36 by stephent]
stephent
parents: 3471
diff changeset
42 ;;; `insert', and `mark-whole-buffer'. N.B. The Silence-Message macro
43b4a54fbf66 [xemacs-hg @ 2006-06-24 14:30:36 by stephent]
stephent
parents: 3471
diff changeset
43 ;;; currently does not suppress the newlines printed by `message'.
43b4a54fbf66 [xemacs-hg @ 2006-06-24 14:30:36 by stephent]
stephent
parents: 3471
diff changeset
44 ;;; Definitely do not use Silence-Message with Check-Message.
43b4a54fbf66 [xemacs-hg @ 2006-06-24 14:30:36 by stephent]
stephent
parents: 3471
diff changeset
45 ;;; In general it should probably only be used on code that prepares for a
43b4a54fbf66 [xemacs-hg @ 2006-06-24 14:30:36 by stephent]
stephent
parents: 3471
diff changeset
46 ;;; test, not on tests.
1095
0d33547d9ed3 [xemacs-hg @ 2002-11-11 15:39:03 by stephent]
stephent
parents: 973
diff changeset
47 ;;;
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
48 ;;; You run the tests using M-x test-emacs-test-file,
5069
14f0dd1fabdb move test-harness to lisp/ directory so it gets byte-compiled
Ben Wing <ben@xemacs.org>
parents: 5064
diff changeset
49 ;;; or $(EMACS) -batch -l test-harness -f batch-test-emacs file ...
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
50 ;;; which is run for you by the `make check' target in the top-level Makefile.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
51
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
52 (require 'bytecomp)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
53
3471
3b1f8220a65e [xemacs-hg @ 2006-06-24 13:50:19 by stephent]
stephent
parents: 2056
diff changeset
54 (defvar unexpected-test-suite-failures 0
3b1f8220a65e [xemacs-hg @ 2006-06-24 13:50:19 by stephent]
stephent
parents: 2056
diff changeset
55 "Cumulative number of unexpected failures since test-harness was loaded.
3b1f8220a65e [xemacs-hg @ 2006-06-24 13:50:19 by stephent]
stephent
parents: 2056
diff changeset
56
3b1f8220a65e [xemacs-hg @ 2006-06-24 13:50:19 by stephent]
stephent
parents: 2056
diff changeset
57 \"Unexpected failures\" are those caught by a generic handler established
3b1f8220a65e [xemacs-hg @ 2006-06-24 13:50:19 by stephent]
stephent
parents: 2056
diff changeset
58 outside of the test context. As such they involve an abort of the test
3b1f8220a65e [xemacs-hg @ 2006-06-24 13:50:19 by stephent]
stephent
parents: 2056
diff changeset
59 suite for the file being tested.
3b1f8220a65e [xemacs-hg @ 2006-06-24 13:50:19 by stephent]
stephent
parents: 2056
diff changeset
60
3b1f8220a65e [xemacs-hg @ 2006-06-24 13:50:19 by stephent]
stephent
parents: 2056
diff changeset
61 They often occur during preparation of a test or recording of the results.
3b1f8220a65e [xemacs-hg @ 2006-06-24 13:50:19 by stephent]
stephent
parents: 2056
diff changeset
62 For example, an executable used to generate test data might not be present
3b1f8220a65e [xemacs-hg @ 2006-06-24 13:50:19 by stephent]
stephent
parents: 2056
diff changeset
63 on the system, or a system error might occur while reading a data file.")
3b1f8220a65e [xemacs-hg @ 2006-06-24 13:50:19 by stephent]
stephent
parents: 2056
diff changeset
64
3b1f8220a65e [xemacs-hg @ 2006-06-24 13:50:19 by stephent]
stephent
parents: 2056
diff changeset
65 (defvar unexpected-test-suite-failure-files nil
3b1f8220a65e [xemacs-hg @ 2006-06-24 13:50:19 by stephent]
stephent
parents: 2056
diff changeset
66 "List of test files causing unexpected failures.")
3b1f8220a65e [xemacs-hg @ 2006-06-24 13:50:19 by stephent]
stephent
parents: 2056
diff changeset
67
3b1f8220a65e [xemacs-hg @ 2006-06-24 13:50:19 by stephent]
stephent
parents: 2056
diff changeset
68 ;; Declared for dynamic scope; _do not_ initialize here.
3b1f8220a65e [xemacs-hg @ 2006-06-24 13:50:19 by stephent]
stephent
parents: 2056
diff changeset
69 (defvar unexpected-test-file-failures)
3b1f8220a65e [xemacs-hg @ 2006-06-24 13:50:19 by stephent]
stephent
parents: 2056
diff changeset
70
5040
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
71 (defvar test-harness-bug-expected nil
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
72 "Non-nil means a bug is expected; backtracing/debugging should not happen.")
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
73
1758
90502933fb98 [xemacs-hg @ 2003-10-21 08:21:00 by stephent]
stephent
parents: 1751
diff changeset
74 (defvar test-harness-test-compiled nil
4366
7b628daa39d4 Move debugging code to usage example.
Stephen J. Turnbull <stephen@xemacs.org>
parents: 4323
diff changeset
75 "Non-nil means the test code was compiled before execution.
7b628daa39d4 Move debugging code to usage example.
Stephen J. Turnbull <stephen@xemacs.org>
parents: 4323
diff changeset
76
7b628daa39d4 Move debugging code to usage example.
Stephen J. Turnbull <stephen@xemacs.org>
parents: 4323
diff changeset
77 You probably should not make tests depend on compilation.
7b628daa39d4 Move debugging code to usage example.
Stephen J. Turnbull <stephen@xemacs.org>
parents: 4323
diff changeset
78 However, it can be useful to conditionally change messages based on whether
7b628daa39d4 Move debugging code to usage example.
Stephen J. Turnbull <stephen@xemacs.org>
parents: 4323
diff changeset
79 the code was compiled or not. For example, the case that motivated the
7b628daa39d4 Move debugging code to usage example.
Stephen J. Turnbull <stephen@xemacs.org>
parents: 4323
diff changeset
80 implementation of this variable:
7b628daa39d4 Move debugging code to usage example.
Stephen J. Turnbull <stephen@xemacs.org>
parents: 4323
diff changeset
81
7b628daa39d4 Move debugging code to usage example.
Stephen J. Turnbull <stephen@xemacs.org>
parents: 4323
diff changeset
82 \(when test-harness-test-compiled
7b628daa39d4 Move debugging code to usage example.
Stephen J. Turnbull <stephen@xemacs.org>
parents: 4323
diff changeset
83 ;; this ha-a-ack depends on the failing compiled test coming last
7b628daa39d4 Move debugging code to usage example.
Stephen J. Turnbull <stephen@xemacs.org>
parents: 4323
diff changeset
84 \(setq test-harness-failure-tag
7b628daa39d4 Move debugging code to usage example.
Stephen J. Turnbull <stephen@xemacs.org>
parents: 4323
diff changeset
85 \"KNOWN BUG - fix reverted; after 2003-10-31 notify stephen\n\"))")
1758
90502933fb98 [xemacs-hg @ 2003-10-21 08:21:00 by stephent]
stephent
parents: 1751
diff changeset
86
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
87 (defvar test-harness-verbose
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
88 (and (not noninteractive) (> (device-baud-rate) search-slow-speed))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
89 "*Non-nil means print messages describing progress of emacs-tester.")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
90
5040
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
91 (defvar test-harness-unexpected-error-enter-debugger debug-on-error
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
92 "*Non-nil means enter debugger when an unexpected error occurs.
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
93 Only applies interactively. Normally true if `debug-on-error' has been set.
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
94 See also `test-harness-assertion-failure-enter-debugger' and
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
95 `test-harness-unexpected-error-show-backtrace'.")
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
96
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
97 (defvar test-harness-assertion-failure-enter-debugger debug-on-error
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
98 "*Non-nil means enter debugger when an assertion failure occurs.
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
99 Only applies interactively. Normally true if `debug-on-error' has been set.
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
100 See also `test-harness-unexpected-error-enter-debugger' and
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
101 `test-harness-assertion-failure-show-backtrace'.")
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
102
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
103 (defvar test-harness-unexpected-error-show-backtrace t
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
104 "*Non-nil means show backtrace upon unexpected error.
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
105 Only applies when debugger is not entered. Normally true by default. See also
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
106 `test-harness-unexpected-error-enter-debugger' and
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
107 `test-harness-assertion-failure-show-backtrace'.")
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
108
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
109 (defvar test-harness-assertion-failure-show-backtrace stack-trace-on-error
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
110 "*Non-nil means show backtrace upon assertion failure.
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
111 Only applies when debugger is not entered. Normally true if
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
112 `stack-trace-on-error' has been set. See also
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
113 `test-harness-assertion-failure-enter-debugger' and
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
114 `test-harness-unexpected-error-show-backtrace'.")
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
115
1719
d9c4b6e360d8 [xemacs-hg @ 2003-09-27 06:51:16 by stephent]
stephent
parents: 1717
diff changeset
116 (defvar test-harness-file-results-alist nil
d9c4b6e360d8 [xemacs-hg @ 2003-09-27 06:51:16 by stephent]
stephent
parents: 1717
diff changeset
117 "Each element is a list (FILE SUCCESSES TESTS).
d9c4b6e360d8 [xemacs-hg @ 2003-09-27 06:51:16 by stephent]
stephent
parents: 1717
diff changeset
118 The order is the reverse of the order in which tests are run.
d9c4b6e360d8 [xemacs-hg @ 2003-09-27 06:51:16 by stephent]
stephent
parents: 1717
diff changeset
119
d9c4b6e360d8 [xemacs-hg @ 2003-09-27 06:51:16 by stephent]
stephent
parents: 1717
diff changeset
120 FILE is a string naming the test file.
d9c4b6e360d8 [xemacs-hg @ 2003-09-27 06:51:16 by stephent]
stephent
parents: 1717
diff changeset
121 SUCCESSES is a non-negative integer, the number of successes.
d9c4b6e360d8 [xemacs-hg @ 2003-09-27 06:51:16 by stephent]
stephent
parents: 1717
diff changeset
122 TESTS is a non-negative integer, the number of tests run.")
d9c4b6e360d8 [xemacs-hg @ 2003-09-27 06:51:16 by stephent]
stephent
parents: 1717
diff changeset
123
1425
74cb069b8417 [xemacs-hg @ 2003-04-23 15:42:44 by stephent]
stephent
parents: 1413
diff changeset
124 (defvar test-harness-risk-infloops nil
74cb069b8417 [xemacs-hg @ 2003-04-23 15:42:44 by stephent]
stephent
parents: 1413
diff changeset
125 "*Non-nil to run tests that may loop infinitely in buggy implementations.")
74cb069b8417 [xemacs-hg @ 2003-04-23 15:42:44 by stephent]
stephent
parents: 1413
diff changeset
126
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
127 (defvar test-harness-current-file nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
128
5369
4141aeddc55b Eliminate byte-compile warnings, core Lisp.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5366
diff changeset
129 (defvar emacs-lisp-file-regexp "\\.el\\'"
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
130 "*Regexp which matches Emacs Lisp source files.")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
131
1751
5a9a66ba67ca [xemacs-hg @ 2003-10-15 08:56:35 by stephent]
stephent
parents: 1722
diff changeset
132 (defconst test-harness-file-summary-template
5a9a66ba67ca [xemacs-hg @ 2003-10-15 08:56:35 by stephent]
stephent
parents: 1722
diff changeset
133 (format "%%-%ds %%%dd of %%%dd tests successful (%%3d%%%%)."
5a9a66ba67ca [xemacs-hg @ 2003-10-15 08:56:35 by stephent]
stephent
parents: 1722
diff changeset
134 (length "byte-compiler-tests.el:") ; use the longest file name
5a9a66ba67ca [xemacs-hg @ 2003-10-15 08:56:35 by stephent]
stephent
parents: 1722
diff changeset
135 5
5a9a66ba67ca [xemacs-hg @ 2003-10-15 08:56:35 by stephent]
stephent
parents: 1722
diff changeset
136 5)
5a9a66ba67ca [xemacs-hg @ 2003-10-15 08:56:35 by stephent]
stephent
parents: 1722
diff changeset
137 "Format for summary lines printed after each file is run.")
5a9a66ba67ca [xemacs-hg @ 2003-10-15 08:56:35 by stephent]
stephent
parents: 1722
diff changeset
138
5a9a66ba67ca [xemacs-hg @ 2003-10-15 08:56:35 by stephent]
stephent
parents: 1722
diff changeset
139 (defconst test-harness-null-summary-template
5a9a66ba67ca [xemacs-hg @ 2003-10-15 08:56:35 by stephent]
stephent
parents: 1722
diff changeset
140 (format "%%-%ds No tests run."
5a9a66ba67ca [xemacs-hg @ 2003-10-15 08:56:35 by stephent]
stephent
parents: 1722
diff changeset
141 (length "byte-compiler-tests.el:")) ; use the longest file name
5a9a66ba67ca [xemacs-hg @ 2003-10-15 08:56:35 by stephent]
stephent
parents: 1722
diff changeset
142 "Format for \"No tests\" lines printed after a file is run.")
5a9a66ba67ca [xemacs-hg @ 2003-10-15 08:56:35 by stephent]
stephent
parents: 1722
diff changeset
143
4906
6ef8256a020a implement equalp in C, fix case-folding, add equal() method for keymaps
Ben Wing <ben@xemacs.org>
parents: 4891
diff changeset
144 (defconst test-harness-aborted-summary-template
6ef8256a020a implement equalp in C, fix case-folding, add equal() method for keymaps
Ben Wing <ben@xemacs.org>
parents: 4891
diff changeset
145 (format "%%-%ds %%%dd tests completed (aborted)."
6ef8256a020a implement equalp in C, fix case-folding, add equal() method for keymaps
Ben Wing <ben@xemacs.org>
parents: 4891
diff changeset
146 (length "byte-compiler-tests.el:") ; use the longest file name
6ef8256a020a implement equalp in C, fix case-folding, add equal() method for keymaps
Ben Wing <ben@xemacs.org>
parents: 4891
diff changeset
147 5)
6ef8256a020a implement equalp in C, fix case-folding, add equal() method for keymaps
Ben Wing <ben@xemacs.org>
parents: 4891
diff changeset
148 "Format for summary lines printed after a test run on a file was aborted.")
6ef8256a020a implement equalp in C, fix case-folding, add equal() method for keymaps
Ben Wing <ben@xemacs.org>
parents: 4891
diff changeset
149
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
150 ;;;###autoload
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
151 (defun test-emacs-test-file (filename)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
152 "Test a file of Lisp code named FILENAME.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
153 The output file's name is made by appending `c' to the end of FILENAME."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
154 (interactive
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
155 (let ((file buffer-file-name)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
156 (file-name nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
157 (file-dir nil))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
158 (and file
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
159 (eq (cdr (assq 'major-mode (buffer-local-variables)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
160 'emacs-lisp-mode)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
161 (setq file-name (file-name-nondirectory file)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
162 file-dir (file-name-directory file)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
163 (list (read-file-name "Test file: " file-dir nil nil file-name))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
164 ;; Expand now so we get the current buffer's defaults
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
165 (setq filename (expand-file-name filename))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
166
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
167 ;; If we're testing a file that's in a buffer and is modified, offer
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
168 ;; to save it first.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
169 (or noninteractive
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
170 (let ((b (get-file-buffer (expand-file-name filename))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
171 (if (and b (buffer-modified-p b)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
172 (y-or-n-p (format "save buffer %s first? " (buffer-name b))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
173 (save-excursion (set-buffer b) (save-buffer)))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
174
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
175 (if (or noninteractive test-harness-verbose)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
176 (message "Testing %s..." filename))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
177 (let ((test-harness-current-file filename)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
178 input-buffer)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
179 (save-excursion
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
180 (setq input-buffer (get-buffer-create " *Test Input*"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
181 (set-buffer input-buffer)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
182 (erase-buffer)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
183 (insert-file-contents filename)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
184 ;; Run hooks including the uncompression hook.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
185 ;; If they change the file name, then change it for the output also.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
186 (let ((buffer-file-name filename)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
187 (default-major-mode 'emacs-lisp-mode)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
188 (enable-local-eval nil))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
189 (normal-mode)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
190 (setq filename buffer-file-name)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
191 (test-harness-from-buffer input-buffer filename)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
192 (kill-buffer input-buffer)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
193 ))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
194
5110
b24cf478a45e make test backtraces smaller
Ben Wing <ben@xemacs.org>
parents: 5069
diff changeset
195 (defsubst test-harness-backtrace ()
b24cf478a45e make test backtraces smaller
Ben Wing <ben@xemacs.org>
parents: 5069
diff changeset
196 "Display a reasonable-size backtrace."
b24cf478a45e make test backtraces smaller
Ben Wing <ben@xemacs.org>
parents: 5069
diff changeset
197 (let ((print-escape-newlines t)
b24cf478a45e make test backtraces smaller
Ben Wing <ben@xemacs.org>
parents: 5069
diff changeset
198 (print-length 50))
b24cf478a45e make test backtraces smaller
Ben Wing <ben@xemacs.org>
parents: 5069
diff changeset
199 (backtrace nil t)))
b24cf478a45e make test backtraces smaller
Ben Wing <ben@xemacs.org>
parents: 5069
diff changeset
200
5040
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
201 (defsubst test-harness-assertion-failure-do-debug (error-info)
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
202 "Maybe enter debugger or display a backtrace on assertion failure.
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
203 ERROR-INFO is a cons of the args (SIG . DATA) that were passed to `signal'.
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
204 The debugger will be entered if noninteractive and
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
205 `test-harness-unexpected-error-enter-debugger' is non-nil; else, a
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
206 backtrace will be displayed if `test-harness-unexpected-error-show-backtrace'
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
207 is non-nil."
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
208 (when (not test-harness-bug-expected)
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
209 (cond ((and (not noninteractive)
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
210 test-harness-assertion-failure-enter-debugger)
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
211 (funcall debugger 'error error-info))
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
212 (test-harness-assertion-failure-show-backtrace
5110
b24cf478a45e make test backtraces smaller
Ben Wing <ben@xemacs.org>
parents: 5069
diff changeset
213 (test-harness-backtrace)))))
5040
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
214
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
215 (defsubst test-harness-unexpected-error-do-debug (error-info)
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
216 "Maybe enter debugger or display a backtrace on unexpected error.
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
217 ERROR-INFO is a cons of the args (SIG . DATA) that were passed to `signal'.
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
218 The debugger will be entered if noninteractive and
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
219 `test-harness-unexpected-error-enter-debugger' is non-nil; else, a
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
220 backtrace will be displayed if `test-harness-unexpected-error-show-backtrace'
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
221 is non-nil."
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
222 (when (not test-harness-bug-expected)
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
223 (cond ((and (not noninteractive)
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
224 test-harness-unexpected-error-enter-debugger)
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
225 (funcall debugger 'error error-info))
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
226 (test-harness-unexpected-error-show-backtrace
5110
b24cf478a45e make test backtraces smaller
Ben Wing <ben@xemacs.org>
parents: 5069
diff changeset
227 (test-harness-backtrace)))))
5040
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
228
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
229 (defsubst test-harness-unexpected-error-condition-handler (error-info context-msg)
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
230 "Condition handler for when unexpected errors occur.
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
231 Useful in conjunction with `call-with-condition-handler'. ERROR-INFO is the
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
232 value passed to the condition handler. CONTEXT-MSG is a string indicating
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
233 the context in which the unexpected error occurred. A message is outputted
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
234 including CONTEXT-MSG in it, `unexpected-test-file-failures' is incremented,
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
235 and `test-harness-unexpected-error-do-debug' is called, which may enter the
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
236 debugger or output a backtrace, depending on the settings of
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
237 `test-harness-unexpected-error-enter-debugger' and
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
238 `test-harness-unexpected-error-show-backtrace'.
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
239
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
240 The function returns normally, which causes error-handling processing to
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
241 continue; if you want to catch the error, you also need to wrap everything
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
242 in `condition-case'. See also `test-harness-error-wrap', which does this
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
243 wrapping."
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
244 (incf unexpected-test-file-failures)
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
245 (princ (format "Unexpected error %S while %s\n"
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
246 error-info context-msg))
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
247 (message "Unexpected error %S while %s." error-info context-msg)
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
248 (test-harness-unexpected-error-do-debug error-info))
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
249
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
250 (defmacro test-harness-error-wrap (context-msg abort-msg &rest body)
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
251 "Wrap BODY so that unexpected errors are caught.
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
252 The debugger will be entered if noninteractive and
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
253 `test-harness-unexpected-error-enter-debugger' is non-nil; else, a backtrace
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
254 will be displayed if `test-harness-unexpected-error-show-backtrace' is
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
255 non-nil. CONTEXT-MSG is displayed as part of a message shown before entering
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
256 the debugger or showing a backtrace, and ABORT-MSG, if non-nil, is displayed
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
257 afterwards. See "
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
258 `(condition-case nil
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
259 (call-with-condition-handler
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
260 #'(lambda (error-info)
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
261 (test-harness-unexpected-error-condition-handler
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
262 error-info ,context-msg))
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
263 #'(lambda ()
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
264 ,@body))
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
265 (error ,(if abort-msg `(message ,abort-msg) nil))))
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
266
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
267 (defun test-harness-read-from-buffer (buffer)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
268 "Read forms from BUFFER, and turn it into a lambda test form."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
269 (let ((body nil))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
270 (goto-char (point-min) buffer)
5040
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
271 (condition-case nil
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
272 (call-with-condition-handler
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
273 #'(lambda (error-info)
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
274 ;; end-of-file is expected, so don't output error or backtrace
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
275 ;; or enter debugger in this case.
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
276 (unless (eq 'end-of-file (car error-info))
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
277 (test-harness-unexpected-error-condition-handler
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
278 error-info "reading forms from buffer")))
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
279 #'(lambda ()
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
280 (while t
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
281 (setq body (cons (read buffer) body)))))
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
282 (error nil))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
283 `(lambda ()
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
284 (defvar passes)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
285 (defvar assertion-failures)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
286 (defvar no-error-failures)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
287 (defvar wrong-error-failures)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
288 (defvar missing-message-failures)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
289 (defvar other-failures)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
290
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
291 (defvar trick-optimizer)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
292
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
293 ,@(nreverse body))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
294
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
295 (defun test-harness-from-buffer (inbuffer filename)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
296 "Run tests in buffer INBUFFER, visiting FILENAME."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
297 (defvar trick-optimizer)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
298 (let ((passes 0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
299 (assertion-failures 0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
300 (no-error-failures 0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
301 (wrong-error-failures 0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
302 (missing-message-failures 0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
303 (other-failures 0)
3471
3b1f8220a65e [xemacs-hg @ 2006-06-24 13:50:19 by stephent]
stephent
parents: 2056
diff changeset
304 (unexpected-test-file-failures 0)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
305
973
ea6a06f7bf2c [xemacs-hg @ 2002-08-22 14:56:23 by stephent]
stephent
parents: 928
diff changeset
306 ;; #### perhaps this should be a defvar, and output at the very end
ea6a06f7bf2c [xemacs-hg @ 2002-08-22 14:56:23 by stephent]
stephent
parents: 928
diff changeset
307 ;; OTOH, this way AC types can use a null EMACSPACKAGEPATH to find
ea6a06f7bf2c [xemacs-hg @ 2002-08-22 14:56:23 by stephent]
stephent
parents: 928
diff changeset
308 ;; what stuff is needed, and ways to avoid using them
ea6a06f7bf2c [xemacs-hg @ 2002-08-22 14:56:23 by stephent]
stephent
parents: 928
diff changeset
309 (skipped-test-reasons (make-hash-table :test 'equal))
ea6a06f7bf2c [xemacs-hg @ 2002-08-22 14:56:23 by stephent]
stephent
parents: 928
diff changeset
310
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
311 (trick-optimizer nil)
826
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 446
diff changeset
312 (debug-on-error t)
5064
501b5e84f5a7 remove unused var in test-harness
Ben Wing <ben@xemacs.org>
parents: 5040
diff changeset
313 )
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
314 (with-output-to-temp-buffer "*Test-Log*"
826
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 446
diff changeset
315 (princ (format "Testing %s...\n\n" filename))
1095
0d33547d9ed3 [xemacs-hg @ 2002-11-11 15:39:03 by stephent]
stephent
parents: 973
diff changeset
316
1413
aa15a2bbba1a [xemacs-hg @ 2003-04-15 15:56:56 by stephent]
stephent
parents: 1231
diff changeset
317 (defconst test-harness-failure-tag "FAIL")
aa15a2bbba1a [xemacs-hg @ 2003-04-15 15:56:56 by stephent]
stephent
parents: 1231
diff changeset
318 (defconst test-harness-success-tag "PASS")
1095
0d33547d9ed3 [xemacs-hg @ 2002-11-11 15:39:03 by stephent]
stephent
parents: 973
diff changeset
319
4891
732c35cdded8 fix failing-case output of Assert-test, add Assert-test-not
Ben Wing <ben@xemacs.org>
parents: 4856
diff changeset
320 ;;;;; BEGIN DEFINITION OF MACROS USEFUL IN TEST CODE
732c35cdded8 fix failing-case output of Assert-test, add Assert-test-not
Ben Wing <ben@xemacs.org>
parents: 4856
diff changeset
321
1095
0d33547d9ed3 [xemacs-hg @ 2002-11-11 15:39:03 by stephent]
stephent
parents: 973
diff changeset
322 (defmacro Known-Bug-Expect-Failure (&rest body)
4891
732c35cdded8 fix failing-case output of Assert-test, add Assert-test-not
Ben Wing <ben@xemacs.org>
parents: 4856
diff changeset
323 "Wrap a BODY that consists of tests that are known to fail.
732c35cdded8 fix failing-case output of Assert-test, add Assert-test-not
Ben Wing <ben@xemacs.org>
parents: 4856
diff changeset
324 This causes messages to be printed on failure indicating that this is expected,
732c35cdded8 fix failing-case output of Assert-test, add Assert-test-not
Ben Wing <ben@xemacs.org>
parents: 4856
diff changeset
325 and on success indicating that this is unexpected."
5040
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
326 `(let ((test-harness-bug-expected t)
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
327 (test-harness-failure-tag "KNOWN BUG")
1413
aa15a2bbba1a [xemacs-hg @ 2003-04-15 15:56:56 by stephent]
stephent
parents: 1231
diff changeset
328 (test-harness-success-tag "PASS (FAILURE EXPECTED)"))
aa15a2bbba1a [xemacs-hg @ 2003-04-15 15:56:56 by stephent]
stephent
parents: 1231
diff changeset
329 ,@body))
4323
94509abd0ef0 Commit a forgotten chunk of 4d0f773d5e21.
Aidan Kehoe <kehoea@parhasard.net>
parents: 4199
diff changeset
330
94509abd0ef0 Commit a forgotten chunk of 4d0f773d5e21.
Aidan Kehoe <kehoea@parhasard.net>
parents: 4199
diff changeset
331 (defmacro Known-Bug-Expect-Error (expected-error &rest body)
4891
732c35cdded8 fix failing-case output of Assert-test, add Assert-test-not
Ben Wing <ben@xemacs.org>
parents: 4856
diff changeset
332 "Wrap a BODY that consists of tests that are known to trigger an error.
732c35cdded8 fix failing-case output of Assert-test, add Assert-test-not
Ben Wing <ben@xemacs.org>
parents: 4856
diff changeset
333 This causes messages to be printed on failure indicating that this is expected,
732c35cdded8 fix failing-case output of Assert-test, add Assert-test-not
Ben Wing <ben@xemacs.org>
parents: 4856
diff changeset
334 and on success indicating that this is unexpected."
5366
f00192e1cd49 Examining the result of #'length: `eql', not `=', it's better style & cheaper
Aidan Kehoe <kehoea@parhasard.net>
parents: 5274
diff changeset
335 (let ((quoted-body (if (eql 1 (length body))
4323
94509abd0ef0 Commit a forgotten chunk of 4d0f773d5e21.
Aidan Kehoe <kehoea@parhasard.net>
parents: 4199
diff changeset
336 `(quote ,(car body)) `(quote (progn ,@body)))))
5040
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
337 `(let ((test-harness-bug-expected t)
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
338 (test-harness-failure-tag "KNOWN BUG")
4323
94509abd0ef0 Commit a forgotten chunk of 4d0f773d5e21.
Aidan Kehoe <kehoea@parhasard.net>
parents: 4199
diff changeset
339 (test-harness-success-tag "PASS (FAILURE EXPECTED)"))
94509abd0ef0 Commit a forgotten chunk of 4d0f773d5e21.
Aidan Kehoe <kehoea@parhasard.net>
parents: 4199
diff changeset
340 (condition-case error-info
94509abd0ef0 Commit a forgotten chunk of 4d0f773d5e21.
Aidan Kehoe <kehoea@parhasard.net>
parents: 4199
diff changeset
341 (progn
94509abd0ef0 Commit a forgotten chunk of 4d0f773d5e21.
Aidan Kehoe <kehoea@parhasard.net>
parents: 4199
diff changeset
342 (setq trick-optimizer (progn ,@body))
94509abd0ef0 Commit a forgotten chunk of 4d0f773d5e21.
Aidan Kehoe <kehoea@parhasard.net>
parents: 4199
diff changeset
343 (Print-Pass
94509abd0ef0 Commit a forgotten chunk of 4d0f773d5e21.
Aidan Kehoe <kehoea@parhasard.net>
parents: 4199
diff changeset
344 "%S executed successfully, but expected error %S"
94509abd0ef0 Commit a forgotten chunk of 4d0f773d5e21.
Aidan Kehoe <kehoea@parhasard.net>
parents: 4199
diff changeset
345 ,quoted-body
94509abd0ef0 Commit a forgotten chunk of 4d0f773d5e21.
Aidan Kehoe <kehoea@parhasard.net>
parents: 4199
diff changeset
346 ',expected-error)
94509abd0ef0 Commit a forgotten chunk of 4d0f773d5e21.
Aidan Kehoe <kehoea@parhasard.net>
parents: 4199
diff changeset
347 (incf passes))
94509abd0ef0 Commit a forgotten chunk of 4d0f773d5e21.
Aidan Kehoe <kehoea@parhasard.net>
parents: 4199
diff changeset
348 (,expected-error
94509abd0ef0 Commit a forgotten chunk of 4d0f773d5e21.
Aidan Kehoe <kehoea@parhasard.net>
parents: 4199
diff changeset
349 (Print-Failure "%S ==> error %S, as expected"
94509abd0ef0 Commit a forgotten chunk of 4d0f773d5e21.
Aidan Kehoe <kehoea@parhasard.net>
parents: 4199
diff changeset
350 ,quoted-body ',expected-error)
94509abd0ef0 Commit a forgotten chunk of 4d0f773d5e21.
Aidan Kehoe <kehoea@parhasard.net>
parents: 4199
diff changeset
351 (incf no-error-failures))
94509abd0ef0 Commit a forgotten chunk of 4d0f773d5e21.
Aidan Kehoe <kehoea@parhasard.net>
parents: 4199
diff changeset
352 (error
94509abd0ef0 Commit a forgotten chunk of 4d0f773d5e21.
Aidan Kehoe <kehoea@parhasard.net>
parents: 4199
diff changeset
353 (Print-Failure "%S ==> expected error %S, got error %S instead"
94509abd0ef0 Commit a forgotten chunk of 4d0f773d5e21.
Aidan Kehoe <kehoea@parhasard.net>
parents: 4199
diff changeset
354 ,quoted-body ',expected-error error-info)
94509abd0ef0 Commit a forgotten chunk of 4d0f773d5e21.
Aidan Kehoe <kehoea@parhasard.net>
parents: 4199
diff changeset
355 (incf wrong-error-failures))))))
94509abd0ef0 Commit a forgotten chunk of 4d0f773d5e21.
Aidan Kehoe <kehoea@parhasard.net>
parents: 4199
diff changeset
356
1413
aa15a2bbba1a [xemacs-hg @ 2003-04-15 15:56:56 by stephent]
stephent
parents: 1231
diff changeset
357 (defmacro Implementation-Incomplete-Expect-Failure (&rest body)
4891
732c35cdded8 fix failing-case output of Assert-test, add Assert-test-not
Ben Wing <ben@xemacs.org>
parents: 4856
diff changeset
358 "Wrap a BODY containing tests that are known to fail due to incomplete code.
732c35cdded8 fix failing-case output of Assert-test, add Assert-test-not
Ben Wing <ben@xemacs.org>
parents: 4856
diff changeset
359 This causes messages to be printed on failure indicating that the
732c35cdded8 fix failing-case output of Assert-test, add Assert-test-not
Ben Wing <ben@xemacs.org>
parents: 4856
diff changeset
360 implementation is incomplete (and hence the failure is expected); and on
732c35cdded8 fix failing-case output of Assert-test, add Assert-test-not
Ben Wing <ben@xemacs.org>
parents: 4856
diff changeset
361 success indicating that this is unexpected."
5040
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
362 `(let ((test-harness-bug-expected t)
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
363 (test-harness-failure-tag "IMPLEMENTATION INCOMPLETE")
1413
aa15a2bbba1a [xemacs-hg @ 2003-04-15 15:56:56 by stephent]
stephent
parents: 1231
diff changeset
364 (test-harness-success-tag "PASS (FAILURE EXPECTED)"))
aa15a2bbba1a [xemacs-hg @ 2003-04-15 15:56:56 by stephent]
stephent
parents: 1231
diff changeset
365 ,@body))
826
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 446
diff changeset
366
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 446
diff changeset
367 (defun Print-Failure (fmt &rest args)
1413
aa15a2bbba1a [xemacs-hg @ 2003-04-15 15:56:56 by stephent]
stephent
parents: 1231
diff changeset
368 (setq fmt (format "%s: %s" test-harness-failure-tag fmt))
826
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 446
diff changeset
369 (if (noninteractive) (apply #'message fmt args))
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 446
diff changeset
370 (princ (concat (apply #'format fmt args) "\n")))
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 446
diff changeset
371
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 446
diff changeset
372 (defun Print-Pass (fmt &rest args)
1413
aa15a2bbba1a [xemacs-hg @ 2003-04-15 15:56:56 by stephent]
stephent
parents: 1231
diff changeset
373 (setq fmt (format "%s: %s" test-harness-success-tag fmt))
826
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 446
diff changeset
374 (and test-harness-verbose
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 446
diff changeset
375 (princ (concat (apply #'format fmt args) "\n"))))
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 446
diff changeset
376
973
ea6a06f7bf2c [xemacs-hg @ 2002-08-22 14:56:23 by stephent]
stephent
parents: 928
diff changeset
377 (defun Print-Skip (test reason &optional fmt &rest args)
1095
0d33547d9ed3 [xemacs-hg @ 2002-11-11 15:39:03 by stephent]
stephent
parents: 973
diff changeset
378 (setq fmt (concat "SKIP: %S BECAUSE %S" fmt))
973
ea6a06f7bf2c [xemacs-hg @ 2002-08-22 14:56:23 by stephent]
stephent
parents: 928
diff changeset
379 (princ (concat (apply #'format fmt test reason args) "\n")))
ea6a06f7bf2c [xemacs-hg @ 2002-08-22 14:56:23 by stephent]
stephent
parents: 928
diff changeset
380
1095
0d33547d9ed3 [xemacs-hg @ 2002-11-11 15:39:03 by stephent]
stephent
parents: 973
diff changeset
381 (defmacro Skip-Test-Unless (condition reason description &rest body)
0d33547d9ed3 [xemacs-hg @ 2002-11-11 15:39:03 by stephent]
stephent
parents: 973
diff changeset
382 "Unless CONDITION is satisfied, skip test BODY.
0d33547d9ed3 [xemacs-hg @ 2002-11-11 15:39:03 by stephent]
stephent
parents: 973
diff changeset
383 REASON is a description of the condition failure, and must be unique (it
0d33547d9ed3 [xemacs-hg @ 2002-11-11 15:39:03 by stephent]
stephent
parents: 973
diff changeset
384 is used as a hash key). DESCRIPTION describes the tests that were skipped.
0d33547d9ed3 [xemacs-hg @ 2002-11-11 15:39:03 by stephent]
stephent
parents: 973
diff changeset
385 BODY is a sequence of expressions and may contain several tests."
0d33547d9ed3 [xemacs-hg @ 2002-11-11 15:39:03 by stephent]
stephent
parents: 973
diff changeset
386 `(if (not ,condition)
0d33547d9ed3 [xemacs-hg @ 2002-11-11 15:39:03 by stephent]
stephent
parents: 973
diff changeset
387 (let ((count (gethash ,reason skipped-test-reasons)))
0d33547d9ed3 [xemacs-hg @ 2002-11-11 15:39:03 by stephent]
stephent
parents: 973
diff changeset
388 (puthash ,reason (if (null count) 1 (1+ count))
0d33547d9ed3 [xemacs-hg @ 2002-11-11 15:39:03 by stephent]
stephent
parents: 973
diff changeset
389 skipped-test-reasons)
0d33547d9ed3 [xemacs-hg @ 2002-11-11 15:39:03 by stephent]
stephent
parents: 973
diff changeset
390 (Print-Skip ,description ,reason))
0d33547d9ed3 [xemacs-hg @ 2002-11-11 15:39:03 by stephent]
stephent
parents: 973
diff changeset
391 ,@body))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
392
4747
294a86d29f99 Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents: 4415
diff changeset
393 (defmacro Assert (assertion &optional failing-case description)
294a86d29f99 Eliminate C asserts from c-tests.
Stephen J. Turnbull <stephen@xemacs.org>
parents: 4415
diff changeset
394 "Test passes if ASSERTION is true.
4856
9bf09492cff7 Clean up macro Assert
Ben Wing <ben@xemacs.org>
parents: 4855
diff changeset
395 Optional FAILING-CASE describes the particular failure. Optional
9bf09492cff7 Clean up macro Assert
Ben Wing <ben@xemacs.org>
parents: 4855
diff changeset
396 DESCRIPTION describes the assertion; by default, the unevalated assertion
9bf09492cff7 Clean up macro Assert
Ben Wing <ben@xemacs.org>
parents: 4855
diff changeset
397 expression is given. FAILING-CASE and DESCRIPTION are useful when Assert
9bf09492cff7 Clean up macro Assert
Ben Wing <ben@xemacs.org>
parents: 4855
diff changeset
398 is used in a loop."
5136
0f66906b6e37 Undo Assert-equal, Assert=, etc.; make `Assert' handle this automatically
Ben Wing <ben@xemacs.org>
parents: 5110
diff changeset
399 (let ((test-assertion assertion)
0f66906b6e37 Undo Assert-equal, Assert=, etc.; make `Assert' handle this automatically
Ben Wing <ben@xemacs.org>
parents: 5110
diff changeset
400 (negated nil))
0f66906b6e37 Undo Assert-equal, Assert=, etc.; make `Assert' handle this automatically
Ben Wing <ben@xemacs.org>
parents: 5110
diff changeset
401 (when (and (listp test-assertion)
5366
f00192e1cd49 Examining the result of #'length: `eql', not `=', it's better style & cheaper
Aidan Kehoe <kehoea@parhasard.net>
parents: 5274
diff changeset
402 (eql 2 (length test-assertion))
5136
0f66906b6e37 Undo Assert-equal, Assert=, etc.; make `Assert' handle this automatically
Ben Wing <ben@xemacs.org>
parents: 5110
diff changeset
403 (memq (car test-assertion) '(not null)))
0f66906b6e37 Undo Assert-equal, Assert=, etc.; make `Assert' handle this automatically
Ben Wing <ben@xemacs.org>
parents: 5110
diff changeset
404 (setq test-assertion (cadr test-assertion))
0f66906b6e37 Undo Assert-equal, Assert=, etc.; make `Assert' handle this automatically
Ben Wing <ben@xemacs.org>
parents: 5110
diff changeset
405 (setq negated t))
0f66906b6e37 Undo Assert-equal, Assert=, etc.; make `Assert' handle this automatically
Ben Wing <ben@xemacs.org>
parents: 5110
diff changeset
406 (when (and (listp test-assertion)
5366
f00192e1cd49 Examining the result of #'length: `eql', not `=', it's better style & cheaper
Aidan Kehoe <kehoea@parhasard.net>
parents: 5274
diff changeset
407 (eql 3 (length test-assertion))
5136
0f66906b6e37 Undo Assert-equal, Assert=, etc.; make `Assert' handle this automatically
Ben Wing <ben@xemacs.org>
parents: 5110
diff changeset
408 (member (car test-assertion)
0f66906b6e37 Undo Assert-equal, Assert=, etc.; make `Assert' handle this automatically
Ben Wing <ben@xemacs.org>
parents: 5110
diff changeset
409 '(eq eql equal equalp = string= < <= > >=)))
0f66906b6e37 Undo Assert-equal, Assert=, etc.; make `Assert' handle this automatically
Ben Wing <ben@xemacs.org>
parents: 5110
diff changeset
410 (let* ((test (car test-assertion))
0f66906b6e37 Undo Assert-equal, Assert=, etc.; make `Assert' handle this automatically
Ben Wing <ben@xemacs.org>
parents: 5110
diff changeset
411 (testval (second test-assertion))
0f66906b6e37 Undo Assert-equal, Assert=, etc.; make `Assert' handle this automatically
Ben Wing <ben@xemacs.org>
parents: 5110
diff changeset
412 (expected (third test-assertion))
0f66906b6e37 Undo Assert-equal, Assert=, etc.; make `Assert' handle this automatically
Ben Wing <ben@xemacs.org>
parents: 5110
diff changeset
413 (failmsg `(format ,(if negated
0f66906b6e37 Undo Assert-equal, Assert=, etc.; make `Assert' handle this automatically
Ben Wing <ben@xemacs.org>
parents: 5110
diff changeset
414 "%S shouldn't be `%s' to %S but is"
0f66906b6e37 Undo Assert-equal, Assert=, etc.; make `Assert' handle this automatically
Ben Wing <ben@xemacs.org>
parents: 5110
diff changeset
415 "%S should be `%s' to %S but isn't")
0f66906b6e37 Undo Assert-equal, Assert=, etc.; make `Assert' handle this automatically
Ben Wing <ben@xemacs.org>
parents: 5110
diff changeset
416 ,testval ',test ,expected)))
0f66906b6e37 Undo Assert-equal, Assert=, etc.; make `Assert' handle this automatically
Ben Wing <ben@xemacs.org>
parents: 5110
diff changeset
417 (setq failing-case (if failing-case
0f66906b6e37 Undo Assert-equal, Assert=, etc.; make `Assert' handle this automatically
Ben Wing <ben@xemacs.org>
parents: 5110
diff changeset
418 `(concat
0f66906b6e37 Undo Assert-equal, Assert=, etc.; make `Assert' handle this automatically
Ben Wing <ben@xemacs.org>
parents: 5110
diff changeset
419 (format "%S, " ,failing-case)
0f66906b6e37 Undo Assert-equal, Assert=, etc.; make `Assert' handle this automatically
Ben Wing <ben@xemacs.org>
parents: 5110
diff changeset
420 ,failmsg)
0f66906b6e37 Undo Assert-equal, Assert=, etc.; make `Assert' handle this automatically
Ben Wing <ben@xemacs.org>
parents: 5110
diff changeset
421 failmsg)))))
4856
9bf09492cff7 Clean up macro Assert
Ben Wing <ben@xemacs.org>
parents: 4855
diff changeset
422 (let ((description
9bf09492cff7 Clean up macro Assert
Ben Wing <ben@xemacs.org>
parents: 4855
diff changeset
423 (or description `(quote ,assertion))))
5040
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
424 `(condition-case nil
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
425 (call-with-condition-handler
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
426 #'(lambda (error-info)
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
427 (if (eq 'cl-assertion-failed (car error-info))
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
428 (progn
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
429 (Print-Failure
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
430 (if ,failing-case
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
431 "Assertion failed: %S; failing case = %S"
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
432 "Assertion failed: %S")
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
433 ,description ,failing-case)
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
434 (incf assertion-failures)
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
435 (test-harness-assertion-failure-do-debug error-info))
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
436 (Print-Failure
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
437 (if ,failing-case
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
438 "%S ==> error: %S; failing case = %S"
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
439 "%S ==> error: %S")
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
440 ,description error-info ,failing-case)
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
441 (incf other-failures)
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
442 (test-harness-unexpected-error-do-debug error-info)))
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
443 #'(lambda ()
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
444 (assert ,assertion)
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
445 (Print-Pass "%S" ,description)
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
446 (incf passes)))
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
447 (cl-assertion-failed nil))))
2056
ab71063baf27 [xemacs-hg @ 2004-05-03 15:08:41 by james]
james
parents: 1761
diff changeset
448
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
449 (defmacro Check-Error (expected-error &rest body)
5366
f00192e1cd49 Examining the result of #'length: `eql', not `=', it's better style & cheaper
Aidan Kehoe <kehoea@parhasard.net>
parents: 5274
diff changeset
450 (let ((quoted-body (if (eql 1 (length body))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
451 `(quote ,(car body)) `(quote (progn ,@body)))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
452 `(condition-case error-info
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
453 (progn
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
454 (setq trick-optimizer (progn ,@body))
826
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 446
diff changeset
455 (Print-Failure "%S executed successfully, but expected error %S"
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
456 ,quoted-body
826
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 446
diff changeset
457 ',expected-error)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
458 (incf no-error-failures))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
459 (,expected-error
826
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 446
diff changeset
460 (Print-Pass "%S ==> error %S, as expected"
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 446
diff changeset
461 ,quoted-body ',expected-error)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
462 (incf passes))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
463 (error
826
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 446
diff changeset
464 (Print-Failure "%S ==> expected error %S, got error %S instead"
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 446
diff changeset
465 ,quoted-body ',expected-error error-info)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
466 (incf wrong-error-failures)))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
467
826
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 446
diff changeset
468 (defmacro Check-Error-Message (expected-error expected-error-regexp
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 446
diff changeset
469 &rest body)
5366
f00192e1cd49 Examining the result of #'length: `eql', not `=', it's better style & cheaper
Aidan Kehoe <kehoea@parhasard.net>
parents: 5274
diff changeset
470 (let ((quoted-body (if (eql 1 (length body))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
471 `(quote ,(car body)) `(quote (progn ,@body)))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
472 `(condition-case error-info
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
473 (progn
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
474 (setq trick-optimizer (progn ,@body))
826
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 446
diff changeset
475 (Print-Failure "%S executed successfully, but expected error %S"
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 446
diff changeset
476 ,quoted-body ',expected-error)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
477 (incf no-error-failures))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
478 (,expected-error
4199
3660d327399f [xemacs-hg @ 2007-10-01 08:07:39 by stephent]
stephent
parents: 3472
diff changeset
479 ;; #### Damn, this binding doesn't capture frobs, eg, for
3660d327399f [xemacs-hg @ 2007-10-01 08:07:39 by stephent]
stephent
parents: 3472
diff changeset
480 ;; invalid_argument() ... you only get the REASON. And for
3660d327399f [xemacs-hg @ 2007-10-01 08:07:39 by stephent]
stephent
parents: 3472
diff changeset
481 ;; wrong_type_argument(), there's no reason only FROBs.
3660d327399f [xemacs-hg @ 2007-10-01 08:07:39 by stephent]
stephent
parents: 3472
diff changeset
482 ;; If this gets fixed, fix tests in regexp-tests.el.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
483 (let ((error-message (second error-info)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
484 (if (string-match ,expected-error-regexp error-message)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
485 (progn
826
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 446
diff changeset
486 (Print-Pass "%S ==> error %S %S, as expected"
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 446
diff changeset
487 ,quoted-body error-message ',expected-error)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
488 (incf passes))
826
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 446
diff changeset
489 (Print-Failure "%S ==> got error %S as expected, but error message %S did not match regexp %S"
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 446
diff changeset
490 ,quoted-body ',expected-error error-message ,expected-error-regexp)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
491 (incf wrong-error-failures))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
492 (error
826
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 446
diff changeset
493 (Print-Failure "%S ==> expected error %S, got error %S instead"
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 446
diff changeset
494 ,quoted-body ',expected-error error-info)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
495 (incf wrong-error-failures)))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
496
3472
43b4a54fbf66 [xemacs-hg @ 2006-06-24 14:30:36 by stephent]
stephent
parents: 3471
diff changeset
497 ;; Do not use this with Silence-Message.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
498 (defmacro Check-Message (expected-message-regexp &rest body)
5366
f00192e1cd49 Examining the result of #'length: `eql', not `=', it's better style & cheaper
Aidan Kehoe <kehoea@parhasard.net>
parents: 5274
diff changeset
499 (let ((quoted-body (if (eql 1 (length body))
5069
14f0dd1fabdb move test-harness to lisp/ directory so it gets byte-compiled
Ben Wing <ben@xemacs.org>
parents: 5064
diff changeset
500 `(quote ,(car body))
14f0dd1fabdb move test-harness to lisp/ directory so it gets byte-compiled
Ben Wing <ben@xemacs.org>
parents: 5064
diff changeset
501 `(quote (progn ,@body)))))
14f0dd1fabdb move test-harness to lisp/ directory so it gets byte-compiled
Ben Wing <ben@xemacs.org>
parents: 5064
diff changeset
502 `(Skip-Test-Unless (fboundp 'defadvice) "can't defadvice"
5274
ecdd1daab447 Add an omitted comma, Check-Message, test-harness.el.
Aidan Kehoe <kehoea@parhasard.net>
parents: 5136
diff changeset
503 ,expected-message-regexp
5069
14f0dd1fabdb move test-harness to lisp/ directory so it gets byte-compiled
Ben Wing <ben@xemacs.org>
parents: 5064
diff changeset
504 (let ((messages ""))
14f0dd1fabdb move test-harness to lisp/ directory so it gets byte-compiled
Ben Wing <ben@xemacs.org>
parents: 5064
diff changeset
505 (defadvice message (around collect activate)
14f0dd1fabdb move test-harness to lisp/ directory so it gets byte-compiled
Ben Wing <ben@xemacs.org>
parents: 5064
diff changeset
506 (defvar messages)
14f0dd1fabdb move test-harness to lisp/ directory so it gets byte-compiled
Ben Wing <ben@xemacs.org>
parents: 5064
diff changeset
507 (let ((msg-string (apply 'format (ad-get-args 0))))
14f0dd1fabdb move test-harness to lisp/ directory so it gets byte-compiled
Ben Wing <ben@xemacs.org>
parents: 5064
diff changeset
508 (setq messages (concat messages msg-string))
14f0dd1fabdb move test-harness to lisp/ directory so it gets byte-compiled
Ben Wing <ben@xemacs.org>
parents: 5064
diff changeset
509 msg-string))
14f0dd1fabdb move test-harness to lisp/ directory so it gets byte-compiled
Ben Wing <ben@xemacs.org>
parents: 5064
diff changeset
510 (ignore-errors
14f0dd1fabdb move test-harness to lisp/ directory so it gets byte-compiled
Ben Wing <ben@xemacs.org>
parents: 5064
diff changeset
511 (call-with-condition-handler
14f0dd1fabdb move test-harness to lisp/ directory so it gets byte-compiled
Ben Wing <ben@xemacs.org>
parents: 5064
diff changeset
512 #'(lambda (error-info)
14f0dd1fabdb move test-harness to lisp/ directory so it gets byte-compiled
Ben Wing <ben@xemacs.org>
parents: 5064
diff changeset
513 (Print-Failure "%S ==> unexpected error %S"
14f0dd1fabdb move test-harness to lisp/ directory so it gets byte-compiled
Ben Wing <ben@xemacs.org>
parents: 5064
diff changeset
514 ,quoted-body error-info)
14f0dd1fabdb move test-harness to lisp/ directory so it gets byte-compiled
Ben Wing <ben@xemacs.org>
parents: 5064
diff changeset
515 (incf other-failures)
14f0dd1fabdb move test-harness to lisp/ directory so it gets byte-compiled
Ben Wing <ben@xemacs.org>
parents: 5064
diff changeset
516 (test-harness-unexpected-error-do-debug error-info))
14f0dd1fabdb move test-harness to lisp/ directory so it gets byte-compiled
Ben Wing <ben@xemacs.org>
parents: 5064
diff changeset
517 #'(lambda ()
14f0dd1fabdb move test-harness to lisp/ directory so it gets byte-compiled
Ben Wing <ben@xemacs.org>
parents: 5064
diff changeset
518 (setq trick-optimizer (progn ,@body))
14f0dd1fabdb move test-harness to lisp/ directory so it gets byte-compiled
Ben Wing <ben@xemacs.org>
parents: 5064
diff changeset
519 (if (string-match ,expected-message-regexp messages)
14f0dd1fabdb move test-harness to lisp/ directory so it gets byte-compiled
Ben Wing <ben@xemacs.org>
parents: 5064
diff changeset
520 (progn
14f0dd1fabdb move test-harness to lisp/ directory so it gets byte-compiled
Ben Wing <ben@xemacs.org>
parents: 5064
diff changeset
521 (Print-Pass
14f0dd1fabdb move test-harness to lisp/ directory so it gets byte-compiled
Ben Wing <ben@xemacs.org>
parents: 5064
diff changeset
522 "%S ==> value %S, message %S, matching %S, as expected"
14f0dd1fabdb move test-harness to lisp/ directory so it gets byte-compiled
Ben Wing <ben@xemacs.org>
parents: 5064
diff changeset
523 ,quoted-body trick-optimizer messages
14f0dd1fabdb move test-harness to lisp/ directory so it gets byte-compiled
Ben Wing <ben@xemacs.org>
parents: 5064
diff changeset
524 ',expected-message-regexp)
14f0dd1fabdb move test-harness to lisp/ directory so it gets byte-compiled
Ben Wing <ben@xemacs.org>
parents: 5064
diff changeset
525 (incf passes))
14f0dd1fabdb move test-harness to lisp/ directory so it gets byte-compiled
Ben Wing <ben@xemacs.org>
parents: 5064
diff changeset
526 (Print-Failure
14f0dd1fabdb move test-harness to lisp/ directory so it gets byte-compiled
Ben Wing <ben@xemacs.org>
parents: 5064
diff changeset
527 "%S ==> value %S, message %S, NOT matching expected %S"
14f0dd1fabdb move test-harness to lisp/ directory so it gets byte-compiled
Ben Wing <ben@xemacs.org>
parents: 5064
diff changeset
528 ,quoted-body trick-optimizer messages
14f0dd1fabdb move test-harness to lisp/ directory so it gets byte-compiled
Ben Wing <ben@xemacs.org>
parents: 5064
diff changeset
529 ',expected-message-regexp)
14f0dd1fabdb move test-harness to lisp/ directory so it gets byte-compiled
Ben Wing <ben@xemacs.org>
parents: 5064
diff changeset
530 (incf missing-message-failures)))))
14f0dd1fabdb move test-harness to lisp/ directory so it gets byte-compiled
Ben Wing <ben@xemacs.org>
parents: 5064
diff changeset
531 (ad-unadvise 'message)))))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
532
3472
43b4a54fbf66 [xemacs-hg @ 2006-06-24 14:30:36 by stephent]
stephent
parents: 3471
diff changeset
533 ;; #### Perhaps this should override `message' itself, too?
43b4a54fbf66 [xemacs-hg @ 2006-06-24 14:30:36 by stephent]
stephent
parents: 3471
diff changeset
534 (defmacro Silence-Message (&rest body)
4323
94509abd0ef0 Commit a forgotten chunk of 4d0f773d5e21.
Aidan Kehoe <kehoea@parhasard.net>
parents: 4199
diff changeset
535 `(flet ((append-message (&rest args) ())
94509abd0ef0 Commit a forgotten chunk of 4d0f773d5e21.
Aidan Kehoe <kehoea@parhasard.net>
parents: 4199
diff changeset
536 (clear-message (&rest args) ()))
94509abd0ef0 Commit a forgotten chunk of 4d0f773d5e21.
Aidan Kehoe <kehoea@parhasard.net>
parents: 4199
diff changeset
537 ,@body))
3472
43b4a54fbf66 [xemacs-hg @ 2006-06-24 14:30:36 by stephent]
stephent
parents: 3471
diff changeset
538
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
539 (defmacro Ignore-Ebola (&rest body)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
540 `(let ((debug-issue-ebola-notices -42)) ,@body))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
541
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
542 (defun Int-to-Marker (pos)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
543 (save-excursion
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
544 (set-buffer standard-output)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
545 (save-excursion
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
546 (goto-char pos)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
547 (point-marker))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
548
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
549 (princ "Testing Interpreted Lisp\n\n")
5040
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
550
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
551 (test-harness-error-wrap
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
552 "executing interpreted code"
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
553 "Test suite execution aborted."
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
554 (funcall (test-harness-read-from-buffer inbuffer)))
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
555
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
556 (princ "\nTesting Compiled Lisp\n\n")
5040
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
557
1758
90502933fb98 [xemacs-hg @ 2003-10-21 08:21:00 by stephent]
stephent
parents: 1751
diff changeset
558 (let (code
90502933fb98 [xemacs-hg @ 2003-10-21 08:21:00 by stephent]
stephent
parents: 1751
diff changeset
559 (test-harness-test-compiled t))
5040
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
560 (test-harness-error-wrap
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
561 "byte-compiling code" nil
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
562 (setq code
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
563 ;; our lisp code is often intentionally dubious,
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
564 ;; so throw away _all_ the byte compiler warnings.
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
565 (letf (((symbol-function 'byte-compile-warn)
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
566 'ignore))
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
567 (byte-compile (test-harness-read-from-buffer
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
568 inbuffer))))
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
569 )
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
570
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
571 (test-harness-error-wrap "executing byte-compiled code"
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
572 "Test suite execution aborted."
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
573 (if code (funcall code)))
3daf9fc57cd4 fixes to test harness to allow backtracing/debugging of failures
Ben Wing <ben@xemacs.org>
parents: 4962
diff changeset
574 )
826
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 446
diff changeset
575 (princ (format "\nSUMMARY for %s:\n" filename))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
576 (princ (format "\t%5d passes\n" passes))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
577 (princ (format "\t%5d assertion failures\n" assertion-failures))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
578 (princ (format "\t%5d errors that should have been generated, but weren't\n" no-error-failures))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
579 (princ (format "\t%5d wrong-error failures\n" wrong-error-failures))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
580 (princ (format "\t%5d missing-message failures\n" missing-message-failures))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
581 (princ (format "\t%5d other failures\n" other-failures))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
582 (let* ((total (+ passes
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
583 assertion-failures
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
584 no-error-failures
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
585 wrong-error-failures
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
586 missing-message-failures
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
587 other-failures))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
588 (basename (file-name-nondirectory filename))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
589 (summary-msg
4906
6ef8256a020a implement equalp in C, fix case-folding, add equal() method for keymaps
Ben Wing <ben@xemacs.org>
parents: 4891
diff changeset
590 (cond ((> unexpected-test-file-failures 0)
6ef8256a020a implement equalp in C, fix case-folding, add equal() method for keymaps
Ben Wing <ben@xemacs.org>
parents: 4891
diff changeset
591 (format test-harness-aborted-summary-template
6ef8256a020a implement equalp in C, fix case-folding, add equal() method for keymaps
Ben Wing <ben@xemacs.org>
parents: 4891
diff changeset
592 (concat basename ":") total))
6ef8256a020a implement equalp in C, fix case-folding, add equal() method for keymaps
Ben Wing <ben@xemacs.org>
parents: 4891
diff changeset
593 ((> total 0)
6ef8256a020a implement equalp in C, fix case-folding, add equal() method for keymaps
Ben Wing <ben@xemacs.org>
parents: 4891
diff changeset
594 (format test-harness-file-summary-template
6ef8256a020a implement equalp in C, fix case-folding, add equal() method for keymaps
Ben Wing <ben@xemacs.org>
parents: 4891
diff changeset
595 (concat basename ":")
6ef8256a020a implement equalp in C, fix case-folding, add equal() method for keymaps
Ben Wing <ben@xemacs.org>
parents: 4891
diff changeset
596 passes total (/ (* 100 passes) total)))
6ef8256a020a implement equalp in C, fix case-folding, add equal() method for keymaps
Ben Wing <ben@xemacs.org>
parents: 4891
diff changeset
597 (t
6ef8256a020a implement equalp in C, fix case-folding, add equal() method for keymaps
Ben Wing <ben@xemacs.org>
parents: 4891
diff changeset
598 (format test-harness-null-summary-template
6ef8256a020a implement equalp in C, fix case-folding, add equal() method for keymaps
Ben Wing <ben@xemacs.org>
parents: 4891
diff changeset
599 (concat basename ":")))))
973
ea6a06f7bf2c [xemacs-hg @ 2002-08-22 14:56:23 by stephent]
stephent
parents: 928
diff changeset
600 (reasons ""))
ea6a06f7bf2c [xemacs-hg @ 2002-08-22 14:56:23 by stephent]
stephent
parents: 928
diff changeset
601 (maphash (lambda (key value)
ea6a06f7bf2c [xemacs-hg @ 2002-08-22 14:56:23 by stephent]
stephent
parents: 928
diff changeset
602 (setq reasons
ea6a06f7bf2c [xemacs-hg @ 2002-08-22 14:56:23 by stephent]
stephent
parents: 928
diff changeset
603 (concat reasons
1095
0d33547d9ed3 [xemacs-hg @ 2002-11-11 15:39:03 by stephent]
stephent
parents: 973
diff changeset
604 (format "\n %d tests skipped because %s."
973
ea6a06f7bf2c [xemacs-hg @ 2002-08-22 14:56:23 by stephent]
stephent
parents: 928
diff changeset
605 value key))))
ea6a06f7bf2c [xemacs-hg @ 2002-08-22 14:56:23 by stephent]
stephent
parents: 928
diff changeset
606 skipped-test-reasons)
ea6a06f7bf2c [xemacs-hg @ 2002-08-22 14:56:23 by stephent]
stephent
parents: 928
diff changeset
607 (when (> (length reasons) 1)
ea6a06f7bf2c [xemacs-hg @ 2002-08-22 14:56:23 by stephent]
stephent
parents: 928
diff changeset
608 (setq summary-msg (concat summary-msg reasons "
4415
bceb3e285ae7 case-tests.el: fix it on non-DEBUG_XEMACS; save standard-case-table, use it
Aidan Kehoe <kehoea@parhasard.net>
parents: 4366
diff changeset
609 It may be that XEmacs cannot find your installed packages. Set
bceb3e285ae7 case-tests.el: fix it on non-DEBUG_XEMACS; save standard-case-table, use it
Aidan Kehoe <kehoea@parhasard.net>
parents: 4366
diff changeset
610 EMACSPACKAGEPATH to the package hierarchy root or configure with
bceb3e285ae7 case-tests.el: fix it on non-DEBUG_XEMACS; save standard-case-table, use it
Aidan Kehoe <kehoea@parhasard.net>
parents: 4366
diff changeset
611 --package-path to enable the skipped tests.")))
1719
d9c4b6e360d8 [xemacs-hg @ 2003-09-27 06:51:16 by stephent]
stephent
parents: 1717
diff changeset
612 (setq test-harness-file-results-alist
d9c4b6e360d8 [xemacs-hg @ 2003-09-27 06:51:16 by stephent]
stephent
parents: 1717
diff changeset
613 (cons (list filename passes total)
d9c4b6e360d8 [xemacs-hg @ 2003-09-27 06:51:16 by stephent]
stephent
parents: 1717
diff changeset
614 test-harness-file-results-alist))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
615 (message "%s" summary-msg))
3471
3b1f8220a65e [xemacs-hg @ 2006-06-24 13:50:19 by stephent]
stephent
parents: 2056
diff changeset
616 (when (> unexpected-test-file-failures 0)
3b1f8220a65e [xemacs-hg @ 2006-06-24 13:50:19 by stephent]
stephent
parents: 2056
diff changeset
617 (setq unexpected-test-suite-failure-files
3b1f8220a65e [xemacs-hg @ 2006-06-24 13:50:19 by stephent]
stephent
parents: 2056
diff changeset
618 (cons filename unexpected-test-suite-failure-files))
3b1f8220a65e [xemacs-hg @ 2006-06-24 13:50:19 by stephent]
stephent
parents: 2056
diff changeset
619 (setq unexpected-test-suite-failures
3b1f8220a65e [xemacs-hg @ 2006-06-24 13:50:19 by stephent]
stephent
parents: 2056
diff changeset
620 (+ unexpected-test-suite-failures unexpected-test-file-failures))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
621 (message "Test suite execution failed unexpectedly."))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
622 (fmakunbound 'Assert)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
623 (fmakunbound 'Check-Error)
863
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 826
diff changeset
624 (fmakunbound 'Check-Message)
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 826
diff changeset
625 (fmakunbound 'Check-Error-Message)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
626 (fmakunbound 'Ignore-Ebola)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
627 (fmakunbound 'Int-to-Marker)
1719
d9c4b6e360d8 [xemacs-hg @ 2003-09-27 06:51:16 by stephent]
stephent
parents: 1717
diff changeset
628 (and noninteractive
d9c4b6e360d8 [xemacs-hg @ 2003-09-27 06:51:16 by stephent]
stephent
parents: 1717
diff changeset
629 (message "%s" (buffer-substring-no-properties
1751
5a9a66ba67ca [xemacs-hg @ 2003-10-15 08:56:35 by stephent]
stephent
parents: 1722
diff changeset
630 nil nil "*Test-Log*")))
5a9a66ba67ca [xemacs-hg @ 2003-10-15 08:56:35 by stephent]
stephent
parents: 1722
diff changeset
631 )))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
632
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
633 (defvar test-harness-results-point-max nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
634 (defmacro displaying-emacs-test-results (&rest body)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
635 `(let ((test-harness-results-point-max test-harness-results-point-max))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
636 ;; Log the file name.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
637 (test-harness-log-file)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
638 ;; Record how much is logged now.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
639 ;; We will display the log buffer if anything more is logged
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
640 ;; before the end of BODY.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
641 (or test-harness-results-point-max
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
642 (save-excursion
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
643 (set-buffer (get-buffer-create "*Test-Log*"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
644 (setq test-harness-results-point-max (point-max))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
645 (unwind-protect
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
646 (condition-case error-info
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
647 (progn ,@body)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
648 (error
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
649 (test-harness-report-error error-info)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
650 (save-excursion
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
651 ;; If there were compilation warnings, display them.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
652 (set-buffer "*Test-Log*")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
653 (if (= test-harness-results-point-max (point-max))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
654 nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
655 (if temp-buffer-show-function
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
656 (let ((show-buffer (get-buffer-create "*Test-Log-Show*")))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
657 (save-excursion
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
658 (set-buffer show-buffer)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
659 (setq buffer-read-only nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
660 (erase-buffer))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
661 (copy-to-buffer show-buffer
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
662 (save-excursion
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
663 (goto-char test-harness-results-point-max)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
664 (forward-line -1)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
665 (point))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
666 (point-max))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
667 (funcall temp-buffer-show-function show-buffer))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
668 (select-window
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
669 (prog1 (selected-window)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
670 (select-window (display-buffer (current-buffer)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
671 (goto-char test-harness-results-point-max)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
672 (recenter 1)))))))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
673
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
674 (defun batch-test-emacs-1 (file)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
675 (condition-case error-info
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
676 (progn (test-emacs-test-file file) t)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
677 (error
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
678 (princ ">>Error occurred processing ")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
679 (princ file)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
680 (princ ": ")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
681 (display-error error-info nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
682 (terpri)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
683 nil)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
684
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
685 (defun batch-test-emacs ()
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
686 "Run `test-harness' on the files remaining on the command line.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
687 Use this from the command line, with `-batch';
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
688 it won't work in an interactive Emacs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
689 Each file is processed even if an error occurred previously.
5069
14f0dd1fabdb move test-harness to lisp/ directory so it gets byte-compiled
Ben Wing <ben@xemacs.org>
parents: 5064
diff changeset
690 A directory can be given as well, and all files will be processed.
4948
8b230c53075b fix some tests in `make check', also add our own file-tests
Ben Wing <ben@xemacs.org>
parents: 4856
diff changeset
691 For example, invoke \"xemacs -batch -f batch-test-emacs tests\""
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
692 ;; command-line-args-left is what is left of the command line (from
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
693 ;; startup.el)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
694 (defvar command-line-args-left) ;Avoid 'free variable' warning
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
695 (defvar debug-issue-ebola-notices)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
696 (if (not noninteractive)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
697 (error "`batch-test-emacs' is to be used only with -batch"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
698 (let ((error nil))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
699 (dolist (file command-line-args-left)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
700 (if (file-directory-p file)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
701 (dolist (file-in-dir (directory-files file t))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
702 (when (and (string-match emacs-lisp-file-regexp file-in-dir)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
703 (not (or (auto-save-file-name-p file-in-dir)
5069
14f0dd1fabdb move test-harness to lisp/ directory so it gets byte-compiled
Ben Wing <ben@xemacs.org>
parents: 5064
diff changeset
704 (backup-file-name-p file-in-dir))))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
705 (or (batch-test-emacs-1 file-in-dir)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
706 (setq error t))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
707 (or (batch-test-emacs-1 file)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
708 (setq error t))))
1719
d9c4b6e360d8 [xemacs-hg @ 2003-09-27 06:51:16 by stephent]
stephent
parents: 1717
diff changeset
709 (let ((namelen 0)
d9c4b6e360d8 [xemacs-hg @ 2003-09-27 06:51:16 by stephent]
stephent
parents: 1717
diff changeset
710 (succlen 0)
d9c4b6e360d8 [xemacs-hg @ 2003-09-27 06:51:16 by stephent]
stephent
parents: 1717
diff changeset
711 (testlen 0)
d9c4b6e360d8 [xemacs-hg @ 2003-09-27 06:51:16 by stephent]
stephent
parents: 1717
diff changeset
712 (results test-harness-file-results-alist))
d9c4b6e360d8 [xemacs-hg @ 2003-09-27 06:51:16 by stephent]
stephent
parents: 1717
diff changeset
713 ;; compute maximum lengths of variable components of report
d9c4b6e360d8 [xemacs-hg @ 2003-09-27 06:51:16 by stephent]
stephent
parents: 1717
diff changeset
714 ;; probably should just use (length "byte-compiler-tests.el")
d9c4b6e360d8 [xemacs-hg @ 2003-09-27 06:51:16 by stephent]
stephent
parents: 1717
diff changeset
715 ;; and 5-place sizes -- this will also work for the file-by-file
d9c4b6e360d8 [xemacs-hg @ 2003-09-27 06:51:16 by stephent]
stephent
parents: 1717
diff changeset
716 ;; printing when Adrian's kludge gets reverted
d9c4b6e360d8 [xemacs-hg @ 2003-09-27 06:51:16 by stephent]
stephent
parents: 1717
diff changeset
717 (flet ((print-width (i)
d9c4b6e360d8 [xemacs-hg @ 2003-09-27 06:51:16 by stephent]
stephent
parents: 1717
diff changeset
718 (let ((x 10) (y 1))
d9c4b6e360d8 [xemacs-hg @ 2003-09-27 06:51:16 by stephent]
stephent
parents: 1717
diff changeset
719 (while (>= i x)
d9c4b6e360d8 [xemacs-hg @ 2003-09-27 06:51:16 by stephent]
stephent
parents: 1717
diff changeset
720 (setq x (* 10 x) y (1+ y)))
d9c4b6e360d8 [xemacs-hg @ 2003-09-27 06:51:16 by stephent]
stephent
parents: 1717
diff changeset
721 y)))
d9c4b6e360d8 [xemacs-hg @ 2003-09-27 06:51:16 by stephent]
stephent
parents: 1717
diff changeset
722 (while results
d9c4b6e360d8 [xemacs-hg @ 2003-09-27 06:51:16 by stephent]
stephent
parents: 1717
diff changeset
723 (let* ((head (car results))
d9c4b6e360d8 [xemacs-hg @ 2003-09-27 06:51:16 by stephent]
stephent
parents: 1717
diff changeset
724 (nn (length (file-name-nondirectory (first head))))
d9c4b6e360d8 [xemacs-hg @ 2003-09-27 06:51:16 by stephent]
stephent
parents: 1717
diff changeset
725 (ss (print-width (second head)))
d9c4b6e360d8 [xemacs-hg @ 2003-09-27 06:51:16 by stephent]
stephent
parents: 1717
diff changeset
726 (tt (print-width (third head))))
d9c4b6e360d8 [xemacs-hg @ 2003-09-27 06:51:16 by stephent]
stephent
parents: 1717
diff changeset
727 (when (> nn namelen) (setq namelen nn))
d9c4b6e360d8 [xemacs-hg @ 2003-09-27 06:51:16 by stephent]
stephent
parents: 1717
diff changeset
728 (when (> ss succlen) (setq succlen ss))
d9c4b6e360d8 [xemacs-hg @ 2003-09-27 06:51:16 by stephent]
stephent
parents: 1717
diff changeset
729 (when (> tt testlen) (setq testlen tt)))
d9c4b6e360d8 [xemacs-hg @ 2003-09-27 06:51:16 by stephent]
stephent
parents: 1717
diff changeset
730 (setq results (cdr results))))
d9c4b6e360d8 [xemacs-hg @ 2003-09-27 06:51:16 by stephent]
stephent
parents: 1717
diff changeset
731 ;; create format and print
1751
5a9a66ba67ca [xemacs-hg @ 2003-10-15 08:56:35 by stephent]
stephent
parents: 1722
diff changeset
732 (let ((results (reverse test-harness-file-results-alist)))
1719
d9c4b6e360d8 [xemacs-hg @ 2003-09-27 06:51:16 by stephent]
stephent
parents: 1717
diff changeset
733 (while results
d9c4b6e360d8 [xemacs-hg @ 2003-09-27 06:51:16 by stephent]
stephent
parents: 1717
diff changeset
734 (let* ((head (car results))
1751
5a9a66ba67ca [xemacs-hg @ 2003-10-15 08:56:35 by stephent]
stephent
parents: 1722
diff changeset
735 (basename (file-name-nondirectory (first head)))
1719
d9c4b6e360d8 [xemacs-hg @ 2003-09-27 06:51:16 by stephent]
stephent
parents: 1717
diff changeset
736 (nsucc (second head))
d9c4b6e360d8 [xemacs-hg @ 2003-09-27 06:51:16 by stephent]
stephent
parents: 1717
diff changeset
737 (ntest (third head)))
4906
6ef8256a020a implement equalp in C, fix case-folding, add equal() method for keymaps
Ben Wing <ben@xemacs.org>
parents: 4891
diff changeset
738 (cond ((member (first head) unexpected-test-suite-failure-files)
6ef8256a020a implement equalp in C, fix case-folding, add equal() method for keymaps
Ben Wing <ben@xemacs.org>
parents: 4891
diff changeset
739 (message test-harness-aborted-summary-template
6ef8256a020a implement equalp in C, fix case-folding, add equal() method for keymaps
Ben Wing <ben@xemacs.org>
parents: 4891
diff changeset
740 (concat basename ":")
6ef8256a020a implement equalp in C, fix case-folding, add equal() method for keymaps
Ben Wing <ben@xemacs.org>
parents: 4891
diff changeset
741 ntest))
6ef8256a020a implement equalp in C, fix case-folding, add equal() method for keymaps
Ben Wing <ben@xemacs.org>
parents: 4891
diff changeset
742 ((> ntest 0)
6ef8256a020a implement equalp in C, fix case-folding, add equal() method for keymaps
Ben Wing <ben@xemacs.org>
parents: 4891
diff changeset
743 (message test-harness-file-summary-template
6ef8256a020a implement equalp in C, fix case-folding, add equal() method for keymaps
Ben Wing <ben@xemacs.org>
parents: 4891
diff changeset
744 (concat basename ":")
6ef8256a020a implement equalp in C, fix case-folding, add equal() method for keymaps
Ben Wing <ben@xemacs.org>
parents: 4891
diff changeset
745 nsucc
6ef8256a020a implement equalp in C, fix case-folding, add equal() method for keymaps
Ben Wing <ben@xemacs.org>
parents: 4891
diff changeset
746 ntest
6ef8256a020a implement equalp in C, fix case-folding, add equal() method for keymaps
Ben Wing <ben@xemacs.org>
parents: 4891
diff changeset
747 (/ (* 100 nsucc) ntest)))
6ef8256a020a implement equalp in C, fix case-folding, add equal() method for keymaps
Ben Wing <ben@xemacs.org>
parents: 4891
diff changeset
748 (t
6ef8256a020a implement equalp in C, fix case-folding, add equal() method for keymaps
Ben Wing <ben@xemacs.org>
parents: 4891
diff changeset
749 (message test-harness-null-summary-template
6ef8256a020a implement equalp in C, fix case-folding, add equal() method for keymaps
Ben Wing <ben@xemacs.org>
parents: 4891
diff changeset
750 (concat basename ":"))))
3471
3b1f8220a65e [xemacs-hg @ 2006-06-24 13:50:19 by stephent]
stephent
parents: 2056
diff changeset
751 (setq results (cdr results)))))
3b1f8220a65e [xemacs-hg @ 2006-06-24 13:50:19 by stephent]
stephent
parents: 2056
diff changeset
752 (when (> unexpected-test-suite-failures 0)
3b1f8220a65e [xemacs-hg @ 2006-06-24 13:50:19 by stephent]
stephent
parents: 2056
diff changeset
753 (message "\n***** There %s %d unexpected test suite %s in %s:"
3b1f8220a65e [xemacs-hg @ 2006-06-24 13:50:19 by stephent]
stephent
parents: 2056
diff changeset
754 (if (= unexpected-test-suite-failures 1) "was" "were")
3b1f8220a65e [xemacs-hg @ 2006-06-24 13:50:19 by stephent]
stephent
parents: 2056
diff changeset
755 unexpected-test-suite-failures
3b1f8220a65e [xemacs-hg @ 2006-06-24 13:50:19 by stephent]
stephent
parents: 2056
diff changeset
756 (if (= unexpected-test-suite-failures 1) "failure" "failures")
5366
f00192e1cd49 Examining the result of #'length: `eql', not `=', it's better style & cheaper
Aidan Kehoe <kehoea@parhasard.net>
parents: 5274
diff changeset
757 (if (eql (length unexpected-test-suite-failure-files) 1)
3471
3b1f8220a65e [xemacs-hg @ 2006-06-24 13:50:19 by stephent]
stephent
parents: 2056
diff changeset
758 "file"
3b1f8220a65e [xemacs-hg @ 2006-06-24 13:50:19 by stephent]
stephent
parents: 2056
diff changeset
759 "files"))
3b1f8220a65e [xemacs-hg @ 2006-06-24 13:50:19 by stephent]
stephent
parents: 2056
diff changeset
760 (while unexpected-test-suite-failure-files
3b1f8220a65e [xemacs-hg @ 2006-06-24 13:50:19 by stephent]
stephent
parents: 2056
diff changeset
761 (let ((line (pop unexpected-test-suite-failure-files)))
3b1f8220a65e [xemacs-hg @ 2006-06-24 13:50:19 by stephent]
stephent
parents: 2056
diff changeset
762 (while (and (< (length line) 61)
3b1f8220a65e [xemacs-hg @ 2006-06-24 13:50:19 by stephent]
stephent
parents: 2056
diff changeset
763 unexpected-test-suite-failure-files)
3b1f8220a65e [xemacs-hg @ 2006-06-24 13:50:19 by stephent]
stephent
parents: 2056
diff changeset
764 (setq line
3b1f8220a65e [xemacs-hg @ 2006-06-24 13:50:19 by stephent]
stephent
parents: 2056
diff changeset
765 (concat line " "
3b1f8220a65e [xemacs-hg @ 2006-06-24 13:50:19 by stephent]
stephent
parents: 2056
diff changeset
766 (pop unexpected-test-suite-failure-files))))
3b1f8220a65e [xemacs-hg @ 2006-06-24 13:50:19 by stephent]
stephent
parents: 2056
diff changeset
767 (message line)))))
1719
d9c4b6e360d8 [xemacs-hg @ 2003-09-27 06:51:16 by stephent]
stephent
parents: 1717
diff changeset
768 (message "\nDone")
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
769 (kill-emacs (if error 1 0))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
770
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
771 (provide 'test-harness)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
772
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
773 ;;; test-harness.el ends here