emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r112531: admin/cus-test, el misc upda


From: Glenn Morris
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r112531: admin/cus-test, el misc updates
Date: Wed, 08 May 2013 23:09:39 -0700
User-agent: Bazaar (2.6b2)

------------------------------------------------------------
revno: 112531
committer: Glenn Morris <address@hidden>
branch nick: trunk
timestamp: Wed 2013-05-08 23:09:39 -0700
message:
  admin/cus-test,el misc updates
  
  Mainly for some files listed in loaddefs.el now being in subdirs that
  are not in load-path.
  
  * admin/cus-test.el (cus-test-libs-noloads): Add dunnet in the defvar.
  (dunnet): Don't always load it.
  (viper-mode): Only set if interactive.
  (cus-test-load-custom-loads): Load dunnet if necessary.
  (cus-test-load-1): New macro, with common code from cus-test-load-libs
  and cus-test-libs.
  (cus-test-load-libs, cus-test-libs): Use cus-test-load-1 macro.
  Update for cus-test-get-autoload-deps changed result.
  (cus-test-get-autoload-deps): Simplify.  Return file names as they
  appear in loaddefs.el (directory parts are needed now that not all
  lisp subdirs are in load-path).
  (cus-test-deps): Explicitly skip dunnet.
modified:
  admin/ChangeLog
  admin/cus-test.el
=== modified file 'admin/ChangeLog'
--- a/admin/ChangeLog   2013-05-09 03:17:44 +0000
+++ b/admin/ChangeLog   2013-05-09 06:09:39 +0000
@@ -1,6 +1,18 @@
 2013-05-09  Glenn Morris  <address@hidden>
 
        * cus-test.el: No need to provide bbdb, bbdb-com any more.
+       (cus-test-libs-noloads): Add dunnet in the defvar.
+       (dunnet): Don't always load it.
+       (viper-mode): Only set if interactive.
+       (cus-test-load-custom-loads): Load dunnet if necessary.
+       (cus-test-load-1): New macro, with common code from cus-test-load-libs
+       and cus-test-libs.
+       (cus-test-load-libs, cus-test-libs): Use cus-test-load-1 macro.
+       Update for cus-test-get-autoload-deps changed result.
+       (cus-test-get-autoload-deps): Simplify.  Return file names as they
+       appear in loaddefs.el (directory parts are needed now that not all
+       lisp subdirs are in load-path).
+       (cus-test-deps): Explicitly skip dunnet.
 
 2013-05-07  Paul Eggert  <address@hidden>
 

=== modified file 'admin/cus-test.el'
--- a/admin/cus-test.el 2013-05-09 03:17:44 +0000
+++ b/admin/cus-test.el 2013-05-09 06:09:39 +0000
@@ -99,18 +99,17 @@
 (defvar cus-test-skip-list nil
   "List of variables to disregard by `cus-test-apropos'.")
 
