diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/00-db-exclusive/run | 4 | ||||
| -rw-r--r-- | tests/00-db-migration-0-to-1/run | 9 | ||||
| -rw-r--r-- | tests/05-repair/run | 2 | ||||
| -rw-r--r-- | tests/06-largeint/run | 4 | ||||
| -rw-r--r-- | tests/07-sync-live-multi/run | 14 | ||||
| -rw-r--r-- | tests/07-sync-live/run | 6 | ||||
| -rwxr-xr-x | tests/run | 21 | 
7 files changed, 36 insertions, 24 deletions
diff --git a/tests/00-db-exclusive/run b/tests/00-db-exclusive/run index 1ae27b6..1528b3b 100644 --- a/tests/00-db-exclusive/run +++ b/tests/00-db-exclusive/run @@ -9,8 +9,8 @@ interimap  interimap --watch=60 & pid=$!  cleanup() {      # kill interimap process and its children -    pkill -P "$pid" -TERM -    kill -TERM "$pid" +    pkill -P "$pid" -TERM || true +    kill -TERM "$pid" || true      wait  }  trap cleanup EXIT INT TERM diff --git a/tests/00-db-migration-0-to-1/run b/tests/00-db-migration-0-to-1/run index e4eb770..757fe04 100644 --- a/tests/00-db-migration-0-to-1/run +++ b/tests/00-db-migration-0-to-1/run @@ -18,9 +18,16 @@ sqlite3 "$XDG_DATA_HOME/interimap/remote.db" >"$TMPDIR/dump.sql" <<-EOF  	.dump  EOF +# re-import and dump the expected dump to work around SQLite format +# differences across versions +sqlite3 "$XDG_DATA_HOME/interimap/remote2.db" <"$TESTDIR/after.sql" +sqlite3 "$XDG_DATA_HOME/interimap/remote2.db" >"$TMPDIR/dump-expected.sql" <<-EOF +	.dump +EOF +  # XXX need 'user_version' PRAGMA in the dump for future migrations  # http://sqlite.1065341.n5.nabble.com/dump-command-and-user-version-td101228.html  diff -u --label="a/dump.sql" --label="b/dump.sql" \ -    "$TESTDIR/after.sql" "$TMPDIR/dump.sql" +    "$TMPDIR/dump-expected.sql" "$TMPDIR/dump.sql"  # vim: set filetype=sh : diff --git a/tests/05-repair/run b/tests/05-repair/run index 747b974..15553e0 100644 --- a/tests/05-repair/run +++ b/tests/05-repair/run @@ -65,7 +65,7 @@ spoof UIDNEXT "local"  spoof HIGHESTMODSEQ "local" "remote"  # now repair -interimap --repair "baz" "foo.bar"  +interimap --repair "baz" "foo.bar"  # 6 updates with \Answered (luid 4,8,11:13,16), 2 of which (luid 12,13) vanished from remote  # 3 updates with \Seen (ruid 6,8,10), 1 of which (uid 10) vanished from remote diff --git a/tests/06-largeint/run b/tests/06-largeint/run index edcbd31..b08bcfa 100644 --- a/tests/06-largeint/run +++ b/tests/06-largeint/run @@ -7,9 +7,9 @@ doveadm -u "local"  mailbox update --uid-validity 2147483648 "bar"   # 2^31  doveadm -u "local"  mailbox update --uid-validity 4294967295 "baz"   # 2^32-1  doveadm -u "remote" mailbox update --uid-validity 4294967295 "INBOX" # 2^32-1 -doveadm -u "remote" mailbox update --uid-validity 2147483648 "foo"   # 2^31  +doveadm -u "remote" mailbox update --uid-validity 2147483648 "foo"   # 2^31  doveadm -u "remote" mailbox update --uid-validity 2147483647 "bar"   # 2^31-1 -doveadm -u "remote" mailbox update --uid-validity          1 "baz"   #  +doveadm -u "remote" mailbox update --uid-validity          1 "baz"   #  run() {      local u m diff --git a/tests/07-sync-live-multi/run b/tests/07-sync-live-multi/run index bf0d2f5..15a27fd 100644 --- a/tests/07-sync-live-multi/run +++ b/tests/07-sync-live-multi/run @@ -15,12 +15,12 @@ interimap --config="config3" --watch=1 & pid3=$!  abort() {      # kill interimap process and its children -    pkill -P "$pid" -TERM -    kill -TERM "$pid" -    pkill -P "$pid2" -TERM -    kill -TERM "$pid2" -    pkill -P "$pid3" -TERM -    kill -TERM "$pid3" +    pkill -P "$pid" -TERM || true +    kill -TERM "$pid" || true +    pkill -P "$pid2" -TERM || true +    kill -TERM "$pid2" || true +    pkill -P "$pid3" -TERM || true +    kill -TERM "$pid3" || true      wait  }  trap abort EXIT INT TERM @@ -101,7 +101,7 @@ while [ $(date +%s) -le $timer ]; do      done      # sleep a little bit -    sleep "0.$(shuf -n1 -i1-99)" +    sleep "$(printf "0.%03d" "$(shuf -n1 -i1-999)")"  done  # wait a little longer so interimap has time to run loop() again and diff --git a/tests/07-sync-live/run b/tests/07-sync-live/run index 1950e0b..04d8247 100644 --- a/tests/07-sync-live/run +++ b/tests/07-sync-live/run @@ -6,8 +6,8 @@ interimap --watch=1 & pid=$!  abort() {      # kill interimap process and its children -    pkill -P "$pid" -TERM -    kill -TERM "$pid" +    pkill -P "$pid" -TERM || true +    kill -TERM "$pid" || true      wait  }  trap abort EXIT INT TERM @@ -63,7 +63,7 @@ while [ $(date +%s) -le $timer ]; do      done      # sleep a little bit -    sleep "0.$(shuf -n1 -i1-99)" +    sleep "$(printf "0.%03d" "$(shuf -n1 -i1-999)")"  done  # wait a little longer so interimap has time to run loop() again and @@ -36,7 +36,7 @@ if [ ! -d "$TESTDIR" ]; then      exit 1  fi -ROOTDIR="$(mktemp --tmpdir=/dev/shm --directory "$NAME.XXXXXXXXXX")" +ROOTDIR="$(mktemp --tmpdir="${TMPDIR:-/dev/shm}" --directory "$NAME.XXXXXXXXXX")"  trap 'rm -rf -- "$ROOTDIR"' EXIT INT TERM  STDOUT="$ROOTDIR/stdout" @@ -73,6 +73,7 @@ prepare() {          cat >"$home/.config/dovecot/config" <<-EOF  			log_path = /dev/null  			mail_home = $ROOTDIR/home/%u +			mailbox_list_index = yes  			ssl = no  		EOF          cat >>"$home/.config/dovecot/config" <"$src" @@ -102,12 +103,12 @@ prepare() {  			[local]  			type = tunnel  			command = exec ${HOME_local@Q}/.local/bin/doveadm exec imap -			null-stderr = YES +			null-stderr = NO  			[remote]  			type = tunnel  			command = exec ${home@Q}/.local/bin/doveadm exec imap -			null-stderr = YES +			null-stderr = NO  		EOF      done  } @@ -129,14 +130,18 @@ doveadm() {      shift 2      "$home/.local/bin/doveadm" "$@"  } +sqlite3() { +    command sqlite3 -init /dev/null "$@" +}  # Sample (random) message  sample_message() { +    local date="$(date +"%s.%N")"      cat <<-EOF  		From: <sender@example.net>  		To: <recipient@example.net> -		Date: $(date -R) -		Message-ID: <$(< /proc/sys/kernel/random/uuid)@example.net> +		Date: $(date -R -d@"$date") +		Message-ID: <$date@example.net>  	EOF      local len="$(shuf -i1-4096 -n1)" @@ -156,7 +161,7 @@ deliver() {      doveadm "${argv[@]}" exec dovecot-lda -e "$@"  } -# Dump test results  +# Dump test results  dump_test_result() {      local below=">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"      local above="<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" @@ -215,7 +220,7 @@ check_mailbox_status2() {      read MESSAGES < <( sqlite3 "$XDG_DATA_HOME/interimap/$u.db" <<-EOF  			.mode csv  			.separator " " "\\n" -            SELECT COUNT(*) +			SELECT COUNT(*)  			FROM mailboxes a JOIN mapping b ON a.idx = b.idx  			WHERE mailbox = $blob  		EOF @@ -319,7 +324,7 @@ xcgrep() {  declare -a ENVIRON=()  environ_set "local"  export TMPDIR TESTDIR STDOUT STDERR "${ENVIRON[@]}" -export -f environ_set doveadm interimap sample_message deliver +export -f environ_set doveadm interimap sqlite3 sample_message deliver  export -f check_mailbox_status check_mailbox_status_values check_mailbox_status2  export -f check_mailboxes_status check_mailbox_list xgrep xcgrep  printf "%s..." "$TEST"  | 
