X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=test%2FT081-sexpr-search.sh;h=ce6b11b637674f663ff4cfcd44fefc027c1b8bf4;hb=HEAD;hp=35136417082531eda63897889ac8a4b10c2851be;hpb=4464a5d073a9062de534fad12c9bc2ade991fd14;p=notmuch diff --git a/test/T081-sexpr-search.sh b/test/T081-sexpr-search.sh index 35136417..8800b545 100755 --- a/test/T081-sexpr-search.sh +++ b/test/T081-sexpr-search.sh @@ -2,7 +2,7 @@ test_description='"notmuch search" in several variations' . $(dirname "$0")/test-lib.sh || exit 1 -if [ $NOTMUCH_HAVE_SFSEXP -ne 1 ]; then +if [ "${NOTMUCH_HAVE_SFSEXP-0}" != "1" ]; then printf "Skipping due to missing sfsexp library\n" test_done fi @@ -934,6 +934,14 @@ notmuch search lastmod:$revision..$revision | notmuch_search_sanitize > EXPECTED notmuch search --query=sexp "(and (lastmod $revision))" | notmuch_search_sanitize > OUTPUT test_expect_equal_file EXPECTED OUTPUT +test_begin_subtest "lastmod query, one argument (negative)" +notmuch tag +4EFC743A.3060609@april.org id:4EFC743A.3060609@april.org +revision=$(notmuch count --lastmod '*' | cut -f3) +revision1=$((revision - 1)) +notmuch search lastmod:$revision1..$revision1 | notmuch_search_sanitize > EXPECTED +notmuch search --query=sexp "(lastmod -1)" | notmuch_search_sanitize > OUTPUT +test_expect_equal_file_nonempty EXPECTED OUTPUT + test_begin_subtest "lastmod query, two arguments" notmuch tag +keithp from:keithp revision2=$(notmuch count --lastmod '*' | cut -f3) @@ -941,16 +949,38 @@ notmuch search lastmod:$revision..$revision2 | notmuch_search_sanitize > EXPECTE notmuch search --query=sexp "(and (lastmod $revision $revision2))" | notmuch_search_sanitize > OUTPUT test_expect_equal_file EXPECTED OUTPUT +test_begin_subtest "lastmod query, two arguments, first negative" +revdiff=$((revision2 - revision)) +notmuch search lastmod:$revision..$revision2 | notmuch_search_sanitize > EXPECTED +notmuch search --query=sexp "(lastmod -$revdiff $revision2)" | notmuch_search_sanitize > OUTPUT +test_expect_equal_file EXPECTED OUTPUT + +test_begin_subtest "lastmod query, two arguments, second negative" +revdiff=$((revision2 - revision)) +notmuch search lastmod:..$revision | notmuch_search_sanitize > EXPECTED +notmuch search --query=sexp "(lastmod 0 -$revdiff)" | notmuch_search_sanitize > OUTPUT +test_expect_equal_file EXPECTED OUTPUT + test_begin_subtest "lastmod query, lower bound only" notmuch search lastmod:$revision.. | notmuch_search_sanitize > EXPECTED notmuch search --query=sexp "(lastmod $revision \"\")" | notmuch_search_sanitize > OUTPUT test_expect_equal_file_nonempty EXPECTED OUTPUT +test_begin_subtest "lastmod query, lower bound only (negative)" +notmuch search lastmod:$revision.. | notmuch_search_sanitize > EXPECTED +notmuch search --query=sexp "(lastmod -$revdiff \"\")" | notmuch_search_sanitize > OUTPUT +test_expect_equal_file_nonempty EXPECTED OUTPUT + test_begin_subtest "lastmod query, upper bound only" notmuch search lastmod:..$revision2 | notmuch_search_sanitize > EXPECTED notmuch search --query=sexp "(lastmod \"\" $revision2)" | notmuch_search_sanitize > OUTPUT test_expect_equal_file_nonempty EXPECTED OUTPUT +test_begin_subtest "lastmod query, upper bound only (negative)" +notmuch search lastmod:..$revision | notmuch_search_sanitize > EXPECTED +notmuch search --query=sexp "(lastmod \"\" -$revdiff)" | notmuch_search_sanitize > OUTPUT +test_expect_equal_file_nonempty EXPECTED OUTPUT + test_begin_subtest "lastmod query, lower bound only, using *" notmuch search lastmod:$revision.. | notmuch_search_sanitize > EXPECTED notmuch search --query=sexp "(lastmod $revision *)" | notmuch_search_sanitize > OUTPUT @@ -1156,7 +1186,6 @@ EOF test_expect_equal_file EXPECTED OUTPUT test_begin_subtest "Saved Search: bad parameter syntax 5" -test_subtest_known_broken notmuch config set squery.Bad5 '(macro (thing) (tag (rx ,thing)))' notmuch search --query=sexp '(Bad5 (1 2))' >OUTPUT 2>&1 cat < EXPECTED @@ -1166,7 +1195,6 @@ EOF test_expect_equal_file EXPECTED OUTPUT test_begin_subtest "Saved Search: bad parameter syntax 6" -test_subtest_known_broken notmuch config set squery.Bad6 '(macro (thing) (tag (starts-with ,thing)))' notmuch search --query=sexp '(Bad6 (1 2))' >OUTPUT 2>&1 cat < EXPECTED @@ -1175,6 +1203,14 @@ notmuch search: Syntax error in query EOF test_expect_equal_file EXPECTED OUTPUT +test_begin_subtest "Saved Search: bad parameter syntax 7" +notmuch search --query=sexp '(subject (rx ,unknown))' >OUTPUT 2>&1 +cat < EXPECTED +notmuch search: Syntax error in query +undefined parameter 'unknown' +EOF +test_expect_equal_file EXPECTED OUTPUT + test_begin_subtest "Saved Search: macro without body" notmuch config set squery.Bad3 '(macro (a b))' notmuch search --query=sexp '(Bad3)' >OUTPUT 2>&1 @@ -1204,7 +1240,7 @@ notmuch config set squery.Bad6 '(macro (a) (and ,b (subject maildir)))' notmuch search --query=sexp '(Bad6 foo)' >OUTPUT 2>&1 cat < EXPECTED notmuch search: Syntax error in query -undefined parameter b +undefined parameter 'b' EOF test_expect_equal_file EXPECTED OUTPUT @@ -1227,14 +1263,12 @@ notmuch search --query=sexp '(TagSubject2 inbox maildir)' | notmuch_search_sanit test_expect_equal_file EXPECTED OUTPUT test_begin_subtest "macro in regex" -test_subtest_known_broken notmuch search tag:inbox and date:2009-11-17 | notmuch_search_sanitize > EXPECTED notmuch config set squery.D '(macro (tagname) (and (date 2009-11-17) (tag (rx ,tagname))))' notmuch search --query=sexp '(D inbo)' | notmuch_search_sanitize > OUTPUT test_expect_equal_file_nonempty EXPECTED OUTPUT test_begin_subtest "macro in wildcard" -test_subtest_known_broken notmuch search tag:inbox and date:2009-11-17 | notmuch_search_sanitize > EXPECTED notmuch config set squery.W '(macro (tagname) (and (date 2009-11-17) (tag (starts-with ,tagname))))' notmuch search --query=sexp '(W inbo)' | notmuch_search_sanitize > OUTPUT @@ -1253,12 +1287,11 @@ notmuch config set squery.Outer2 '(macro (x y) (and (tag ,x) (Inner2 ,y)))' notmuch search --query=sexp '(Outer2 inbox maildir)' > OUTPUT 2>&1 cat < EXPECTED notmuch search: Syntax error in query -undefined parameter y +undefined parameter 'y' EOF test_expect_equal_file EXPECTED OUTPUT test_begin_subtest "nested macros (shadowing, regex)" -test_subtest_known_broken notmuch search tag:/inbo/ and subject:/Maildi/ | notmuch_search_sanitize > EXPECTED notmuch config set squery.Inner3 '(macro (x) (subject (rx ,x)))' notmuch config set squery.Outer3 '(macro (x y) (and (tag (rx ,x)) (Inner3 ,y)))' @@ -1266,7 +1299,6 @@ notmuch search --query=sexp '(Outer3 inbo Maildi)' | notmuch_search_sanitize > O test_expect_equal_file_nonempty EXPECTED OUTPUT test_begin_subtest "nested macros (shadowing, wildcard)" -test_subtest_known_broken notmuch search tag:inbox and subject:maildir | notmuch_search_sanitize > EXPECTED notmuch config set squery.Inner4 '(macro (x) (subject (starts-with ,x)))' notmuch config set squery.Outer4 '(macro (x y) (and (tag (starts-with ,x)) (Inner4 ,y)))'