1#!/usr/bin/env bash
2test_description='"notmuch search" --offset and --limit parameters'
3. $(dirname "$0")/test-lib.sh || exit 1
4
5add_email_corpus
6
7for outp in messages threads; do
8    test_begin_subtest "${outp}: limit does the right thing"
9    notmuch search --output=${outp} "*" | head -n 20 >expected
10    notmuch search --output=${outp} --limit=20 "*" >output
11    test_expect_equal_file expected output
12
13    test_begin_subtest "${outp}: concatenation of limited searches"
14    notmuch search --output=${outp} "*" | head -n 20 >expected
15    notmuch search --output=${outp} --limit=10 "*" >output
16    notmuch search --output=${outp} --limit=10 --offset=10 "*" >>output
17    test_expect_equal_file expected output
18
19    test_begin_subtest "${outp}: limit larger than result set"
20    N=`notmuch count --output=${outp} "*"`
21    notmuch search --output=${outp} "*" >expected
22    notmuch search --output=${outp} --limit=$((1 + ${N})) "*" >output
23    test_expect_equal_file expected output
24
25    test_begin_subtest "${outp}: limit = 0"
26    test_expect_equal "`notmuch search --output=${outp} --limit=0 "*"`" ""
27
28    test_begin_subtest "${outp}: offset does the right thing"
29    # note: tail -n +N is 1-based
30    notmuch search --output=${outp} "*" | tail -n +21 >expected
31    notmuch search --output=${outp} --offset=20 "*" >output
32    test_expect_equal_file expected output
33
34    test_begin_subtest "${outp}: offset = 0"
35    notmuch search --output=${outp} "*" >expected
36    notmuch search --output=${outp} --offset=0 "*" >output
37    test_expect_equal_file expected output
38
39    test_begin_subtest "${outp}: negative offset"
40    notmuch search --output=${outp} "*" | tail -n 20 >expected
41    notmuch search --output=${outp} --offset=-20 "*" >output
42    test_expect_equal_file expected output
43
44    test_begin_subtest "${outp}: negative offset"
45    notmuch search --output=${outp} "*" | tail -n 1 >expected
46    notmuch search --output=${outp} --offset=-1 "*" >output
47    test_expect_equal_file expected output
48
49    test_begin_subtest "${outp}: negative offset combined with limit"
50    notmuch search --output=${outp} "*" | tail -n 20 | head -n 10 >expected
51    notmuch search --output=${outp} --offset=-20 --limit=10 "*" >output
52    test_expect_equal_file expected output
53
54    test_begin_subtest "${outp}: negative offset combined with equal limit"
55    notmuch search --output=${outp} "*" | tail -n 20 >expected
56    notmuch search --output=${outp} --offset=-20 --limit=20 "*" >output
57    test_expect_equal_file expected output
58
59    test_begin_subtest "${outp}: negative offset combined with large limit"
60    notmuch search --output=${outp} "*" | tail -n 20 >expected
61    notmuch search --output=${outp} --offset=-20 --limit=50 "*" >output
62    test_expect_equal_file expected output
63
64    test_begin_subtest "${outp}: negative offset larger then results"
65    N=`notmuch count --output=${outp} "*"`
66    notmuch search --output=${outp} "*" >expected
67    notmuch search --output=${outp} --offset=-$((1 + ${N})) "*" >output
68    test_expect_equal_file expected output
69done
70
71test_done
72