* [PATCH 1/2] test/emacs: test saving of attachment containing 8bit octets [not found] <id:87txsm23hs.fsf@betacantrips.com> @ 2012-11-18 20:06 ` Tomi Ollila 2012-11-18 20:06 ` [PATCH 2/2] emacs: less guessing of character set in messages Tomi Ollila 2012-11-27 2:10 ` [PATCH 1/2] test/emacs: test saving of attachment containing 8bit octets David Bremner 0 siblings, 2 replies; 5+ messages in thread From: Tomi Ollila @ 2012-11-18 20:06 UTC (permalink / raw) To: notmuch; +Cc: tomi.ollila This test catches the case 8bit octets in an attachment gets converted or lost when saving attachment to the file. This test is marked known broken. --- test/emacs | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/test/emacs b/test/emacs index 77265b0..c8db7d0 100755 --- a/test/emacs +++ b/test/emacs @@ -516,6 +516,33 @@ test_emacs '(let ((standard-input "\"attachment2.gz\"")) (notmuch-show-save-part "id:cf0c4d610911171136h1713aa59w9cf9aa31f052ad0a@mail.gmail.com" 5))' test_expect_equal_file attachment2.gz "$EXPECTED/attachment" +test_begin_subtest "Save 8bit attachment from within emacs using notmuch-show-save-attachments" +test_subtest_known_broken + +add_message '[subject]="Attachment with 8bit chars"' \ + '[header]="MIME-Version: 1.0"' \ + '[content-type]="multipart/mixed; boundary=\"abcd\""' \ + '[body]="--abcd +Content-Type: text/plain + +Attachment follows: + +--abcd +Content-Type: application/octet-stream; name=\"sample\" +Content-Transfer-Encoding: 8bit +Content-Disposition: attachment; filename=\"sample\" + +“¡ Hey ! It compiles ¡ Ship it !” + +--abcd-- +"' +test_emacs '(notmuch-show "id:'"${gen_msg_id}"'") + (delete-file "OUTPUT") + (let ((standard-input "\"OUTPUT\"")) + (notmuch-show-save-attachments))' + +test_expect_equal "$(cat OUTPUT)" '“¡ Hey ! It compiles ¡ Ship it !”' + test_begin_subtest "View raw message within emacs" test_emacs '(notmuch-show "id:cf0c4d610911171136h1713aa59w9cf9aa31f052ad0a@mail.gmail.com") (notmuch-show-view-raw-message) -- 1.8.0 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/2] emacs: less guessing of character set in messages 2012-11-18 20:06 ` [PATCH 1/2] test/emacs: test saving of attachment containing 8bit octets Tomi Ollila @ 2012-11-18 20:06 ` Tomi Ollila 2012-11-18 20:25 ` Ethan Glasser-Camp 2012-11-27 2:10 ` [PATCH 1/2] test/emacs: test saving of attachment containing 8bit octets David Bremner 1 sibling, 1 reply; 5+ messages in thread From: Tomi Ollila @ 2012-11-18 20:06 UTC (permalink / raw) To: notmuch; +Cc: tomi.ollila The macro with-current-notmuch-show-message executes command `notmuch show --format=raw id:...` which just outputs the contents of the mail file verbatim (into temporary buffer). In case e.g. utf-8 locale is used the temporary buffer has buffer-file-coding-system as utf-8. In this case Emacs converts the data to multibyte format, guessing that input is in utf-8. However, the "raw" (MIME) message may contain octet data in any other 8bit format, and as no (MIME-)content spesific handling to the message is done at this point, conversion to other formats may lose information. By setting coding-system-for-read 'no-conversion drops the conversion part and makes this handle input as notmuch-get-bodypart-internal() does. This marks the broken test in previous change fixed. --- emacs/notmuch-show.el | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el index 5b3e70e..44b6f35 100644 --- a/emacs/notmuch-show.el +++ b/emacs/notmuch-show.el @@ -203,9 +203,10 @@ For example, if you wanted to remove an \"unread\" tag and add a (let ((id (notmuch-show-get-message-id))) (let ((buf (generate-new-buffer (concat "*notmuch-msg-" id "*")))) (with-current-buffer buf - (call-process notmuch-command nil t nil "show" "--format=raw" id) - ,@body) - (kill-buffer buf))))) + (let ((coding-system-for-read 'no-conversion)) + (call-process notmuch-command nil t nil "show" "--format=raw" id) + ,@body) + (kill-buffer buf)))))) (defun notmuch-show-turn-on-visual-line-mode () "Enable Visual Line mode." -- 1.8.0 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 2/2] emacs: less guessing of character set in messages 2012-11-18 20:06 ` [PATCH 2/2] emacs: less guessing of character set in messages Tomi Ollila @ 2012-11-18 20:25 ` Ethan Glasser-Camp 0 siblings, 0 replies; 5+ messages in thread From: Ethan Glasser-Camp @ 2012-11-18 20:25 UTC (permalink / raw) To: Tomi Ollila, notmuch; +Cc: tomi.ollila Tomi Ollila <tomi.ollila@iki.fi> writes: > The macro with-current-notmuch-show-message executes command > `notmuch show --format=raw id:...` which just outputs the contents > of the mail file verbatim (into temporary buffer). In case e.g. utf-8 > locale is used the temporary buffer has buffer-file-coding-system as > utf-8. In this case Emacs converts the data to multibyte format, guessing > that input is in utf-8. > However, the "raw" (MIME) message may contain octet data in any other > 8bit format, and as no (MIME-)content spesific handling to the message > is done at this point, conversion to other formats may lose information. > By setting coding-system-for-read 'no-conversion drops the conversion part > and makes this handle input as notmuch-get-bodypart-internal() does. > This marks the broken test in previous change fixed. This looks good to me, though you might need to apply it with notmuch show --format="mbox" :). Ethan ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] test/emacs: test saving of attachment containing 8bit octets 2012-11-18 20:06 ` [PATCH 1/2] test/emacs: test saving of attachment containing 8bit octets Tomi Ollila 2012-11-18 20:06 ` [PATCH 2/2] emacs: less guessing of character set in messages Tomi Ollila @ 2012-11-27 2:10 ` David Bremner 2012-11-27 10:05 ` Tomi Ollila 1 sibling, 1 reply; 5+ messages in thread From: David Bremner @ 2012-11-27 2:10 UTC (permalink / raw) To: Tomi Ollila, notmuch; +Cc: tomi.ollila Tomi Ollila <tomi.ollila@iki.fi> writes: > This test catches the case 8bit octets in an attachment gets converted > or lost when saving attachment to the file. > This test is marked known broken. I pushed both, but I took the liberty of amending the second to actually mark the test as fixed (i.e. removed the known broken line). Hopefully that's what you meant to do. d ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] test/emacs: test saving of attachment containing 8bit octets 2012-11-27 2:10 ` [PATCH 1/2] test/emacs: test saving of attachment containing 8bit octets David Bremner @ 2012-11-27 10:05 ` Tomi Ollila 0 siblings, 0 replies; 5+ messages in thread From: Tomi Ollila @ 2012-11-27 10:05 UTC (permalink / raw) To: David Bremner, notmuch On Tue, Nov 27 2012, David Bremner wrote: > Tomi Ollila <tomi.ollila@iki.fi> writes: > >> This test catches the case 8bit octets in an attachment gets converted >> or lost when saving attachment to the file. >> This test is marked known broken. > > I pushed both, but I took the liberty of amending the second to actually > mark the test as fixed (i.e. removed the known broken line). Hopefully > that's what you meant to do. tnx! > d Tomi ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2012-11-27 10:05 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <id:87txsm23hs.fsf@betacantrips.com> 2012-11-18 20:06 ` [PATCH 1/2] test/emacs: test saving of attachment containing 8bit octets Tomi Ollila 2012-11-18 20:06 ` [PATCH 2/2] emacs: less guessing of character set in messages Tomi Ollila 2012-11-18 20:25 ` Ethan Glasser-Camp 2012-11-27 2:10 ` [PATCH 1/2] test/emacs: test saving of attachment containing 8bit octets David Bremner 2012-11-27 10:05 ` Tomi Ollila
Code repositories for project(s) associated with this public inbox https://yhetil.org/notmuch.git/ This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).