[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/gnus-mock 9cf301f 10/27: [gnus-mock] Zoop the condition
From: |
Stefan Monnier |
Subject: |
[elpa] externals/gnus-mock 9cf301f 10/27: [gnus-mock] Zoop the condition-case up around the whole function |
Date: |
Tue, 1 Dec 2020 10:11:37 -0500 (EST) |
branch: externals/gnus-mock
commit 9cf301fa26169e920a9c8d8897432e9430d08e25
Author: Eric Abrahamsen <eric@ericabrahamsen.net>
Commit: Eric Abrahamsen <eric@ericabrahamsen.net>
[gnus-mock] Zoop the condition-case up around the whole function
* packages/gnus-mock/gnus-mock.el (gnus-mock-start): It's
cleaner (especially when testing) to have the whole main function
wrapped in the condition-case.
---
gnus-mock.el | 145 ++++++++++++++++++++++++++++++-----------------------------
1 file changed, 73 insertions(+), 72 deletions(-)
diff --git a/gnus-mock.el b/gnus-mock.el
index 1747272..434e483 100644
--- a/gnus-mock.el
+++ b/gnus-mock.el
@@ -126,12 +126,13 @@ The new Emacs process will be started as \"-Q\", with the
mock
Gnus settings pre-loaded. Any of the normal Gnus entry points
will start a mock Gnus session."
(interactive)
- (let* ((mock-tmp-dir (make-temp-file "emacs-gnus-mock-" t))
- (init-file (expand-file-name "init.el" mock-tmp-dir)))
- (with-temp-buffer
- (insert "(setq "
- (format
- "gnus-home-directory \"%s\"
+ (condition-case nil
+ (let* ((mock-tmp-dir (make-temp-file "emacs-gnus-mock-" t))
+ (init-file (expand-file-name "init.el" mock-tmp-dir)))
+ (with-temp-buffer
+ (insert "(setq "
+ (format
+ "gnus-home-directory \"%s\"
init-file-user \"%s\"
sendmail-program \"%s\"
message-directory \"%s\"
@@ -141,72 +142,72 @@ nndraft-directory \"%s\"
gnus-agent-directory \"%s\"
gnus-directory \"%s\"
"
- mock-tmp-dir
- "mockturtle"
- (expand-file-name gnus-mock-sendmail-program mock-tmp-dir)
- mock-tmp-dir
- (expand-file-name ".newsrc" mock-tmp-dir)
- (expand-file-name ".gnus" mock-tmp-dir)
- (expand-file-name "drafts/" mock-tmp-dir)
- (expand-file-name "agent/" mock-tmp-dir)
- (expand-file-name "News/" mock-tmp-dir))
- ")\n\n")
- ;; Constant that can be checked if we need to know it's a mock
- ;; session.
- (insert "(defconst gnus-mock-p t)\n")
- ;; Constant for use in `gnus-mock-reload', which is defined in
- ;; the .gnus.el startup file.
- (insert (format "(defconst gnus-mock-data-dir \"%s\")\n"
- gnus-mock-data-dir))
- (when gnus-mock-cleanup-p
- (insert
- (format
- "(add-hook 'kill-emacs-hook (lambda () (delete-directory \"%s\"
t)))\n"
- mock-tmp-dir)))
- (when gnus-mock-use-images
- (insert
- (format "(add-to-list 'load-path \"%s/data\")\n"
- mock-tmp-dir)))
- (write-file init-file))
- ;; Put our data and config in place.
- (copy-directory
- gnus-mock-data-dir
- (file-name-as-directory mock-tmp-dir) nil nil t)
- ;; Git doesn't let us commit empty directories, so create our
- ;; necessary empty maildir bits.
- (mapc (lambda (path) (make-directory path t))
- (mapcar (lambda (dir)
- (format "%s/test/%s" mock-tmp-dir dir))
- '("Welcome/new" "Welcome/tmp" "Welcome/.nnmaildir/marks"
- "incoming/tmp" "incoming/new" "incoming/cur"
- "incoming/.nnmaildir/marks" "incoming/.nnmaildir/nov"
- "mails/tmp" "mails/new" "mails/.nnmaildir/marks")))
- ;; Possibly insert additional config.
- (when gnus-mock-init-file
- (with-temp-buffer
- (insert-file-contents gnus-mock-init-file)
- (append-to-file
- (point-min) (point-max) init-file)))
- (when gnus-mock-gnus-file
- (with-temp-buffer
- (insert-file-contents gnus-mock-gnus-file)
- (append-to-file
- (point-min) (point-max)
- (expand-file-name ".gnus.el" mock-tmp-dir))))
- ;; There are absolute paths in the .newsrc.eld file, so doctor
- ;; that file.
- (with-current-buffer (find-file-noselect
- (expand-file-name ".newsrc.eld" mock-tmp-dir))
- (while (re-search-forward "REPLACE_ME" (point-max) t)
- (replace-match mock-tmp-dir t))
- (basic-save-buffer))
- (condition-case nil
- (make-process :name "gnus-mock" :buffer nil
- :command (list gnus-mock-emacs-program
- "-Q" "--load" init-file)
- :stderr "*gnus mock errors*")
- (error (when gnus-mock-cleanup-p
- (delete-directory mock-tmp-dir t))))))
+ mock-tmp-dir
+ "mockturtle"
+ (expand-file-name gnus-mock-sendmail-program mock-tmp-dir)
+ mock-tmp-dir
+ (expand-file-name ".newsrc" mock-tmp-dir)
+ (expand-file-name ".gnus" mock-tmp-dir)
+ (expand-file-name "drafts/" mock-tmp-dir)
+ (expand-file-name "agent/" mock-tmp-dir)
+ (expand-file-name "News/" mock-tmp-dir))
+ ")\n\n")
+ ;; Constant that can be checked if we need to know it's a mock
+ ;; session.
+ (insert "(defconst gnus-mock-p t)\n")
+ ;; Constant for use in `gnus-mock-reload', which is defined in
+ ;; the .gnus.el startup file.
+ (insert (format "(defconst gnus-mock-data-dir \"%s\")\n"
+ gnus-mock-data-dir))
+ (when gnus-mock-cleanup-p
+ (insert
+ (format
+ "(add-hook 'kill-emacs-hook (lambda () (delete-directory \"%s\"
t)))\n"
+ mock-tmp-dir)))
+ (when gnus-mock-use-images
+ (insert
+ (format "(add-to-list 'load-path \"%s/data\")\n"
+ mock-tmp-dir)))
+ (write-file init-file))
+ ;; Put our data and config in place.
+ (copy-directory
+ gnus-mock-data-dir
+ (file-name-as-directory mock-tmp-dir) nil nil t)
+ ;; Git doesn't let us commit empty directories, so create our
+ ;; necessary empty maildir bits.
+ (mapc (lambda (path) (make-directory path t))
+ (mapcar (lambda (dir)
+ (format "%s/test/%s" mock-tmp-dir dir))
+ '("Welcome/new" "Welcome/tmp" "Welcome/.nnmaildir/marks"
+ "incoming/tmp" "incoming/new" "incoming/cur"
+ "incoming/.nnmaildir/marks" "incoming/.nnmaildir/nov"
+ "mails/tmp" "mails/new" "mails/.nnmaildir/marks")))
+ ;; Possibly insert additional config.
+ (when gnus-mock-init-file
+ (with-temp-buffer
+ (insert-file-contents gnus-mock-init-file)
+ (append-to-file
+ (point-min) (point-max) init-file)))
+ (when gnus-mock-gnus-file
+ (with-temp-buffer
+ (insert-file-contents gnus-mock-gnus-file)
+ (append-to-file
+ (point-min) (point-max)
+ (expand-file-name ".gnus.el" mock-tmp-dir))))
+ ;; There are absolute paths in the .newsrc.eld file, so doctor
+ ;; that file.
+ (with-current-buffer (find-file-noselect
+ (expand-file-name ".newsrc.eld" mock-tmp-dir))
+ (while (re-search-forward "REPLACE_ME" (point-max) t)
+ (replace-match mock-tmp-dir t))
+ (basic-save-buffer))
+ (make-process :name "gnus-mock" :buffer nil
+ :command (list gnus-mock-emacs-program
+ "-Q" "--load" init-file)
+ :stderr "*gnus mock errors*"))
+ (error (when (and gnus-mock-cleanup-p
+ (file-exists-p mock-tmp-dir))
+ (delete-directory mock-tmp-dir t)))))
(provide 'gnus-mock)
;;; gnus-mock.el ends here
- [elpa] branch externals/gnus-mock created (now 84c6b96), Stefan Monnier, 2020/12/01
- [elpa] externals/gnus-mock 4d8423a 01/27: Gnus mock initial commit, Stefan Monnier, 2020/12/01
- [elpa] externals/gnus-mock a9208d3 02/27: Split gnus-mock-settings-file into two separate options, Stefan Monnier, 2020/12/01
- [elpa] externals/gnus-mock 20ed31e 03/27: Create necessary empty maildir on startup, Stefan Monnier, 2020/12/01
- [elpa] externals/gnus-mock e533ff2 06/27: Provide support for fakesendmail script in windows, bump to 0.1.1, Stefan Monnier, 2020/12/01
- [elpa] externals/gnus-mock 9a13623 09/27: * gnus-mock.el: Make sure the 'data' subdir is included, Stefan Monnier, 2020/12/01
- [elpa] externals/gnus-mock 6beed29 07/27: packages/gnus-mock: Adjust copyright, Stefan Monnier, 2020/12/01
- [elpa] externals/gnus-mock d499861 04/27: Warn user if sendmail-program is unavailable, Stefan Monnier, 2020/12/01
- [elpa] externals/gnus-mock 88de2e8 05/27: Maybe clean up dirs if the start process fails, Stefan Monnier, 2020/12/01
- [elpa] externals/gnus-mock a21fb5d 08/27: gnus-mock/data/.gnus.el: Fix comment, Stefan Monnier, 2020/12/01
- [elpa] externals/gnus-mock 9cf301f 10/27: [gnus-mock] Zoop the condition-case up around the whole function,
Stefan Monnier <=
- [elpa] externals/gnus-mock 5431bdd 13/27: [gnus-mock] Fix two small bugs, bump version to 0.2.1, Stefan Monnier, 2020/12/01
- [elpa] externals/gnus-mock 5564ed9 15/27: [gnus-mock] Don't completely swallow errors, Stefan Monnier, 2020/12/01
- [elpa] externals/gnus-mock de629d1 20/27: [gnus-mock] Add Paul Eggert's misencoded Gnus message, bump to 0.4.2, Stefan Monnier, 2020/12/01
- [elpa] externals/gnus-mock adbd14e 24/27: [gnus-mock] Improvement to previous patch, bump to 0.4.4, Stefan Monnier, 2020/12/01
- [elpa] externals/gnus-mock 35692d0 26/27: [gnus-mock] Add guard around setting sendmail-program, Stefan Monnier, 2020/12/01
- [elpa] externals/gnus-mock 9196a0f 11/27: [gnus-mock] Instead of inserting strings, use princ and prin1, Stefan Monnier, 2020/12/01
- [elpa] externals/gnus-mock ab39a00 12/27: [gnus-mock] Conditionally add nnimap server, bump to 0.2.0, Stefan Monnier, 2020/12/01
- [elpa] externals/gnus-mock 0e8663e 14/27: [gnus-mock] Add Cyrillic group to the nnimap server, bump to 0.3.0, Stefan Monnier, 2020/12/01
- [elpa] externals/gnus-mock 5c2d129 19/27: [gnus-mock] Create empty draft/queue directories in advance, Stefan Monnier, 2020/12/01
- [elpa] externals/gnus-mock 91b3515 25/27: [gnus-mock] Munge maildir article filenames, bump to 0.4.5, Stefan Monnier, 2020/12/01