mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-12-03 16:14:11 +01:00
test: use notmuch_json_show_sanitize more places
This makes the tests more robust against changing output formats, by allowing us to centralize fixes in the sanitization function. It is not appropriate for all cases, in particular it is unneeded when using test_json_nodes, and unhelpful when testing filenames.
This commit is contained in:
parent
3cb936b7c4
commit
5f6645bd2a
4 changed files with 27 additions and 26 deletions
|
@ -43,13 +43,13 @@ test_begin_subtest "Permissions on inserted message should be 0600"
|
||||||
test_expect_equal "600" "$(stat -c %a "$cur_msg_filename")"
|
test_expect_equal "600" "$(stat -c %a "$cur_msg_filename")"
|
||||||
|
|
||||||
test_begin_subtest "Insert message adds default tags"
|
test_begin_subtest "Insert message adds default tags"
|
||||||
output=$(notmuch show --format=json "subject:insert-subject")
|
output=$(notmuch show --format=json "subject:insert-subject" | notmuch_json_show_sanitize)
|
||||||
expected='[[[{
|
expected='[[[{
|
||||||
"id": "'"${gen_msg_id}"'",
|
"id": "XXXXX",
|
||||||
"crypto": {},
|
"crypto": {},
|
||||||
"match": true,
|
"match": true,
|
||||||
"excluded": false,
|
"excluded": false,
|
||||||
"filename": ["'"${cur_msg_filename}"'"],
|
"filename": ["YYYYY"],
|
||||||
"timestamp": 946728000,
|
"timestamp": 946728000,
|
||||||
"date_relative": "2000-01-01",
|
"date_relative": "2000-01-01",
|
||||||
"tags": ["inbox","unread"],
|
"tags": ["inbox","unread"],
|
||||||
|
|
|
@ -5,17 +5,17 @@ test_description="--format=json output"
|
||||||
|
|
||||||
test_begin_subtest "Show message: json"
|
test_begin_subtest "Show message: json"
|
||||||
add_message "[subject]=\"json-show-subject\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" "[bcc]=\"test_suite+bcc@notmuchmail.org\"" "[reply-to]=\"test_suite+replyto@notmuchmail.org\"" "[body]=\"json-show-message\""
|
add_message "[subject]=\"json-show-subject\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" "[bcc]=\"test_suite+bcc@notmuchmail.org\"" "[reply-to]=\"test_suite+replyto@notmuchmail.org\"" "[body]=\"json-show-message\""
|
||||||
output=$(notmuch show --format=json "json-show-message")
|
output=$(notmuch show --format=json "json-show-message" | notmuch_json_show_sanitize)
|
||||||
test_expect_equal_json "$output" "[[[{\"id\": \"${gen_msg_id}\", \"crypto\": {}, \"match\": true, \"excluded\": false, \"filename\": [\"${gen_msg_filename}\"], \"timestamp\": 946728000, \"date_relative\": \"2000-01-01\", \"tags\": [\"inbox\",\"unread\"], \"headers\": {\"Subject\": \"json-show-subject\", \"From\": \"Notmuch Test Suite <test_suite@notmuchmail.org>\", \"To\": \"Notmuch Test Suite <test_suite@notmuchmail.org>\", \"Bcc\": \"test_suite+bcc@notmuchmail.org\", \"Reply-To\": \"test_suite+replyto@notmuchmail.org\", \"Date\": \"Sat, 01 Jan 2000 12:00:00 +0000\"}, \"body\": [{\"id\": 1, \"content-type\": \"text/plain\", \"content\": \"json-show-message\n\"}]}, []]]]"
|
test_expect_equal_json "$output" "[[[{\"id\": \"XXXXX\", \"crypto\": {}, \"match\": true, \"excluded\": false, \"filename\": [\"YYYYY\"], \"timestamp\": 946728000, \"date_relative\": \"2000-01-01\", \"tags\": [\"inbox\",\"unread\"], \"headers\": {\"Subject\": \"json-show-subject\", \"From\": \"Notmuch Test Suite <test_suite@notmuchmail.org>\", \"To\": \"Notmuch Test Suite <test_suite@notmuchmail.org>\", \"Bcc\": \"test_suite+bcc@notmuchmail.org\", \"Reply-To\": \"test_suite+replyto@notmuchmail.org\", \"Date\": \"Sat, 01 Jan 2000 12:00:00 +0000\"}, \"body\": [{\"id\": 1, \"content-type\": \"text/plain\", \"content\": \"json-show-message\n\"}]}, []]]]"
|
||||||
|
|
||||||
# This should be the same output as above.
|
# This should be the same output as above.
|
||||||
test_begin_subtest "Show message: json --body=true"
|
test_begin_subtest "Show message: json --body=true"
|
||||||
output=$(notmuch show --format=json --body=true "json-show-message")
|
output=$(notmuch show --format=json --body=true "json-show-message" | notmuch_json_show_sanitize)
|
||||||
test_expect_equal_json "$output" "[[[{\"id\": \"${gen_msg_id}\", \"crypto\": {}, \"match\": true, \"excluded\": false, \"filename\": [\"${gen_msg_filename}\"], \"timestamp\": 946728000, \"date_relative\": \"2000-01-01\", \"tags\": [\"inbox\",\"unread\"], \"headers\": {\"Subject\": \"json-show-subject\", \"From\": \"Notmuch Test Suite <test_suite@notmuchmail.org>\", \"To\": \"Notmuch Test Suite <test_suite@notmuchmail.org>\", \"Bcc\": \"test_suite+bcc@notmuchmail.org\", \"Reply-To\": \"test_suite+replyto@notmuchmail.org\", \"Date\": \"Sat, 01 Jan 2000 12:00:00 +0000\"}, \"body\": [{\"id\": 1, \"content-type\": \"text/plain\", \"content\": \"json-show-message\n\"}]}, []]]]"
|
test_expect_equal_json "$output" "[[[{\"id\": \"XXXXX\", \"crypto\": {}, \"match\": true, \"excluded\": false, \"filename\": [\"YYYYY\"], \"timestamp\": 946728000, \"date_relative\": \"2000-01-01\", \"tags\": [\"inbox\",\"unread\"], \"headers\": {\"Subject\": \"json-show-subject\", \"From\": \"Notmuch Test Suite <test_suite@notmuchmail.org>\", \"To\": \"Notmuch Test Suite <test_suite@notmuchmail.org>\", \"Bcc\": \"test_suite+bcc@notmuchmail.org\", \"Reply-To\": \"test_suite+replyto@notmuchmail.org\", \"Date\": \"Sat, 01 Jan 2000 12:00:00 +0000\"}, \"body\": [{\"id\": 1, \"content-type\": \"text/plain\", \"content\": \"json-show-message\n\"}]}, []]]]"
|
||||||
|
|
||||||
test_begin_subtest "Show message: json --body=false"
|
test_begin_subtest "Show message: json --body=false"
|
||||||
output=$(notmuch show --format=json --body=false "json-show-message")
|
output=$(notmuch show --format=json --body=false "json-show-message" | notmuch_json_show_sanitize)
|
||||||
test_expect_equal_json "$output" "[[[{\"id\": \"${gen_msg_id}\", \"crypto\": {}, \"match\": true, \"excluded\": false, \"filename\": [\"${gen_msg_filename}\"], \"timestamp\": 946728000, \"date_relative\": \"2000-01-01\", \"tags\": [\"inbox\",\"unread\"], \"headers\": {\"Subject\": \"json-show-subject\", \"From\": \"Notmuch Test Suite <test_suite@notmuchmail.org>\", \"To\": \"Notmuch Test Suite <test_suite@notmuchmail.org>\", \"Bcc\": \"test_suite+bcc@notmuchmail.org\", \"Reply-To\": \"test_suite+replyto@notmuchmail.org\", \"Date\": \"Sat, 01 Jan 2000 12:00:00 +0000\"}}, []]]]"
|
test_expect_equal_json "$output" "[[[{\"id\": \"XXXXX\", \"crypto\": {}, \"match\": true, \"excluded\": false, \"filename\": [\"YYYYY\"], \"timestamp\": 946728000, \"date_relative\": \"2000-01-01\", \"tags\": [\"inbox\",\"unread\"], \"headers\": {\"Subject\": \"json-show-subject\", \"From\": \"Notmuch Test Suite <test_suite@notmuchmail.org>\", \"To\": \"Notmuch Test Suite <test_suite@notmuchmail.org>\", \"Bcc\": \"test_suite+bcc@notmuchmail.org\", \"Reply-To\": \"test_suite+replyto@notmuchmail.org\", \"Date\": \"Sat, 01 Jan 2000 12:00:00 +0000\"}}, []]]]"
|
||||||
|
|
||||||
test_begin_subtest "Search message: json"
|
test_begin_subtest "Search message: json"
|
||||||
add_message "[subject]=\"json-search-subject\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" "[body]=\"json-search-message\""
|
add_message "[subject]=\"json-search-subject\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" "[body]=\"json-search-message\""
|
||||||
|
@ -33,8 +33,8 @@ test_expect_equal_json "$output" "[{\"thread\": \"XXX\",
|
||||||
|
|
||||||
test_begin_subtest "Show message: json, utf-8"
|
test_begin_subtest "Show message: json, utf-8"
|
||||||
add_message "[subject]=\"json-show-utf8-body-sübjéct\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" "[body]=\"jsön-show-méssage\""
|
add_message "[subject]=\"json-show-utf8-body-sübjéct\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" "[body]=\"jsön-show-méssage\""
|
||||||
output=$(notmuch show --format=json "jsön-show-méssage")
|
output=$(notmuch show --format=json "jsön-show-méssage" | notmuch_json_show_sanitize)
|
||||||
test_expect_equal_json "$output" "[[[{\"id\": \"${gen_msg_id}\", \"crypto\": {}, \"match\": true, \"excluded\": false, \"filename\": [\"${gen_msg_filename}\"], \"timestamp\": 946728000, \"date_relative\": \"2000-01-01\", \"tags\": [\"inbox\",\"unread\"], \"headers\": {\"Subject\": \"json-show-utf8-body-sübjéct\", \"From\": \"Notmuch Test Suite <test_suite@notmuchmail.org>\", \"To\": \"Notmuch Test Suite <test_suite@notmuchmail.org>\", \"Date\": \"Sat, 01 Jan 2000 12:00:00 +0000\"}, \"body\": [{\"id\": 1, \"content-type\": \"text/plain\", \"content\": \"jsön-show-méssage\n\"}]}, []]]]"
|
test_expect_equal_json "$output" "[[[{\"id\": \"XXXXX\", \"crypto\": {}, \"match\": true, \"excluded\": false, \"filename\": [\"YYYYY\"], \"timestamp\": 946728000, \"date_relative\": \"2000-01-01\", \"tags\": [\"inbox\",\"unread\"], \"headers\": {\"Subject\": \"json-show-utf8-body-sübjéct\", \"From\": \"Notmuch Test Suite <test_suite@notmuchmail.org>\", \"To\": \"Notmuch Test Suite <test_suite@notmuchmail.org>\", \"Date\": \"Sat, 01 Jan 2000 12:00:00 +0000\"}, \"body\": [{\"id\": 1, \"content-type\": \"text/plain\", \"content\": \"jsön-show-méssage\n\"}]}, []]]]"
|
||||||
|
|
||||||
test_begin_subtest "Show message: json, inline attachment filename"
|
test_begin_subtest "Show message: json, inline attachment filename"
|
||||||
subject='json-show-inline-attachment-filename'
|
subject='json-show-inline-attachment-filename'
|
||||||
|
|
|
@ -376,18 +376,18 @@ test_begin_subtest "--format=text --part=8, no part, expect error"
|
||||||
test_expect_success "notmuch show --format=text --part=8 'id:87liy5ap00.fsf@yoom.home.cworth.org'"
|
test_expect_success "notmuch show --format=text --part=8 'id:87liy5ap00.fsf@yoom.home.cworth.org'"
|
||||||
|
|
||||||
test_begin_subtest "--format=json --part=0, full message"
|
test_begin_subtest "--format=json --part=0, full message"
|
||||||
notmuch show --format=json --part=0 'id:87liy5ap00.fsf@yoom.home.cworth.org' >OUTPUT
|
notmuch show --format=json --part=0 'id:87liy5ap00.fsf@yoom.home.cworth.org' | notmuch_json_show_sanitize >OUTPUT
|
||||||
cat <<EOF >EXPECTED
|
cat <<EOF >EXPECTED
|
||||||
{"id": "87liy5ap00.fsf@yoom.home.cworth.org", "crypto": {}, "match": true, "excluded": false, "filename": ["${MAIL_DIR}/multipart"], "timestamp": 978709437, "date_relative": "2001-01-05", "tags": ["attachment","inbox","signed","unread"], "headers": {"Subject": "Multipart message", "From": "Carl Worth <cworth@cworth.org>", "To": "cworth@cworth.org", "Date": "Fri, 05 Jan 2001 15:43:57 +0000"}, "body": [
|
{"id": "XXXXX", "crypto": {}, "match": true, "excluded": false, "filename": ["YYYYY"], "timestamp": 42, "date_relative": "2001-01-05", "tags": ["attachment","inbox","signed","unread"], "headers": {"Subject": "Multipart message", "From": "Carl Worth <cworth@cworth.org>", "To": "cworth@cworth.org", "Date": "GENERATED_DATE"}, "body": [
|
||||||
{"id": 1, "content-type": "multipart/signed", "content": [
|
{"id": 1, "content-type": "multipart/signed", "content": [
|
||||||
{"id": 2, "content-type": "multipart/mixed", "content": [
|
{"id": 2, "content-type": "multipart/mixed", "content": [
|
||||||
{"id": 3, "content-type": "message/rfc822", "content-disposition": "inline", "content": [{"headers": {"Subject": "html message", "From": "Carl Worth <cworth@cworth.org>", "To": "cworth@cworth.org", "Date": "Fri, 05 Jan 2001 15:42:57 +0000"}, "body": [
|
{"id": 3, "content-type": "message/rfc822", "content-disposition": "inline", "content": [{"headers": {"Subject": "html message", "From": "Carl Worth <cworth@cworth.org>", "To": "cworth@cworth.org", "Date": "GENERATED_DATE"}, "body": [
|
||||||
{"id": 4, "content-type": "multipart/alternative", "content": [
|
{"id": 4, "content-type": "multipart/alternative", "content": [
|
||||||
{"id": 5, "content-type": "text/html", "content-length": 71},
|
{"id": 5, "content-type": "text/html", "content-length": "NONZERO"},
|
||||||
{"id": 6, "content-type": "text/plain", "content": "This is an embedded message, with a multipart/alternative part.\n"}]}]}]},
|
{"id": 6, "content-type": "text/plain", "content": "This is an embedded message, with a multipart/alternative part.\n"}]}]}]},
|
||||||
{"id": 7, "content-type": "text/plain", "content-disposition": "attachment", "filename": "attachment", "content": "This is a text attachment.\n"},
|
{"id": 7, "content-type": "text/plain", "content-disposition": "attachment", "filename": "attachment", "content": "This is a text attachment.\n"},
|
||||||
{"id": 8, "content-type": "text/plain", "content": "And this message is signed.\n\n-Carl\n"}]},
|
{"id": 8, "content-type": "text/plain", "content": "And this message is signed.\n\n-Carl\n"}]},
|
||||||
{"id": 9, "content-type": "application/pgp-signature", "content-length": 197}]}]}
|
{"id": 9, "content-type": "application/pgp-signature", "content-length": "NONZERO"}]}]}
|
||||||
EOF
|
EOF
|
||||||
test_expect_equal_json "$(cat OUTPUT)" "$(cat EXPECTED)"
|
test_expect_equal_json "$(cat OUTPUT)" "$(cat EXPECTED)"
|
||||||
|
|
||||||
|
@ -485,7 +485,7 @@ notmuch show --format=raw 'id:87liy5ap00.fsf@yoom.home.cworth.org' >OUTPUT
|
||||||
test_expect_equal_file "${MAIL_DIR}"/multipart OUTPUT
|
test_expect_equal_file "${MAIL_DIR}"/multipart OUTPUT
|
||||||
|
|
||||||
test_begin_subtest "--format=raw --part=0, full message"
|
test_begin_subtest "--format=raw --part=0, full message"
|
||||||
notmuch show --format=raw --part=0 'id:87liy5ap00.fsf@yoom.home.cworth.org' >OUTPUT
|
notmuch show --format=raw --part=0 'id:87liy5ap00.fsf@yoom.home.cworth.org' | notmuch_json_show_sanitize >OUTPUT
|
||||||
test_expect_equal_file "${MAIL_DIR}"/multipart OUTPUT
|
test_expect_equal_file "${MAIL_DIR}"/multipart OUTPUT
|
||||||
|
|
||||||
test_begin_subtest "--format=raw --part=1, message body"
|
test_begin_subtest "--format=raw --part=1, message body"
|
||||||
|
@ -727,10 +727,10 @@ notmuch new > /dev/null
|
||||||
|
|
||||||
cat_expected_head () {
|
cat_expected_head () {
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
[[[{"id": "htmlmessage", "match":true, "excluded": false, "date_relative":"2000-01-01",
|
[[[{"id": "XXXXX", "match":true, "excluded": false, "date_relative":"2000-01-01",
|
||||||
"crypto": {},
|
"crypto": {},
|
||||||
"timestamp": 946684800,
|
"timestamp": 946684800,
|
||||||
"filename": ["${MAIL_DIR}/include-html"],
|
"filename": ["YYYYY"],
|
||||||
"tags": ["inbox", "unread"],
|
"tags": ["inbox", "unread"],
|
||||||
"headers": { "Date": "Sat, 01 Jan 2000 00:00:00 +0000", "From": "A <a@example.com>",
|
"headers": { "Date": "Sat, 01 Jan 2000 00:00:00 +0000", "From": "A <a@example.com>",
|
||||||
"Subject": "html message", "To": "B <b@example.com>"},
|
"Subject": "html message", "To": "B <b@example.com>"},
|
||||||
|
@ -742,8 +742,8 @@ EOF
|
||||||
cat_expected_head > EXPECTED.nohtml
|
cat_expected_head > EXPECTED.nohtml
|
||||||
cat <<EOF >> EXPECTED.nohtml
|
cat <<EOF >> EXPECTED.nohtml
|
||||||
"content": [
|
"content": [
|
||||||
{ "id": 2, "content-charset": "UTF-8", "content-length": 21, "content-type": "text/html"},
|
{ "id": 2, "content-charset": "UTF-8", "content-length": "NONZERO", "content-type": "text/html"},
|
||||||
{ "id": 3, "content-charset": "ISO-8859-1", "content-length": 20, "content-type": "text/html"},
|
{ "id": 3, "content-charset": "ISO-8859-1", "content-length": "NONZERO", "content-type": "text/html"},
|
||||||
{ "id": 4, "content-type": "text/plain", "content": "0.5 equals \\u00bd\\n"}
|
{ "id": 4, "content-type": "text/plain", "content": "0.5 equals \\u00bd\\n"}
|
||||||
]}]},[]]]]
|
]}]},[]]]]
|
||||||
EOF
|
EOF
|
||||||
|
@ -759,11 +759,11 @@ cat <<EOF >> EXPECTED.withhtml
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
test_begin_subtest "html parts excluded by default"
|
test_begin_subtest "html parts excluded by default"
|
||||||
notmuch show --format=json id:htmlmessage > OUTPUT
|
notmuch show --format=json id:htmlmessage | notmuch_json_show_sanitize > OUTPUT
|
||||||
test_expect_equal_json "$(cat OUTPUT)" "$(cat EXPECTED.nohtml)"
|
test_expect_equal_json "$(cat OUTPUT)" "$(cat EXPECTED.nohtml)"
|
||||||
|
|
||||||
test_begin_subtest "html parts included"
|
test_begin_subtest "html parts included"
|
||||||
notmuch show --format=json --include-html id:htmlmessage > OUTPUT
|
notmuch show --format=json --include-html id:htmlmessage | notmuch_json_show_sanitize > OUTPUT
|
||||||
test_expect_equal_json "$(cat OUTPUT)" "$(cat EXPECTED.withhtml)"
|
test_expect_equal_json "$(cat OUTPUT)" "$(cat EXPECTED.withhtml)"
|
||||||
|
|
||||||
test_begin_subtest "indexes mime-type #1"
|
test_begin_subtest "indexes mime-type #1"
|
||||||
|
|
|
@ -298,7 +298,8 @@ On Tue, 05 Jan 2010 15:43:56 -0000, ☃ <snowman@example.com> wrote:
|
||||||
OK"
|
OK"
|
||||||
|
|
||||||
test_begin_subtest "Reply with RFC 2047-encoded headers (JSON)"
|
test_begin_subtest "Reply with RFC 2047-encoded headers (JSON)"
|
||||||
output=$(echo '{"answer":' && notmuch reply --format=json id:${gen_msg_id} 2>&1 && echo ', "success": "OK"}')
|
output=$(echo '{"answer":' && notmuch reply --format=json id:${gen_msg_id} 2>&1 | notmuch_json_show_sanitize \
|
||||||
|
&& echo ', "success": "OK"}')
|
||||||
test_expect_equal_json "$output" '
|
test_expect_equal_json "$output" '
|
||||||
{ "answer": {
|
{ "answer": {
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -312,14 +313,14 @@ test_expect_equal_json "$output" '
|
||||||
"crypto": {},
|
"crypto": {},
|
||||||
"date_relative": "2010-01-05",
|
"date_relative": "2010-01-05",
|
||||||
"excluded": false,
|
"excluded": false,
|
||||||
"filename": ["'${MAIL_DIR}'/msg-015"],
|
"filename": ["YYYYY"],
|
||||||
"headers": {
|
"headers": {
|
||||||
"Date": "Tue, 05 Jan 2010 15:43:56 +0000",
|
"Date": "Tue, 05 Jan 2010 15:43:56 +0000",
|
||||||
"From": "\u2603 <snowman@example.com>",
|
"From": "\u2603 <snowman@example.com>",
|
||||||
"Subject": "\u00e0\u00df\u00e7",
|
"Subject": "\u00e0\u00df\u00e7",
|
||||||
"To": "Notmuch Test Suite <test_suite@notmuchmail.org>"
|
"To": "Notmuch Test Suite <test_suite@notmuchmail.org>"
|
||||||
},
|
},
|
||||||
"id": "'${gen_msg_id}'",
|
"id": "XXXXX",
|
||||||
"match": false,
|
"match": false,
|
||||||
"tags": [
|
"tags": [
|
||||||
"inbox",
|
"inbox",
|
||||||
|
|
Loading…
Reference in a new issue