Rework in the test framework; updated and new tests
[mmh] / test / tests / folder / test-sortm
diff --git a/test/tests/folder/test-sortm b/test/tests/folder/test-sortm
new file mode 100755 (executable)
index 0000000..6ba36a7
--- /dev/null
@@ -0,0 +1,409 @@
+#!/bin/sh
+######################################################
+#
+# Test sortm
+#
+######################################################
+
+. "$MH_TEST_COMMON"
+
+
+expected=$MH_TEST_DIR/$$.expected
+actual=$MH_TEST_DIR/$$.actual
+
+cd "$MH_TEST_DIR"
+
+runandcheck "sortm -help" <<!
+Usage: sortm [+folder] [msgs] [switches]
+  switches are:
+  -datefield field
+  -textfield field
+  -(no)textfield
+  -limit days
+  -(no)limit
+  -[no]verbose
+  -Version
+  -help
+!
+
+
+cat >$MH_TEST_DIR/Mail/inbox/11 <<EOF || exit 1
+From: Test11 <test11@example.com>
+To: Some User <user@example.com>
+Date: Fri, 29 Sep 2006 00:00:01
+Alt-Date: Thu,  1 Sep 2005 00:00:00
+Subject: Re: common subject
+
+This is message number 11
+EOF
+
+cat >$MH_TEST_DIR/Mail/inbox/12 <<EOF || exit 1
+From: Test12 <test12@example.com>
+To: Some User <user@example.com>
+Date: Thu, 28 Sep 2006 23:59:59
+Alt-Date: Sat, 30 Sep 2006 00:00:00
+Subject: common subject
+
+This is message number 12
+EOF
+
+
+
+# check with no options
+
+runandcheck sortm <<!
+!
+runandcheck scan <<!
+   1  2006-09-28 23:59  Test12             common subject
+   2  2006-09-29 00:00  Test1              Testing message 1
+   3  2006-09-29 00:00  Test2              Testing message 2
+   4  2006-09-29 00:00  Test3              Testing message 3
+   5  2006-09-29 00:00  Test4              Testing message 4
+   6  2006-09-29 00:00  Test5              Testing message 5
+   7  2006-09-29 00:00  Test6              Testing message 6
+   8  2006-09-29 00:00  Test7              Testing message 7
+   9  2006-09-29 00:00  Test8              Testing message 8
+  10  2006-09-29 00:00  Test9              Testing message 9
+  11  2006-09-29 00:00  Test10             Testing message 10
+  12  2006-09-29 00:00  Test11             Re: common subject
+!
+
+
+
+# check +folder
+
+refile f +inbox
+folder -pack >/dev/null
+
+runandcheck "sortm +inbox" <<!
+!
+runandcheck "scan" <<!
+   1  2006-09-28 23:59  Test12             common subject
+   2  2006-09-29 00:00  Test1              Testing message 1
+   3  2006-09-29 00:00  Test2              Testing message 2
+   4  2006-09-29 00:00  Test3              Testing message 3
+   5  2006-09-29 00:00  Test4              Testing message 4
+   6  2006-09-29 00:00  Test5              Testing message 5
+   7  2006-09-29 00:00  Test6              Testing message 6
+   8  2006-09-29 00:00  Test7              Testing message 7
+   9  2006-09-29 00:00  Test8              Testing message 8
+  10  2006-09-29 00:00  Test9              Testing message 9
+  11  2006-09-29 00:00  Test10             Testing message 10
+  12  2006-09-29 00:00  Test11             Re: common subject
+!
+
+
+
+# check -verbose
+
+refile f +inbox
+folder -pack >/dev/null
+
+runandcheck "sortm -verbose" <<!
+sorting by datefield date
+renaming message chain from 12 to 1
+message 11 becomes message 12
+message 10 becomes message 11
+message 9 becomes message 10
+message 8 becomes message 9
+message 7 becomes message 8
+message 6 becomes message 7
+message 5 becomes message 6
+message 4 becomes message 5
+message 3 becomes message 4
+message 2 becomes message 3
+message 1 becomes message 2
+!
+runandcheck "scan" <<!
+   1  2006-09-28 23:59  Test12             common subject
+   2  2006-09-29 00:00  Test1              Testing message 1
+   3  2006-09-29 00:00  Test2              Testing message 2
+   4  2006-09-29 00:00  Test3              Testing message 3
+   5  2006-09-29 00:00  Test4              Testing message 4
+   6  2006-09-29 00:00  Test5              Testing message 5
+   7  2006-09-29 00:00  Test6              Testing message 6
+   8  2006-09-29 00:00  Test7              Testing message 7
+   9  2006-09-29 00:00  Test8              Testing message 8
+  10  2006-09-29 00:00  Test9              Testing message 9
+  11  2006-09-29 00:00  Test10             Testing message 10
+  12  2006-09-29 00:00  Test11             Re: common subject
+!
+
+
+
+# check -noverbose
+
+refile f +inbox
+folder -pack >/dev/null
+
+runandcheck "sortm -verbose -noverbose" <<!
+!
+runandcheck "scan" <<!
+   1  2006-09-28 23:59  Test12             common subject
+   2  2006-09-29 00:00  Test1              Testing message 1
+   3  2006-09-29 00:00  Test2              Testing message 2
+   4  2006-09-29 00:00  Test3              Testing message 3
+   5  2006-09-29 00:00  Test4              Testing message 4
+   6  2006-09-29 00:00  Test5              Testing message 5
+   7  2006-09-29 00:00  Test6              Testing message 6
+   8  2006-09-29 00:00  Test7              Testing message 7
+   9  2006-09-29 00:00  Test8              Testing message 8
+  10  2006-09-29 00:00  Test9              Testing message 9
+  11  2006-09-29 00:00  Test10             Testing message 10
+  12  2006-09-29 00:00  Test11             Re: common subject
+!
+
+
+
+# check msgs
+
+refile f +inbox
+folder -pack >/dev/null
+
+runandcheck "sortm f l" <<!
+!
+runandcheck "scan" <<!
+   1  2006-09-28 23:59  Test12             common subject
+   2  2006-09-29 00:00  Test2              Testing message 2
+   3  2006-09-29 00:00  Test3              Testing message 3
+   4  2006-09-29 00:00  Test4              Testing message 4
+   5  2006-09-29 00:00  Test5              Testing message 5
+   6  2006-09-29 00:00  Test6              Testing message 6
+   7  2006-09-29 00:00  Test7              Testing message 7
+   8  2006-09-29 00:00  Test8              Testing message 8
+   9  2006-09-29 00:00  Test9              Testing message 9
+  10  2006-09-29 00:00  Test10             Testing message 10
+  11  2006-09-29 00:00  Test11             Re: common subject
+  12  2006-09-29 00:00  Test1              Testing message 1
+!
+
+
+
+# check -datefield
+
+runandcheck "sortm -datefield Alt-Date 1 11" <<!
+!
+runandcheck scan <<!
+   1  2006-09-29 00:00  Test11             Re: common subject
+   2  2006-09-29 00:00  Test2              Testing message 2
+   3  2006-09-29 00:00  Test3              Testing message 3
+   4  2006-09-29 00:00  Test4              Testing message 4
+   5  2006-09-29 00:00  Test5              Testing message 5
+   6  2006-09-29 00:00  Test6              Testing message 6
+   7  2006-09-29 00:00  Test7              Testing message 7
+   8  2006-09-29 00:00  Test8              Testing message 8
+   9  2006-09-29 00:00  Test9              Testing message 9
+  10  2006-09-29 00:00  Test10             Testing message 10
+  11  2006-09-28 23:59  Test12             common subject
+  12  2006-09-29 00:00  Test1              Testing message 1
+!
+
+
+
+# check -textfield subject (datefield major, subjects grouped)
+
+runandcheck "sortm -textfield subject" <<!
+!
+runandcheck scan <<!
+   1  2006-09-28 23:59  Test12             common subject
+   2  2006-09-29 00:00  Test11             Re: common subject
+   3  2006-09-29 00:00  Test2              Testing message 2
+   4  2006-09-29 00:00  Test3              Testing message 3
+   5  2006-09-29 00:00  Test4              Testing message 4
+   6  2006-09-29 00:00  Test5              Testing message 5
+   7  2006-09-29 00:00  Test6              Testing message 6
+   8  2006-09-29 00:00  Test7              Testing message 7
+   9  2006-09-29 00:00  Test8              Testing message 8
+  10  2006-09-29 00:00  Test9              Testing message 9
+  11  2006-09-29 00:00  Test10             Testing message 10
+  12  2006-09-29 00:00  Test1              Testing message 1
+!
+
+
+
+# check -nolimit
+
+runandcheck "sortm -textfield subject -limit 0 -nolimit" <<!
+!
+runandcheck scan <<!
+   1  2006-09-28 23:59  Test12             common subject
+   2  2006-09-29 00:00  Test11             Re: common subject
+   3  2006-09-29 00:00  Test2              Testing message 2
+   4  2006-09-29 00:00  Test3              Testing message 3
+   5  2006-09-29 00:00  Test4              Testing message 4
+   6  2006-09-29 00:00  Test5              Testing message 5
+   7  2006-09-29 00:00  Test6              Testing message 6
+   8  2006-09-29 00:00  Test7              Testing message 7
+   9  2006-09-29 00:00  Test8              Testing message 8
+  10  2006-09-29 00:00  Test9              Testing message 9
+  11  2006-09-29 00:00  Test10             Testing message 10
+  12  2006-09-29 00:00  Test1              Testing message 1
+!
+
+
+
+# check -textfield subject -limit 0 (subject sort)
+
+refile 2-7 +inbox
+refile 1 +inbox
+folder -pack l >/dev/null
+
+runandcheck "sortm -textfield subject -limit 0" <<!
+!
+runandcheck "scan" <<!
+   1  2006-09-29 00:00  Test11             Re: common subject
+   2  2006-09-28 23:59  Test12             common subject
+   3  2006-09-29 00:00  Test1              Testing message 1
+   4  2006-09-29 00:00  Test10             Testing message 10
+   5  2006-09-29 00:00  Test2              Testing message 2
+   6  2006-09-29 00:00  Test3              Testing message 3
+   7  2006-09-29 00:00  Test4              Testing message 4
+   8  2006-09-29 00:00  Test5              Testing message 5
+   9  2006-09-29 00:00  Test6              Testing message 6
+  10  2006-09-29 00:00  Test7              Testing message 7
+  11  2006-09-29 00:00  Test8              Testing message 8
+  12+ 2006-09-29 00:00  Test9              Testing message 9
+!
+
+
+
+# check -textfield -limit 0 (text sort)
+
+refile 2-7 +inbox
+refile 1 +inbox
+folder -pack l >/dev/null
+
+runandcheck "sortm -textfield from -limit 0" <<!
+!
+runandcheck "scan" <<!
+   1  2006-09-29 00:00  Test10             Testing message 10
+   2  2006-09-29 00:00  Test11             Re: common subject
+   3  2006-09-28 23:59  Test12             common subject
+   4  2006-09-29 00:00  Test1              Testing message 1
+   5  2006-09-29 00:00  Test2              Testing message 2
+   6  2006-09-29 00:00  Test3              Testing message 3
+   7  2006-09-29 00:00  Test4              Testing message 4
+   8  2006-09-29 00:00  Test5              Testing message 5
+   9  2006-09-29 00:00  Test6              Testing message 6
+  10  2006-09-29 00:00  Test7              Testing message 7
+  11  2006-09-29 00:00  Test8              Testing message 8
+  12+ 2006-09-29 00:00  Test9              Testing message 9
+!
+
+
+
+# add another message
+
+cat >$MH_TEST_DIR/Mail/inbox/13 <<EOF || exit 1
+From: Test13 <test13@example.com>
+To: Some User <user@example.com>
+Date: Tue, 31 Oct 2006 23:59:59
+Subject: Re: common subject
+
+This is message number 13
+EOF
+
+
+
+# check -textfield with finite -limit that doesn't cover message 13
+
+refile 2-7 +inbox
+refile 1 +inbox
+folder -pack l >/dev/null
+
+runandcheck "sortm -textfield subject -limit 10" <<!
+!
+runandcheck "scan" <<!
+   1  2006-09-28 23:59  Test12             common subject
+   2  2006-09-29 00:00  Test11             Re: common subject
+   3  2006-09-29 00:00  Test5              Testing message 5
+   4  2006-09-29 00:00  Test6              Testing message 6
+   5  2006-09-29 00:00  Test7              Testing message 7
+   6  2006-09-29 00:00  Test8              Testing message 8
+   7  2006-09-29 00:00  Test9              Testing message 9
+   8  2006-09-29 00:00  Test1              Testing message 1
+   9  2006-09-29 00:00  Test2              Testing message 2
+  10  2006-09-29 00:00  Test3              Testing message 3
+  11  2006-09-29 00:00  Test4              Testing message 4
+  12+ 2006-09-29 00:00  Test10             Testing message 10
+  13  2006-10-31 23:59  Test13             Re: common subject
+!
+
+
+
+# check -textfield with finite -limit that does cover message 13
+
+refile 2-7 +inbox
+refile 1 +inbox
+folder -pack l >/dev/null
+
+runandcheck "sortm -textfield subject -limit 60" <<!
+!
+runandcheck scan <<!
+   1  2006-09-28 23:59  Test12             common subject
+   2  2006-09-29 00:00  Test11             Re: common subject
+   3  2006-10-31 23:59  Test13             Re: common subject
+   4  2006-09-29 00:00  Test1              Testing message 1
+   5  2006-09-29 00:00  Test2              Testing message 2
+   6  2006-09-29 00:00  Test3              Testing message 3
+   7  2006-09-29 00:00  Test4              Testing message 4
+   8  2006-09-29 00:00  Test10             Testing message 10
+   9  2006-09-29 00:00  Test5              Testing message 5
+  10  2006-09-29 00:00  Test6              Testing message 6
+  11  2006-09-29 00:00  Test7              Testing message 7
+  12  2006-09-29 00:00  Test8              Testing message 8
+  13+ 2006-09-29 00:00  Test9              Testing message 9
+!
+
+
+
+# check -notextfield
+
+refile 2-7 +inbox
+refile 1 +inbox
+folder -pack l >/dev/null
+
+runandcheck "sortm -textfield subject -limit 60 -notextfield" <<!
+!
+runandcheck scan <<!
+   1  2006-09-28 23:59  Test12             common subject
+   2  2006-09-29 00:00  Test10             Testing message 10
+   3  2006-09-29 00:00  Test5              Testing message 5
+   4  2006-09-29 00:00  Test6              Testing message 6
+   5  2006-09-29 00:00  Test7              Testing message 7
+   6  2006-09-29 00:00  Test8              Testing message 8
+   7  2006-09-29 00:00  Test9              Testing message 9
+   8  2006-09-29 00:00  Test1              Testing message 1
+   9  2006-09-29 00:00  Test2              Testing message 2
+  10  2006-09-29 00:00  Test3              Testing message 3
+  11  2006-09-29 00:00  Test4              Testing message 4
+  12  2006-09-29 00:00  Test11             Re: common subject
+  13+ 2006-10-31 23:59  Test13             Re: common subject
+!
+
+
+
+# check -check
+
+sed -e 's/Sep//' $MH_TEST_DIR/Mail/inbox/7 > $MH_TEST_DIR/Mail/inbox/14
+
+runandcheck "sortm" <<!
+sortm: can't parse date field in message 14, continuing...
+!
+runandcheck scan <<!
+   1  2006-09-28 23:59  Test12             common subject
+   2  2006-09-29 00:00  Test10             Testing message 10
+   3  2006-09-29 00:00  Test5              Testing message 5
+   4  2006-09-29 00:00  Test6              Testing message 6
+   5  2006-09-29 00:00  Test7              Testing message 7
+   6  2006-09-29 00:00  Test8              Testing message 8
+   7  2006-09-29 00:00  Test9              Testing message 9
+   8  2006-09-29 00:00  Test1              Testing message 1
+   9  2006-09-29 00:00  Test2              Testing message 2
+  10  2006-09-29 00:00  Test3              Testing message 3
+  11  2006-09-29 00:00  Test4              Testing message 4
+  12  2006-09-29 00:00  Test11             Re: common subject
+  13+ 2006-10-31 23:59  Test13             Re: common subject
+  14     0-01-00 00:00  Test9              Testing message 9
+!
+