]> git.notmuchmail.org Git - notmuch/blob - test/T095-address.sh
cli: address: Add --output=count
[notmuch] / test / T095-address.sh
1 #!/usr/bin/env bash
2 test_description='"notmuch address" in several variants'
3 . ./test-lib.sh
4
5 add_email_corpus
6
7 test_begin_subtest "--output=sender"
8 notmuch address --output=sender '*' >OUTPUT
9 cat <<EOF >EXPECTED
10 François Boulogne <boulogne.f@gmail.com>
11 Olivier Berger <olivier.berger@it-sudparis.eu>
12 Chris Wilson <chris@chris-wilson.co.uk>
13 Carl Worth <cworth@cworth.org>
14 Alexander Botero-Lowry <alex.boterolowry@gmail.com>
15 Keith Packard <keithp@keithp.com>
16 Jjgod Jiang <gzjjgod@gmail.com>
17 Rolland Santimano <rollandsantimano@yahoo.com>
18 Jan Janak <jan@ryngle.com>
19 Stewart Smith <stewart@flamingspork.com>
20 Lars Kellogg-Stedman <lars@seas.harvard.edu>
21 Alex Botero-Lowry <alex.boterolowry@gmail.com>
22 Ingmar Vanhassel <ingmar@exherbo.org>
23 Aron Griffis <agriffis@n01se.net>
24 Adrian Perez de Castro <aperez@igalia.com>
25 Israel Herraiz <isra@herraiz.org>
26 Mikhail Gusarov <dottedmag@dottedmag.net>
27 EOF
28 test_expect_equal_file OUTPUT EXPECTED
29
30 test_begin_subtest "--output=sender --format=json"
31 notmuch address --output=sender --format=json '*' >OUTPUT
32 cat <<EOF >EXPECTED
33 [{"name": "François Boulogne", "address": "boulogne.f@gmail.com", "name-addr": "François Boulogne <boulogne.f@gmail.com>"},
34 {"name": "Olivier Berger", "address": "olivier.berger@it-sudparis.eu", "name-addr": "Olivier Berger <olivier.berger@it-sudparis.eu>"},
35 {"name": "Chris Wilson", "address": "chris@chris-wilson.co.uk", "name-addr": "Chris Wilson <chris@chris-wilson.co.uk>"},
36 {"name": "Carl Worth", "address": "cworth@cworth.org", "name-addr": "Carl Worth <cworth@cworth.org>"},
37 {"name": "Alexander Botero-Lowry", "address": "alex.boterolowry@gmail.com", "name-addr": "Alexander Botero-Lowry <alex.boterolowry@gmail.com>"},
38 {"name": "Keith Packard", "address": "keithp@keithp.com", "name-addr": "Keith Packard <keithp@keithp.com>"},
39 {"name": "Jjgod Jiang", "address": "gzjjgod@gmail.com", "name-addr": "Jjgod Jiang <gzjjgod@gmail.com>"},
40 {"name": "Rolland Santimano", "address": "rollandsantimano@yahoo.com", "name-addr": "Rolland Santimano <rollandsantimano@yahoo.com>"},
41 {"name": "Jan Janak", "address": "jan@ryngle.com", "name-addr": "Jan Janak <jan@ryngle.com>"},
42 {"name": "Stewart Smith", "address": "stewart@flamingspork.com", "name-addr": "Stewart Smith <stewart@flamingspork.com>"},
43 {"name": "Lars Kellogg-Stedman", "address": "lars@seas.harvard.edu", "name-addr": "Lars Kellogg-Stedman <lars@seas.harvard.edu>"},
44 {"name": "Alex Botero-Lowry", "address": "alex.boterolowry@gmail.com", "name-addr": "Alex Botero-Lowry <alex.boterolowry@gmail.com>"},
45 {"name": "Ingmar Vanhassel", "address": "ingmar@exherbo.org", "name-addr": "Ingmar Vanhassel <ingmar@exherbo.org>"},
46 {"name": "Aron Griffis", "address": "agriffis@n01se.net", "name-addr": "Aron Griffis <agriffis@n01se.net>"},
47 {"name": "Adrian Perez de Castro", "address": "aperez@igalia.com", "name-addr": "Adrian Perez de Castro <aperez@igalia.com>"},
48 {"name": "Israel Herraiz", "address": "isra@herraiz.org", "name-addr": "Israel Herraiz <isra@herraiz.org>"},
49 {"name": "Mikhail Gusarov", "address": "dottedmag@dottedmag.net", "name-addr": "Mikhail Gusarov <dottedmag@dottedmag.net>"}]
50 EOF
51 test_expect_equal_file OUTPUT EXPECTED
52
53 test_begin_subtest "--output=recipients"
54 notmuch address --output=recipients '*' >OUTPUT
55 cat <<EOF >EXPECTED
56 Allan McRae <allan@archlinux.org>
57 "Discussion about the Arch User Repository (AUR)" <aur-general@archlinux.org>
58 olivier.berger@it-sudparis.eu
59 notmuch@notmuchmail.org
60 notmuch <notmuch@notmuchmail.org>
61 Keith Packard <keithp@keithp.com>
62 Mikhail Gusarov <dottedmag@dottedmag.net>
63 EOF
64 test_expect_equal_file OUTPUT EXPECTED
65
66 test_begin_subtest "--output=sender --output=recipients"
67 notmuch address --output=sender --output=recipients '*' >OUTPUT
68 cat <<EOF >EXPECTED
69 François Boulogne <boulogne.f@gmail.com>
70 Allan McRae <allan@archlinux.org>
71 "Discussion about the Arch User Repository (AUR)" <aur-general@archlinux.org>
72 Olivier Berger <olivier.berger@it-sudparis.eu>
73 olivier.berger@it-sudparis.eu
74 Chris Wilson <chris@chris-wilson.co.uk>
75 notmuch@notmuchmail.org
76 Carl Worth <cworth@cworth.org>
77 Alexander Botero-Lowry <alex.boterolowry@gmail.com>
78 Keith Packard <keithp@keithp.com>
79 Jjgod Jiang <gzjjgod@gmail.com>
80 Rolland Santimano <rollandsantimano@yahoo.com>
81 Jan Janak <jan@ryngle.com>
82 Stewart Smith <stewart@flamingspork.com>
83 Lars Kellogg-Stedman <lars@seas.harvard.edu>
84 notmuch <notmuch@notmuchmail.org>
85 Alex Botero-Lowry <alex.boterolowry@gmail.com>
86 Ingmar Vanhassel <ingmar@exherbo.org>
87 Aron Griffis <agriffis@n01se.net>
88 Adrian Perez de Castro <aperez@igalia.com>
89 Israel Herraiz <isra@herraiz.org>
90 Mikhail Gusarov <dottedmag@dottedmag.net>
91 EOF
92 test_expect_equal_file OUTPUT EXPECTED
93
94 test_begin_subtest "without --output"
95 notmuch address '*' >OUTPUT
96 # Use EXPECTED from previous subtest
97 test_expect_equal_file OUTPUT EXPECTED
98
99 test_begin_subtest "--output=sender --output=count"
100 notmuch address --output=sender --output=count '*' | sort -n >OUTPUT
101 cat <<EOF >EXPECTED
102 1       Adrian Perez de Castro <aperez@igalia.com>
103 1       Aron Griffis <agriffis@n01se.net>
104 1       Chris Wilson <chris@chris-wilson.co.uk>
105 1       François Boulogne <boulogne.f@gmail.com>
106 1       Ingmar Vanhassel <ingmar@exherbo.org>
107 1       Israel Herraiz <isra@herraiz.org>
108 1       Olivier Berger <olivier.berger@it-sudparis.eu>
109 1       Rolland Santimano <rollandsantimano@yahoo.com>
110 2       Alex Botero-Lowry <alex.boterolowry@gmail.com>
111 2       Jjgod Jiang <gzjjgod@gmail.com>
112 3       Stewart Smith <stewart@flamingspork.com>
113 4       Alexander Botero-Lowry <alex.boterolowry@gmail.com>
114 4       Jan Janak <jan@ryngle.com>
115 5       Lars Kellogg-Stedman <lars@seas.harvard.edu>
116 5       Mikhail Gusarov <dottedmag@dottedmag.net>
117 7       Keith Packard <keithp@keithp.com>
118 12      Carl Worth <cworth@cworth.org>
119 EOF
120 test_expect_equal_file OUTPUT EXPECTED
121
122 test_begin_subtest "--output=sender --output=count --format=json"
123 # Since the iteration order of GHashTable is not specified, we
124 # preprocess and sort the results to keep the order stable here.
125 notmuch address --output=sender --output=count --format=json '*' | \
126     sed -e 's/^\[//' -e 's/]$//' -e 's/,$//' | sort >OUTPUT
127 cat <<EOF >EXPECTED
128 {"name": "Adrian Perez de Castro", "address": "aperez@igalia.com", "name-addr": "Adrian Perez de Castro <aperez@igalia.com>", "count": 1}
129 {"name": "Alex Botero-Lowry", "address": "alex.boterolowry@gmail.com", "name-addr": "Alex Botero-Lowry <alex.boterolowry@gmail.com>", "count": 2}
130 {"name": "Alexander Botero-Lowry", "address": "alex.boterolowry@gmail.com", "name-addr": "Alexander Botero-Lowry <alex.boterolowry@gmail.com>", "count": 4}
131 {"name": "Aron Griffis", "address": "agriffis@n01se.net", "name-addr": "Aron Griffis <agriffis@n01se.net>", "count": 1}
132 {"name": "Carl Worth", "address": "cworth@cworth.org", "name-addr": "Carl Worth <cworth@cworth.org>", "count": 12}
133 {"name": "Chris Wilson", "address": "chris@chris-wilson.co.uk", "name-addr": "Chris Wilson <chris@chris-wilson.co.uk>", "count": 1}
134 {"name": "François Boulogne", "address": "boulogne.f@gmail.com", "name-addr": "François Boulogne <boulogne.f@gmail.com>", "count": 1}
135 {"name": "Ingmar Vanhassel", "address": "ingmar@exherbo.org", "name-addr": "Ingmar Vanhassel <ingmar@exherbo.org>", "count": 1}
136 {"name": "Israel Herraiz", "address": "isra@herraiz.org", "name-addr": "Israel Herraiz <isra@herraiz.org>", "count": 1}
137 {"name": "Jan Janak", "address": "jan@ryngle.com", "name-addr": "Jan Janak <jan@ryngle.com>", "count": 4}
138 {"name": "Jjgod Jiang", "address": "gzjjgod@gmail.com", "name-addr": "Jjgod Jiang <gzjjgod@gmail.com>", "count": 2}
139 {"name": "Keith Packard", "address": "keithp@keithp.com", "name-addr": "Keith Packard <keithp@keithp.com>", "count": 7}
140 {"name": "Lars Kellogg-Stedman", "address": "lars@seas.harvard.edu", "name-addr": "Lars Kellogg-Stedman <lars@seas.harvard.edu>", "count": 5}
141 {"name": "Mikhail Gusarov", "address": "dottedmag@dottedmag.net", "name-addr": "Mikhail Gusarov <dottedmag@dottedmag.net>", "count": 5}
142 {"name": "Olivier Berger", "address": "olivier.berger@it-sudparis.eu", "name-addr": "Olivier Berger <olivier.berger@it-sudparis.eu>", "count": 1}
143 {"name": "Rolland Santimano", "address": "rollandsantimano@yahoo.com", "name-addr": "Rolland Santimano <rollandsantimano@yahoo.com>", "count": 1}
144 {"name": "Stewart Smith", "address": "stewart@flamingspork.com", "name-addr": "Stewart Smith <stewart@flamingspork.com>", "count": 3}
145 EOF
146 test_expect_equal_file OUTPUT EXPECTED
147
148 test_done