-(defvar cus-test-libs-noloads nil
-  "List of libraries not to load by `cus-test-load-libs'.")
+;; Loading dunnet in batch mode leads to a Dead end.
+(defvar cus-test-libs-noloads '("play/dunnet.el")
+  "List of files not to load by `cus-test-load-libs'.
+Names should be as they appear in loaddefs.el.")
 
 ;; This avoids a hang of `cus-test-apropos' in 21.2.
 ;; (add-to-list 'cus-test-skip-list 'sh-alias-alist)
 
-;; Loading dunnet in batch mode leads to a Dead end.
-(let (noninteractive) (load "dunnet"))
-(add-to-list 'cus-test-libs-noloads "dunnet")
-
-;; Never Viperize.
-(setq viper-mode nil)
+(or noninteractive
+    ;; Never Viperize.
+    (setq viper-mode nil))
 
 ;; Don't create a file `save-place-file'.
 (eval-after-load "saveplace"
@@ -259,49 +258,49 @@
 (defun cus-test-load-custom-loads ()
   "Call `custom-load-symbol' on all atoms."
   (interactive)
+  (if noninteractive (let (noninteractive) (require 'dunnet)))
   (mapatoms 'custom-load-symbol)
   (run-hooks 'cus-test-after-load-libs-hook))
 
+(defmacro cus-test-load-1 (&rest body)
+  `(progn
+     (setq cus-test-libs-errors nil
+          cus-test-libs-loaded nil)
+     ,@body
+     (message "%s libraries loaded successfully"
+             (length cus-test-libs-loaded))
+     (if (not cus-test-libs-errors)
+        (message "No load problems encountered")
+       (message "The following load problems appeared:")
+       (cus-test-message cus-test-libs-errors))
+     (run-hooks 'cus-test-after-load-libs-hook)))
+
+;; This is just cus-test-libs, but loading in the current Emacs process.
 (defun cus-test-load-libs ()
   "Load the libraries with autoloads.
 Don't load libraries in `cus-test-libs-noloads'."
   (interactive)
-  (setq cus-test-libs-errors nil)
-  (setq cus-test-libs-loaded nil)
-  (mapc
-   (lambda (file)
-     (condition-case alpha
-        (unless (member file cus-test-libs-noloads)
-          (load file)
-          (push file cus-test-libs-loaded))
-       (error
-       (push (cons file alpha) cus-test-libs-errors)
-       (message "Error for %s: %s" file alpha))))
-   (cus-test-get-autoload-deps))
-  (message "%s libraries loaded successfully"
-          (length cus-test-libs-loaded))
-  (if (not cus-test-libs-errors)
-      (message "No load problems encountered")
-    (message "The following load problems appeared:")
-    (cus-test-message cus-test-libs-errors))
-  (run-hooks 'cus-test-after-load-libs-hook))
+  (cus-test-load-1
+   (let ((lispdir (file-name-directory (locate-library "loaddefs"))))
+     (mapc
+      (lambda (file)
+       (condition-case alpha
+           (unless (member file cus-test-libs-noloads)
+             (load (file-name-sans-extension (expand-file-name file lispdir)))
+             (push file cus-test-libs-loaded))
+         (error
+          (push (cons file alpha) cus-test-libs-errors)
+          (message "Error for %s: %s" file alpha))))
+      (cus-test-get-autoload-deps)))))
 
 (defun cus-test-get-autoload-deps ()
-  "Return the list of libraries with autoloads."
+  "Return the list of files with autoloads."
   (with-temp-buffer
     (insert-file-contents (locate-library "loaddefs"))
-    ;; This is from `customize-option'.
-    (let (deps file)
-      (while
-         (search-forward "\n;;; Generated autoloads from " nil t)
-       (goto-char (match-end 0))
-       (setq file (buffer-substring (point)
-                                    (progn (end-of-line) (point))))
-       (setq file (file-name-nondirectory file))
-       (string-match "\\.el\\'" file)
-       (setq file (substring file 0 (match-beginning 0)))
-       (setq deps (nconc deps (list file))))
-      deps)))
+    (let (files)
+      (while (search-forward "\n;;; Generated autoloads from " nil t)
+       (push (buffer-substring (match-end 0) (line-end-position)) files))
+      files)))
 
 (defun cus-test-message (list)
   "Print the members of LIST line by line."
@@ -349,7 +348,8 @@
          ((symbolp load)
           ;; (condition-case nil (require load) (error nil))
           (condition-case alpha
-              (unless (featurep load)
+              (unless (or (featurep load)
+                          (and noninteractive (eq load 'dunnet)))
                 (require load)
                 (push (list symbol load) cus-test-deps-required))
             (error
@@ -406,42 +406,41 @@
 This function is useful to detect load problems of libraries.
 It is suitable for batch mode.  E.g., invoke
 
-  src/emacs -batch -l admin/cus-test.el -f cus-test-libs
+  ./src/emacs -batch -l admin/cus-test.el -f cus-test-libs
 
 in the Emacs source directory."
   (interactive)
-  (with-temp-buffer
-    (setq cus-test-libs-errors nil)
-    (setq cus-test-libs-loaded nil)
-    (cd source-directory)
-    (if (not (file-executable-p "src/emacs"))
-       (error "No Emacs executable in %ssrc" default-directory))
-    (mapc
-     (lambda (file)
-       (condition-case alpha
-          (let (fn cmd status)
-            (setq fn (locate-library file))
-            (if (not fn)
-                (error "Library %s not found" file))
-            (setq cmd (concat "src/emacs -batch -l " fn))
-            (setq status (call-process shell-file-name nil nil nil
-                                       shell-command-switch cmd))
-            (if (equal status 0)
-                (message "%s" file)
-              (error "%s" status))
-            (push file cus-test-libs-loaded))
-        (error
-         (push (cons file alpha) cus-test-libs-errors)
-         (message "Error for %s: %s" file alpha))))
-     (cus-test-get-autoload-deps))
-    (message "Default Directory: %s" default-directory)
-    (message "%s libraries had no load errors"
-            (length cus-test-libs-loaded))
-    (if (not cus-test-libs-errors)
-       (message "No load problems encountered")
-      (message "The following load problems appeared:")
-      (cus-test-message cus-test-libs-errors))
-    (run-hooks 'cus-test-after-load-libs-hook)))
+  (cus-test-load-1
+   (let ((default-directory source-directory)
+        (emacs (expand-file-name "src/emacs"))
+        skipped)
+     (or (file-executable-p emacs)
+        (error "No Emacs executable in %ssrc" default-directory))
+     (mapc
+      (lambda (file)
+       (if (member file cus-test-libs-noloads)
+           (push file skipped)
+         (condition-case alpha
+             (let* ((fn (expand-file-name file "lisp/"))
+                    (elc (concat fn "c"))
+                    status)
+               (if (file-readable-p elc) ; load compiled if present (faster)
+                   (setq fn elc)
+                 (or (file-readable-p fn)
+                     (error "Library %s not found" file)))
+               (if (equal 0 (setq status (call-process emacs nil nil nil
+                                                       "-batch" "-l" fn)))
+                   (message "%s" file)
+                 (error "%s" status))
+               (push file cus-test-libs-loaded))
+           (error
+            (push (cons file alpha) cus-test-libs-errors)
+            (message "Error for %s: %s" file alpha)))))
+      (cus-test-get-autoload-deps))
+     (message "Default directory: %s" default-directory)
+     (when skipped
+       (message "The following libraries were skipped:")
+       (cus-test-message skipped)))))
 
 (defun cus-test-noloads ()
   "Find custom options not loaded by `custom-load-symbol'.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]