Mercurial > emacs
view lisp/emacs-lisp/tcover-unsafep.el @ 99602:c94ec53df9d8
* net/ange-ftp.el (ange-ftp-multi-msgs, ange-ftp-good-msgs)
(ange-ftp-try-passive-mode, ange-ftp-data-buffer-name)
(ange-ftp-account-hashtable, ange-ftp-ls-cache-lsargs)
(ange-ftp-ls-cache-file, ange-ftp-ls-cache-res, ange-ftp-get-user)
(ange-ftp-ftp-name-component, ange-ftp-kill-ftp-process)
(ange-ftp-quote-string, ange-ftp-process-handle-line)
(ange-ftp-start-process, ange-ftp-send-cmd, ange-ftp-add-dumb-unix-host)
(ange-ftp-before-parse-ls-hook, ange-ftp-after-parse-ls-hook)
(ange-ftp-ls, ange-ftp-add-dl-dir, ange-ftp-get-file-entry)
(ange-ftp-set-binary-mode, ange-ftp-set-ascii-mode, ange-ftp-get-pwd)
(ange-ftp-file-name-as-directory-alist, ange-ftp-reread-dir)
(ange-ftp-vms-filename-regexp, ange-ftp-bs2000-fix-name-regexp-reverse)
(ange-ftp-bs2000-fix-name-regexp): Fix typos in docstrings.
(ange-ftp-name-format, ange-ftp-gateway-fatal-msgs)
(ange-ftp-xfer-size-msgs, ange-ftp-tmp-name-template)
(ange-ftp-netrc-filename, ange-ftp-disable-netrc-security-check)
(ange-ftp-default-user, ange-ftp-default-password)
(ange-ftp-default-account, ange-ftp-netrc-default-password)
(ange-ftp-netrc-default-account, ange-ftp-dumb-unix-host-regexp)
(ange-ftp-binary-file-name-regexp, ange-ftp-gateway-host)
(ange-ftp-gateway-prompt-pattern, ange-ftp-smart-gateway-port)
(ange-ftp-send-hash, ange-ftp-binary-hash-mark-size)
(ange-ftp-ascii-hash-mark-size, ange-ftp-process-verbose)
(ange-ftp-ftp-program-name, ange-ftp-gateway-ftp-program-name)
(ange-ftp-ftp-program-args, ange-ftp-nslookup-program)
(ange-ftp-make-backup-files, ange-ftp-retry-time)
(ange-ftp-bs2000-special-prefix): Remove * from defcustom docstrings.
(ange-ftp-skip-msgs, ange-ftp-potential-error-msgs)
(ange-ftp-gateway-tmp-name-template)
(ange-ftp-generate-anonymous-password, ange-ftp-local-host-regexp)
(ange-ftp-gateway-program-interactive, ange-ftp-smart-gateway)
(ange-ftp-raw-login): Remove * from defcustom docstrings; fix typos.
(ange-ftp-fatal-msgs): Remove * from defcustom docstring; doc fix.
(ange-ftp-gateway-program): Remove * from docstring and reflow.
(ange-ftp-hash-entry-exists-p, ange-ftp-hash-table-keys)
(ange-ftp-raw-send-cmd, ange-ftp-get-files, ange-ftp-canonize-filename)
(ange-ftp-file-name-as-directory, ange-ftp-directory-file-name):
(ange-ftp-copy-files-async, ange-ftp-rename-remote-to-remote):
(ange-ftp-rename-local-to-remote): Doc fixes.
(ange-ftp-set-xfer-size, ange-ftp-call-cont, ange-ftp-process-filter):
Use `when', `unless'.
(ange-ftp-set-passwd): Rename arg PASSWD to PASSWORD.
(ange-ftp-process-handle-hash): Rename arg STR to STRING.
(ange-ftp-nslookup-host): Rename arg HOST to HOSTNAME.
(ange-ftp-smart-login): Rename arg PASS to PASSWORD.
(ange-ftp-normal-login): Rename arg PASS to PASSWORD. Fix typo.
(ange-ftp-process-sentinel): Use `when'. Fix typo.
(ange-ftp-gwp-start): Use `let', not `let*'; use `when'. Fix typo.
(ange-ftp-fix-name-func-alist, ange-ftp-fix-dir-name-func-alist)
(ange-ftp-parse-list-func-alist, ange-ftp-add-file-entry-alist)
(ange-ftp-delete-file-entry-alist): Fix typos and reflow docstring.
(ange-ftp-dumb-unix-host, ange-ftp-binary-file)
(ange-ftp-directory-files, ange-ftp-file-modtime, ange-ftp-vms-host)
(ange-ftp-mts-host, ange-ftp-cms-host, ange-ftp-bs2000-host)
(ange-ftp-bs2000-posix-host): Use `string-match-p' instead of
`(save-match-data (string-match ...))'.
(ange-ftp-use-gateway-p, ange-ftp-use-smart-gateway-p)
(ange-ftp-file-name-directory, ange-ftp-file-name-nondirectory):
Use `string-match-p' instead of `(save-match-data (string-match ...))'.
Doc fixes.
author | Juanma Barranquero <lekktu@gmail.com> |
---|---|
date | Sun, 16 Nov 2008 05:50:23 +0000 |
parents | 90a2847062be |
children | a9dc0e7c3f2b |
line wrap: on
line source
;;;; testcover-unsafep.el -- Use testcover to test unsafep's code coverage ;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. ;; Author: Jonathan Yavner <jyavner@engineer.com> ;; Maintainer: Jonathan Yavner <jyavner@engineer.com> ;; Keywords: safety lisp utility ;; This file is part of GNU Emacs. ;; GNU Emacs is free software: you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; (at your option) any later version. ;; GNU Emacs is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. (require 'testcover) (defvar safe-functions) ;;;These forms are all considered safe (defconst testcover-unsafep-safe '(((lambda (x) (* x 2)) 14) (apply 'cdr (mapcar '(lambda (x) (car x)) y)) (cond ((= x 4) 5) (t 27)) (condition-case x (car y) (error (car x))) (dolist (x y) (message "here: %s" x)) (dotimes (x 14 (* x 2)) (message "here: %d" x)) (let (x) (dolist (y '(1 2 3) (1+ y)) (push y x))) (let (x) (apply '(lambda (x) (* x 2)) 14)) (let ((x '(2))) (push 1 x) (pop x) (add-to-list 'x 2)) (let ((x 1) (y 2)) (setq x (+ x y))) (let ((x 1)) (let ((y (+ x 3))) (* x y))) (let* nil (current-time)) (let* ((x 1) (y (+ x 3))) (* x y)) (mapcar (lambda (x &optional y &rest z) (setq y (+ x 2)) (* y 3)) '(1 2 3)) (mapconcat #'(lambda (var) (propertize var 'face 'bold)) '("1" "2") ", ") (setq buffer-display-count 14 mark-active t) ;;This is not safe if you insert it into a buffer! (propertize "x" 'display '(height (progn (delete-file "x") 1)))) "List of forms that `unsafep' should decide are safe.") ;;;These forms are considered unsafe (defconst testcover-unsafep-unsafe '(( (add-to-list x y) . (unquoted x)) ( (add-to-list y x) . (unquoted y)) ( (add-to-list 'y x) . (global-variable y)) ( (not (delete-file "unsafep.el")) . (function delete-file)) ( (cond (t (aset local-abbrev-table 0 0))) . (function aset)) ( (cond (t (setq unsafep-vars ""))) . (risky-local-variable unsafep-vars)) ( (condition-case format-alist 1) . (risky-local-variable format-alist)) ( (condition-case x 1 (error (setq format-alist ""))) . (risky-local-variable format-alist)) ( (dolist (x (sort globalvar 'car)) (princ x)) . (function sort)) ( (dotimes (x 14) (delete-file "x")) . (function delete-file)) ( (let ((post-command-hook "/tmp/")) 1) . (risky-local-variable post-command-hook)) ( (let ((x (delete-file "x"))) 2) . (function delete-file)) ( (let (x) (add-to-list 'x (delete-file "x"))) . (function delete-file)) ( (let (x) (condition-case y (setq x 1 z 2))) . (global-variable z)) ( (let (x) (condition-case z 1 (error (delete-file "x")))) . (function delete-file)) ( (let (x) (mapc (lambda (x) (setcar x 1)) '((1 . 2) (3 . 4)))) . (function setcar)) ( (let (y) (push (delete-file "x") y)) . (function delete-file)) ( (let* ((x 1)) (setq y 14)) . (global-variable y)) ( (mapc 'car (list '(1 . 2) (cons 3 4) (kill-buffer "unsafep.el"))) . (function kill-buffer)) ( (mapcar x y) . (unquoted x)) ( (mapcar '(lambda (x) (rename-file x "x")) '("unsafep.el")) . (function rename-file)) ( (mapconcat x1 x2 " ") . (unquoted x1)) ( (pop format-alist) . (risky-local-variable format-alist)) ( (push 1 format-alist) . (risky-local-variable format-alist)) ( (setq buffer-display-count (delete-file "x")) . (function delete-file)) ;;These are actualy safe (they signal errors) ( (apply '(x) '(1 2 3)) . (function (x))) ( (let (((x))) 1) . (variable (x))) ( (let (1) 2) . (variable 1)) ) "A-list of (FORM . REASON)... that`unsafep' should decide are unsafe.") (declare-function unsafep-function "unsafep" (fun)) ;;;######################################################################### (defun testcover-unsafep () "Executes all unsafep tests and displays the coverage results." (interactive) (testcover-unmark-all "unsafep.el") (testcover-start "unsafep.el") (let (save-functions) (dolist (x testcover-unsafep-safe) (if (unsafep x) (error "%S should be safe" x))) (dolist (x testcover-unsafep-unsafe) (if (not (equal (unsafep (car x)) (cdr x))) (error "%S should be unsafe: %s" (car x) (cdr x)))) (setq safe-functions t) (if (or (unsafep '(delete-file "x")) (unsafep-function 'delete-file)) (error "safe-functions=t should allow delete-file")) (setq safe-functions '(setcar)) (if (unsafep '(setcar x 1)) (error "safe-functions=(setcar) should allow setcar")) (if (not (unsafep '(setcdr x 1))) (error "safe-functions=(setcar) should not allow setcdr"))) (testcover-mark-all "unsafep.el") (testcover-end "unsafep.el") (message "Done")) ;; arch-tag: a7616c27-1998-47ae-9304-76d1439dbf29 ;; testcover-unsafep.el ends here.