notmuch/test/T090-search-output.sh
Jani Nikula ded713c39d test: rearrange the test corpus into subfolders, fix tests
We will need this for improved folder search tests, but having some
folders should exercise our code paths better anyway.

Modify the relevant test accordingly to make it pass.

This reorganization triggers a bug in the test suite, namely that it
expects the output of --output=files to be in a certain order. So we
add the fix for that into the same commit.

This mainly involves sorting, although the case --duplicate=$n
requires more subtlety.
2014-03-11 19:50:12 -03:00

409 lines
12 KiB
Bash
Executable file

#!/usr/bin/env bash
test_description='various settings for "notmuch search --output="'
. ./test-lib.sh
add_email_corpus
test_begin_subtest "--output=threads"
notmuch search --output=threads '*' | sed -e s/thread:.*/thread:THREADID/ >OUTPUT
cat <<EOF >EXPECTED
thread:THREADID
thread:THREADID
thread:THREADID
thread:THREADID
thread:THREADID
thread:THREADID
thread:THREADID
thread:THREADID
thread:THREADID
thread:THREADID
thread:THREADID
thread:THREADID
thread:THREADID
thread:THREADID
thread:THREADID
thread:THREADID
thread:THREADID
thread:THREADID
thread:THREADID
thread:THREADID
thread:THREADID
thread:THREADID
thread:THREADID
thread:THREADID
EOF
test_expect_equal_file OUTPUT EXPECTED
test_begin_subtest "--output=threads --format=json"
notmuch search --format=json --output=threads '*' | sed -e s/\".*\"/\"THREADID\"/ >OUTPUT
cat <<EOF >EXPECTED
["THREADID",
"THREADID",
"THREADID",
"THREADID",
"THREADID",
"THREADID",
"THREADID",
"THREADID",
"THREADID",
"THREADID",
"THREADID",
"THREADID",
"THREADID",
"THREADID",
"THREADID",
"THREADID",
"THREADID",
"THREADID",
"THREADID",
"THREADID",
"THREADID",
"THREADID",
"THREADID",
"THREADID"]
EOF
test_expect_equal_json "$(cat OUTPUT)" "$(cat EXPECTED)"
test_begin_subtest "--output=messages"
notmuch search --output=messages '*' >OUTPUT
cat <<EOF >EXPECTED
id:4EFC743A.3060609@april.org
id:877h1wv7mg.fsf@inf-8657.int-evry.fr
id:1258544095-16616-1-git-send-email-chris@chris-wilson.co.uk
id:877htoqdbo.fsf@yoom.home.cworth.org
id:878we4qdqf.fsf@yoom.home.cworth.org
id:87aaykqe24.fsf@yoom.home.cworth.org
id:87bpj0qeng.fsf@yoom.home.cworth.org
id:87fx8cqf8v.fsf@yoom.home.cworth.org
id:87hbssqfix.fsf@yoom.home.cworth.org
id:87iqd8qgiz.fsf@yoom.home.cworth.org
id:87k4xoqgnl.fsf@yoom.home.cworth.org
id:87ocn0qh6d.fsf@yoom.home.cworth.org
id:87pr7gqidx.fsf@yoom.home.cworth.org
id:867hto2p0t.fsf@fortitudo.i-did-not-set--mail-host-address--so-tickle-me
id:1258532999-9316-1-git-send-email-keithp@keithp.com
id:86aayk2rbj.fsf@fortitudo.i-did-not-set--mail-host-address--so-tickle-me
id:86d43g2w3y.fsf@fortitudo.i-did-not-set--mail-host-address--so-tickle-me
id:ddd65cda0911172214t60d22b63hcfeb5a19ab54a39b@mail.gmail.com
id:86einw2xof.fsf@fortitudo.i-did-not-set--mail-host-address--so-tickle-me
id:736613.51770.qm@web113505.mail.gq1.yahoo.com
id:1258520223-15328-1-git-send-email-jan@ryngle.com
id:ddd65cda0911171950o4eea4389v86de9525e46052d3@mail.gmail.com
id:1258510940-7018-1-git-send-email-stewart@flamingspork.com
id:yunzl6kd1w0.fsf@aiko.keithp.com
id:yun1vjwegii.fsf@aiko.keithp.com
id:yun3a4cegoa.fsf@aiko.keithp.com
id:1258509400-32511-1-git-send-email-stewart@flamingspork.com
id:1258506353-20352-1-git-send-email-stewart@flamingspork.com
id:20091118010116.GC25380@dottiness.seas.harvard.edu
id:20091118005829.GB25380@dottiness.seas.harvard.edu
id:20091118005040.GA25380@dottiness.seas.harvard.edu
id:cf0c4d610911171623q3e27a0adx802e47039b57604b@mail.gmail.com
id:1258500222-32066-1-git-send-email-ingmar@exherbo.org
id:20091117232137.GA7669@griffis1.net
id:20091118002059.067214ed@hikari
id:1258498485-sup-142@elly
id:f35dbb950911171438k5df6eb56k77b6c0944e2e79ae@mail.gmail.com
id:f35dbb950911171435ieecd458o853c873e35f4be95@mail.gmail.com
id:1258496327-12086-1-git-send-email-jan@ryngle.com
id:1258493565-13508-1-git-send-email-keithp@keithp.com
id:yunaayketfm.fsf@aiko.keithp.com
id:yunbpj0etua.fsf@aiko.keithp.com
id:1258491078-29658-1-git-send-email-dottedmag@dottedmag.net
id:87fx8can9z.fsf@vertex.dottedmag
id:20091117203301.GV3165@dottiness.seas.harvard.edu
id:87lji4lx9v.fsf@yoom.home.cworth.org
id:cf0c4d610911171136h1713aa59w9cf9aa31f052ad0a@mail.gmail.com
id:87iqd9rn3l.fsf@vertex.dottedmag
id:20091117190054.GU3165@dottiness.seas.harvard.edu
id:87lji5cbwo.fsf@yoom.home.cworth.org
id:1258471718-6781-2-git-send-email-dottedmag@dottedmag.net
id:1258471718-6781-1-git-send-email-dottedmag@dottedmag.net
EOF
test_expect_equal_file OUTPUT EXPECTED
test_begin_subtest "--output=messages --format=json"
notmuch search --format=json --output=messages '*' >OUTPUT
cat <<EOF >EXPECTED
["4EFC743A.3060609@april.org",
"877h1wv7mg.fsf@inf-8657.int-evry.fr",
"1258544095-16616-1-git-send-email-chris@chris-wilson.co.uk",
"877htoqdbo.fsf@yoom.home.cworth.org",
"878we4qdqf.fsf@yoom.home.cworth.org",
"87aaykqe24.fsf@yoom.home.cworth.org",
"87bpj0qeng.fsf@yoom.home.cworth.org",
"87fx8cqf8v.fsf@yoom.home.cworth.org",
"87hbssqfix.fsf@yoom.home.cworth.org",
"87iqd8qgiz.fsf@yoom.home.cworth.org",
"87k4xoqgnl.fsf@yoom.home.cworth.org",
"87ocn0qh6d.fsf@yoom.home.cworth.org",
"87pr7gqidx.fsf@yoom.home.cworth.org",
"867hto2p0t.fsf@fortitudo.i-did-not-set--mail-host-address--so-tickle-me",
"1258532999-9316-1-git-send-email-keithp@keithp.com",
"86aayk2rbj.fsf@fortitudo.i-did-not-set--mail-host-address--so-tickle-me",
"86d43g2w3y.fsf@fortitudo.i-did-not-set--mail-host-address--so-tickle-me",
"ddd65cda0911172214t60d22b63hcfeb5a19ab54a39b@mail.gmail.com",
"86einw2xof.fsf@fortitudo.i-did-not-set--mail-host-address--so-tickle-me",
"736613.51770.qm@web113505.mail.gq1.yahoo.com",
"1258520223-15328-1-git-send-email-jan@ryngle.com",
"ddd65cda0911171950o4eea4389v86de9525e46052d3@mail.gmail.com",
"1258510940-7018-1-git-send-email-stewart@flamingspork.com",
"yunzl6kd1w0.fsf@aiko.keithp.com",
"yun1vjwegii.fsf@aiko.keithp.com",
"yun3a4cegoa.fsf@aiko.keithp.com",
"1258509400-32511-1-git-send-email-stewart@flamingspork.com",
"1258506353-20352-1-git-send-email-stewart@flamingspork.com",
"20091118010116.GC25380@dottiness.seas.harvard.edu",
"20091118005829.GB25380@dottiness.seas.harvard.edu",
"20091118005040.GA25380@dottiness.seas.harvard.edu",
"cf0c4d610911171623q3e27a0adx802e47039b57604b@mail.gmail.com",
"1258500222-32066-1-git-send-email-ingmar@exherbo.org",
"20091117232137.GA7669@griffis1.net",
"20091118002059.067214ed@hikari",
"1258498485-sup-142@elly",
"f35dbb950911171438k5df6eb56k77b6c0944e2e79ae@mail.gmail.com",
"f35dbb950911171435ieecd458o853c873e35f4be95@mail.gmail.com",
"1258496327-12086-1-git-send-email-jan@ryngle.com",
"1258493565-13508-1-git-send-email-keithp@keithp.com",
"yunaayketfm.fsf@aiko.keithp.com",
"yunbpj0etua.fsf@aiko.keithp.com",
"1258491078-29658-1-git-send-email-dottedmag@dottedmag.net",
"87fx8can9z.fsf@vertex.dottedmag",
"20091117203301.GV3165@dottiness.seas.harvard.edu",
"87lji4lx9v.fsf@yoom.home.cworth.org",
"cf0c4d610911171136h1713aa59w9cf9aa31f052ad0a@mail.gmail.com",
"87iqd9rn3l.fsf@vertex.dottedmag",
"20091117190054.GU3165@dottiness.seas.harvard.edu",
"87lji5cbwo.fsf@yoom.home.cworth.org",
"1258471718-6781-2-git-send-email-dottedmag@dottedmag.net",
"1258471718-6781-1-git-send-email-dottedmag@dottedmag.net"]
EOF
test_expect_equal_file OUTPUT EXPECTED
test_begin_subtest "--output=files"
notmuch search --output=files '*' | notmuch_search_files_sanitize | sort >OUTPUT
cat <<EOF >EXPECTED
MAIL_DIR/01:2,
MAIL_DIR/02:2,
MAIL_DIR/bar/17:2,
MAIL_DIR/bar/18:2,
MAIL_DIR/bar/baz/05:2,
MAIL_DIR/bar/baz/23:2,
MAIL_DIR/bar/baz/24:2,
MAIL_DIR/bar/baz/cur/25:2,
MAIL_DIR/bar/baz/cur/26:2,
MAIL_DIR/bar/baz/new/27:2,
MAIL_DIR/bar/baz/new/28:2,
MAIL_DIR/bar/cur/19:2,
MAIL_DIR/bar/cur/20:2,
MAIL_DIR/bar/new/21:2,
MAIL_DIR/bar/new/22:2,
MAIL_DIR/cur/29:2,
MAIL_DIR/cur/30:2,
MAIL_DIR/cur/31:2,
MAIL_DIR/cur/32:2,
MAIL_DIR/cur/33:2,
MAIL_DIR/cur/34:2,
MAIL_DIR/cur/35:2,
MAIL_DIR/cur/36:2,
MAIL_DIR/cur/37:2,
MAIL_DIR/cur/38:2,
MAIL_DIR/cur/39:2,
MAIL_DIR/cur/40:2,
MAIL_DIR/cur/41:2,
MAIL_DIR/cur/42:2,
MAIL_DIR/cur/43:2,
MAIL_DIR/cur/44:2,
MAIL_DIR/cur/45:2,
MAIL_DIR/cur/46:2,
MAIL_DIR/cur/47:2,
MAIL_DIR/cur/48:2,
MAIL_DIR/cur/49:2,
MAIL_DIR/cur/50:2,
MAIL_DIR/cur/51:2,
MAIL_DIR/cur/52:2,
MAIL_DIR/cur/53:2,
MAIL_DIR/foo/06:2,
MAIL_DIR/foo/baz/11:2,
MAIL_DIR/foo/baz/12:2,
MAIL_DIR/foo/baz/cur/13:2,
MAIL_DIR/foo/baz/cur/14:2,
MAIL_DIR/foo/baz/new/15:2,
MAIL_DIR/foo/baz/new/16:2,
MAIL_DIR/foo/cur/07:2,
MAIL_DIR/foo/cur/08:2,
MAIL_DIR/foo/new/03:2,
MAIL_DIR/foo/new/09:2,
MAIL_DIR/foo/new/10:2,
MAIL_DIR/new/04:2,
EOF
test_expect_equal_file OUTPUT EXPECTED
dup1=$(notmuch search --output=files id:20091117232137.GA7669@griffis1.net | head -n 1 | sed -e "s,$MAIL_DIR,MAIL_DIR,")
dup2=$(notmuch search --output=files id:20091117232137.GA7669@griffis1.net | tail -n 1 | sed -e "s,$MAIL_DIR,MAIL_DIR,")
test_begin_subtest "--output=files --duplicate=1"
notmuch search --output=files --duplicate=1 '*' | notmuch_search_files_sanitize | sort >OUTPUT
cat <<EOF | sort >EXPECTED
$dup1
MAIL_DIR/cur/52:2,
MAIL_DIR/cur/53:2,
MAIL_DIR/cur/50:2,
MAIL_DIR/cur/49:2,
MAIL_DIR/cur/48:2,
MAIL_DIR/cur/47:2,
MAIL_DIR/cur/46:2,
MAIL_DIR/cur/45:2,
MAIL_DIR/cur/44:2,
MAIL_DIR/cur/43:2,
MAIL_DIR/cur/42:2,
MAIL_DIR/cur/41:2,
MAIL_DIR/cur/40:2,
MAIL_DIR/cur/39:2,
MAIL_DIR/cur/38:2,
MAIL_DIR/cur/37:2,
MAIL_DIR/cur/36:2,
MAIL_DIR/cur/35:2,
MAIL_DIR/cur/34:2,
MAIL_DIR/cur/33:2,
MAIL_DIR/cur/32:2,
MAIL_DIR/cur/31:2,
MAIL_DIR/cur/30:2,
MAIL_DIR/cur/29:2,
MAIL_DIR/bar/baz/new/28:2,
MAIL_DIR/bar/baz/new/27:2,
MAIL_DIR/bar/baz/cur/26:2,
MAIL_DIR/bar/baz/cur/25:2,
MAIL_DIR/bar/baz/24:2,
MAIL_DIR/bar/baz/23:2,
MAIL_DIR/bar/new/22:2,
MAIL_DIR/bar/new/21:2,
MAIL_DIR/bar/cur/19:2,
MAIL_DIR/bar/cur/20:2,
MAIL_DIR/bar/17:2,
MAIL_DIR/foo/baz/new/16:2,
MAIL_DIR/foo/baz/new/15:2,
MAIL_DIR/foo/baz/cur/14:2,
MAIL_DIR/foo/baz/cur/13:2,
MAIL_DIR/foo/baz/12:2,
MAIL_DIR/foo/baz/11:2,
MAIL_DIR/foo/new/10:2,
MAIL_DIR/foo/new/09:2,
MAIL_DIR/foo/cur/08:2,
MAIL_DIR/foo/06:2,
MAIL_DIR/bar/baz/05:2,
MAIL_DIR/new/04:2,
MAIL_DIR/foo/new/03:2,
MAIL_DIR/foo/cur/07:2,
MAIL_DIR/02:2,
MAIL_DIR/01:2,
EOF
test_expect_equal_file OUTPUT EXPECTED
test_begin_subtest "--output=files --format=json"
notmuch search --format=json --output=files '*' | notmuch_search_files_sanitize \
| test_sort_json >OUTPUT
cat <<EOF | test_sort_json >EXPECTED
["MAIL_DIR/cur/52:2,",
"MAIL_DIR/cur/53:2,",
"MAIL_DIR/cur/50:2,",
"MAIL_DIR/cur/49:2,",
"MAIL_DIR/cur/48:2,",
"MAIL_DIR/cur/47:2,",
"MAIL_DIR/cur/46:2,",
"MAIL_DIR/cur/45:2,",
"MAIL_DIR/cur/44:2,",
"MAIL_DIR/cur/43:2,",
"MAIL_DIR/cur/42:2,",
"MAIL_DIR/cur/41:2,",
"MAIL_DIR/cur/40:2,",
"MAIL_DIR/cur/39:2,",
"MAIL_DIR/cur/38:2,",
"MAIL_DIR/cur/37:2,",
"MAIL_DIR/cur/36:2,",
"MAIL_DIR/cur/35:2,",
"MAIL_DIR/cur/34:2,",
"MAIL_DIR/cur/33:2,",
"MAIL_DIR/cur/32:2,",
"MAIL_DIR/cur/31:2,",
"MAIL_DIR/cur/30:2,",
"MAIL_DIR/cur/29:2,",
"MAIL_DIR/bar/baz/new/28:2,",
"MAIL_DIR/bar/baz/new/27:2,",
"MAIL_DIR/bar/baz/cur/26:2,",
"MAIL_DIR/bar/baz/cur/25:2,",
"MAIL_DIR/bar/baz/24:2,",
"MAIL_DIR/bar/baz/23:2,",
"MAIL_DIR/bar/new/22:2,",
"MAIL_DIR/bar/new/21:2,",
"MAIL_DIR/bar/cur/19:2,",
"MAIL_DIR/bar/18:2,",
"MAIL_DIR/cur/51:2,",
"MAIL_DIR/bar/cur/20:2,",
"MAIL_DIR/bar/17:2,",
"MAIL_DIR/foo/baz/new/16:2,",
"MAIL_DIR/foo/baz/new/15:2,",
"MAIL_DIR/foo/baz/cur/14:2,",
"MAIL_DIR/foo/baz/cur/13:2,",
"MAIL_DIR/foo/baz/12:2,",
"MAIL_DIR/foo/baz/11:2,",
"MAIL_DIR/foo/new/10:2,",
"MAIL_DIR/foo/new/09:2,",
"MAIL_DIR/foo/cur/08:2,",
"MAIL_DIR/foo/06:2,",
"MAIL_DIR/bar/baz/05:2,",
"MAIL_DIR/new/04:2,",
"MAIL_DIR/foo/new/03:2,",
"MAIL_DIR/foo/cur/07:2,",
"MAIL_DIR/02:2,",
"MAIL_DIR/01:2,"]
EOF
test_expect_equal_file OUTPUT EXPECTED
test_begin_subtest "--output=files --format=json --duplicate=2"
notmuch search --format=json --output=files --duplicate=2 '*' | notmuch_search_files_sanitize >OUTPUT
cat <<EOF >EXPECTED
["$dup2"]
EOF
test_expect_equal_file OUTPUT EXPECTED
test_begin_subtest "--output=tags"
notmuch search --output=tags '*' >OUTPUT
cat <<EOF >EXPECTED
attachment
inbox
signed
unread
EOF
test_expect_equal_file OUTPUT EXPECTED
test_begin_subtest "--output=tags --format=json"
notmuch search --format=json --output=tags '*' >OUTPUT
cat <<EOF >EXPECTED
["attachment",
"inbox",
"signed",
"unread"]
EOF
test_expect_equal_file OUTPUT EXPECTED
test_begin_subtest "sanitize output for quoted-printable line-breaks in author and subject"
add_message "[subject]='two =?ISO-8859-1?Q?line=0A_subject?=
headers'"
notmuch search id:"$gen_msg_id" | notmuch_search_sanitize >OUTPUT
cat <<EOF >EXPECTED
thread:XXX 2001-01-05 [1/1] Notmuch Test Suite; two line subject headers (inbox unread)
EOF
test_expect_equal_file OUTPUT EXPECTED
test_begin_subtest "search for non-existent message prints nothing"
notmuch search "no-message-matches-this" > OUTPUT
echo -n >EXPECTED
test_expect_equal_file OUTPUT EXPECTED
test_begin_subtest "search --format=json for non-existent message prints proper empty json"
notmuch search --format=json "no-message-matches-this" > OUTPUT
echo "[]" >EXPECTED
test_expect_equal_file OUTPUT EXPECTED
test_done