diff options
Diffstat (limited to 'testing/bbdb-test.el')
-rw-r--r-- | testing/bbdb-test.el | 676 |
1 files changed, 0 insertions, 676 deletions
diff --git a/testing/bbdb-test.el b/testing/bbdb-test.el deleted file mode 100644 index 0eaf156..0000000 --- a/testing/bbdb-test.el +++ /dev/null @@ -1,676 +0,0 @@ -;; Testing -;; -;; This is a rough start on a test harness for BBDB. It attempts to -;; get around the interactive nature of BBDB in order to allow batch -;; testing. Eventually, there will be a 'make test' target, which -;; verifies that the changes you've just made haven't killed some -;; other part of BBDB. -;; -;; Use the function bbdb-test/switch-to-test-bbdb to use the BBDB with the -;; default test cases and exit-recursive-edit to come back to the original -;; BBDB. Eventually this should happen automatically, but it is nice to edit -;; the test BBDB also manually. -;; -;; Authors: Waider & Robert Fenk -;; -;; This stuff doesn't get included in the tarball. - -(require 'cl) ;; for flet -(require 'bbdb) -(require 'bbdb-snarf) ;; should be autoloaded, I'm sure. - -(defvar bbdb-test/bbdb-file - (expand-file-name - "bbdb-test" - (file-name-directory - (or (locate-library "bbdb-test") - (concat (getenv "HOME") "/src/emacs/bbdb/testing/bbdb-test"))))) - -(defun bbdb-test/initialize () - (setq bbdb-file bbdb-test/bbdb-file) - (bbdb-initialize)) - -(defvar bbdb-test/log-buffer "*BBDB Test Results*") - -(defun bbdb-test/log-buffer () - "Return log buffer. -When it does not existm, create one an setup the key bindings." - (let ((buf (get-buffer bbdb-test/log-buffer))) - (when (not buf) - (setq buf (get-buffer-create bbdb-test/log-buffer)) - (set-buffer buf) - (local-set-key "r" 'bbdb-test/run-tests) - (local-set-key "a" 'bbdb-test/run-all-tests) - (local-set-key "o" 'bbdb-test/run-one-test) - (local-set-key "s" 'bbdb-test/set-test-vars) - (local-set-key "c" 'bbdb-test/log-clear) - (local-set-key "q" 'kill-buffer)) - buf)) - -(defun bbdb-test/log-result (format &rest rest) - (save-excursion - (set-buffer (bbdb-test/log-buffer)) - (goto-char (point-max)) - (insert (apply 'format format rest)))) - -(defun bbdb-test/log-clear () - (save-excursion - (let ((buf (bbdb-test/log-buffer))) - (set-buffer buf) - (erase-buffer) - (pop-to-buffer buf) - buf))) - -(defun bbdb-test/kill-bbdb-buffers (bbdb-file) - (bbdb-save-db) - (if bbdb-buffer - (kill-buffer bbdb-buffer)) - (if (get-file-buffer bbdb-buffer-name) - (kill-buffer (get-file-buffer bbdb-buffer-name))) - (if (get-file-buffer bbdb-file) - (kill-buffer (get-file-buffer bbdb-file)))) - -(defun bbdb-test/switch-to-test-bbdb () - "Edit the test BBDB" - (interactive) - (let ((old-bbdb-file (expand-file-name bbdb-file)) - (bbdb-file (expand-file-name bbdb-test/bbdb-file))) - - ;; cleanup for normal BBDB - (bbdb-test/kill-bbdb-buffers old-bbdb-file) - - ;; now care for test BBDB - (condition-case err - (progn - (bbdb-initialize) - (message "recursive-edit of BBDB %s" - (abbreviate-file-name bbdb-file)) - (recursive-edit) - (bbdb-test/kill-bbdb-buffers bbdb-file) - (message "Returned to BBDB %s" - (abbreviate-file-name old-bbdb-file))) - (error - (bbdb-test/kill-bbdb-buffers bbdb-file) - (message "Returned to BBDB %s due to %s" - (abbreviate-file-name old-bbdb-file) - err)) - (quit - (bbdb-test/kill-bbdb-buffers bbdb-file) - (message "Returned to BBDB %s due to %s" - (abbreviate-file-name old-bbdb-file) - err))))) - -(defvar bbdb-test/test-vars nil - "User defined list of tests.") - -(defvar bbdb-test/batchmode nil - "Batchmode active?") - -(defun bbdb-test/test-vars (&optional matching) - "Return all test variables. -I.e. those matching \"^bbdb-test/.+$\" which have a documentation -starting with \"Test\"" - (or bbdb-test/test-vars - (apropos-internal - (format "^bbdb-test/%s$" (if matching (concat ".*" matching ".*") ".+")) - (lambda (s) (and (symbolp s) - (boundp s) - (documentation-property s 'variable-documentation) - (string-match "^Test" - (documentation-property - s - 'variable-documentation) - )))))) - -(defun bbdb-test/set-test-vars (matching) - (interactive "sRegexp for BBDB tests: ") - (setq matching (or matching (bbdb-string-trim matching))) - (if (string= "" matching) (setq matching nil)) - (setq bbdb-test/test-vars nil) - (bbdb-test/log-clear) - (if (not matching) - (bbdb-test/log-result "All test will be performed!\n") - (setq bbdb-test/test-vars (bbdb-test/test-vars matching)) - (bbdb-test/log-result "Test vars are:\n") - (mapcar (lambda (v) (bbdb-test/log-result "\t%s\n" (symbol-name v))) - bbdb-test/test-vars))) - -;;;###autoload -(defun bbdb-test/run-all-tests(&optional batch) - "Run all BBDB tests." - (interactive) - (let (bbdb-test/test-vars - (bbdb-test/batchmode batch)) - (bbdb-test/run-tests) - (and bbdb-test/batchmode - (set-buffer (bbdb-test/log-buffer)) - (write-file "bbdb-test-results")))) - -;;;###autoload -(defun bbdb-test/run-tests () - "Run BBDB tests." - (interactive) - (let ((test-vars (bbdb-test/test-vars))) - - (bbdb-initialize) - (bbdb-test/log-clear) - (bbdb-test/log-result "Testing started at %s\n\n" - (current-time-string)) - - (while test-vars - (bbdb-test/run-one-test (car test-vars)) - (setq test-vars (cdr test-vars))))) - -(defmacro bbdb-test/with-var-set (var value &rest body) - (append (list 'let (list (list (symbol-value var) value))) - body)) - -;;;###autoload -(defun bbdb-test/run-one-test (test-var) - (interactive - (list - (intern (completing-read "Enter a variable to test: " - (mapcar (lambda (v) (list (symbol-name v))) - (bbdb-test/test-vars)) - nil t)))) - (or (string-match "^bbdb-test/" (symbol-name test-var)) - (setq test-var (intern (concat "bbdb-test/" (symbol-name test-var))))) - (let ((bbdb-var (intern (substring (symbol-name test-var) 10))) - (vals (symbol-value test-var)) - test-func) - - ;; Peel the test function off the top of the variable, and - ;; adjust the variable upward. - (setq test-func (car vals) - vals (cdr vals)) - - (bbdb-test/log-result "Testing %s\n using\t%s:\n\n" - bbdb-var test-func) - - (while vals - (let* ((current-test-data (car vals)) - (val (car current-test-data)) - (par (cdr current-test-data))) - ;; ick. Hope you weren't using this. - (bbdb-test/with-var-set - bbdb-var val - (bbdb-test/log-result " %s:\n" (symbol-value bbdb-var)) - - (if par - (while par - (bbdb-test/log-result "\t%s\n" - (apply test-func (car par))) - (setq par (cdr par))) - (funcall test-func))) - - (bbdb-test/log-result "\n")) - - ;; next set of values - (setq vals (cdr vals))) - - (bbdb-test/log-result "Completed testing of %s.\n%s\n" - bbdb-var (make-string 79 ?-)))) - - -;; Coverage guestimation (VARIABLES ONLY; turns up a few false ones) -(defun bbdb-test/guestimate-coverage () - (interactive) - (let* ((vars (apropos-internal "^bbdb-.*$" - (lambda (s) - (and (symbolp s) - (not (fboundp s)) - (not (string-match - "^bbdb-test" - (symbol-name s))))))) - (tests (apropos-internal "^bbdb-test/.*$" - (lambda (s) (and (symbolp s) - (not (fboundp s)))))) - (cov (* 100 (/ (float (length tests)) (float (length vars)))))) - (message "coverage: %d of %d variables (%0.2f%%)" (length tests) - (length vars) cov) - cov)) - - -;;; These are test-harness functions for BBDB functionality -;;; -;;; Test BBDB's completion -(defun bbdb-test/bbdb-complete-name (input output ocompletions) - (let ((bbdb-complete-name-allow-cycling t) ;; some test cases - (bbdb-dwim-net-address-allow-redundancy nil) ;; need this - bbdb-completion-display-record - result completions) - - ;; Try completing - (with-current-buffer (get-buffer-create "*BBDB_TEST*") - (erase-buffer) - (insert input) - - ;; Try completion. Disable beeping so that we don't get noise - ;; while testing uncompletables. - (flet ((beep nil ()) - (ding nil ()) - ;; Hack to get around interactivity - (bbdb-display-completion-list - (list &optional cb data) - (setq completions list))) - (save-excursion - (bbdb-complete-name))) - - (setq result (buffer-substring (point-min) (point-max))) - - (if (get-buffer-window "*Completions*") - (kill-buffer "*Completions*")) - - ;; Check the output - (if (and (equal result output) - (equal completions ocompletions)) - (format "PASSED %S => %S" input output) - (format "FAILED %S =>\n\t got %S %S\n\t expected %S %S" input - result completions - output ocompletions))))) - -;;; Test BBDB parsing of email addresses -(defun bbdb-test/bbdb-extract-address-components (input output) - "Test suite for BBDB developers internal use." - (let (parsed) - (setq parsed (funcall bbdb-extract-address-components-func input t)) - (if (and parsed (equal output parsed)) - (format "PASSED %S => \n\t\t%S" input parsed) - (format "FAILED got `%S' expected `%S'" parsed output)))) - -;; Test username-cleaning-function -;; This function doesn't depend on any variables. -;; XXX fix the test harness to not require a variable to frob! -(defun bbdb-test/bbdb-clean-username (input output) - (let ((result (bbdb-clean-username input))) - (if (and result (equal output result)) - (format "PASSED %S => \n\t\t%S" input result) - (format "FAILED got `%S' expected `%S'" result output)))) - - -;; These are setup variables for the testing -(defvar bbdb-test/bbdb-clean-username-dummy - '(bbdb-test/bbdb-clean-username - (nil ("Ronan Waide" "Ronan Waide") - ("Forrester Research, Inc." "Forrester Research, Inc") - ("Ronan Waide ext 5781" "Ronan Waide") - ("Ronan Waide (Just This Guy)" "Ronan Waide") - )) - "Test") - -;; Dialing tests -;; This is for low-level testing directly via bbdb-dial-number -(defun bbdb-test/bbdb-dial-number(input output) - (let ((bbdb-modem-dial (or bbdb-modem-dial "")) - (bbdb-modem-device (make-temp-name "bbdb-dial")) - result) - (if (file-exists-p bbdb-modem-device) - (delete-file bbdb-modem-device)) ;; so we don't get false negatives - (flet ((bbdb-next-event nil ())) ;; don't wait - (bbdb-dial-number input)) - (save-excursion - (let ((buf (find-file bbdb-modem-device))) - (setq result (buffer-substring (point-min) (point-max))) - (kill-buffer buf))) - (if (file-exists-p bbdb-modem-device) (delete-file bbdb-modem-device)) - (if (and result (equal output result)) - (format "PASSED %S => \n\t\t%S" input result) - (format "FAILED %S => got `%S' expected `%S'" input result output)))) - -;; This is for high-level testing via the bbdb-dial UI -(defun bbdb-test/bbdb-dial(input output) - (let ((bbdb-modem-dial "") - (bbdb-modem-device (make-temp-name "bbdb-dial")) - result) - - ;; prevent these guys from interfering with other tests that use - ;; this code - (or (eq bbdb-var 'bbdb-default-area-code) - (setq bbdb-default-area-code nil)) - (or (eq bbdb-var 'bbdb-dial-local-prefix-alist) - (if (eq bbdb-var 'bbdb-default-area-code) - () ;; bbdb-default-area-code cascades into - ;; bbdb-dial-local-prefix-alist - (setq bbdb-dial-local-prefix-alist nil))) - - - (if (file-exists-p bbdb-modem-device) (delete-file bbdb-modem-device)) - (flet ((bbdb-next-event nil ())) - (save-excursion - (bbdb-display-records (bbdb-records)) - (set-buffer bbdb-buffer-name) - (goto-char (point-min)) - (re-search-forward input) - (call-interactively 'bbdb-dial))) - (save-excursion - (let ((buf (find-file bbdb-modem-device))) - (setq result (buffer-substring (point-min) (point-max))) - (kill-buffer buf))) - (if (file-exists-p bbdb-modem-device) (delete-file bbdb-modem-device)) - (if (and result (equal output result)) - (format "PASSED %S => \n\t\t%S" input result) - (format "FAILED %S => got `%S' expected `%S'" input result output)))) - -(defvar bbdb-test/bbdb-modem-dial - '(bbdb-test/bbdb-dial-number - (nil ("012345678" "012345678;\nATH\n")) - ("ATDT" ("012345678" "ATDT012345678;\nATH\n")) - ("ATDP" ("012345678" "ATDP012345678;\nATH\n"))) - "Test") - -;; XXX input number is taken from the BBDB for these tests; input -;; parameter is used to decide which phone number to use. -(defvar bbdb-test/bbdb-default-area-code - '(bbdb-test/bbdb-dial - (nil ("national" "0223334444;\nATH\n")) - ("022" ("national" "3334444;\nATH\n")) ;; 022 is our dummy area code - ) - "Test") - -(defvar bbdb-test/bbdb-dial-local-prefix-alist - '(bbdb-test/bbdb-dial - (nil ("national" "0223334444;\nATH\n")) - ((("022" "")) ("national" "3334444;\nATH\n")) - ((("022" "021")) ("national" "0213334444;\nATH\n")) - ) - "Test") - -(defvar bbdb-test/bbdb-dial-local-prefix - '(bbdb-test/bbdb-dial - (nil ("national" "0223334444;\nATH\n")) - ("9" ("national" "90223334444;\nATH\n")) - ) - "Test") - -(defvar bbdb-test/bbdb-dial-long-distance-prefix - '(bbdb-test/bbdb-dial - (nil ("inter" "111223334444;\nATH\n")) - ("00" ("inter" "00,111223334444;\nATH\n")) ;; comma is wacky, but hey. - ) - "Test") - -;; End of dialing tests -;; IGNORING: bbdb-sound-player, bbdb-sound-files, bbdb-sound-volume -;; (not dialing, strictly speaking, except for the sound-files array) - -(defvar bbdb-test/bbdb-extract-address-components-func - (let ((test-cases '(("Robert Fenk <fenk@users.sourceforge.net>" - (("Robert Fenk" "fenk@users.sourceforge.net"))) - ("\"Robert Fenk, Jr\" <fenk@users.sourceforge.net>" - (("Robert Fenk, Jr." "fenk@users.sourceforge.net"))) - ("<fenk@users.sourceforge.net>" - ((nil "fenk@users.sourceforge.net"))) - ("\"Fenk, Robert\" <fenk@users.sourceforge.net>" - (("Robert Fenk" "fenk@users.sourceforge.net"))) - ("fenk@users.sourceforge.net (Robert Fenk)" - (("Robert Fenk" "fenk@users.sourceforge.net"))) - ("fenk@users.sourceforge.net (Robert Fenk, Jr)" - (("Robert Fenk, Jr." "fenk@users.sourceforge.net"))) - ("Robert.Fenk@users.sourceforge.net" - (("Robert Fenk" "Robert.Fenk@users.sourceforge.net"))) - ("<fenk@gmx.de>, fenk@web.de" - ((nil "fenk@gmx.de") (nil "fenk@web.de"))) - ))) - (list 'bbdb-test/bbdb-extract-address-components - (cons 'bbdb-rfc822-addresses test-cases) - (cons 'bbdb-extract-address-components test-cases))) - "Test") - -;; Things to test bbdb-completion-type with -(defvar bbdb-test/bbdb-completion-type - '(bbdb-test/bbdb-complete-name ;; test function - ;; variable setting, (input output completions) - - ;; With completion-type set to nil, completion happens across all - ;; names and all email addresses. - - ;; multiple completions, but all in the same record should result - ;; in the first mail address in that record. - (nil ("waider" - "Ronan Waide <waider@waider.ie>" - nil) - ;; completing a completed record should cycle to the next - ;; email address. - ("Ronan Waide <waider@waider.ie>" - "Ronan Waide <waider@dspsrv.com>" - nil) - ;; completing on the name should return the first email - ;; address - ("ronan waide" - "Ronan Waide <waider@waider.ie>" - nil) - ;; completing on a unique email address should return that - ;; email address - ("ronan.waide" - "Ronan.Waide@euroconex.com" - nil) - ;; completing on a username vs. a name - ("Ronan." - "Ronan.Waide@euroconex.com" - nil) - ;; unique email address - ("Robert.Fenk@g" - "Robert.Fenk@gmx.de" - nil) - ;; unique email address, case insensitive. again, - ;; single-record match. - ("Robert.Fenk" - "Robert.Fenk@gmx.de" - nil) - ;; unique email address - ("jwz" - "Jamie Zawinski <jwz@jwz.org>" - nil)) - - ;; When set to 'name, completion should only occur on the NAME - ;; field - (name ("waider" - "waider" - nil) - ("ronan" - "Ronan Waide <waider@waider.ie>" - nil) - ("ronan waide" - "Ronan Waide <waider@waider.ie>" - nil)) - - ;; 'net => complete across NET field only - (net ("waider" - "Ronan Waide <waider@waider.ie>" - nil) - ("jwz" - "Jamie Zawinski <jwz@jwz.org>" - nil)) - - ;; only complete on the primary email address - (primary ("waider" - "Ronan Waide <waider@waider.ie>" - nil)) - - ;; complete on primary email address or name - (primary-or-name ("waider" - "Ronan Waide <waider@waider.ie>" - nil) - ("ronan" - "Ronan Waide <waider@waider.ie>" - nil) - ("first" - "first" - ("First.Last@location1.org" "First.Second@location1.org"))) - - ;; same as above - (name-or-primary ("waider" - "Ronan Waide <waider@waider.ie>" - nil) - ("ronan" - "Ronan Waide <waider@waider.ie>" - nil))) - "Test") - -;; This is a list of **158** symbols defined in BBDB at present. Some -;; are obviously not actually variables and can be ignored. Mark the -;; variables done as they have test cases applied to them. Coverage -;; function above should probably use this to determine what can be -;; safely ignored. Additionally, I should load all the files before -;; generating a list like this and thinking it's definitive :) -;; -;; DISREGARD bbdb-test/bbdb- -;; INTERNAL ONLY bbdb-test/bbdb-address -;; DISREGARD bbdb-test/bbdb-address- -;; bbdb-test/bbdb-address-editing-function -;; bbdb-test/bbdb-address-formatting-alist -;; INTERNAL ONLY bbdb-test/bbdb-address-length -;; bbdb-test/bbdb-address-print-formatting-alist -;; bbdb-test/bbdb-addresses-label-list -;; bbdb-test/bbdb-after-change-hook -;; bbdb-test/bbdb-after-read-db-hook -;; bbdb-test/bbdb-alist-with-header -;; bbdb-test/bbdb-always-add-addresses -;; bbdb-test/bbdb-auto-revert-p -;; bbdb-test/bbdb-autoloads -;; bbdb-test/bbdb-buffer-name -;; bbdb-test/bbdb-buffers-with-message-caches -;; DISREGARD bbdb-test/bbdb-cache- -;; bbdb-test/bbdb-cache-length -;; bbdb-test/bbdb-canonicalize-net-hook -;; bbdb-test/bbdb-canonicalize-redundant-nets-p -;; bbdb-test/bbdb-case-fold-search -;; bbdb-test/bbdb-change-hook -;; bbdb-test/bbdb-check-zip-codes-p -;; bbdb-test/bbdb-com -;; bbdb-test/bbdb-complete-name-allow-cycling -;; bbdb-test/bbdb-complete-name-full-completion -;; bbdb-test/bbdb-complete-name-hooks -;; bbdb-test/bbdb-complete-name-saved-window-config -;; bbdb-test/bbdb-completion-display-record -;; DONE bbdb-test/bbdb-completion-type -;; bbdb-test/bbdb-continental-zip-regexp -;; bbdb-test/bbdb-create-hook -;; INTERNAL bbdb-test/bbdb-cycling-exit -;; bbdb-test/bbdb-database -;; bbdb-test/bbdb-default-area-code -;; bbdb-test/bbdb-default-country -;; bbdb-test/bbdb-default-domain -;; bbdb-test/bbdb-default-label-list -;; bbdb-test/bbdb-define-all-aliases-field -;; DONE bbdb-test/bbdb-dial-local-prefix -;; DONE bbdb-test/bbdb-dial-local-prefix-alist -;; DONE bbdb-test/bbdb-dial-long-distance-prefix -;; bbdb-test/bbdb-display-buffer -;; bbdb-test/bbdb-display-layout -;; bbdb-test/bbdb-display-layout-alist -;; bbdb-test/bbdb-dwim-net-address-allow-redundancy -;; bbdb-test/bbdb-electric-completed-normally -;; bbdb-test/bbdb-electric-execute-me -;; bbdb-test/bbdb-electric-p -;; bbdb-test/bbdb-elided-display -;; bbdb-test/bbdb-end-marker -;; bbdb-test/bbdb-expand-mail-aliases -;; bbdb-test/bbdb-extract-address-component-handler -;; bbdb-test/bbdb-extract-address-component-ignore-regexp -;; bbdb-test/bbdb-extract-address-component-regexps -;; DONE bbdb-test/bbdb-extract-address-components-func -;; bbdb-test/bbdb-field -;; bbdb-test/bbdb-file -;; bbdb-test/bbdb-file-format -;; bbdb-test/bbdb-file-format-migration -;; bbdb-test/bbdb-file-remote -;; bbdb-test/bbdb-file-remote-save-always -;; bbdb-test/bbdb-finger-buffer-name -;; bbdb-test/bbdb-finger-host-field -;; bbdb-test/bbdb-force-dialog-boxes -;; bbdb-test/bbdb-gag-messages -;; bbdb-test/bbdb-get-addresses-headers -;; bbdb-test/bbdb-get-only-first-address-p -;; bbdb-test/bbdb-gui -;; bbdb-test/bbdb-hashtable-size -;; bbdb-test/bbdb-hooks -;; bbdb-test/bbdb-info-file -;; bbdb-test/bbdb-init-forms -;; bbdb-test/bbdb-initialize-hook -;; bbdb-test/bbdb-inside-electric-display -;; bbdb-test/bbdb-insinuate-sc -;; bbdb-test/bbdb-legal-zip-codes -;; bbdb-test/bbdb-list-hook -;; bbdb-test/bbdb-load-hook -;; bbdb-test/bbdb-message-cache -;; bbdb-test/bbdb-message-caching-enabled -;; bbdb-test/bbdb-mode-hook -;; bbdb-test/bbdb-mode-map -;; bbdb-test/bbdb-modem-device -;; bbdb-test/bbdb-modem-dial -;; bbdb-test/bbdb-modified-p -;; bbdb-test/bbdb-mua-specific -;; bbdb-test/bbdb-mua-specific-gnus -;; bbdb-test/bbdb-mua-specific-gnus-scoring -;; bbdb-test/bbdb-mua-specific-gnus-splitting -;; bbdb-test/bbdb-mua-specific-vm -;; bbdb-test/bbdb-name-gubbish -;; bbdb-test/bbdb-new-nets-always-primary -;; bbdb-test/bbdb-no-duplicates-p -;; bbdb-test/bbdb-north-american-phone-numbers-p -;; bbdb-test/bbdb-notes-default-separator -;; bbdb-test/bbdb-notes-field -;; bbdb-test/bbdb-notes-sort-order -;; bbdb-test/bbdb-notice-auto-save-file -;; bbdb-test/bbdb-notice-hook -;; bbdb-test/bbdb-noticing-records -;; bbdb-test/bbdb-offer-to-create -;; bbdb-test/bbdb-phone- -;; bbdb-test/bbdb-phone-area-regexp -;; bbdb-test/bbdb-phone-dialing -;; bbdb-test/bbdb-phone-ext-regexp -;; bbdb-test/bbdb-phone-length -;; bbdb-test/bbdb-phone-main-regexp -;; bbdb-test/bbdb-phone-regexp-1 -;; bbdb-test/bbdb-phone-regexp-2 -;; bbdb-test/bbdb-phone-regexp-3 -;; bbdb-test/bbdb-phone-regexp-4 -;; bbdb-test/bbdb-phone-regexp-5 -;; bbdb-test/bbdb-phones-label-list -;; bbdb-test/bbdb-pop-up-display-layout -;; bbdb-test/bbdb-pop-up-elided-display -;; bbdb-test/bbdb-pop-up-target-lines -;; bbdb-test/bbdb-quiet-about-name-mismatches -;; bbdb-test/bbdb-read-addresses-with-completion-map -;; bbdb-test/bbdb-read-only-p -;; bbdb-test/bbdb-readonly-p -;; bbdb-test/bbdb-record -;; bbdb-test/bbdb-record- -;; bbdb-test/bbdb-record-creation -;; bbdb-test/bbdb-record-display -;; bbdb-test/bbdb-record-length -;; bbdb-test/bbdb-record-use -;; bbdb-test/bbdb-refile-notes-generate-alist -;; bbdb-test/bbdb-remaining-addrs-to-finger -;; bbdb-test/bbdb-save -;; bbdb-test/bbdb-save-db-timeout -;; bbdb-test/bbdb-saving -;; bbdb-test/bbdb-send-mail-style -;; bbdb-test/bbdb-showing-changed-ones -;; bbdb-test/bbdb-silent-running -;; bbdb-test/bbdb-snarf-phone-regexp -;; bbdb-test/bbdb-snarf-web-prop -;; bbdb-test/bbdb-snarf-zip-regexp -;; bbdb-test/bbdb-sound-files -;; bbdb-test/bbdb-sound-player -;; bbdb-test/bbdb-sound-volume -;; bbdb-test/bbdb-sounds-directory -;; bbdb-test/bbdb-suppress-changed-records-recording -;; bbdb-test/bbdb-time-display-format -;; bbdb-test/bbdb-update-address-class -;; bbdb-test/bbdb-update-address-header -;; bbdb-test/bbdb-update-records-mode -;; bbdb-test/bbdb-use-alternate-names -;; bbdb-test/bbdb-use-pop-up -;; bbdb-test/bbdb-utilities -;; bbdb-test/bbdb-utilities-finger -;; bbdb-test/bbdb-utilities-ftp -;; bbdb-test/bbdb-utilities-print -;; bbdb-test/bbdb-utilities-server -;; bbdb-test/bbdb-utilities-supercite -;; bbdb-test/bbdb-version-date -;; bbdb-test/bbdb-window -;; bbdb-test/bbdb-write-file-hooks - -(provide 'bbdb-test) |