Re: [PATCH 3/3] WIP/test: add tests for rendering text/calendar parts

Subject: Re: [PATCH 3/3] WIP/test: add tests for rendering text/calendar parts

Date: Tue, 28 May 2024 10:24:03 +0100

To: David Bremner, notmuch@notmuchmail.org

Cc:

From: Al Haji-Ali


Yes, that is strange. Based on just looking at the test code, I think this test should indeed fail (I am not able to run in on my machine). In a similar situation, my inline calendar text shows

,----
| !!! Bodypart handler `notmuch-show-insert-part-text/calendar' threw an error:
| !!! Wrong type argument: stringp, nil
| !!! Bodypart handler `notmuch-show-insert-part-*/*' threw an error:
| !!! Wrong type argument: char-or-string-p, gnus-decoded
`----

To see the basic issue, check what this code outputs on your setup:
,----
| (let ((tmp-link  "~/link-tmp"))
|   (make-symbolic-link "/tmp/" tmp-link)
|   (let* ((temporary-file-directory tmp-link)
|          (file (make-temp-file "notmuch-ical")))
|     (find-file-noselect file)
|     (message
|      "Filename: %s
| get-file-buffer: %S
| find-buffer-visiting: %S
| buffer-file-name: %s"
|      file
|      (get-file-buffer file)
|      (find-buffer-visiting file)
|      (buffer-file-name (find-buffer-visiting file)))
|     (kill-buffer (find-buffer-visiting file))
|     (delete-file tmp-link)
|     (delete-file file)))
|     
`----

On my setup (MacOS, Emacs 29.1) this prints something like

,----
| Filename: /Users/al/link-tmp/notmuch-ical7MtHvd
| get-file-buffer: nil
| find-buffer-visiting: #<buffer notmuch-ical7MtHvd>
| buffer-file-name: /private/tmp/notmuch-ical7MtHvd
`----

So `get-file-buffer` returns nil. Reason is that the buffer-file-name has the resolved path (without symlinks). The documentation for `get-file-buffer` says: "The buffer's buffer-file-name must match exactly the expansion of FILENAME". `find-buffer-visiting` gets the truename of the filename before looking for its buffer.

The function `notmuch-show-insert-part-text/calendar` essentially does the same as my code above. Note also that `find-buffer-visiting` is used instead of `get-file-buffer` in `icalendar-import-buffer` for example. 

-- Al

On 26/05/2024, David Bremner wrote:

> The second test should apparently fail, but it doesn't.
> ---
>  test/T450-emacs-show.sh | 26 ++++++++++++++++++++++++++
>  1 file changed, 26 insertions(+)
>
> diff --git a/test/T450-emacs-show.sh b/test/T450-emacs-show.sh
> index 438a7b9b..85851e70 100755
> --- a/test/T450-emacs-show.sh
> +++ b/test/T450-emacs-show.sh
> @@ -340,6 +340,32 @@ This meeting will could have been an email
>  EOF
>  test_expect_equal_file EXPECTED OUTPUT
>  
> +test_begin_subtest "display of text/calendar, symlinked tmpdir"
> +test_subtest_known_broken
> +mkdir real-tmp
> +ln -s real-tmp tmp
> +test_emacs "(let ((notmuch-show-all-multipart/alternative-parts t)
> +	   (temporary-file-directory \"tmp\"))
> +	   (notmuch-show \"id:YT3PR01MB10572EFC9F7C81F9446214768CEF72@YT3PR01MB10572.CANPRD01.PROD.OUTLOOK.COM\"))
> +	(test-visible-output \"OUTPUT\")"
> +cat <<EOF > EXPECTED
> +David Bremner <bremner@example.com> (1970-01-01) (inbox)
> +Subject: test
> +To: "david@tethera.net" <david@tethera.net>
> +Date: Thu, 01 Jan 1970 00:00:00 +0000
> +
> +[ multipart/alternative ]
> +[ text/plain ]
> +This meeting will could have been an email
> +[ text/calendar ]
> +%%(and (diary-cyclic 1 5 27 2024) (diary-block 5 27 2024 8 27 2024)) 17:00-17:30 test [In-person]
> + Desc: This meeting will could have been an email
> +
> +
> + Organizer: mailto:bremner@example.com
> +EOF
> +test_expect_equal_file EXPECTED OUTPUT
> +
>  test_begin_subtest "tar not inlined by default"
>  test_emacs '(notmuch-show "id:874llc2bkp.fsf@curie.anarc.at")
>  	(test-visible-output "OUTPUT")'
_______________________________________________
notmuch mailing list -- notmuch@notmuchmail.org
To unsubscribe send an email to notmuch-leave@notmuchmail.org

Thread: