#!/usr/bin/env bash test_description='"notmuch git" to save and restore tags' . $(dirname "$0")/test-lib.sh || exit 1 add_git_repos () { notmuch git -C remote.git -p '' init notmuch git -C tags.git -p '' clone remote.git } if [ $NOTMUCH_HAVE_SFSEXP -ne 1 ]; then printf "Skipping due to missing sfsexp library\n" test_done fi add_email_corpus add_git_repos test_begin_subtest "clone" test_expect_success "notmuch git -C clone.git clone tags.git" test_begin_subtest "commit" notmuch git -C tags.git -p '' commit git -C tags.git ls-tree -r --name-only HEAD | xargs dirname | sort -u | sed s,tags/,id:, > OUTPUT notmuch search --output=messages '*' | sort > EXPECTED test_expect_equal_file_nonempty EXPECTED OUTPUT test_begin_subtest "commit, with quoted tag" notmuch git -C clone2.git -p '' clone tags.git git -C clone2.git ls-tree -r --name-only HEAD | grep /inbox > BEFORE notmuch tag '+"quoted tag"' '*' notmuch git -C clone2.git -p '' commit notmuch tag '-"quoted tag"' '*' git -C clone2.git ls-tree -r --name-only HEAD | grep /inbox > AFTER test_expect_equal_file_nonempty BEFORE AFTER test_begin_subtest "commit (incremental)" notmuch tag +test id:20091117190054.GU3165@dottiness.seas.harvard.edu notmuch git -C tags.git -p '' commit git -C tags.git ls-tree -r --name-only HEAD | grep 20091117190054 | sort > OUTPUT echo "--------------------------------------------------" >> OUTPUT notmuch tag -test id:20091117190054.GU3165@dottiness.seas.harvard.edu notmuch git -C tags.git -p '' commit git -C tags.git ls-tree -r --name-only HEAD | grep 20091117190054 | sort >> OUTPUT cat < EXPECTED tags/20091117190054.GU3165@dottiness.seas.harvard.edu/inbox tags/20091117190054.GU3165@dottiness.seas.harvard.edu/signed tags/20091117190054.GU3165@dottiness.seas.harvard.edu/test tags/20091117190054.GU3165@dottiness.seas.harvard.edu/unread -------------------------------------------------- tags/20091117190054.GU3165@dottiness.seas.harvard.edu/inbox tags/20091117190054.GU3165@dottiness.seas.harvard.edu/signed tags/20091117190054.GU3165@dottiness.seas.harvard.edu/unread EOF test_expect_equal_file_nonempty EXPECTED OUTPUT test_begin_subtest "commit (change prefix)" notmuch tag +test::one id:20091117190054.GU3165@dottiness.seas.harvard.edu notmuch git -C tags.git -p 'test::' commit git -C tags.git ls-tree -r --name-only HEAD | grep 20091117190054 | sort > OUTPUT echo "--------------------------------------------------" >> OUTPUT notmuch tag -test::one id:20091117190054.GU3165@dottiness.seas.harvard.edu notmuch git -C tags.git -p '' commit git -C tags.git ls-tree -r --name-only HEAD | grep 20091117190054 | sort >> OUTPUT cat < EXPECTED tags/20091117190054.GU3165@dottiness.seas.harvard.edu/one -------------------------------------------------- tags/20091117190054.GU3165@dottiness.seas.harvard.edu/inbox tags/20091117190054.GU3165@dottiness.seas.harvard.edu/signed tags/20091117190054.GU3165@dottiness.seas.harvard.edu/unread EOF test_expect_equal_file_nonempty EXPECTED OUTPUT test_begin_subtest "checkout" notmuch dump > BEFORE notmuch tag -inbox '*' notmuch git -C tags.git -p '' checkout notmuch dump > AFTER test_expect_equal_file_nonempty BEFORE AFTER test_begin_subtest "archive" notmuch git -C tags.git -p '' archive | tar tf - | \ grep 20091117190054.GU3165@dottiness.seas.harvard.edu | sort > OUTPUT cat < EXPECTED tags/20091117190054.GU3165@dottiness.seas.harvard.edu/ tags/20091117190054.GU3165@dottiness.seas.harvard.edu/inbox tags/20091117190054.GU3165@dottiness.seas.harvard.edu/signed tags/20091117190054.GU3165@dottiness.seas.harvard.edu/unread EOF notmuch git -C tags.git -p '' checkout test_expect_equal_file EXPECTED OUTPUT test_begin_subtest "status" notmuch tag +test id:20091117190054.GU3165@dottiness.seas.harvard.edu notmuch git -C tags.git -p '' status > OUTPUT cat < EXPECTED A 20091117190054.GU3165@dottiness.seas.harvard.edu test EOF notmuch git -C tags.git -p '' checkout test_expect_equal_file EXPECTED OUTPUT test_begin_subtest "fetch" notmuch tag +test2 id:20091117190054.GU3165@dottiness.seas.harvard.edu notmuch git -C remote.git -p '' commit notmuch tag -test2 id:20091117190054.GU3165@dottiness.seas.harvard.edu notmuch git -C tags.git -p '' fetch notmuch git -C tags.git -p '' status > OUTPUT cat < EXPECTED a 20091117190054.GU3165@dottiness.seas.harvard.edu test2 EOF notmuch git -C tags.git -p '' checkout test_expect_equal_file EXPECTED OUTPUT test_begin_subtest "merge" notmuch git -C tags.git -p '' merge notmuch dump id:20091117190054.GU3165@dottiness.seas.harvard.edu | grep -v '^#' > OUTPUT cat < EXPECTED +inbox +signed +test2 +unread -- id:20091117190054.GU3165@dottiness.seas.harvard.edu EOF test_expect_equal_file EXPECTED OUTPUT test_begin_subtest "push" notmuch tag +test3 id:20091117190054.GU3165@dottiness.seas.harvard.edu notmuch git -C tags.git -p '' commit notmuch tag -test3 id:20091117190054.GU3165@dottiness.seas.harvard.edu notmuch git -C tags.git -p '' push notmuch git -C remote.git -p '' checkout notmuch dump id:20091117190054.GU3165@dottiness.seas.harvard.edu | grep -v '^#' > OUTPUT cat < EXPECTED +inbox +signed +test2 +test3 +unread -- id:20091117190054.GU3165@dottiness.seas.harvard.edu EOF test_expect_equal_file EXPECTED OUTPUT test_done