test: sanitize dates in emacs, raw, and text output

add a new function notmuch_date_sanitize for rfc822-ish things. Add
date sanitization to notmuch_show_sanitize_all and use it more places.

This is all in aid of a transition to unique timestamps on messages.
This commit is contained in:
David Bremner 2013-12-08 22:52:41 +08:00
parent 18921be2e9
commit 72ff135ac3
5 changed files with 29 additions and 18 deletions

View file

@ -86,15 +86,16 @@ add_message "[subject]=\"message-with-invalid-from\"" \
"[from]=\"\\\"Invalid \\\" From\\\" <test_suite@notmuchmail.org>\"" "[from]=\"\\\"Invalid \\\" From\\\" <test_suite@notmuchmail.org>\""
thread=$(notmuch search --output=threads subject:message-with-invalid-from) thread=$(notmuch search --output=threads subject:message-with-invalid-from)
test_emacs "(notmuch-show \"$thread\") test_emacs "(notmuch-show \"$thread\")
(test-output)" (test-output \"OUTPUT.raw\")"
cat <<EOF >EXPECTED cat <<EOF >EXPECTED
"Invalid " (2001-01-05) (inbox) "Invalid " (2001-01-05) (inbox)
Subject: message-with-invalid-from Subject: message-with-invalid-from
To: Notmuch Test Suite <test_suite@notmuchmail.org> To: Notmuch Test Suite <test_suite@notmuchmail.org>
Date: Fri, 05 Jan 2001 15:43:57 +0000 Date: GENERATED_DATE
This is just a test message (#1) This is just a test message (#1)
EOF EOF
notmuch_date_sanitize < OUTPUT.raw > OUTPUT
test_expect_equal_file OUTPUT EXPECTED test_expect_equal_file OUTPUT EXPECTED
test_begin_subtest "Navigation of notmuch-search to thread view" test_begin_subtest "Navigation of notmuch-search to thread view"
@ -605,11 +606,11 @@ Q: Why is top-posting such a bad thing?
A: Top-posting. A: Top-posting.
Q: What is the most annoying thing in e-mail?"' Q: What is the most annoying thing in e-mail?"'
test_emacs "(notmuch-show \"top-posting\") test_emacs "(notmuch-show \"top-posting\")
(test-visible-output)" (test-visible-output \"OUTPUT.raw\")"
echo "Notmuch Test Suite <test_suite@notmuchmail.org> (2001-01-05) (inbox) echo "Notmuch Test Suite <test_suite@notmuchmail.org> (2001-01-05) (inbox)
Subject: The problem with top-posting Subject: The problem with top-posting
To: Notmuch Test Suite <test_suite@notmuchmail.org> To: Notmuch Test Suite <test_suite@notmuchmail.org>
Date: Fri, 05 Jan 2001 15:43:57 +0000 Date: GENERATED_DATE
A: Because it messes up the order in which people normally read text. A: Because it messes up the order in which people normally read text.
Q: Why is top-posting such a bad thing? Q: Why is top-posting such a bad thing?
@ -618,13 +619,14 @@ Q: What is the most annoying thing in e-mail?
Top Poster <top@poster.com> (2001-01-05) (inbox unread) Top Poster <top@poster.com> (2001-01-05) (inbox unread)
Subject: Re: The problem with top-posting Subject: Re: The problem with top-posting
To: Notmuch Test Suite <test_suite@notmuchmail.org> To: Notmuch Test Suite <test_suite@notmuchmail.org>
Date: Fri, 05 Jan 2001 15:43:57 +0000 Date: GENERATED_DATE
Thanks for the advice! I will be sure to put it to good use. Thanks for the advice! I will be sure to put it to good use.
-Top Poster -Top Poster
[ 9-line hidden original message. Click/Enter to show. ]" > EXPECTED [ 9-line hidden original message. Click/Enter to show. ]" > EXPECTED
notmuch_date_sanitize < OUTPUT.raw > OUTPUT
test_expect_equal_file OUTPUT EXPECTED test_expect_equal_file OUTPUT EXPECTED
test_begin_subtest "Hiding message in notmuch-show view" test_begin_subtest "Hiding message in notmuch-show view"

View file

@ -19,13 +19,14 @@ cat <<EOF >EXPECTED
Notmuch Test Suite <test_suite@notmuchmail.org> (2001-01-05) (inbox) Notmuch Test Suite <test_suite@notmuchmail.org> (2001-01-05) (inbox)
Subject: Hiding Original Message region at beginning of a message Subject: Hiding Original Message region at beginning of a message
To: Notmuch Test Suite <test_suite@notmuchmail.org> To: Notmuch Test Suite <test_suite@notmuchmail.org>
Date: Fri, 05 Jan 2001 15:43:57 +0000 Date: GENERATED_DATE
[ 2-line hidden original message. Click/Enter to show. ] [ 2-line hidden original message. Click/Enter to show. ]
EOF EOF
test_emacs "(notmuch-show \"id:$message_id\") test_emacs "(notmuch-show \"id:$message_id\")
(test-visible-output)" (test-visible-output \"OUTPUT.raw\")"
notmuch_date_sanitize < OUTPUT.raw > OUTPUT
test_expect_equal_file OUTPUT EXPECTED test_expect_equal_file OUTPUT EXPECTED
test_begin_subtest "Bare subject #1" test_begin_subtest "Bare subject #1"
@ -130,12 +131,12 @@ mid:abc%20def
mid:abc. mid:abc, mid:abc;"' mid:abc. mid:abc, mid:abc;"'
test_emacs '(notmuch-show "id:'$gen_msg_id'") test_emacs '(notmuch-show "id:'$gen_msg_id'")
(notmuch-test-mark-links) (notmuch-test-mark-links)
(test-visible-output)' (test-visible-output "OUTPUT.raw")'
cat <<EOF >EXPECTED cat <<EOF >EXPECTED
Notmuch Test Suite <test_suite@notmuchmail.org> (2001-01-05) (inbox) Notmuch Test Suite <test_suite@notmuchmail.org> (2001-01-05) (inbox)
Subject: id buttonization Subject: id buttonization
To: Notmuch Test Suite <test_suite@notmuchmail.org> To: Notmuch Test Suite <test_suite@notmuchmail.org>
Date: Fri, 05 Jan 2001 15:43:57 +0000 Date: GENERATED_DATE
<<id:abc>> <<id:abc>>
<<id:abc.def>>. <<id:abc,def>>, <<id:abc;def>>; <<id:abc:def>>: <<id:abc.def>>. <<id:abc,def>>, <<id:abc;def>>; <<id:abc:def>>:
@ -159,6 +160,7 @@ cid:xxx
<<mid:abc%20def>> <<mid:abc%20def>>
<<mid:abc>>. <<mid:abc>>, <<mid:abc>>; <<mid:abc>>. <<mid:abc>>, <<mid:abc>>;
EOF EOF
notmuch_date_sanitize < OUTPUT.raw > OUTPUT
test_expect_equal_file OUTPUT EXPECTED test_expect_equal_file OUTPUT EXPECTED

View file

@ -5,14 +5,14 @@ test_description="encoding issues"
test_begin_subtest "Message with text of unknown charset" test_begin_subtest "Message with text of unknown charset"
add_message '[content-type]="text/plain; charset=unknown-8bit"' \ add_message '[content-type]="text/plain; charset=unknown-8bit"' \
"[body]=irrelevant" "[body]=irrelevant"
output=$(notmuch show id:${gen_msg_id} 2>&1 | notmuch_show_sanitize) output=$(notmuch show id:${gen_msg_id} 2>&1 | notmuch_show_sanitize_all)
test_expect_equal "$output" " message{ id:msg-001@notmuch-test-suite depth:0 match:1 excluded:0 filename:/XXX/mail/msg-001 test_expect_equal "$output" " message{ id:XXXXX depth:0 match:1 excluded:0 filename:XXXXX
header{ header{
Notmuch Test Suite <test_suite@notmuchmail.org> (2001-01-05) (inbox unread) Notmuch Test Suite <test_suite@notmuchmail.org> (2001-01-05) (inbox unread)
Subject: Message with text of unknown charset Subject: Message with text of unknown charset
From: Notmuch Test Suite <test_suite@notmuchmail.org> From: Notmuch Test Suite <test_suite@notmuchmail.org>
To: Notmuch Test Suite <test_suite@notmuchmail.org> To: Notmuch Test Suite <test_suite@notmuchmail.org>
Date: Fri, 05 Jan 2001 15:43:57 +0000 Date: GENERATED_DATE
header} header}
body{ body{
part{ ID: 1, Content-type: text/plain part{ ID: 1, Content-type: text/plain
@ -26,7 +26,7 @@ add_message '[content-type]="text/plain; charset=iso-8859-2"' \
'[content-transfer-encoding]=8bit' \ '[content-transfer-encoding]=8bit' \
'[subject]="ISO-8859-2 encoded message"' \ '[subject]="ISO-8859-2 encoded message"' \
"[body]=$'Czech word tu\350\362\341\350\350\355 means pinguin\'s.'" # ISO-8859-2 characters are generated by shell's escape sequences "[body]=$'Czech word tu\350\362\341\350\350\355 means pinguin\'s.'" # ISO-8859-2 characters are generated by shell's escape sequences
output=$(notmuch search tučňáččí 2>&1 | notmuch_show_sanitize) output=$(notmuch search tučňáččí 2>&1 | notmuch_show_sanitize_all)
test_expect_equal "$output" "thread:0000000000000002 2001-01-05 [1/1] Notmuch Test Suite; ISO-8859-2 encoded message (inbox unread)" test_expect_equal "$output" "thread:0000000000000002 2001-01-05 [1/1] Notmuch Test Suite; ISO-8859-2 encoded message (inbox unread)"
test_begin_subtest "RFC 2047 encoded word with spaces" test_begin_subtest "RFC 2047 encoded word with spaces"

View file

@ -11,22 +11,22 @@ output=$(notmuch show --format=raw "*" 2>&1)
test_expect_equal "$output" "Error: search term did not match precisely one message." test_expect_equal "$output" "Error: search term did not match precisely one message."
test_begin_subtest "Show a raw message" test_begin_subtest "Show a raw message"
output=$(notmuch show --format=raw id:msg-001@notmuch-test-suite) output=$(notmuch show --format=raw id:msg-001@notmuch-test-suite | notmuch_date_sanitize)
test_expect_equal "$output" "From: Notmuch Test Suite <test_suite@notmuchmail.org> test_expect_equal "$output" "From: Notmuch Test Suite <test_suite@notmuchmail.org>
To: Notmuch Test Suite <test_suite@notmuchmail.org> To: Notmuch Test Suite <test_suite@notmuchmail.org>
Message-Id: <msg-001@notmuch-test-suite> Message-Id: <msg-001@notmuch-test-suite>
Subject: Test message #1 Subject: Test message #1
Date: Fri, 05 Jan 2001 15:43:57 +0000 Date: GENERATED_DATE
This is just a test message (#1)" This is just a test message (#1)"
test_begin_subtest "Show another raw message" test_begin_subtest "Show another raw message"
output=$(notmuch show --format=raw id:msg-002@notmuch-test-suite) output=$(notmuch show --format=raw id:msg-002@notmuch-test-suite | notmuch_date_sanitize)
test_expect_equal "$output" "From: Notmuch Test Suite <test_suite@notmuchmail.org> test_expect_equal "$output" "From: Notmuch Test Suite <test_suite@notmuchmail.org>
To: Notmuch Test Suite <test_suite@notmuchmail.org> To: Notmuch Test Suite <test_suite@notmuchmail.org>
Message-Id: <msg-002@notmuch-test-suite> Message-Id: <msg-002@notmuch-test-suite>
Subject: Test message #2 Subject: Test message #2
Date: Fri, 05 Jan 2001 15:43:57 +0000 Date: GENERATED_DATE
This is just a test message (#2)" This is just a test message (#2)"

View file

@ -618,7 +618,8 @@ notmuch_show_sanitize_all ()
{ {
sed \ sed \
-e 's| filename:.*| filename:XXXXX|' \ -e 's| filename:.*| filename:XXXXX|' \
-e 's| id:[^ ]* | id:XXXXX |' -e 's| id:[^ ]* | id:XXXXX |' | \
notmuch_date_sanitize
} }
notmuch_json_show_sanitize () notmuch_json_show_sanitize ()
@ -641,6 +642,12 @@ notmuch_emacs_error_sanitize ()
-e 's/^\[.*\]$/[XXX]/' \ -e 's/^\[.*\]$/[XXX]/' \
-e "s|^\(command: \)\{0,1\}/.*/$command|\1YYY/$command|" -e "s|^\(command: \)\{0,1\}/.*/$command|\1YYY/$command|"
} }
notmuch_date_sanitize ()
{
sed \
-e 's/^Date: Fri, 05 Jan 2001 .*0000/Date: GENERATED_DATE/'
}
# End of notmuch helper functions # End of notmuch helper functions
# Use test_set_prereq to tell that a particular prerequisite is available. # Use test_set_prereq to tell that a particular prerequisite is available.