Mercurial > hg > xemacs-beta
annotate tests/automated/os-tests.el @ 5886:c96000075e49
Be more careful about C integer overflow, #'parse-integer.
src/ChangeLog addition:
2015-04-08 Aidan Kehoe <kehoea@parhasard.net>
* data.c (parse_integer):
Fix a bug in my detecting a C overflow here.
tests/ChangeLog addition:
2015-04-08 Aidan Kehoe <kehoea@parhasard.net>
* automated/lisp-tests.el:
Add a couple of tests for #'parse-integer to check for a bug just
fixed.
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Wed, 08 Apr 2015 21:03:18 +0100 |
parents | 071b810ceb18 |
children | c608d4b0b75e |
rev | line source |
---|---|
2356 | 1 ;;; os-tests.el --- test support for OS interaction |
2 | |
3 ;; Copyright (C) 2004 Free Software Foundation | |
4 | |
5 ;; Author: Stephen J. Turnbull <stephen@xemacs.org> | |
6 ;; Maintainer: Stephen J. Turnbull <stephen@xemacs.org> | |
7 ;; Created: 2004 October 28 | |
8 ;; Keywords: tests, process support | |
9 | |
10 ;; This file is part of XEmacs. | |
11 | |
5402
308d34e9f07d
Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents:
4199
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:
4199
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:
4199
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:
4199
diff
changeset
|
15 ;; option) any later version. |
2356 | 16 |
5402
308d34e9f07d
Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents:
4199
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:
4199
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:
4199
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:
4199
diff
changeset
|
20 ;; for more details. |
2356 | 21 |
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:
4199
diff
changeset
|
23 ;; along with XEmacs. If not, see <http://www.gnu.org/licenses/>. |
2356 | 24 |
25 ;;; Synched up with: Not in FSF. | |
26 | |
27 ;;; Commentary: | |
28 | |
29 ;; Test OS support. Processes, environment variables, etc. | |
30 ;; See test-harness.el for instructions on how to run these tests. | |
31 | |
32 ;; call-process-region bug reported by Katsumi Yamaoka on 2004-10-26 | |
33 ;; in <b9yvfcyuscf.fsf@jpl.org>, who suggested the basic test scheme | |
34 ;; in <b9yoeipvwn0.fsf@jpl.org>. | |
35 | |
36 ;; tac works by lines, unfortunately | |
4199 | 37 ;; #### The contortions around `executable-find' gag me, but I don't have time |
38 ;; to deal today. If we have `executable-find', we should use its value! | |
2356 | 39 (let* ((original-string "a\nb\nc\nd\n") |
4199 | 40 ;; `executable-find' is in a package and may be unavailable. |
41 (tac-cases (if (and (fboundp 'executable-find) (executable-find "tac")) | |
2356 | 42 '((1 . "c\nb\na\nd\n") |
43 (3 . "a\nc\nb\nd\n") | |
44 (5 . "a\nc\nb\nd\n") | |
45 (7 . "a\nc\nb\nd\n") | |
46 (9 . "a\nd\nc\nb\n")) | |
47 nil)) | |
4199 | 48 (cat-cases (if (and (fboundp 'executable-find) (executable-find "cat")) |
2356 | 49 '((1 . "b\nc\na\nd\n") |
50 (3 . "a\nb\nc\nd\n") | |
51 (5 . "a\nb\nc\nd\n") | |
52 (7 . "a\nb\nc\nd\n") | |
53 (9 . "a\nd\nb\nc\n")) | |
54 nil)) | |
55 cases case) | |
56 (with-temp-buffer | |
57 (Skip-Test-Unless tac-cases | |
58 "tac executable not found" | |
59 "Tests of call-process-region with region deleted after inserting | |
60 tac process output." | |
61 (setq cases tac-cases) | |
62 (while cases | |
63 (setq case (car cases) | |
64 cases (cdr cases)) | |
5576
071b810ceb18
Declare labels as line where appropriate; use #'labels, not #'flet, tests.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5540
diff
changeset
|
65 (labels ((do-test (pos result) |
071b810ceb18
Declare labels as line where appropriate; use #'labels, not #'flet, tests.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5540
diff
changeset
|
66 (erase-buffer) |
071b810ceb18
Declare labels as line where appropriate; use #'labels, not #'flet, tests.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5540
diff
changeset
|
67 (insert original-string) |
071b810ceb18
Declare labels as line where appropriate; use #'labels, not #'flet, tests.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5540
diff
changeset
|
68 (goto-char pos) |
071b810ceb18
Declare labels as line where appropriate; use #'labels, not #'flet, tests.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5540
diff
changeset
|
69 (call-process-region 3 7 "tac" t t) |
071b810ceb18
Declare labels as line where appropriate; use #'labels, not #'flet, tests.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5540
diff
changeset
|
70 (goto-char (point-min)) |
071b810ceb18
Declare labels as line where appropriate; use #'labels, not #'flet, tests.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5540
diff
changeset
|
71 (Assert (looking-at result)))) |
2356 | 72 (do-test (car case) (cdr case))))) |
73 ;; if you're in that much of a hurry you can blow cat off | |
74 ;; if you've done tac, but I'm not going to bother | |
75 (Skip-Test-Unless cat-cases | |
76 "cat executable not found" | |
77 "Tests of call-process-region with region deleted after inserting | |
78 cat process output." | |
79 (setq cases cat-cases) | |
80 (while cases | |
81 (setq case (car cases) | |
82 cases (cdr cases)) | |
5576
071b810ceb18
Declare labels as line where appropriate; use #'labels, not #'flet, tests.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5540
diff
changeset
|
83 (labels ((do-test (pos result) |
071b810ceb18
Declare labels as line where appropriate; use #'labels, not #'flet, tests.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5540
diff
changeset
|
84 (erase-buffer) |
071b810ceb18
Declare labels as line where appropriate; use #'labels, not #'flet, tests.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5540
diff
changeset
|
85 (insert original-string) |
071b810ceb18
Declare labels as line where appropriate; use #'labels, not #'flet, tests.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5540
diff
changeset
|
86 (goto-char pos) |
071b810ceb18
Declare labels as line where appropriate; use #'labels, not #'flet, tests.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5540
diff
changeset
|
87 (call-process-region 3 7 "cat" t t) |
071b810ceb18
Declare labels as line where appropriate; use #'labels, not #'flet, tests.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5540
diff
changeset
|
88 (goto-char (point-min)) |
071b810ceb18
Declare labels as line where appropriate; use #'labels, not #'flet, tests.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5540
diff
changeset
|
89 (Assert (looking-at result)))) |
2356 | 90 (do-test (car case) (cdr case))))))) |
91 | |
5540
eed303fac325
Should tests for substitute-in-file-name be in syntax-tests?
Stephen J. Turnbull <stephen@xemacs.org>
parents:
5402
diff
changeset
|
92 (loop |
eed303fac325
Should tests for substitute-in-file-name be in syntax-tests?
Stephen J. Turnbull <stephen@xemacs.org>
parents:
5402
diff
changeset
|
93 with envvar-not-existing = (symbol-name (gensym "whatever")) |
eed303fac325
Should tests for substitute-in-file-name be in syntax-tests?
Stephen J. Turnbull <stephen@xemacs.org>
parents:
5402
diff
changeset
|
94 with envvar-existing = (symbol-name (gensym "whatever")) |
eed303fac325
Should tests for substitute-in-file-name be in syntax-tests?
Stephen J. Turnbull <stephen@xemacs.org>
parents:
5402
diff
changeset
|
95 with envvar-existing-val = (make-string #x10000 ?\xe1) |
eed303fac325
Should tests for substitute-in-file-name be in syntax-tests?
Stephen J. Turnbull <stephen@xemacs.org>
parents:
5402
diff
changeset
|
96 with examples = |
eed303fac325
Should tests for substitute-in-file-name be in syntax-tests?
Stephen J. Turnbull <stephen@xemacs.org>
parents:
5402
diff
changeset
|
97 (list (list (format "%chome%cwhatever%c%chi-there%c$%s" |
eed303fac325
Should tests for substitute-in-file-name be in syntax-tests?
Stephen J. Turnbull <stephen@xemacs.org>
parents:
5402
diff
changeset
|
98 directory-sep-char |
eed303fac325
Should tests for substitute-in-file-name be in syntax-tests?
Stephen J. Turnbull <stephen@xemacs.org>
parents:
5402
diff
changeset
|
99 directory-sep-char |
eed303fac325
Should tests for substitute-in-file-name be in syntax-tests?
Stephen J. Turnbull <stephen@xemacs.org>
parents:
5402
diff
changeset
|
100 directory-sep-char |
eed303fac325
Should tests for substitute-in-file-name be in syntax-tests?
Stephen J. Turnbull <stephen@xemacs.org>
parents:
5402
diff
changeset
|
101 directory-sep-char |
eed303fac325
Should tests for substitute-in-file-name be in syntax-tests?
Stephen J. Turnbull <stephen@xemacs.org>
parents:
5402
diff
changeset
|
102 directory-sep-char |
eed303fac325
Should tests for substitute-in-file-name be in syntax-tests?
Stephen J. Turnbull <stephen@xemacs.org>
parents:
5402
diff
changeset
|
103 envvar-existing) |
eed303fac325
Should tests for substitute-in-file-name be in syntax-tests?
Stephen J. Turnbull <stephen@xemacs.org>
parents:
5402
diff
changeset
|
104 (format "%chi-there%c%s" |
eed303fac325
Should tests for substitute-in-file-name be in syntax-tests?
Stephen J. Turnbull <stephen@xemacs.org>
parents:
5402
diff
changeset
|
105 directory-sep-char |
eed303fac325
Should tests for substitute-in-file-name be in syntax-tests?
Stephen J. Turnbull <stephen@xemacs.org>
parents:
5402
diff
changeset
|
106 directory-sep-char |
eed303fac325
Should tests for substitute-in-file-name be in syntax-tests?
Stephen J. Turnbull <stephen@xemacs.org>
parents:
5402
diff
changeset
|
107 envvar-existing-val)) |
eed303fac325
Should tests for substitute-in-file-name be in syntax-tests?
Stephen J. Turnbull <stephen@xemacs.org>
parents:
5402
diff
changeset
|
108 (if (memq system-type '(windows-nt cygwin32)) |
eed303fac325
Should tests for substitute-in-file-name be in syntax-tests?
Stephen J. Turnbull <stephen@xemacs.org>
parents:
5402
diff
changeset
|
109 '("//network-path/c$" "//network-path/c$") |
eed303fac325
Should tests for substitute-in-file-name be in syntax-tests?
Stephen J. Turnbull <stephen@xemacs.org>
parents:
5402
diff
changeset
|
110 '("/network-path/c$" "/network-path/c$")) |
eed303fac325
Should tests for substitute-in-file-name be in syntax-tests?
Stephen J. Turnbull <stephen@xemacs.org>
parents:
5402
diff
changeset
|
111 (list (format "/home/whoever/$%s" envvar-not-existing) |
eed303fac325
Should tests for substitute-in-file-name be in syntax-tests?
Stephen J. Turnbull <stephen@xemacs.org>
parents:
5402
diff
changeset
|
112 (format "/home/whoever/$%s" envvar-not-existing)) |
eed303fac325
Should tests for substitute-in-file-name be in syntax-tests?
Stephen J. Turnbull <stephen@xemacs.org>
parents:
5402
diff
changeset
|
113 (list (format "/home/whoever/$%s" envvar-existing) |
eed303fac325
Should tests for substitute-in-file-name be in syntax-tests?
Stephen J. Turnbull <stephen@xemacs.org>
parents:
5402
diff
changeset
|
114 (format "/home/whoever/%s" envvar-existing-val)) |
eed303fac325
Should tests for substitute-in-file-name be in syntax-tests?
Stephen J. Turnbull <stephen@xemacs.org>
parents:
5402
diff
changeset
|
115 (list (format "/home/whoever/${%s}" envvar-existing) |
eed303fac325
Should tests for substitute-in-file-name be in syntax-tests?
Stephen J. Turnbull <stephen@xemacs.org>
parents:
5402
diff
changeset
|
116 (format "/home/whoever/%s" envvar-existing-val)) |
eed303fac325
Should tests for substitute-in-file-name be in syntax-tests?
Stephen J. Turnbull <stephen@xemacs.org>
parents:
5402
diff
changeset
|
117 (list (format "/home/whoever/${%s}" envvar-not-existing) |
eed303fac325
Should tests for substitute-in-file-name be in syntax-tests?
Stephen J. Turnbull <stephen@xemacs.org>
parents:
5402
diff
changeset
|
118 (format "/home/whoever/${%s}" envvar-not-existing))) |
eed303fac325
Should tests for substitute-in-file-name be in syntax-tests?
Stephen J. Turnbull <stephen@xemacs.org>
parents:
5402
diff
changeset
|
119 initially (progn (setenv envvar-not-existing nil t) |
eed303fac325
Should tests for substitute-in-file-name be in syntax-tests?
Stephen J. Turnbull <stephen@xemacs.org>
parents:
5402
diff
changeset
|
120 (setenv envvar-existing envvar-existing-val)) |
eed303fac325
Should tests for substitute-in-file-name be in syntax-tests?
Stephen J. Turnbull <stephen@xemacs.org>
parents:
5402
diff
changeset
|
121 for (pre post) |
eed303fac325
Should tests for substitute-in-file-name be in syntax-tests?
Stephen J. Turnbull <stephen@xemacs.org>
parents:
5402
diff
changeset
|
122 in examples |
eed303fac325
Should tests for substitute-in-file-name be in syntax-tests?
Stephen J. Turnbull <stephen@xemacs.org>
parents:
5402
diff
changeset
|
123 do |
eed303fac325
Should tests for substitute-in-file-name be in syntax-tests?
Stephen J. Turnbull <stephen@xemacs.org>
parents:
5402
diff
changeset
|
124 (Assert (string= post (substitute-in-file-name pre)))) |
eed303fac325
Should tests for substitute-in-file-name be in syntax-tests?
Stephen J. Turnbull <stephen@xemacs.org>
parents:
5402
diff
changeset
|
125 |
2356 | 126 ;;; end of os-tests.el |