Skip to content

Commit 46f3923

Browse files
committed
SieveScript/test: Support duplicate tests
1 parent 025c3ff commit 46f3923

File tree

2 files changed

+37
-1
lines changed

2 files changed

+37
-1
lines changed

Diff for: cassandane/tiny-tests/JMAPSieve/sieve-test-extensive

+10-1
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,15 @@ add_sieve_tests(
133133
],
134134
);
135135

136+
### duplicate
137+
add_sieve_tests(
138+
"duplicate",
139+
'if duplicate { discard; }',
140+
[
141+
[ 'keep', {}, [] ],
142+
],
143+
);
144+
136145
### someInThreadHaveKeyword
137146
sub test_sieve_test_extensive_some_in_thread_have_keyword
138147
:min_version_3_3 :JMAPExtensions
@@ -235,7 +244,7 @@ sub new_sieve_blob {
235244

236245
xlog "create script";
237246
my $fullscript = <<EOF;
238-
require ["fileinto", "extlists", "imap4flags", "copy", "variables", "mailbox", "mailboxid", "special-use", "vnd.cyrus.log", "vnd.cyrus.jmapquery", "vnd.cyrus.imip"];
247+
require ["fileinto", "extlists", "imap4flags", "copy", "variables", "mailbox", "mailboxid", "special-use", "vnd.cyrus.log", "vnd.cyrus.jmapquery", "vnd.cyrus.imip", "duplicate"];
239248
240249
$sieve
241250
EOF

Diff for: imap/jmap_sieve.c

+27
Original file line numberDiff line numberDiff line change
@@ -1948,6 +1948,32 @@ static int execute_error(const char *msg,
19481948
return SIEVE_OK;
19491949
}
19501950

1951+
static int sieve_duplicate_check(void *dc __attribute__((unused)),
1952+
void *ic __attribute__((unused)),
1953+
void *sc __attribute__((unused)),
1954+
void *mc __attribute__((unused)),
1955+
const char **errmsg __attribute__((unused)))
1956+
{
1957+
/* no active tracking records in this test mode */
1958+
return 0;
1959+
}
1960+
1961+
static int sieve_duplicate_track(void *dc __attribute__((unused)),
1962+
void *ic __attribute__((unused)),
1963+
void *sc __attribute__((unused)),
1964+
void *mc __attribute__((unused)),
1965+
const char **errmsg __attribute__((unused)))
1966+
{
1967+
return SIEVE_OK;
1968+
}
1969+
1970+
/* duplicate support */
1971+
static sieve_duplicate_t duplicate = {
1972+
0, /* max expiration */
1973+
&sieve_duplicate_check,
1974+
&sieve_duplicate_track,
1975+
};
1976+
19511977
static const char *_envelope_address_parse(json_t *addr,
19521978
struct jmap_parser *parser)
19531979
{
@@ -2196,6 +2222,7 @@ static int jmap_sieve_test(struct jmap_req *req)
21962222
sieve_register_processcal(interp, processcal);
21972223
sieve_register_include(interp, getinclude);
21982224
sieve_register_execute_error(interp, execute_error);
2225+
sieve_register_duplicate(interp, &duplicate);
21992226

22002227
/* test against each email */
22012228
size_t i;

0 commit comments

Comments
 (0)