unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
* release-candidate/0.6 redux
@ 2011-05-28 21:51 Jameson Graef Rollins
  2011-05-28 21:51 ` [PATCH 01/25] fix check for libdir in ldconfig paths Jameson Graef Rollins
  2011-05-28 21:58 ` release-candidate/0.6 redux Jameson Graef Rollins
  0 siblings, 2 replies; 62+ messages in thread
From: Jameson Graef Rollins @ 2011-05-28 21:51 UTC (permalink / raw)
  To: Notmuch Mail

So what follows is a patch series for a bunch of miscellaneous patches
that should be included in 0.6.  Most of them were originally part of
the release-candiate/0.6 branch, and they are here rebased on top of
notmuch/master at cb8418784c21155ffea79cce8409a7ea3c546937, which
includes all the multipart and crypto rework.

Some of these patches are cleanup, but some are important bug fixes,
some previously sent to the list by others that I have signed off on,
and some by me that were not previously sent to the list.  I highly
recommend that this entire series be incorporated before 0.6 is
released.

jamie.

^ permalink raw reply	[flat|nested] 62+ messages in thread

* [PATCH 01/25] fix check for libdir in ldconfig paths
  2011-05-28 21:51 release-candidate/0.6 redux Jameson Graef Rollins
@ 2011-05-28 21:51 ` Jameson Graef Rollins
  2011-05-28 21:51   ` [PATCH 02/25] add note about updating the debian symbols file to the RELEASE file Jameson Graef Rollins
  2011-06-01 23:22   ` [PATCH 01/25] fix check for libdir in ldconfig paths Carl Worth
  2011-05-28 21:58 ` release-candidate/0.6 redux Jameson Graef Rollins
  1 sibling, 2 replies; 62+ messages in thread
From: Jameson Graef Rollins @ 2011-05-28 21:51 UTC (permalink / raw)
  To: Notmuch Mail

The configure script tries to check that the libdir is included in the
ldconfig paths, and then sets the RPATH compiler flag if it's not.
This check was broken, and was always setting RPATH.  This fixes the
path check.
---
 configure |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/configure b/configure
index bbf30cd..f735c1d 100755
--- a/configure
+++ b/configure
@@ -358,14 +358,14 @@ elif [ $uname = "Linux" ] ; then
     ldconfig_paths=$(/sbin/ldconfig -N -X -v 2>/dev/null | sed -n -e 's,^\(/.*\):\( (.*)\)\?$,\1,p')
     # Separate ldconfig_paths only on newline (not on any potential
     # embedded space characters in any filenames).
-    OLD_IFS=$IFS
-    IFS="$(printf '\n')"
     for path in $ldconfig_paths; do
 	if [ "$path" = "$libdir_expanded" ]; then
 	    libdir_in_ldconfig=1
 	fi
     done
-    IFS=$OLD_IFS
+    if [ "$libdir_in_ldconfig" = '0' ]; then
+	printf "\tlibdir not found in ldconfig paths.  RPATH variable will be set.\n"
+    fi
 else
     printf "Unknown.\n"
     cat <<EOF
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH 02/25] add note about updating the debian symbols file to the RELEASE file
  2011-05-28 21:51 ` [PATCH 01/25] fix check for libdir in ldconfig paths Jameson Graef Rollins
@ 2011-05-28 21:51   ` Jameson Graef Rollins
  2011-05-28 21:51     ` [PATCH 03/25] test: modify search-output test to use the new test_expect_equal_file function Jameson Graef Rollins
  2011-06-01 23:22   ` [PATCH 01/25] fix check for libdir in ldconfig paths Carl Worth
  1 sibling, 1 reply; 62+ messages in thread
From: Jameson Graef Rollins @ 2011-05-28 21:51 UTC (permalink / raw)
  To: Notmuch Mail

---
 RELEASING |   22 ++++++++++++++++++----
 1 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/RELEASING b/RELEASING
index a392d81..475100a 100644
--- a/RELEASING
+++ b/RELEASING
@@ -35,7 +35,21 @@ repository. From here, there are just a few steps to release:
 
 	Commit this change, if any.
 
-3) Upgrade the version in the file "version"
+3) Update the debian/libnotmuch1.symbols file
+
+	If the library version changed at all (step 2) it probably
+	means that symbols have changed/been added, in which case the
+	debian symbols file also needs to be updated:
+
+	       dpkg-buildpackage -uc -us
+	       dpkg-gensymbols -plibnotmuch1 | patch -p0
+
+	Carefully review the changes to debian/libnotmuch1.symbols to
+	make sure there are no unexpected changes.
+
+	Commit this change, if any.
+
+4) Upgrade the version in the file "version"
 
 	The scheme for the release number is as follows:
 
@@ -55,7 +69,7 @@ repository. From here, there are just a few steps to release:
 
 	Commit this change.
 
-4) Create an entry for the new release in debian/changelog
+5) Create an entry for the new release in debian/changelog
 
 	The syntax of this file is tightly restricted, but the
 	available emacs mode (see the dpkg-dev-el package) helps.
@@ -69,7 +83,7 @@ repository. From here, there are just a few steps to release:
 	release, (taking entries from NEWS and the version from the
 	version file, and creating a new commit, etc.)
 
-5) Run "make release" which will perform the following steps.
+6) Run "make release" which will perform the following steps.
 
    Note: If any problem occurs during the process, (such as a lintian
    warning that you decide should be fixed), you can abort at the
@@ -98,7 +112,7 @@ repository. From here, there are just a few steps to release:
 	* Push that tag
 	* Provide some text for the release announcement (see below).
 
-6) Send a message to notmuch@notmuchmail.org to announce the release.
+7) Send a message to notmuch@notmuchmail.org to announce the release.
 
 	Use the text provided from "make release" above, (if for some
 	reason you lose this message, "make release-message" prints
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH 03/25] test: modify search-output test to use the new test_expect_equal_file function
  2011-05-28 21:51   ` [PATCH 02/25] add note about updating the debian symbols file to the RELEASE file Jameson Graef Rollins
@ 2011-05-28 21:51     ` Jameson Graef Rollins
  2011-05-28 21:51       ` [PATCH 04/25] test: move "Search for non-existent message prints nothing" to search-output, and add similar test for format=json Jameson Graef Rollins
  0 siblings, 1 reply; 62+ messages in thread
From: Jameson Graef Rollins @ 2011-05-28 21:51 UTC (permalink / raw)
  To: Notmuch Mail

These test now properly test for the presence of a newline at the end
of all output.  Right now some of these test will fail because the
search output is currently broken to *not* produce proper newlines in
some cases.
---
 test/search-output |   72 ++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 48 insertions(+), 24 deletions(-)

diff --git a/test/search-output b/test/search-output
index 20341d6..1554eb1 100755
--- a/test/search-output
+++ b/test/search-output
@@ -5,8 +5,8 @@ test_description='various settings for "notmuch search --output="'
 add_email_corpus
 
 test_begin_subtest "notmuch search --output=threads"
-output=$(notmuch search --output=threads '*' | sed -e s/thread:.*/thread:THREADID/)
-test_expect_equal "$output" "thread:THREADID
+notmuch search --output=threads '*' | sed -e s/thread:.*/thread:THREADID/ >OUTPUT
+cat <<EOF >EXPECTED
 thread:THREADID
 thread:THREADID
 thread:THREADID
@@ -27,11 +27,15 @@ thread:THREADID
 thread:THREADID
 thread:THREADID
 thread:THREADID
-thread:THREADID"
+thread:THREADID
+thread:THREADID
+EOF
+test_expect_equal_file OUTPUT EXPECTED
 
 test_begin_subtest "notmuch search --format=json --output=threads"
-output=$(notmuch search --format=json --output=threads '*' | sed -e s/\".*\"/\"THREADID\"/)
-test_expect_equal "$output" '["THREADID",
+notmuch search --format=json --output=threads '*' | sed -e s/\".*\"/\"THREADID\"/ >OUTPUT
+cat <<EOF >EXPECTED
+["THREADID",
 "THREADID",
 "THREADID",
 "THREADID",
@@ -52,11 +56,14 @@ test_expect_equal "$output" '["THREADID",
 "THREADID",
 "THREADID",
 "THREADID",
-"THREADID"]'
+"THREADID"]
+EOF
+test_expect_equal_file OUTPUT EXPECTED
 
 test_begin_subtest "notmuch search --output=messages"
-output=$(notmuch search --output=messages '*')
-test_expect_equal "$output" "id:1258544095-16616-1-git-send-email-chris@chris-wilson.co.uk
+notmuch search --output=messages '*' >OUTPUT
+cat <<EOF >EXPECTED
+id:1258544095-16616-1-git-send-email-chris@chris-wilson.co.uk
 id:877htoqdbo.fsf@yoom.home.cworth.org
 id:878we4qdqf.fsf@yoom.home.cworth.org
 id:87aaykqe24.fsf@yoom.home.cworth.org
@@ -105,11 +112,14 @@ id:87iqd9rn3l.fsf@vertex.dottedmag
 id:20091117190054.GU3165@dottiness.seas.harvard.edu
 id:87lji5cbwo.fsf@yoom.home.cworth.org
 id:1258471718-6781-2-git-send-email-dottedmag@dottedmag.net
-id:1258471718-6781-1-git-send-email-dottedmag@dottedmag.net"
+id:1258471718-6781-1-git-send-email-dottedmag@dottedmag.net
+EOF
+test_expect_equal_file OUTPUT EXPECTED
 
 test_begin_subtest "notmuch search --format=json --output=messages"
-output=$(notmuch search --format=json --output=messages '*')
-test_expect_equal "$output" '["1258544095-16616-1-git-send-email-chris@chris-wilson.co.uk",
+notmuch search --format=json --output=messages '*' >OUTPUT
+cat <<EOF >EXPECTED
+["1258544095-16616-1-git-send-email-chris@chris-wilson.co.uk",
 "877htoqdbo.fsf@yoom.home.cworth.org",
 "878we4qdqf.fsf@yoom.home.cworth.org",
 "87aaykqe24.fsf@yoom.home.cworth.org",
@@ -158,11 +168,14 @@ test_expect_equal "$output" '["1258544095-16616-1-git-send-email-chris@chris-wil
 "20091117190054.GU3165@dottiness.seas.harvard.edu",
 "87lji5cbwo.fsf@yoom.home.cworth.org",
 "1258471718-6781-2-git-send-email-dottedmag@dottedmag.net",
-"1258471718-6781-1-git-send-email-dottedmag@dottedmag.net"]'
+"1258471718-6781-1-git-send-email-dottedmag@dottedmag.net"]
+EOF
+test_expect_equal_file OUTPUT EXPECTED
 
 test_begin_subtest "notmuch search --output=files"
-output=$(notmuch search --output=files '*' | sed -e "s,$MAIL_DIR,MAIL_DIR,")
-test_expect_equal "$output" "MAIL_DIR/cur/50:2,
+notmuch search --output=files '*' | sed -e "s,$MAIL_DIR,MAIL_DIR," >OUTPUT
+cat <<EOF >EXPECTED
+MAIL_DIR/cur/50:2,
 MAIL_DIR/cur/49:2,
 MAIL_DIR/cur/48:2,
 MAIL_DIR/cur/47:2,
@@ -211,11 +224,14 @@ MAIL_DIR/cur/04:2,
 MAIL_DIR/cur/03:2,
 MAIL_DIR/cur/07:2,
 MAIL_DIR/cur/02:2,
-MAIL_DIR/cur/01:2,"
+MAIL_DIR/cur/01:2,
+EOF
+test_expect_equal_file OUTPUT EXPECTED
 
 test_begin_subtest "notmuch search --format=json --output=files"
-output=$(notmuch search --format=json --output=files '*' | sed -e "s,$MAIL_DIR,MAIL_DIR,")
-test_expect_equal "$output" '["MAIL_DIR/cur/50:2,",
+notmuch search --format=json --output=files '*' | sed -e "s,$MAIL_DIR,MAIL_DIR," >OUTPUT
+cat <<EOF >EXPECTED
+["MAIL_DIR/cur/50:2,",
 "MAIL_DIR/cur/49:2,",
 "MAIL_DIR/cur/48:2,",
 "MAIL_DIR/cur/47:2,",
@@ -264,20 +280,28 @@ test_expect_equal "$output" '["MAIL_DIR/cur/50:2,",
 "MAIL_DIR/cur/03:2,",
 "MAIL_DIR/cur/07:2,",
 "MAIL_DIR/cur/02:2,",
-"MAIL_DIR/cur/01:2,"]'
+"MAIL_DIR/cur/01:2,"]
+EOF
+test_expect_equal_file OUTPUT EXPECTED
 
 test_begin_subtest "notmuch search --output=tags"
-output=$(notmuch search --output=tags '*')
-test_expect_equal "$output" "attachment
+notmuch search --output=tags '*' >OUTPUT
+cat <<EOF >EXPECTED
+attachment
 inbox
 signed
-unread"
+unread
+EOF
+test_expect_equal_file OUTPUT EXPECTED
 
 test_begin_subtest "notmuch search --format=json --output=tags"
-output=$(notmuch search --format=json --output=tags '*')
-test_expect_equal "$output" '["attachment",
+notmuch search --format=json --output=tags '*' >OUTPUT
+cat <<EOF >EXPECTED
+["attachment",
 "inbox",
 "signed",
-"unread"]'
+"unread"]
+EOF
+test_expect_equal_file OUTPUT EXPECTED
 
 test_done
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH 04/25] test: move "Search for non-existent message prints nothing" to search-output, and add similar test for format=json
  2011-05-28 21:51     ` [PATCH 03/25] test: modify search-output test to use the new test_expect_equal_file function Jameson Graef Rollins
@ 2011-05-28 21:51       ` Jameson Graef Rollins
  2011-05-28 21:51         ` [PATCH 05/25] fix trailing newlines in notmuch search Jameson Graef Rollins
  0 siblings, 1 reply; 62+ messages in thread
From: Jameson Graef Rollins @ 2011-05-28 21:51 UTC (permalink / raw)
  To: Notmuch Mail

These tests also use the new test_expect_equal_file test.
---
 test/search        |    5 -----
 test/search-output |   12 ++++++++++++
 2 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/test/search b/test/search
index 0981f66..4835872 100755
--- a/test/search
+++ b/test/search
@@ -118,9 +118,4 @@ add_message '[subject]="utf8-message-body-subject"' '[date]="Sat, 01 Jan 2000 12
 output=$(notmuch search "bödý" | notmuch_search_sanitize)
 test_expect_equal "$output" "thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; utf8-message-body-subject (inbox unread)"
 
-test_expect_success "Search for non-existent message prints nothing" '
-echo -n > expected &&
-notmuch search "no-message-matches-this" > actual &&
-test_cmp expected actual'
-
 test_done
diff --git a/test/search-output b/test/search-output
index 1554eb1..8ba8acf 100755
--- a/test/search-output
+++ b/test/search-output
@@ -304,4 +304,16 @@ cat <<EOF >EXPECTED
 EOF
 test_expect_equal_file OUTPUT EXPECTED
 
+test_begin_subtest "notmuch search for non-existent message prints nothing"
+notmuch search "no-message-matches-this" > OUTPUT
+echo -n >EXPECTED
+test_expect_equal_file OUTPUT EXPECTED
+
+test_begin_subtest "notmuch search --format=json for non-existent message prints proper empty json"
+notmuch search --format=json "no-message-matches-this" > OUTPUT
+cat <<EOF >EXPECTED
+[]
+EOF
+test_expect_equal_file OUTPUT EXPECTED
+
 test_done
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH 05/25] fix trailing newlines in notmuch search
  2011-05-28 21:51       ` [PATCH 04/25] test: move "Search for non-existent message prints nothing" to search-output, and add similar test for format=json Jameson Graef Rollins
@ 2011-05-28 21:51         ` Jameson Graef Rollins
  2011-05-28 21:51           ` [PATCH 06/25] test: move utf-8 subject search test from json to search test script Jameson Graef Rollins
  0 siblings, 1 reply; 62+ messages in thread
From: Jameson Graef Rollins @ 2011-05-28 21:51 UTC (permalink / raw)
  To: Notmuch Mail

A previous commit to fix json formatting for null results
(0b1ddc5f6652bde99d63d9d553777b3d926694cf) accidentally introduced a
regression that removed trailing newlines for non-json output.  (There
wasn't a good test for this previously, but there is now).  The
problem is due to the fundamental differences in formatting between
the json and non-json outputs.  The only way to fix this was to add a
new formatting field that represents the string to output at the end
of a null result.

All output formatting tests should pass now.
---
 notmuch-search.c |   18 +++++++++++++++---
 1 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/notmuch-search.c b/notmuch-search.c
index 8b90121..69af617 100644
--- a/notmuch-search.c
+++ b/notmuch-search.c
@@ -48,6 +48,7 @@ typedef struct search_format {
     const char *item_sep;
     const char *item_end;
     const char *results_end;
+    const char *results_null;
 } search_format_t;
 
 static void
@@ -72,6 +73,7 @@ static const search_format_t format_text = {
 		"%s", " ",
 	    ")", "\n",
 	"",
+    "\n",
     "",
 };
 
@@ -98,6 +100,7 @@ static const search_format_t format_json = {
 	    "]", ",\n",
 	"}",
     "]\n",
+    "]\n",
 };
 
 static void
@@ -236,7 +239,10 @@ do_search_threads (const search_format_t *format,
 	notmuch_thread_destroy (thread);
     }
 
-    fputs (format->results_end, stdout);
+    if (first_thread)
+	fputs (format->results_null, stdout);
+    else
+	fputs (format->results_end, stdout);
 
     return 0;
 }
@@ -280,7 +286,10 @@ do_search_messages (const search_format_t *format,
 
     notmuch_messages_destroy (messages);
 
-    fputs (format->results_end, stdout);
+    if (first_message)
+	fputs (format->results_null, stdout);
+    else
+	fputs (format->results_end, stdout);
 
     return 0;
 }
@@ -329,7 +338,10 @@ do_search_tags (notmuch_database_t *notmuch,
     if (messages)
 	notmuch_messages_destroy (messages);
 
-    fputs (format->results_end, stdout);
+    if (first_tag)
+	fputs (format->results_null, stdout);
+    else
+	fputs (format->results_end, stdout);
 
     return 0;
 }
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH 06/25] test: move utf-8 subject search test from json to search test script
  2011-05-28 21:51         ` [PATCH 05/25] fix trailing newlines in notmuch search Jameson Graef Rollins
@ 2011-05-28 21:51           ` Jameson Graef Rollins
  2011-05-28 21:51             ` [PATCH 07/25] test: remove json test for search null result, since it's being more properly tested in search-output Jameson Graef Rollins
  0 siblings, 1 reply; 62+ messages in thread
From: Jameson Graef Rollins @ 2011-05-28 21:51 UTC (permalink / raw)
  To: Notmuch Mail

This test doesn't have anything to do with json, and has everything to
do with testing search capability, so I'm not sure why it was in the
wrong place.
---
 test/json   |    5 -----
 test/search |    6 ++++++
 2 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/test/json b/test/json
index 7c81856..0badb1d 100755
--- a/test/json
+++ b/test/json
@@ -18,11 +18,6 @@ test_expect_equal "$output" "[{\"thread\": \"XXX\",
 \"subject\": \"json-search-subject\",
 \"tags\": [\"inbox\", \"unread\"]}]"
 
-test_begin_subtest "Search by subject (utf-8):"
-add_message [subject]=utf8-sübjéct "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\""
-output=$(notmuch search subject:utf8-sübjéct | notmuch_search_sanitize)
-test_expect_equal "$output" "thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; utf8-sübjéct (inbox unread)"
-
 test_begin_subtest "Show message: json, utf-8"
 add_message "[subject]=\"json-show-utf8-body-sübjéct\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" "[body]=\"jsön-show-méssage\""
 output=$(notmuch show --format=json "jsön-show-méssage")
diff --git a/test/search b/test/search
index 4835872..e7c8c54 100755
--- a/test/search
+++ b/test/search
@@ -24,6 +24,11 @@ add_message [subject]=subjectsearchtest '[date]="Sat, 01 Jan 2000 12:00:00 -0000
 output=$(notmuch search subject:subjectsearchtest | notmuch_search_sanitize)
 test_expect_equal "$output" "thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; subjectsearchtest (inbox unread)"
 
+test_begin_subtest "Search by subject (utf-8):"
+add_message [subject]=utf8-sübjéct '[date]="Sat, 01 Jan 2000 12:00:00 -0000"'
+output=$(notmuch search subject:utf8-sübjéct | notmuch_search_sanitize)
+test_expect_equal "$output" "thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; utf8-sübjéct (inbox unread)"
+
 test_begin_subtest "Search by id:"
 add_message '[subject]="search by id"' '[date]="Sat, 01 Jan 2000 12:00:00 -0000"'
 output=$(notmuch search id:${gen_msg_id} | notmuch_search_sanitize)
@@ -101,6 +106,7 @@ thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; body search (inbox unread)
 thread:XXX   2000-01-01 [1/1] searchbyfrom; search by from (inbox unread)
 thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; search by to (inbox unread)
 thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; subjectsearchtest (inbox unread)
+thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; utf8-sübjéct (inbox unread)
 thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; search by id (inbox unread)
 thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; search by tag (inbox searchbytag unread)
 thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; search by thread (inbox unread)
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH 07/25] test: remove json test for search null result, since it's being more properly tested in search-output
  2011-05-28 21:51           ` [PATCH 06/25] test: move utf-8 subject search test from json to search test script Jameson Graef Rollins
@ 2011-05-28 21:51             ` Jameson Graef Rollins
  2011-05-28 21:51               ` [PATCH 08/25] create and set temporary home directory Jameson Graef Rollins
  2011-06-01 23:41               ` [PATCH 07/25] test: remove json test for search null result, since it's being more properly tested in search-output Carl Worth
  0 siblings, 2 replies; 62+ messages in thread
From: Jameson Graef Rollins @ 2011-05-28 21:51 UTC (permalink / raw)
  To: Notmuch Mail

The test in json was inferior to the one in search-output, since it
wasn't properly testing for the presence of a trailing newline.
---
 test/json          |    4 ----
 test/search-output |    4 +---
 2 files changed, 1 insertions(+), 7 deletions(-)

diff --git a/test/json b/test/json
index 0badb1d..5a2544c 100755
--- a/test/json
+++ b/test/json
@@ -34,8 +34,4 @@ test_expect_equal "$output" "[{\"thread\": \"XXX\",
 \"subject\": \"json-search-utf8-body-sübjéct\",
 \"tags\": [\"inbox\", \"unread\"]}]"
 
-test_begin_subtest "Search returning no messages"
-output=$(notmuch search --format=json "this string had better not match any messages" | notmuch_search_sanitize)
-test_expect_equal "$output" "[]"
-
 test_done
diff --git a/test/search-output b/test/search-output
index 8ba8acf..13f9613 100755
--- a/test/search-output
+++ b/test/search-output
@@ -311,9 +311,7 @@ test_expect_equal_file OUTPUT EXPECTED
 
 test_begin_subtest "notmuch search --format=json for non-existent message prints proper empty json"
 notmuch search --format=json "no-message-matches-this" > OUTPUT
-cat <<EOF >EXPECTED
-[]
-EOF
+echo "[]" >EXPECTED
 test_expect_equal_file OUTPUT EXPECTED
 
 test_done
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH 08/25] create and set temporary home directory
  2011-05-28 21:51             ` [PATCH 07/25] test: remove json test for search null result, since it's being more properly tested in search-output Jameson Graef Rollins
@ 2011-05-28 21:51               ` Jameson Graef Rollins
  2011-05-28 21:51                 ` [PATCH 09/25] emacs: Define several faces for the crypto-status button Jameson Graef Rollins
  2011-06-01 23:41               ` [PATCH 07/25] test: remove json test for search null result, since it's being more properly tested in search-output Carl Worth
  1 sibling, 1 reply; 62+ messages in thread
From: Jameson Graef Rollins @ 2011-05-28 21:51 UTC (permalink / raw)
  To: Notmuch Mail

From: Florian Friesdorf <flo@chaoflow.net>

My first patch send to the list, not sure whether done properly.

In the master branch in test/emacs two tests access the build users home
directory, so does emacs_deliver_message in the crypto branch.

I think the tests should not touch the build user's home directory. The
patch creates a directory in the temporary test directory and sets home
accordingly.

In case of a non-existent home directory, the tests are failing without
this patch.

Signed-off-by: Jameson Graef Rollins <jrollins@finestructure.net>
---
 test/test-lib.sh |    7 +++++++
 1 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/test/test-lib.sh b/test/test-lib.sh
index 922b1ef..6a8cb98 100755
--- a/test/test-lib.sh
+++ b/test/test-lib.sh
@@ -973,6 +973,13 @@ rm -fr "$test" || {
 	exit 1
 }
 
+# A temporary home directory is needed by at least:
+# - emacs/"Sending a message via (fake) SMTP"
+# - emacs/"Reply within emacs"
+# - crypto/emacs_deliver_message
+export HOME="${TMP_DIRECTORY}/home"
+mkdir -p "${HOME}"
+
 MAIL_DIR="${TMP_DIRECTORY}/mail"
 export GNUPGHOME="${TMP_DIRECTORY}/gnupg"
 export NOTMUCH_CONFIG="${TMP_DIRECTORY}/notmuch-config"
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH 09/25] emacs: Define several faces for the crypto-status button
  2011-05-28 21:51               ` [PATCH 08/25] create and set temporary home directory Jameson Graef Rollins
@ 2011-05-28 21:51                 ` Jameson Graef Rollins
  2011-05-28 21:51                   ` [PATCH 10/25] Sanitize "Subject:" and "Author:" fields to not contain control characters in notmuch-search Jameson Graef Rollins
  0 siblings, 1 reply; 62+ messages in thread
From: Jameson Graef Rollins @ 2011-05-28 21:51 UTC (permalink / raw)
  To: Notmuch Mail

From: Thomas Jost <schnouki@schnouki.net>

Signed-off-by: Jameson Graef Rollins <jrollins@finestructure.net>

jrollins modified this patch to conform to recent changes in the
crypto processing since this patch was originally sent in.
---
 emacs/notmuch-crypto.el |   42 ++++++++++++++++++++++++++++++++----------
 1 files changed, 32 insertions(+), 10 deletions(-)

diff --git a/emacs/notmuch-crypto.el b/emacs/notmuch-crypto.el
index cb02840..f03266f 100644
--- a/emacs/notmuch-crypto.el
+++ b/emacs/notmuch-crypto.el
@@ -36,36 +36,58 @@ search."
   :group 'notmuch
   :type 'boolean)
 
+(defface notmuch-crypto-signature-good
+  '((t (:background "green" :foreground "black")))
+  "Face used for good signatures."
+  :group 'notmuch)
+
+(defface notmuch-crypto-signature-good-key
+  '((t (:background "orange" :foreground "black")))
+  "Face used for good signatures."
+  :group 'notmuch)
+
+(defface notmuch-crypto-signature-bad
+  '((t (:background "red" :foreground "black")))
+  "Face used for bad signatures."
+  :group 'notmuch)
+
+(defface notmuch-crypto-signature-unknown
+  '((t (:background "red" :foreground "black")))
+  "Face used for signatures of unknown status."
+  :group 'notmuch)
+
+(defface notmuch-crypto-decryption
+  '((t (:background "purple" :foreground "black")))
+  "Face used for encryption/decryption status messages."
+  :group 'notmuch)
+
 (define-button-type 'notmuch-crypto-status-button-type
   'action '(lambda (button) (message (button-get button 'help-echo)))
   'follow-link t
-  'help-echo "Set notmuch-crypto-process-mime to process cryptographic mime parts."
-  'face '(:foreground "blue")
-  'mouse-face '(:foreground "blue"))
+  'help-echo "Set notmuch-crypto-process-mime to process cryptographic mime parts.")
 
 (defun notmuch-crypto-insert-sigstatus-button (sigstatus from)
   (let* ((status (plist-get sigstatus :status))
 	 (help-msg nil)
 	 (label "Signature not processed")
-	 (face '(:background "red" :foreground "black")))
+	 (face 'notmuch-crypto-signature-unknown))
     (cond
      ((string= status "good")
       ; if userid present, userid has full or greater validity
       (if (plist-member sigstatus :userid)
 	  (let ((userid (plist-get sigstatus :userid)))
 	    (setq label (concat "Good signature by: " userid))
-	    (setq face '(:background "green" :foreground "black")))
+	    (setq face 'notmuch-crypto-signature-good))
 	(let ((fingerprint (concat "0x" (plist-get sigstatus :fingerprint))))
 	  (setq label (concat "Good signature by key: " fingerprint))
-	  (setq face '(:background "orange" :foreground "black")))))
+	  (setq face 'notmuch-crypto-signature-good-key))))
      ((string= status "error")
       (let ((keyid (concat "0x" (plist-get sigstatus :keyid))))
-	(setq label (concat "Unknown key ID " keyid " or unsupported algorithm"))
-	(setq face '(:background "red" :foreground "black"))))
+	(setq label (concat "Unknown key ID " keyid " or unsupported algorithm"))))
      ((string= status "bad")
       (let ((keyid (concat "0x" (plist-get sigstatus :keyid))))
 	(setq label (concat "Bad signature (claimed key ID " keyid ")"))
-	(setq face '(:background "red" :foreground "black"))))
+	(setq face 'notmuch-crypto-signature-bad)))
      (t
       (setq label "Unknown signature status")
       (if status (setq label (concat label " \"" status "\"")))))
@@ -83,7 +105,7 @@ search."
   (let* ((status (plist-get encstatus :status))
 	 (help-msg nil)
 	 (label "Decryption not attempted")
-	 (face '(:background "purple" :foreground "black")))
+	 (face 'notmuch-crypto-decryption))
     (cond
      ((string= status "good")
       (setq label "Decryption successful"))
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH 10/25] Sanitize "Subject:" and "Author:" fields to not contain control characters in notmuch-search
  2011-05-28 21:51                 ` [PATCH 09/25] emacs: Define several faces for the crypto-status button Jameson Graef Rollins
@ 2011-05-28 21:51                   ` Jameson Graef Rollins
  2011-05-28 21:51                     ` [PATCH 11/25] test: add test for sanitized notmuch-search output Jameson Graef Rollins
  0 siblings, 1 reply; 62+ messages in thread
From: Jameson Graef Rollins @ 2011-05-28 21:51 UTC (permalink / raw)
  To: Notmuch Mail; +Cc: Andreas Amann

From: Andreas Amann <a.amann@ucc.ie>

When a Subject field contained encoded CRLF sequences, these sequences
would appear unfiltered in the output of notmuch search. This confused
the notmuch emacs interface leading to "Unexpected Output"
messages. This is now fixed by replacing all characters with ASCII
code less than 32 with a question mark.

Signed-off-by: Jameson Graef Rollins <jrollins@finestructure.net>
---
 notmuch-search.c |   22 ++++++++++++++++++++--
 1 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/notmuch-search.c b/notmuch-search.c
index 69af617..530cecc 100644
--- a/notmuch-search.c
+++ b/notmuch-search.c
@@ -111,6 +111,20 @@ format_item_id_text (unused (const void *ctx),
     printf ("%s%s", item_type, item_id);
 }
 
+static char *
+sanitize_string (const void *ctx, const char *str)
+{
+    char *out, *loop;
+
+    loop = out = talloc_strdup (ctx, str);
+
+    for (; *loop; loop++) {
+	if ((unsigned char)(*loop) < 32)
+	    *loop = '?';
+    }
+    return out;
+}
+
 static void
 format_thread_text (const void *ctx,
 		    const char *thread_id,
@@ -120,13 +134,17 @@ format_thread_text (const void *ctx,
 		    const char *authors,
 		    const char *subject)
 {
+    void *ctx_quote = talloc_new (ctx);
+
     printf ("thread:%s %12s [%d/%d] %s; %s",
 	    thread_id,
 	    notmuch_time_relative_date (ctx, date),
 	    matched,
 	    total,
-	    authors,
-	    subject);
+	    sanitize_string (ctx_quote, authors),
+	    sanitize_string (ctx_quote, subject));
+
+    talloc_free (ctx_quote);
 }
 
 static void
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH 11/25] test: add test for sanitized notmuch-search output
  2011-05-28 21:51                   ` [PATCH 10/25] Sanitize "Subject:" and "Author:" fields to not contain control characters in notmuch-search Jameson Graef Rollins
@ 2011-05-28 21:51                     ` Jameson Graef Rollins
  2011-05-28 21:51                       ` [PATCH 12/25] test: cleanup search-output test names (no functional change) Jameson Graef Rollins
  0 siblings, 1 reply; 62+ messages in thread
From: Jameson Graef Rollins @ 2011-05-28 21:51 UTC (permalink / raw)
  To: Notmuch Mail

From: Florian Friesdorf <flo@chaoflow.net>

Signed-off-by: Jameson Graef Rollins <jrollins@finestructure.net>
---
 test/search-output |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/test/search-output b/test/search-output
index 13f9613..8edc26a 100755
--- a/test/search-output
+++ b/test/search-output
@@ -304,6 +304,15 @@ cat <<EOF >EXPECTED
 EOF
 test_expect_equal_file OUTPUT EXPECTED
 
+test_begin_subtest "santize output for quoted-printable line-breaks in author and subject"
+add_message "[subject]='two =?ISO-8859-1?Q?line=0A_subject?=
+	headers'"
+notmuch search id:"$gen_msg_id" >OUTPUT
+cat <<EOF >EXPECTED
+thread:000000000000001b   2001-01-05 [1/1] Notmuch Test Suite; two line? subject headers (inbox unread)
+EOF
+test_expect_equal_file OUTPUT EXPECTED
+
 test_begin_subtest "notmuch search for non-existent message prints nothing"
 notmuch search "no-message-matches-this" > OUTPUT
 echo -n >EXPECTED
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH 12/25] test: cleanup search-output test names (no functional change)
  2011-05-28 21:51                     ` [PATCH 11/25] test: add test for sanitized notmuch-search output Jameson Graef Rollins
@ 2011-05-28 21:51                       ` Jameson Graef Rollins
  2011-05-28 21:51                         ` [PATCH 13/25] emacs: Use "message-cited-text" instead of "message-cited-text-face" Jameson Graef Rollins
  0 siblings, 1 reply; 62+ messages in thread
From: Jameson Graef Rollins @ 2011-05-28 21:51 UTC (permalink / raw)
  To: Notmuch Mail

Signed-off-by: Jameson Graef Rollins <jrollins@finestructure.net>
---
 test/search-output |   20 ++++++++++----------
 1 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/test/search-output b/test/search-output
index 8edc26a..02cf602 100755
--- a/test/search-output
+++ b/test/search-output
@@ -4,7 +4,7 @@ test_description='various settings for "notmuch search --output="'
 
 add_email_corpus
 
-test_begin_subtest "notmuch search --output=threads"
+test_begin_subtest "--output=threads"
 notmuch search --output=threads '*' | sed -e s/thread:.*/thread:THREADID/ >OUTPUT
 cat <<EOF >EXPECTED
 thread:THREADID
@@ -32,7 +32,7 @@ thread:THREADID
 EOF
 test_expect_equal_file OUTPUT EXPECTED
 
-test_begin_subtest "notmuch search --format=json --output=threads"
+test_begin_subtest "--output=threads --format=json"
 notmuch search --format=json --output=threads '*' | sed -e s/\".*\"/\"THREADID\"/ >OUTPUT
 cat <<EOF >EXPECTED
 ["THREADID",
@@ -60,7 +60,7 @@ cat <<EOF >EXPECTED
 EOF
 test_expect_equal_file OUTPUT EXPECTED
 
-test_begin_subtest "notmuch search --output=messages"
+test_begin_subtest "--output=messages"
 notmuch search --output=messages '*' >OUTPUT
 cat <<EOF >EXPECTED
 id:1258544095-16616-1-git-send-email-chris@chris-wilson.co.uk
@@ -116,7 +116,7 @@ id:1258471718-6781-1-git-send-email-dottedmag@dottedmag.net
 EOF
 test_expect_equal_file OUTPUT EXPECTED
 
-test_begin_subtest "notmuch search --format=json --output=messages"
+test_begin_subtest "--output=messages --format=json"
 notmuch search --format=json --output=messages '*' >OUTPUT
 cat <<EOF >EXPECTED
 ["1258544095-16616-1-git-send-email-chris@chris-wilson.co.uk",
@@ -172,7 +172,7 @@ cat <<EOF >EXPECTED
 EOF
 test_expect_equal_file OUTPUT EXPECTED
 
-test_begin_subtest "notmuch search --output=files"
+test_begin_subtest "--output=files"
 notmuch search --output=files '*' | sed -e "s,$MAIL_DIR,MAIL_DIR," >OUTPUT
 cat <<EOF >EXPECTED
 MAIL_DIR/cur/50:2,
@@ -228,7 +228,7 @@ MAIL_DIR/cur/01:2,
 EOF
 test_expect_equal_file OUTPUT EXPECTED
 
-test_begin_subtest "notmuch search --format=json --output=files"
+test_begin_subtest "--output=files --format=json"
 notmuch search --format=json --output=files '*' | sed -e "s,$MAIL_DIR,MAIL_DIR," >OUTPUT
 cat <<EOF >EXPECTED
 ["MAIL_DIR/cur/50:2,",
@@ -284,7 +284,7 @@ cat <<EOF >EXPECTED
 EOF
 test_expect_equal_file OUTPUT EXPECTED
 
-test_begin_subtest "notmuch search --output=tags"
+test_begin_subtest "--output=tags"
 notmuch search --output=tags '*' >OUTPUT
 cat <<EOF >EXPECTED
 attachment
@@ -294,7 +294,7 @@ unread
 EOF
 test_expect_equal_file OUTPUT EXPECTED
 
-test_begin_subtest "notmuch search --format=json --output=tags"
+test_begin_subtest "--output=tags --format=json"
 notmuch search --format=json --output=tags '*' >OUTPUT
 cat <<EOF >EXPECTED
 ["attachment",
@@ -313,12 +313,12 @@ thread:000000000000001b   2001-01-05 [1/1] Notmuch Test Suite; two line? subject
 EOF
 test_expect_equal_file OUTPUT EXPECTED
 
-test_begin_subtest "notmuch search for non-existent message prints nothing"
+test_begin_subtest "search for non-existent message prints nothing"
 notmuch search "no-message-matches-this" > OUTPUT
 echo -n >EXPECTED
 test_expect_equal_file OUTPUT EXPECTED
 
-test_begin_subtest "notmuch search --format=json for non-existent message prints proper empty json"
+test_begin_subtest "search --format=json for non-existent message prints proper empty json"
 notmuch search --format=json "no-message-matches-this" > OUTPUT
 echo "[]" >EXPECTED
 test_expect_equal_file OUTPUT EXPECTED
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH 13/25] emacs: Use "message-cited-text" instead of "message-cited-text-face"
  2011-05-28 21:51                       ` [PATCH 12/25] test: cleanup search-output test names (no functional change) Jameson Graef Rollins
@ 2011-05-28 21:51                         ` Jameson Graef Rollins
  2011-05-28 21:51                           ` [PATCH 14/25] Fix old style notmuch-fcc-dirs configuration check Jameson Graef Rollins
  0 siblings, 1 reply; 62+ messages in thread
From: Jameson Graef Rollins @ 2011-05-28 21:51 UTC (permalink / raw)
  To: Notmuch Mail

From: Pieter Praet <pieter@praet.org>

(describe-face 'message-cited-text-face)
> message-cited-text-face is an alias for the face `message-cited-text'.
> This face is obsolete since 22.1; use `message-cited-text' instead.

Signed-off-by: Pieter Praet <pieter@praet.org>
Signed-off-by: Jameson Graef Rollins <jrollins@finestructure.net>
---
 emacs/notmuch-wash.el |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/emacs/notmuch-wash.el b/emacs/notmuch-wash.el
index e8134bf..115c3bb 100644
--- a/emacs/notmuch-wash.el
+++ b/emacs/notmuch-wash.el
@@ -156,7 +156,7 @@ insert before the button, probably for indentation."
     (let* ((cite-start (match-beginning 0))
 	   (cite-end (match-end 0))
 	   (cite-lines (count-lines cite-start cite-end)))
-      (overlay-put (make-overlay cite-start cite-end) 'face 'message-cited-text-face)
+      (overlay-put (make-overlay cite-start cite-end) 'face 'message-cited-text)
       (when (> cite-lines (+ notmuch-wash-citation-lines-prefix
 			     notmuch-wash-citation-lines-suffix
 			     1))
@@ -178,7 +178,7 @@ insert before the button, probably for indentation."
 		  (sig-end-marker (make-marker)))
 	      (set-marker sig-start-marker sig-start)
 	      (set-marker sig-end-marker (point-max))
-	      (overlay-put (make-overlay sig-start-marker sig-end-marker) 'face 'message-cited-text-face)
+	      (overlay-put (make-overlay sig-start-marker sig-end-marker) 'face 'message-cited-text)
 	      (notmuch-wash-region-to-button
 	       sig-start-marker sig-end-marker
 	       "signature" "\n"))))))
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH 14/25] Fix old style notmuch-fcc-dirs configuration check.
  2011-05-28 21:51                         ` [PATCH 13/25] emacs: Use "message-cited-text" instead of "message-cited-text-face" Jameson Graef Rollins
@ 2011-05-28 21:51                           ` Jameson Graef Rollins
  2011-05-28 21:51                             ` [PATCH 15/25] Use message-field-value instead of message-fetch-field in FCC header setup Jameson Graef Rollins
  2011-06-02  5:10                             ` [PATCH 14/25] Fix old style notmuch-fcc-dirs configuration check Carl Worth
  0 siblings, 2 replies; 62+ messages in thread
From: Jameson Graef Rollins @ 2011-05-28 21:51 UTC (permalink / raw)
  To: Notmuch Mail

From: Dmitry Kurochkin <dmitry.kurochkin@gmail.com>

In notmuch 0.5 notmuch-fcc-dirs style changed.  The previous code
did not correctly identify an old configuration and, as a
consequence, broke new configurations.

The fix was extracted from a bigger patch series by David
Edmondson id:"1290682750-30283-2-git-send-email-dme@dme.org".

Signed-off-by: Jameson Graef Rollins <jrollins@finestructure.net>
---
 emacs/notmuch-maildir-fcc.el |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/emacs/notmuch-maildir-fcc.el b/emacs/notmuch-maildir-fcc.el
index 3f1c124..b79f6a3 100644
--- a/emacs/notmuch-maildir-fcc.el
+++ b/emacs/notmuch-maildir-fcc.el
@@ -88,7 +88,7 @@ will NOT be removed or replaced."
 	   notmuch-fcc-dirs)
 
 	  ((and (listp notmuch-fcc-dirs)
-		(= 1 (length (car notmuch-fcc-dirs))))
+		(stringp (car notmuch-fcc-dirs)))
 	   ;; Old style - no longer works.
 	   (error "Invalid `notmuch-fcc-dirs' setting (old style)"))
 
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH 15/25] Use message-field-value instead of message-fetch-field in FCC header setup.
  2011-05-28 21:51                           ` [PATCH 14/25] Fix old style notmuch-fcc-dirs configuration check Jameson Graef Rollins
@ 2011-05-28 21:51                             ` Jameson Graef Rollins
  2011-05-28 21:51                               ` [PATCH 16/25] lib/message-file: plug three memleaks Jameson Graef Rollins
  2011-06-02  5:10                             ` [PATCH 14/25] Fix old style notmuch-fcc-dirs configuration check Carl Worth
  1 sibling, 1 reply; 62+ messages in thread
From: Jameson Graef Rollins @ 2011-05-28 21:51 UTC (permalink / raw)
  To: Notmuch Mail

From: Dmitry Kurochkin <dmitry.kurochkin@gmail.com>

For message-fetch-field the buffer is expected to be narrowed to
just the header of the message.  That is not the case when
notmuch-fcc-header-setup is run, hence a wrong header value may be
returned.  E.g. when forwarding an
email, (message-fetch-field "From") returns the From header value
of the forwarded email.

Message-field-value is the same as message-fetch-field, only
narrows the buffer to the headers first.

Signed-off-by: Jameson Graef Rollins <jrollins@finestructure.net>
---
 emacs/notmuch-maildir-fcc.el |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/emacs/notmuch-maildir-fcc.el b/emacs/notmuch-maildir-fcc.el
index b79f6a3..b6c6e2a 100644
--- a/emacs/notmuch-maildir-fcc.el
+++ b/emacs/notmuch-maildir-fcc.el
@@ -80,7 +80,7 @@ will NOT be removed or replaced."
   (let ((subdir
 	 (cond
 	  ((or (not notmuch-fcc-dirs)
-	       (message-fetch-field "Fcc"))
+	       (message-field-value "Fcc"))
 	   ;; Nothing set or an existing header.
 	   nil)
 
@@ -93,7 +93,7 @@ will NOT be removed or replaced."
 	   (error "Invalid `notmuch-fcc-dirs' setting (old style)"))
 
 	  ((listp notmuch-fcc-dirs)
-	   (let* ((from (message-fetch-field "From"))
+	   (let* ((from (message-field-value "From"))
 		  (match
 		   (catch 'first-match
 		     (dolist (re-folder notmuch-fcc-dirs)
@@ -118,7 +118,7 @@ will NOT be removed or replaced."
 		  (concat (notmuch-database-path) "/" subdir)))))
       
       ;; finally test if fcc points to a valid maildir
-      (let ((fcc-header (message-fetch-field "Fcc")))
+      (let ((fcc-header (message-field-value "Fcc")))
 	(unless (notmuch-maildir-fcc-dir-is-maildir-p fcc-header)
 	  (cond ((not (file-writable-p fcc-header))
 		 (error (format "No permission to create %s, which does not exist"
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH 16/25] lib/message-file: plug three memleaks.
  2011-05-28 21:51                             ` [PATCH 15/25] Use message-field-value instead of message-fetch-field in FCC header setup Jameson Graef Rollins
@ 2011-05-28 21:51                               ` Jameson Graef Rollins
  2011-05-28 21:51                                 ` [PATCH 17/25] avoid segfault when calling sanitize_string() on NULL Jameson Graef Rollins
  0 siblings, 1 reply; 62+ messages in thread
From: Jameson Graef Rollins @ 2011-05-28 21:51 UTC (permalink / raw)
  To: Notmuch Mail

From: Anton Khirnov <anton@khirnov.net>

Signed-off-by: Jameson Graef Rollins <jrollins@finestructure.net>
---
 lib/message-file.c |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/lib/message-file.c b/lib/message-file.c
index 7722832..99505c1 100644
--- a/lib/message-file.c
+++ b/lib/message-file.c
@@ -341,12 +341,17 @@ notmuch_message_file_get_header (notmuch_message_file_t *message,
 		strncpy(combined_header,header_sofar,hdrsofar);
 		*(combined_header+hdrsofar) = ' ';
 		strncpy(combined_header+hdrsofar+1,decoded_value,newhdr+1);
+		free (decoded_value);
 		g_hash_table_insert (message->headers, header, combined_header);
 	    }
 	} else {
 	    if (header_sofar == NULL) {
 		/* Only insert if we don't have a value for this header, yet. */
 		g_hash_table_insert (message->headers, header, decoded_value);
+	    } else {
+		free (header);
+		free (decoded_value);
+		decoded_value = header_sofar;
 	    }
 	}
 	/* if we found a match we can bail - unless of course we are
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH 17/25] avoid segfault when calling sanitize_string() on NULL
  2011-05-28 21:51                               ` [PATCH 16/25] lib/message-file: plug three memleaks Jameson Graef Rollins
@ 2011-05-28 21:51                                 ` Jameson Graef Rollins
  2011-05-28 21:51                                   ` [PATCH 18/25] Fix search output sanitization test Jameson Graef Rollins
  2011-06-03 19:24                                   ` [PATCH 17/25] avoid segfault when calling sanitize_string() on NULL Carl Worth
  0 siblings, 2 replies; 62+ messages in thread
From: Jameson Graef Rollins @ 2011-05-28 21:51 UTC (permalink / raw)
  To: Notmuch Mail; +Cc: Daniel Kahn Gillmor

From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>

Signed-off-by: Jameson Graef Rollins <jrollins@finestructure.net>
---
 notmuch-search.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/notmuch-search.c b/notmuch-search.c
index 530cecc..616fe68 100644
--- a/notmuch-search.c
+++ b/notmuch-search.c
@@ -116,6 +116,9 @@ sanitize_string (const void *ctx, const char *str)
 {
     char *out, *loop;
 
+    if (NULL == str)
+	return NULL;
+
     loop = out = talloc_strdup (ctx, str);
 
     for (; *loop; loop++) {
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH 18/25] Fix search output sanitization test.
  2011-05-28 21:51                                 ` [PATCH 17/25] avoid segfault when calling sanitize_string() on NULL Jameson Graef Rollins
@ 2011-05-28 21:51                                   ` Jameson Graef Rollins
  2011-05-28 21:51                                     ` [PATCH 19/25] emacs: fix notmuch-show-part-button to not include newline Jameson Graef Rollins
  2011-06-03 19:24                                   ` [PATCH 17/25] avoid segfault when calling sanitize_string() on NULL Carl Worth
  1 sibling, 1 reply; 62+ messages in thread
From: Jameson Graef Rollins @ 2011-05-28 21:51 UTC (permalink / raw)
  To: Notmuch Mail; +Cc: Austin Clements

From: Austin Clements <amdragon@MIT.EDU>

Previously, the test assumed the generated message would be assigned a
specific thread ID; now it doesn't.  Also, spelling fix.

Signed-off-by: Jameson Graef Rollins <jrollins@finestructure.net>
---
 test/search-output |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/test/search-output b/test/search-output
index 02cf602..3c875cd 100755
--- a/test/search-output
+++ b/test/search-output
@@ -304,12 +304,12 @@ cat <<EOF >EXPECTED
 EOF
 test_expect_equal_file OUTPUT EXPECTED
 
-test_begin_subtest "santize output for quoted-printable line-breaks in author and subject"
+test_begin_subtest "sanitize output for quoted-printable line-breaks in author and subject"
 add_message "[subject]='two =?ISO-8859-1?Q?line=0A_subject?=
 	headers'"
-notmuch search id:"$gen_msg_id" >OUTPUT
+notmuch search id:"$gen_msg_id" | notmuch_search_sanitize >OUTPUT
 cat <<EOF >EXPECTED
-thread:000000000000001b   2001-01-05 [1/1] Notmuch Test Suite; two line? subject headers (inbox unread)
+thread:XXX   2001-01-05 [1/1] Notmuch Test Suite; two line? subject headers (inbox unread)
 EOF
 test_expect_equal_file OUTPUT EXPECTED
 
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH 19/25] emacs: fix notmuch-show-part-button to not include newline
  2011-05-28 21:51                                   ` [PATCH 18/25] Fix search output sanitization test Jameson Graef Rollins
@ 2011-05-28 21:51                                     ` Jameson Graef Rollins
  2011-05-28 21:51                                       ` [PATCH 20/25] emacs: Don't always prompt for the "From" address when replying Jameson Graef Rollins
  0 siblings, 1 reply; 62+ messages in thread
From: Jameson Graef Rollins @ 2011-05-28 21:51 UTC (permalink / raw)
  To: Notmuch Mail

This makes the button cleaner, so that it doesn't include the entire
rest of the line that the button is on.
---
 emacs/notmuch-show.el |   29 +++++++++++++++++------------
 1 files changed, 17 insertions(+), 12 deletions(-)

diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el
index 6c498ab..a25ad99 100644
--- a/emacs/notmuch-show.el
+++ b/emacs/notmuch-show.el
@@ -280,18 +280,23 @@ message at DEPTH in the current thread."
   'face 'message-mml)
 
 (defun notmuch-show-insert-part-header (nth content-type declared-type &optional name comment)
-  (insert-button
-   (concat "[ "
-	   (if name (concat name ": ") "")
-	   declared-type
-	   (if (not (string-equal declared-type content-type))
-	       (concat " (as " content-type ")")
-	     "")
-	   (or comment "")
-	   " ]\n")
-   :type 'notmuch-show-part-button-type
-   :notmuch-part nth
-   :notmuch-filename name))
+  (let ((button))
+    (setq button
+	  (insert-button
+	   (concat "[ "
+		   (if name (concat name ": ") "")
+		   declared-type
+		   (if (not (string-equal declared-type content-type))
+		       (concat " (as " content-type ")")
+		     "")
+		   (or comment "")
+		   " ]")
+	   :type 'notmuch-show-part-button-type
+	   :notmuch-part nth
+	   :notmuch-filename name))
+    (insert "\n")
+    ;; return button
+    button))
 
 ;; Functions handling particular MIME parts.
 
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH 20/25] emacs: Don't always prompt for the "From" address when replying
  2011-05-28 21:51                                     ` [PATCH 19/25] emacs: fix notmuch-show-part-button to not include newline Jameson Graef Rollins
@ 2011-05-28 21:51                                       ` Jameson Graef Rollins
  2011-05-28 21:51                                         ` [PATCH 21/25] emacs: Cleaner interface when prompting for sender address Jameson Graef Rollins
  0 siblings, 1 reply; 62+ messages in thread
From: Jameson Graef Rollins @ 2011-05-28 21:51 UTC (permalink / raw)
  To: Notmuch Mail

From: Thomas Jost <schnouki@schnouki.net>

When replying, the From: address is already filled in by notmuch reply, so most
of the time there is no need to prompt the user for it.
---
 emacs/notmuch-mua.el |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/emacs/notmuch-mua.el b/emacs/notmuch-mua.el
index 7c05a81..556d2bf 100644
--- a/emacs/notmuch-mua.el
+++ b/emacs/notmuch-mua.el
@@ -155,7 +155,10 @@ name and addresses configured in the notmuch configuration file."
   :type '(repeat string))
 
 (defcustom notmuch-always-prompt-for-sender nil
-  "Always prompt for the From: address when composing a new message."
+  "Always prompt for the From: address when composing or forwarding a message.
+
+This is not taken into account when replying to a message, because in that case
+the From: header is already filled in by notmuch."
   :group 'notmuch
   :type 'boolean)
 
@@ -203,7 +206,7 @@ the From: address first."
   "Invoke the notmuch reply window."
   (interactive "P")
   (let ((sender
-	 (when (or prompt-for-sender notmuch-always-prompt-for-sender)
+	 (when prompt-for-sender
 	   (notmuch-mua-prompt-for-sender))))
     (notmuch-mua-reply query-string sender)))
 
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH 21/25] emacs: Cleaner interface when prompting for sender address
  2011-05-28 21:51                                       ` [PATCH 20/25] emacs: Don't always prompt for the "From" address when replying Jameson Graef Rollins
@ 2011-05-28 21:51                                         ` Jameson Graef Rollins
  2011-05-28 21:51                                           ` [PATCH 22/25] test: fix test_expect_equal_file test to copy instead of mv test files Jameson Graef Rollins
  0 siblings, 1 reply; 62+ messages in thread
From: Jameson Graef Rollins @ 2011-05-28 21:51 UTC (permalink / raw)
  To: Notmuch Mail

From: Thomas Jost <schnouki@schnouki.net>

Most of the time, every entry in the list of identities has the same user name
part. It can then be filled in automatically, and the user can only be prompted
for the email address, which makes the interface much cleaner.
---
 emacs/notmuch-mua.el |   33 +++++++++++++++++++++++----------
 1 files changed, 23 insertions(+), 10 deletions(-)

diff --git a/emacs/notmuch-mua.el b/emacs/notmuch-mua.el
index 556d2bf..274c5da 100644
--- a/emacs/notmuch-mua.el
+++ b/emacs/notmuch-mua.el
@@ -162,20 +162,33 @@ the From: header is already filled in by notmuch."
   :group 'notmuch
   :type 'boolean)
 
-(defun notmuch-mua-sender-collection ()
-  (if notmuch-identities
-      notmuch-identities
-    (mapcar (lambda (address)
-	      (concat (notmuch-user-name) " <" address ">"))
-	    (cons (notmuch-user-primary-email) (notmuch-user-other-email)))))
-
 (defvar notmuch-mua-sender-history nil)
 
 (defun notmuch-mua-prompt-for-sender ()
   (interactive)
-  (let ((collection (notmuch-mua-sender-collection)))
-    (ido-completing-read "Send mail From: " collection
-			 nil 'confirm nil 'notmuch-mua-sender-history (car collection))))
+  (let (name addresses one-name-only)
+    ;; If notmuch-identities is non-nil, check if there is a fixed user name.
+    (if notmuch-identities
+	(let ((components (mapcar 'mail-extract-address-components notmuch-identities)))
+	  (setq name          (caar components)
+		addresses     (mapcar 'cadr components)
+		one-name-only (eval
+			       (cons 'and
+				     (mapcar (lambda (identity)
+					       (string-equal name (car identity)))
+					     components)))))
+      ;; If notmuch-identities is nil, use values from the notmuch configuration file.
+      (setq name          (notmuch-user-name)
+	    addresses     (cons (notmuch-user-primary-email) (notmuch-user-other-email))
+	    one-name-only t))
+    ;; Now prompt the user, either for an email address only or for a full identity.
+    (if one-name-only
+	(let ((address
+	       (ido-completing-read (concat "Sender address for " name ": ") addresses
+				    nil nil nil 'notmuch-mua-sender-history (car addresses))))
+	  (concat name " <" address ">"))
+      (ido-completing-read "Send mail From: " notmuch-identities
+			   nil nil nil 'notmuch-mua-sender-history (car notmuch-identities)))))
 
 (defun notmuch-mua-new-mail (&optional prompt-for-sender)
   "Invoke the notmuch mail composition window.
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH 22/25] test: fix test_expect_equal_file test to copy instead of mv test files
  2011-05-28 21:51                                         ` [PATCH 21/25] emacs: Cleaner interface when prompting for sender address Jameson Graef Rollins
@ 2011-05-28 21:51                                           ` Jameson Graef Rollins
  2011-05-28 21:51                                             ` [PATCH 23/25] test: update emacs test to use test_expect_equal_file Jameson Graef Rollins
  0 siblings, 1 reply; 62+ messages in thread
From: Jameson Graef Rollins @ 2011-05-28 21:51 UTC (permalink / raw)
  To: Notmuch Mail

This is a pretty important fix to this test, so that it can be used to
test against existing files, without deleting them in the case of test
failure.
---
 test/test-lib.sh |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/test/test-lib.sh b/test/test-lib.sh
index 6a8cb98..a59d1c1 100755
--- a/test/test-lib.sh
+++ b/test/test-lib.sh
@@ -477,8 +477,8 @@ test_expect_equal_file ()
 			test_ok_ "$test_subtest_name"
 		else
 			testname=$this_test.$test_count
-			mv "$output" $testname.output
-			mv "$expected" $testname.expected
+			cp "$output" $testname.output
+			cp "$expected" $testname.expected
 			test_failure_ "$test_subtest_name" "$(diff -u $testname.expected $testname.output)"
 		fi
     fi
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH 23/25] test: update emacs test to use test_expect_equal_file
  2011-05-28 21:51                                           ` [PATCH 22/25] test: fix test_expect_equal_file test to copy instead of mv test files Jameson Graef Rollins
@ 2011-05-28 21:51                                             ` Jameson Graef Rollins
  2011-05-28 21:51                                               ` [PATCH 24/25] test: modify multipart " Jameson Graef Rollins
  0 siblings, 1 reply; 62+ messages in thread
From: Jameson Graef Rollins @ 2011-05-28 21:51 UTC (permalink / raw)
  To: Notmuch Mail

This is a much cleaner way to do the emacs tests, since we're actually
comparing output against existing files with expected output.  We also
won't miss any trailing newlines this way.

And speaking of which, one of the expected output files was actually
missing a trailing blank line that was actually in one of the original
messages, so this was fixed.
---
 test/emacs                                         |   80 +++++++++----------
 .../notmuch-show-thread-maildir-storage            |    1 +
 2 files changed, 39 insertions(+), 42 deletions(-)

diff --git a/test/emacs b/test/emacs
index 042f1cb..f14249e 100755
--- a/test/emacs
+++ b/test/emacs
@@ -7,39 +7,33 @@ EXPECTED=../emacs.expected-output
 add_email_corpus
 
 test_begin_subtest "Basic notmuch-hello view in emacs"
-output=$(test_emacs '(notmuch-hello) (princ (buffer-string))')
-expected=$(cat $EXPECTED/notmuch-hello)
-test_expect_equal "$output" "$expected"
+test_emacs '(notmuch-hello) (princ (buffer-string))' >OUTPUT
+test_expect_equal_file OUTPUT $EXPECTED/notmuch-hello
 
 test_begin_subtest "Saved search with 0 results"
-output=$(test_emacs '(setq notmuch-show-empty-saved-searches t) (setq notmuch-saved-searches '\''(("inbox" . "tag:inbox") ("unread" . "tag:unread") ("empty" . "tag:doesnotexist"))) (notmuch-hello) (princ (buffer-string))')
-expected=$(cat $EXPECTED/notmuch-hello-with-empty)
-test_expect_equal "$output" "$expected"
+test_emacs '(setq notmuch-show-empty-saved-searches t) (setq notmuch-saved-searches '\''(("inbox" . "tag:inbox") ("unread" . "tag:unread") ("empty" . "tag:doesnotexist"))) (notmuch-hello) (princ (buffer-string))' >OUTPUT
+test_expect_equal_file OUTPUT $EXPECTED/notmuch-hello-with-empty
 
 test_begin_subtest "No saved searches displayed (all with 0 results)"
-output=$(test_emacs '(setq notmuch-saved-searches '\''(("empty" . "tag:doesnotexist"))) (notmuch-hello) (princ (buffer-string))')
-expected=$(cat $EXPECTED/notmuch-hello-no-saved-searches)
-test_expect_equal "$output" "$expected"
+test_emacs '(setq notmuch-saved-searches '\''(("empty" . "tag:doesnotexist"))) (notmuch-hello) (princ (buffer-string))' >OUTPUT
+test_expect_equal_file OUTPUT $EXPECTED/notmuch-hello-no-saved-searches
 
 test_begin_subtest "Basic notmuch-search view in emacs"
-output=$(test_emacs '(notmuch-search "tag:inbox") (notmuch-test-wait) (princ (buffer-string))')
-expected=$(cat $EXPECTED/notmuch-search-tag-inbox)
-test_expect_equal "$output" "$expected"
+test_emacs '(notmuch-search "tag:inbox") (notmuch-test-wait) (princ (buffer-string))' >OUTPUT
+test_expect_equal_file OUTPUT $EXPECTED/notmuch-search-tag-inbox
 
 test_begin_subtest "Navigation of notmuch-hello to search results"
-output=$(test_emacs '(notmuch-hello) (goto-char (point-min)) (re-search-forward "inbox") (widget-button-press (point)) (notmuch-test-wait) (princ (buffer-string))')
-expected=$(cat $EXPECTED/notmuch-hello-view-inbox)
-test_expect_equal "$output" "$expected"
+test_emacs '(notmuch-hello) (goto-char (point-min)) (re-search-forward "inbox") (widget-button-press (point)) (notmuch-test-wait) (princ (buffer-string))' >OUTPUT
+test_expect_equal_file OUTPUT $EXPECTED/notmuch-hello-view-inbox
 
 test_begin_subtest "Basic notmuch-show view in emacs"
 maildir_storage_thread=$(notmuch search --output=threads id:20091117190054.GU3165@dottiness.seas.harvard.edu)
-output=$(test_emacs "(notmuch-show \"$maildir_storage_thread\") (princ (buffer-string))")
-expected=$(cat $EXPECTED/notmuch-show-thread-maildir-storage)
-test_expect_equal "$output" "$expected"
+test_emacs "(notmuch-show \"$maildir_storage_thread\") (princ (buffer-string))" >OUTPUT
+test_expect_equal_file OUTPUT $EXPECTED/notmuch-show-thread-maildir-storage
 
 test_begin_subtest "Navigation of notmuch-search to thread view"
-output=$(test_emacs '(notmuch-search "tag:inbox") (notmuch-test-wait) (goto-char (point-min)) (re-search-forward "Working with Maildir") (notmuch-search-show-thread) (notmuch-test-wait) (princ (buffer-string))')
-test_expect_equal "$output" "$expected"
+test_emacs '(notmuch-search "tag:inbox") (notmuch-test-wait) (goto-char (point-min)) (re-search-forward "Working with Maildir") (notmuch-search-show-thread) (notmuch-test-wait) (princ (buffer-string))' >OUTPUT
+test_expect_equal_file OUTPUT $EXPECTED/notmuch-show-thread-maildir-storage
 
 test_begin_subtest "Add tag from search view"
 os_x_darwin_thread=$(notmuch search --output=threads id:ddd65cda0911171950o4eea4389v86de9525e46052d3@mail.gmail.com)
@@ -80,10 +74,11 @@ smtp_dummy_pid=$!
 test_emacs "(setq message-send-mail-function 'message-smtpmail-send-it) (setq smtpmail-smtp-server \"localhost\") (setq smtpmail-smtp-service \"25025\") (notmuch-hello) (notmuch-mua-mail) (message-goto-to) (insert \"user@example.com\nDate: Fri, 29 Mar 1974 10:00:00 -0000\") (message-goto-subject) (insert \"Testing message sent via SMTP\") (message-goto-body) (insert \"This is a test that messages are sent via SMTP\") (message-send-and-exit)" >/dev/null 2>&1
 wait ${smtp_dummy_pid}
 
-output=$(sed \
+sed \
     -e s',^User-Agent: Notmuch/.* Emacs/.*,User-Agent: Notmuch/XXX Emacs/XXX,' \
-    -e s',^Message-ID: <.*>$,Message-ID: <XXX>,' < sent_message)
-test_expect_equal "$output" "From: Notmuch Test Suite <test_suite@notmuchmail.org>
+    -e s',^Message-ID: <.*>$,Message-ID: <XXX>,' < sent_message >OUTPUT
+cat <<EOF >EXPECTED
+From: Notmuch Test Suite <test_suite@notmuchmail.org>
 To: user@example.com
 Subject: Testing message sent via SMTP
 Date: Fri, 29 Mar 1974 10:00:00 -0000
@@ -92,7 +87,9 @@ Message-ID: <XXX>
 MIME-Version: 1.0
 Content-Type: text/plain; charset=us-ascii
 
-This is a test that messages are sent via SMTP"
+This is a test that messages are sent via SMTP
+EOF
+test_expect_equal_file OUTPUT EXPECTED
 
 test_begin_subtest "Verify that sent messages are saved/searchable (via FCC)"
 notmuch new > /dev/null
@@ -102,37 +99,36 @@ test_expect_equal "$output" "thread:XXX   1974-03-29 [1/1] Notmuch Test Suite; T
 test_begin_subtest "Reply within emacs"
 # We sed away everything before the ^From in the output to avoid getting
 # confused by messages such as "Parsing /home/cworth/.mailrc... done"
-output=$(test_emacs '(notmuch-search "subject:\"testing message sent via SMTP\"") (notmuch-test-wait) (notmuch-search-reply-to-thread) (princ (buffer-string))' | sed -ne '/^From/,$ p' | sed -e 's/^In-Reply-To: <.*>$/In-Reply-To: <XXX>/')
-test_expect_equal "$output" "From: Notmuch Test Suite <test_suite@notmuchmail.org>
+test_emacs '(notmuch-search "subject:\"testing message sent via SMTP\"") (notmuch-test-wait) (notmuch-search-reply-to-thread) (princ (buffer-string))' | sed -ne '/^From/,$ p' | sed -e 's/^In-Reply-To: <.*>$/In-Reply-To: <XXX>/' >OUTPUT
+cat <<EOF >EXPECTED
+From: Notmuch Test Suite <test_suite@notmuchmail.org>
 To: user@example.com
 Subject: Re: Testing message sent via SMTP
 In-Reply-To: <XXX>
 Fcc: $(pwd)/mail/sent
 --text follows this line--
 On Fri, 29 Mar 1974 10:00:00 -0000, Notmuch Test Suite <test_suite@notmuchmail.org> wrote:
-> This is a test that messages are sent via SMTP"
+> This is a test that messages are sent via SMTP
+EOF
+test_expect_equal_file OUTPUT EXPECTED
 
 test_begin_subtest "Save attachment from within emacs"
 echo "./attachment" | test_emacs '(notmuch-show "id:cf0c4d610911171136h1713aa59w9cf9aa31f052ad0a@mail.gmail.com") (notmuch-show-save-attachments)' > /dev/null 2>&1
-output=$(cat attachment)
-expected=$(cat $EXPECTED/attachment)
-test_expect_equal "$output" "$expected"
+test_expect_equal_file attachment $EXPECTED/attachment
 
 test_begin_subtest "View raw message within emacs"
-expected=$(cat $EXPECTED/raw-message-cf0c4d-52ad0a)
-first_line=$(echo "$expected" | head -n1)
-output=$(test_emacs '(notmuch-show "id:cf0c4d610911171136h1713aa59w9cf9aa31f052ad0a@mail.gmail.com") (notmuch-show-view-raw-message) (princ (buffer-string))' | sed -ne "/$first_line/,\$ p")
-test_expect_equal "$output" "$expected"
+first_line=$(head -n1 $EXPECTED/raw-message-cf0c4d-52ad0a)
+test_emacs '(notmuch-show "id:cf0c4d610911171136h1713aa59w9cf9aa31f052ad0a@mail.gmail.com") (notmuch-show-view-raw-message) (princ (buffer-string))' | sed -ne "/$first_line/,\$ p" >OUTPUT
+test_expect_equal_file OUTPUT $EXPECTED/raw-message-cf0c4d-52ad0a
 
 test_begin_subtest "Hiding/showing signature in notmuch-show view"
 maildir_storage_thread=$(notmuch search --output=threads id:20091117190054.GU3165@dottiness.seas.harvard.edu)
-output=$(test_emacs "(notmuch-show \"$maildir_storage_thread\")
-		     (search-forward \"Click/Enter to show.\")
-		     (button-activate (button-at (point)))
-		     (search-backward \"Click/Enter to hide.\")
-		     (button-activate (button-at (point)))
-		     (princ (buffer-string))")
-expected=$(cat $EXPECTED/notmuch-show-thread-maildir-storage)
-test_expect_equal "$output" "$expected"
+test_emacs "(notmuch-show \"$maildir_storage_thread\")
+	    (search-forward \"Click/Enter to show.\")
+	    (button-activate (button-at (point)))
+	    (search-backward \"Click/Enter to hide.\")
+	    (button-activate (button-at (point)))
+	    (princ (buffer-string))" >OUTPUT
+test_expect_equal_file OUTPUT $EXPECTED/notmuch-show-thread-maildir-storage
 
 test_done
diff --git a/test/emacs.expected-output/notmuch-show-thread-maildir-storage b/test/emacs.expected-output/notmuch-show-thread-maildir-storage
index 241b5b7..8ba64b2 100644
--- a/test/emacs.expected-output/notmuch-show-thread-maildir-storage
+++ b/test/emacs.expected-output/notmuch-show-thread-maildir-storage
@@ -212,3 +212,4 @@ http://notmuchmail.org/mailman/listinfo/notmuch
  Happy hacking,
 
  -Carl
+
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH 24/25] test: modify multipart test to use test_expect_equal_file
  2011-05-28 21:51                                             ` [PATCH 23/25] test: update emacs test to use test_expect_equal_file Jameson Graef Rollins
@ 2011-05-28 21:51                                               ` Jameson Graef Rollins
  2011-05-28 21:52                                                 ` [PATCH 25/25] Fix stdout stream grabbing in format_part_content_text Jameson Graef Rollins
  0 siblings, 1 reply; 62+ messages in thread
From: Jameson Graef Rollins @ 2011-05-28 21:51 UTC (permalink / raw)
  To: Notmuch Mail

Again, this is a much cleaner and more thorough test, and in fact
exposes a bug in the format=text output, that will be fixed the next
commit.  Because of this, some of the multipart tests currently fail.
---
 test/multipart |  189 ++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 121 insertions(+), 68 deletions(-)

diff --git a/test/multipart b/test/multipart
index 62efd84..6d194a5 100755
--- a/test/multipart
+++ b/test/multipart
@@ -59,9 +59,9 @@ EOF
 notmuch new > /dev/null
 
 test_begin_subtest "--format=text --part=0, full message"
-output=$(notmuch show --format=text --part=0 'id:87liy5ap00.fsf@yoom.home.cworth.org')
-test_expect_equal "$output" \
-"\fmessage{ id:87liy5ap00.fsf@yoom.home.cworth.org depth:0 match:1 filename:${MAIL_DIR}/multipart
+notmuch show --format=text --part=0 'id:87liy5ap00.fsf@yoom.home.cworth.org' >OUTPUT
+cat <<EOF >EXPECTED
+\fmessage{ id:87liy5ap00.fsf@yoom.home.cworth.org depth:0 match:1 filename:${MAIL_DIR}/multipart
 \fheader{
 Carl Worth <cworth@cworth.org> (2001-01-05) (attachment inbox signed unread)
 Subject: Multipart message
@@ -92,12 +92,23 @@ Non-text part: application/pgp-signature
 \fpart}
 \fpart}
 \fbody}
-\fmessage}"
+\fmessage}
+EOF
+test_expect_equal_file OUTPUT EXPECTED
 
-test_begin_subtest "--format=text --part=1, message body"
-output=$(notmuch show --format=text --part=1 'id:87liy5ap00.fsf@yoom.home.cworth.org')
-test_expect_equal "$output" \
-"\fpart{ ID: 1, Content-type: multipart/signed
+test_begin_subtest "--format=text --part=0, full message"
+notmuch show --format=text --part=0 'id:87liy5ap00.fsf@yoom.home.cworth.org' >OUTPUT
+cat <<EOF >EXPECTED
+\fmessage{ id:87liy5ap00.fsf@yoom.home.cworth.org depth:0 match:1 filename:${MAIL_DIR}/multipart
+\fheader{
+Carl Worth <cworth@cworth.org> (2001-01-05) (attachment inbox signed unread)
+Subject: Multipart message
+From: Carl Worth <cworth@cworth.org>
+To: cworth@cworth.org
+Date: Tue, 05 Jan 2001 15:43:57 -0000
+\fheader}
+\fbody{
+\fpart{ ID: 1, Content-type: multipart/signed
 \fpart{ ID: 2, Content-type: multipart/mixed
 \fpart{ ID: 3, Content-type: message/rfc822
 \fpart{ ID: 4, Content-type: text/html
@@ -117,12 +128,16 @@ And this message is signed.
 \fpart{ ID: 7, Content-type: application/pgp-signature
 Non-text part: application/pgp-signature
 \fpart}
-\fpart}"
+\fpart}
+\fbody}
+\fmessage}
+EOF
+test_expect_equal_file OUTPUT EXPECTED
 
 test_begin_subtest "--format=text --part=2, multipart/mixed"
-output=$(notmuch show --format=text --part=2 'id:87liy5ap00.fsf@yoom.home.cworth.org')
-test_expect_equal "$output" \
-"\fpart{ ID: 2, Content-type: multipart/mixed
+notmuch show --format=text --part=2 'id:87liy5ap00.fsf@yoom.home.cworth.org' >OUTPUT
+cat <<EOF >EXPECTED
+\fpart{ ID: 2, Content-type: multipart/mixed
 \fpart{ ID: 3, Content-type: message/rfc822
 \fpart{ ID: 4, Content-type: text/html
 Non-text part: text/html
@@ -137,47 +152,59 @@ And this message is signed.
 
 -Carl
 \fpart}
-\fpart}"
+\fpart}
+EOF
+test_expect_equal_file OUTPUT EXPECTED
 
 test_begin_subtest "--format=text --part=3, rfc822 multipart"
-output=$(notmuch show --format=text --part=3 'id:87liy5ap00.fsf@yoom.home.cworth.org')
-test_expect_equal "$output" \
-"\fpart{ ID: 3, Content-type: message/rfc822
+notmuch show --format=text --part=3 'id:87liy5ap00.fsf@yoom.home.cworth.org' >OUTPUT
+cat <<EOF >EXPECTED
+\fpart{ ID: 3, Content-type: message/rfc822
 \fpart{ ID: 4, Content-type: text/html
 Non-text part: text/html
 \fpart}
-\fpart}"
+\fpart}
+EOF
+test_expect_equal_file OUTPUT EXPECTED
 
 test_begin_subtest "--format=text --part=4, html part"
-output=$(notmuch show --format=text --part=4 'id:87liy5ap00.fsf@yoom.home.cworth.org')
-test_expect_equal "$output" \
-"\fpart{ ID: 4, Content-type: text/html
+notmuch show --format=text --part=4 'id:87liy5ap00.fsf@yoom.home.cworth.org' >OUTPUT
+cat <<EOF >EXPECTED
+\fpart{ ID: 4, Content-type: text/html
 Non-text part: text/html
-\fpart}"
+\fpart}
+EOF
+test_expect_equal_file OUTPUT EXPECTED
 
 test_begin_subtest "--format=text --part=5, inline attachement"
-output=$(notmuch show --format=text --part=5 'id:87liy5ap00.fsf@yoom.home.cworth.org')
-test_expect_equal "$output" \
-"\fattachment{ ID: 5, Content-type: text/plain
+notmuch show --format=text --part=5 'id:87liy5ap00.fsf@yoom.home.cworth.org' >OUTPUT
+cat <<EOF >EXPECTED
+\fattachment{ ID: 5, Content-type: text/plain
 Attachment: attachment (text/plain)
 This is a text attachment.
-\fattachment}"
+\fattachment}
+EOF
+test_expect_equal_file OUTPUT EXPECTED
 
 test_begin_subtest "--format=text --part=6, plain text part"
-output=$(notmuch show --format=text --part=6 'id:87liy5ap00.fsf@yoom.home.cworth.org')
-test_expect_equal "$output" \
-"\fpart{ ID: 6, Content-type: text/plain
+notmuch show --format=text --part=6 'id:87liy5ap00.fsf@yoom.home.cworth.org' >OUTPUT
+cat <<EOF >EXPECTED
+\fpart{ ID: 6, Content-type: text/plain
 And this message is signed.
 
 -Carl
-\fpart}"
+\fpart}
+EOF
+test_expect_equal_file OUTPUT EXPECTED
 
 test_begin_subtest "--format=text --part=7, pgp signature (unverified)"
-output=$(notmuch show --format=text --part=7 'id:87liy5ap00.fsf@yoom.home.cworth.org')
-test_expect_equal "$output" \
-"\fpart{ ID: 7, Content-type: application/pgp-signature
+notmuch show --format=text --part=7 'id:87liy5ap00.fsf@yoom.home.cworth.org' >OUTPUT
+cat <<EOF >EXPECTED
+\fpart{ ID: 7, Content-type: application/pgp-signature
 Non-text part: application/pgp-signature
-\fpart}"
+\fpart}
+EOF
+test_expect_equal_file OUTPUT EXPECTED
 
 test_expect_success \
     "--format=text --part=8, no part, expect error" \
@@ -197,11 +224,13 @@ test_begin_subtest "--format=json --part=2, multipart/mixed"
 output=$(notmuch show --format=json --part=2 'id:87liy5ap00.fsf@yoom.home.cworth.org')
 test_expect_equal "$output" \
 '{"id": 2, "content-type": "multipart/mixed", "content": [{"id": 3, "content-type": "message/rfc822", "content": [{"id": 4, "content-type": "text/html"}]}, {"id": 5, "content-type": "text/plain", "filename": "attachment", "content": "This is a text attachment.\n"}, {"id": 6, "content-type": "text/plain", "content": "And this message is signed.\n\n-Carl\n"}]}'
+test_expect_equal_file OUTPUT EXPECTED
 
 test_begin_subtest "--format=json --part=3, rfc822 multipart"
 output=$(notmuch show --format=json --part=3 'id:87liy5ap00.fsf@yoom.home.cworth.org')
 test_expect_equal "$output" \
 '{"id": 3, "content-type": "message/rfc822", "content": [{"id": 4, "content-type": "text/html"}]}'
+test_expect_equal_file OUTPUT EXPECTED
 
 test_begin_subtest "--format=json --part=4, html part"
 output=$(notmuch show --format=json --part=4 'id:87liy5ap00.fsf@yoom.home.cworth.org')
@@ -228,17 +257,19 @@ test_expect_success \
     "notmuch show --format=json --part=8 'id:87liy5ap00.fsf@yoom.home.cworth.org'"
 
 test_begin_subtest "--format=raw"
-output=$(notmuch show --format=raw 'id:87liy5ap00.fsf@yoom.home.cworth.org')
-test_expect_equal "$output" "$(cat "${MAIL_DIR}"/multipart)"
+notmuch show --format=raw 'id:87liy5ap00.fsf@yoom.home.cworth.org' >OUTPUT
+test_expect_equal_file OUTPUT "${MAIL_DIR}"/multipart
 
 test_begin_subtest "--format=raw --part=0, full message"
-output=$(notmuch show --format=raw --part=0 'id:87liy5ap00.fsf@yoom.home.cworth.org')
-test_expect_equal "$output" "$(cat "${MAIL_DIR}"/multipart)"
+notmuch show --format=raw --part=0 'id:87liy5ap00.fsf@yoom.home.cworth.org' >OUTPUT
+test_expect_equal_file OUTPUT "${MAIL_DIR}"/multipart
 
 test_begin_subtest "--format=raw --part=1, message body"
-output=$(notmuch show --format=raw --part=1 'id:87liy5ap00.fsf@yoom.home.cworth.org')
-test_expect_equal "$output" \
-'<p>This is an imbeded message, with a single html part.</p>
+notmuch show --format=raw --part=1 'id:87liy5ap00.fsf@yoom.home.cworth.org' >OUTPUT
+# output should *not* include newline
+echo >>OUTPUT
+cat <<EOF >EXPECTED
+<p>This is an imbeded message, with a single html part.</p>
 This is a text attachment.
 And this message is signed.
 
@@ -249,65 +280,86 @@ Version: GnuPG v1.4.11 (GNU/Linux)
 iEYEARECAAYFAk3SA/gACgkQ6JDdNq8qSWj0sACghqVJEQJUs3yV8zbTzhgnSIcD
 W6cAmQE4dcYrx/LPLtYLZm1jsGauE5hE
 =zkga
------END PGP SIGNATURE-----'
+-----END PGP SIGNATURE-----
+EOF
+test_expect_equal_file OUTPUT EXPECTED
 
 test_begin_subtest "--format=raw --part=2, multipart/mixed"
-output=$(notmuch show --format=raw --part=2 'id:87liy5ap00.fsf@yoom.home.cworth.org')
-test_expect_equal "$output" \
-'<p>This is an imbeded message, with a single html part.</p>
+notmuch show --format=raw --part=2 'id:87liy5ap00.fsf@yoom.home.cworth.org' >OUTPUT
+cat <<EOF >EXPECTED
+<p>This is an imbeded message, with a single html part.</p>
 This is a text attachment.
 And this message is signed.
 
--Carl'
+-Carl
+EOF
+test_expect_equal_file OUTPUT EXPECTED
 
 test_begin_subtest "--format=raw --part=3, rfc822 multipart"
-output=$(notmuch show --format=raw --part=3 'id:87liy5ap00.fsf@yoom.home.cworth.org')
-test_expect_equal "$output" \
-'<p>This is an imbeded message, with a single html part.</p>'
+notmuch show --format=raw --part=3 'id:87liy5ap00.fsf@yoom.home.cworth.org' >OUTPUT
+cat <<EOF >EXPECTED
+<p>This is an imbeded message, with a single html part.</p>
+EOF
+test_expect_equal_file OUTPUT EXPECTED
 
 test_begin_subtest "--format=raw --part=4, html part"
-output=$(notmuch show --format=raw --part=4 'id:87liy5ap00.fsf@yoom.home.cworth.org')
-test_expect_equal "$output" \
-'<p>This is an imbeded message, with a single html part.</p>'
+notmuch show --format=raw --part=4 'id:87liy5ap00.fsf@yoom.home.cworth.org' >OUTPUT
+cat <<EOF >EXPECTED
+<p>This is an imbeded message, with a single html part.</p>
+EOF
+test_expect_equal_file OUTPUT EXPECTED
 
 test_begin_subtest "--format=raw --part=5, inline attachment"
-output=$(notmuch show --format=raw --part=5 'id:87liy5ap00.fsf@yoom.home.cworth.org')
-test_expect_equal "$output" \
-'This is a text attachment.'
+notmuch show --format=raw --part=5 'id:87liy5ap00.fsf@yoom.home.cworth.org' >OUTPUT
+cat <<EOF >EXPECTED
+This is a text attachment.
+EOF
+test_expect_equal_file OUTPUT EXPECTED
 
 test_begin_subtest "--format=raw --part=6, plain text part"
-output=$(notmuch show --format=raw --part=6 'id:87liy5ap00.fsf@yoom.home.cworth.org')
-test_expect_equal "$output" \
-'And this message is signed.
+notmuch show --format=raw --part=6 'id:87liy5ap00.fsf@yoom.home.cworth.org' >OUTPUT
+cat <<EOF >EXPECTED
+And this message is signed.
 
--Carl'
+-Carl
+EOF
+test_expect_equal_file OUTPUT EXPECTED
 
 test_begin_subtest "--format=raw --part=7, pgp signature (unverified)"
-output=$(notmuch show --format=raw --part=7 'id:87liy5ap00.fsf@yoom.home.cworth.org')
-test_expect_equal "$output" \
-'-----BEGIN PGP SIGNATURE-----
+notmuch show --format=raw --part=7 'id:87liy5ap00.fsf@yoom.home.cworth.org' >OUTPUT
+# output should *not* include newline
+echo >>OUTPUT
+cat <<EOF >EXPECTED
+-----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.11 (GNU/Linux)
 
 iEYEARECAAYFAk3SA/gACgkQ6JDdNq8qSWj0sACghqVJEQJUs3yV8zbTzhgnSIcD
 W6cAmQE4dcYrx/LPLtYLZm1jsGauE5hE
 =zkga
------END PGP SIGNATURE-----'
+-----END PGP SIGNATURE-----
+EOF
+test_expect_equal_file OUTPUT EXPECTED
 
 test_expect_success \
     "--format=raw --part=8, no part, expect error" \
     "notmuch show --format=raw --part=8 'id:87liy5ap00.fsf@yoom.home.cworth.org'"
 
 test_begin_subtest "--format=mbox"
-output=$(notmuch show --format=mbox 'id:87liy5ap00.fsf@yoom.home.cworth.org')
-test_expect_equal "$output" "$(printf "From cworth@cworth.org Fri Jan  5 15:43:57 2001\n"; cat "${MAIL_DIR}"/multipart)"
+notmuch show --format=mbox 'id:87liy5ap00.fsf@yoom.home.cworth.org' >OUTPUT
+printf "From cworth@cworth.org Fri Jan  5 15:43:57 2001\n" >EXPECTED
+cat "${MAIL_DIR}"/multipart >>EXPECTED
+# mbox output is expected to include a blank line
+echo >>EXPECTED
+test_expect_equal_file OUTPUT EXPECTED
 
 test_expect_success \
     "--format=mbox --part=1, incompatible, expect error" \
     "! notmuch show --format=mbox --part=1 'id:87liy5ap00.fsf@yoom.home.cworth.org'"
 
 test_begin_subtest "'notmuch reply' to a multipart message"
-output=$(notmuch reply 'id:87liy5ap00.fsf@yoom.home.cworth.org')
-test_expect_equal "$output" "From: Notmuch Test Suite <test_suite@notmuchmail.org>
+notmuch reply 'id:87liy5ap00.fsf@yoom.home.cworth.org' >OUTPUT
+cat <<EOF >EXPECTED
+From: Notmuch Test Suite <test_suite@notmuchmail.org>
 Subject: Re: Multipart message
 To: Carl Worth <cworth@cworth.org>, cworth@cworth.org
 In-Reply-To: <87liy5ap00.fsf@yoom.home.cworth.org>
@@ -322,7 +374,8 @@ Non-text part: text/html
 > And this message is signed.
 > 
 > -Carl
-Non-text part: application/pgp-signature"
-
+Non-text part: application/pgp-signature
+EOF
+test_expect_equal_file OUTPUT EXPECTED
 
 test_done
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* [PATCH 25/25] Fix stdout stream grabbing in format_part_content_text
  2011-05-28 21:51                                               ` [PATCH 24/25] test: modify multipart " Jameson Graef Rollins
@ 2011-05-28 21:52                                                 ` Jameson Graef Rollins
  2011-06-03 19:56                                                   ` Carl Worth
  0 siblings, 1 reply; 62+ messages in thread
From: Jameson Graef Rollins @ 2011-05-28 21:52 UTC (permalink / raw)
  To: Notmuch Mail

The declaration of the GMimeStream pointer to stdout in
format_part_content_text was somehow preventing subsequent printf
calls from outputting to stdout if the output was redirected to a
file.  Scoping the declaration to the actual use of the stream pointer
works around this problem.
---
 notmuch-show.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/notmuch-show.c b/notmuch-show.c
index e90f07e..61c6f49 100644
--- a/notmuch-show.c
+++ b/notmuch-show.c
@@ -447,7 +447,6 @@ format_part_content_text (GMimeObject *part)
 {
     GMimeContentDisposition *disposition = g_mime_object_get_content_disposition (part);
     GMimeContentType *content_type = g_mime_object_get_content_type (GMIME_OBJECT (part));
-    GMimeStream *stream_stdout = g_mime_stream_file_new (stdout);
 
     printf (", Content-type: %s\n", g_mime_content_type_to_string (content_type));
 
@@ -462,6 +461,7 @@ format_part_content_text (GMimeObject *part)
     if (g_mime_content_type_is_type (content_type, "text", "*") &&
 	!g_mime_content_type_is_type (content_type, "text", "html"))
     {
+	GMimeStream *stream_stdout = g_mime_stream_file_new (stdout);
 	g_mime_stream_file_set_owner (GMIME_STREAM_FILE (stream_stdout), FALSE);
 	show_part_content (part, stream_stdout);
 	g_object_unref(stream_stdout);
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* Re: release-candidate/0.6 redux
  2011-05-28 21:51 release-candidate/0.6 redux Jameson Graef Rollins
  2011-05-28 21:51 ` [PATCH 01/25] fix check for libdir in ldconfig paths Jameson Graef Rollins
@ 2011-05-28 21:58 ` Jameson Graef Rollins
  2011-05-29  2:49   ` Austin Clements
  2011-05-31 18:43   ` Jameson Graef Rollins
  1 sibling, 2 replies; 62+ messages in thread
From: Jameson Graef Rollins @ 2011-05-28 21:58 UTC (permalink / raw)
  To: Notmuch Mail

[-- Attachment #1: Type: text/plain, Size: 1075 bytes --]

On Sat, 28 May 2011 14:51:35 -0700, Jameson Graef Rollins <jrollins@finestructure.net> wrote:
> So what follows is a patch series for a bunch of miscellaneous patches
> that should be included in 0.6.  Most of them were originally part of
> the release-candiate/0.6 branch, and they are here rebased on top of
> notmuch/master at cb8418784c21155ffea79cce8409a7ea3c546937, which
> includes all the multipart and crypto rework.

I forgot to mention that the other two things that were in the original
release-candidate/0.6 that really need to be included before 0.6 is
released are

* Austin Clements's atomicity patches
* Felipe Contreras's vim patches

both of which have been sent to the list previously, although I believe
that Austin might have a couple extra patches in his atomic-new-v3
branch.

Austin: speaking of which, would you mind rebasing that patch series
against notmuch/master at cb8418784c21155ffea79cce8409a7ea3c546937 and
sending that to the list again?  That might help push Carl to merge that
stuff sooner.  I think the conflicts are very minor.

jamie.

[-- Attachment #2: Type: application/pgp-signature, Size: 835 bytes --]

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: release-candidate/0.6 redux
  2011-05-28 21:58 ` release-candidate/0.6 redux Jameson Graef Rollins
@ 2011-05-29  2:49   ` Austin Clements
  2011-05-31 18:43   ` Jameson Graef Rollins
  1 sibling, 0 replies; 62+ messages in thread
From: Austin Clements @ 2011-05-29  2:49 UTC (permalink / raw)
  To: Jameson Graef Rollins; +Cc: Notmuch Mail

On Sat, May 28, 2011 at 5:58 PM, Jameson Graef Rollins
<jrollins@finestructure.net> wrote:
> Austin: speaking of which, would you mind rebasing that patch series
> against notmuch/master at cb8418784c21155ffea79cce8409a7ea3c546937 and
> sending that to the list again?  That might help push Carl to merge that
> stuff sooner.  I think the conflicts are very minor.

Done.  The only conflicts were the usual suspects (lists in the test
suite).  I pulled in the GDB dependency in the test suite and the
corresponding tweaks to test-lib that were on the list previously
(id:"1305206080-17461-1-git-send-email-amdragon@mit.edu" and
id:"1305206110-17511-1-git-send-email-amdragon@mit.edu").  It's on
for-review/atomic-new-v4 at the usual,
  http://awakening.csail.mit.edu/git/notmuch.git

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: release-candidate/0.6 redux
  2011-05-28 21:58 ` release-candidate/0.6 redux Jameson Graef Rollins
  2011-05-29  2:49   ` Austin Clements
@ 2011-05-31 18:43   ` Jameson Graef Rollins
  2011-06-04  1:27     ` Carl Worth
  1 sibling, 1 reply; 62+ messages in thread
From: Jameson Graef Rollins @ 2011-05-31 18:43 UTC (permalink / raw)
  To: Notmuch Mail

[-- Attachment #1: Type: text/plain, Size: 772 bytes --]

Hi, folks.  I have pushed a new version of the release-candidate/0.6
branch to my repo [0].  It is all reworked on top of notmuch/master [1],
and includes:

* the miscellaneous fixes/improvements patch series starting at
  id:"1306619520-25730-2-git-send-email-jrollins@finestructure.net"
* the notmuch-show refresh patches
* Austin's atomicity patches
* Felipe's vim patches
* updates to the debian packaging

cworth: do you want to review this for the new release?  We're very close!
One last push and we can get this thing out.

bremner: do you want to reconcile this with what you've already pushed
to Debian experimental, and then push another version?

jamie.

[0] git://finestructure.net/notmuch [release-candidate/0.6]
[1] cb8418784c21155ffea79cce8409a7ea3c546937

[-- Attachment #2: Type: application/pgp-signature, Size: 835 bytes --]

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH 01/25] fix check for libdir in ldconfig paths
  2011-05-28 21:51 ` [PATCH 01/25] fix check for libdir in ldconfig paths Jameson Graef Rollins
  2011-05-28 21:51   ` [PATCH 02/25] add note about updating the debian symbols file to the RELEASE file Jameson Graef Rollins
@ 2011-06-01 23:22   ` Carl Worth
  2011-06-01 23:27     ` Jameson Graef Rollins
  1 sibling, 1 reply; 62+ messages in thread
From: Carl Worth @ 2011-06-01 23:22 UTC (permalink / raw)
  To: Jameson Graef Rollins, Notmuch Mail

[-- Attachment #1: Type: text/plain, Size: 2813 bytes --]

On Sat, 28 May 2011 14:51:36 -0700, Jameson Graef Rollins <jrollins@finestructure.net> wrote:
> The configure script tries to check that the libdir is included in the
> ldconfig paths, and then sets the RPATH compiler flag if it's not.
> This check was broken, and was always setting RPATH.  This fixes the
> path check.

Thanks for the patch. I was intrigued about what was actually broken
here, so tracked down the problem and fixed it with an alternate patch
(see below).

-Carl

commit 574f408816e636f677b14384c18cc2e388991411
Author: Carl Worth <cworth@cworth.org>
Date:   Wed Jun 1 13:02:58 2011 -0700

    configure: Fix detection of libdir in ldconfig configuration
    
    Ever since commit b4b5e9ce4dac62111ec11da6d22b7e618056801f the
    detection of libdir in the ldconfig configuration has been broken,
    resulting in RPATH being set when not needed and not wanted.
    
    The cause was a change from an IFS setting of:
    
    	IFS="$(printf '\n\t')"
    
    to a new setting of:
    
    	IFS="$(printf '\n')"
    
    That looks desirable since we want to split the output of ldconfig
    based on newlines, (and not split on any filename that might have an
    embedded tab in it). The subtle bug in the above is that the shell
    trims any trailing newlines when performing command substitution so
    the final statement above was equivalent to:
    
    	IFS=''
    
    which prevented any splitting of the ldconfig output at all.
    
    Fix this by avoiding command substitution and just using a literal
    newline in the source file for setting this variable.

diff --git a/configure b/configure
index bbf30cd..cf525c9 100755
--- a/configure
+++ b/configure
@@ -355,17 +355,30 @@ elif [ $uname = "Linux" ] ; then
     printf "Linux\n"
     platform=LINUX
     linker_resolves_library_dependencies=1
+
+    printf "Checking for $libdir_expanded in ldconfig... "
     ldconfig_paths=$(/sbin/ldconfig -N -X -v 2>/dev/null | sed -n -e 's,^\(/.*\):\( (.*)\)\?$,\1,p')
     # Separate ldconfig_paths only on newline (not on any potential
-    # embedded space characters in any filenames).
+    # embedded space characters in any filenames). Note, we use a
+    # literal newline in the source here rather than something like:
+    #
+    #	IFS=$(printf '\n')
+    #
+    # because the shell's command substitution deletes any trailing newlines.
     OLD_IFS=$IFS
-    IFS="$(printf '\n')"
+    IFS="
+"
     for path in $ldconfig_paths; do
 	if [ "$path" = "$libdir_expanded" ]; then
 	    libdir_in_ldconfig=1
 	fi
     done
     IFS=$OLD_IFS
+    if [ "$libdir_in_ldconfig" = '0' ]; then
+	printf "No (will set RPATH)\n"
+    else
+	printf "Yes\n"
+    fi
 else
     printf "Unknown.\n"
     cat <<EOF

[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* Re: [PATCH 01/25] fix check for libdir in ldconfig paths
  2011-06-01 23:22   ` [PATCH 01/25] fix check for libdir in ldconfig paths Carl Worth
@ 2011-06-01 23:27     ` Jameson Graef Rollins
  0 siblings, 0 replies; 62+ messages in thread
From: Jameson Graef Rollins @ 2011-06-01 23:27 UTC (permalink / raw)
  To: Carl Worth, Notmuch Mail

[-- Attachment #1: Type: text/plain, Size: 294 bytes --]

On Wed, 01 Jun 2011 16:22:19 -0700, Carl Worth <cworth@cworth.org> wrote:
> Thanks for the patch. I was intrigued about what was actually broken
> here, so tracked down the problem and fixed it with an alternate patch
> (see below).

Cool.  Yeah, that issue took a while to track down.

jamie.

[-- Attachment #2: Type: application/pgp-signature, Size: 835 bytes --]

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH 07/25] test: remove json test for search null result, since it's being more properly tested in search-output
  2011-05-28 21:51             ` [PATCH 07/25] test: remove json test for search null result, since it's being more properly tested in search-output Jameson Graef Rollins
  2011-05-28 21:51               ` [PATCH 08/25] create and set temporary home directory Jameson Graef Rollins
@ 2011-06-01 23:41               ` Carl Worth
  1 sibling, 0 replies; 62+ messages in thread
From: Carl Worth @ 2011-06-01 23:41 UTC (permalink / raw)
  To: Jameson Graef Rollins, Notmuch Mail

[-- Attachment #1: Type: text/plain, Size: 851 bytes --]

On Sat, 28 May 2011 14:51:42 -0700, Jameson Graef Rollins <jrollins@finestructure.net> wrote:
> The test in json was inferior to the one in search-output, since it
> wasn't properly testing for the presence of a trailing newline.

Hi Jamie,

I've pushed the series up to this point now, (along with the vim
improvements that weren't in your original mailing of the series).

I really appreciate the missing-newline bug-fix along with all the
improved testing for that. Thanks! I re-ordered that portion of the
patch series a tiny bit to put the bug fix immediately after the commit
that makes the tests start failing. I also reworded a few commit
messages slightly.

But I didn't make any code changes so it's trivial enough for me to keep
using "git rebase" to keep your series on top of my modified master.

I'll keep posting as I'm pushing.

-Carl

[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH 14/25] Fix old style notmuch-fcc-dirs configuration check.
  2011-05-28 21:51                           ` [PATCH 14/25] Fix old style notmuch-fcc-dirs configuration check Jameson Graef Rollins
  2011-05-28 21:51                             ` [PATCH 15/25] Use message-field-value instead of message-fetch-field in FCC header setup Jameson Graef Rollins
@ 2011-06-02  5:10                             ` Carl Worth
  2011-06-02  6:49                               ` Dmitry Kurochkin
  1 sibling, 1 reply; 62+ messages in thread
From: Carl Worth @ 2011-06-02  5:10 UTC (permalink / raw)
  To: Jameson Graef Rollins, Notmuch Mail

[-- Attachment #1: Type: text/plain, Size: 1633 bytes --]

On Sat, 28 May 2011 14:51:49 -0700, Jameson Graef Rollins <jrollins@finestructure.net> wrote:
Hi Jamie,

I've pushed the next few patches up to this point, (with only one
functional change---I fixed a new test case to correctly use
notmuch_search_sanitize to avoid spurious failures unmatching thread ID
values).

This patch, however, isn't ready. The big problem is in this commit
message:

> From: Dmitry Kurochkin <dmitry.kurochkin@gmail.com>
> 
> In notmuch 0.5 notmuch-fcc-dirs style changed.  The previous code
> did not correctly identify an old configuration and, as a
> consequence, broke new configurations.

There are several things there that are too vague, ("previous code",
"old configuration", "new configurations"). What kind of configuration
is broken? How does the change here help?

It would be easier to understand the code if there were a corresponding
test case for it. I'd even be willing to help write a test case, but
there are not enough specifics in that commit message to even tell me
what to test.

>  	  ((and (listp notmuch-fcc-dirs)
> -		(= 1 (length (car notmuch-fcc-dirs))))
> +		(stringp (car notmuch-fcc-dirs)))

So the "old configuration" was a single string? And this has been
inadvertently broken since 0.5?

>  	   ;; Old style - no longer works.
>  	   (error "Invalid `notmuch-fcc-dirs' setting (old style)"))

Yikes. That vague phrasing ("old style") is already in the code in error
messages as well.

Dmitry, can you help me know what's going on here? (Preferably by
sending a newer commit with a more thorough commit message.)

Thanks,

-Carl

[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH 14/25] Fix old style notmuch-fcc-dirs configuration check.
  2011-06-02  5:10                             ` [PATCH 14/25] Fix old style notmuch-fcc-dirs configuration check Carl Worth
@ 2011-06-02  6:49                               ` Dmitry Kurochkin
  2011-06-03 20:05                                 ` Carl Worth
  0 siblings, 1 reply; 62+ messages in thread
From: Dmitry Kurochkin @ 2011-06-02  6:49 UTC (permalink / raw)
  To: Carl Worth, Notmuch Mail

Hi Carl.

On Wed, 01 Jun 2011 22:10:07 -0700, Carl Worth <cworth@cworth.org> wrote:
> On Sat, 28 May 2011 14:51:49 -0700, Jameson Graef Rollins <jrollins@finestructure.net> wrote:
> Hi Jamie,
> 
> I've pushed the next few patches up to this point, (with only one
> functional change---I fixed a new test case to correctly use
> notmuch_search_sanitize to avoid spurious failures unmatching thread ID
> values).
> 
> This patch, however, isn't ready. The big problem is in this commit
> message:
> 
> > From: Dmitry Kurochkin <dmitry.kurochkin@gmail.com>
> > 
> > In notmuch 0.5 notmuch-fcc-dirs style changed.  The previous code
> > did not correctly identify an old configuration and, as a
> > consequence, broke new configurations.
> 
> There are several things there that are too vague, ("previous code",
> "old configuration", "new configurations").

Well, it says that changes are in notmuch 0.5.  So "old" and "previous"
refer to pre-0.5 (i.e. 0.4) and "new" refers to 0.5.

> What kind of configuration
> is broken?

Any configuration when `notmuch-fcc-dirs' is a list.  That variable has
a nice documentation.

> How does the change here help?
> 

It fixes detection of old-style pre-0.5 setting for `notmuch-fcc-dirs'.

> It would be easier to understand the code if there were a corresponding
> test case for it. I'd even be willing to help write a test case, but
> there are not enough specifics in that commit message to even tell me
> what to test.
> 

I do not think we need a test for this fix.  What we need are tests for
FCC functionality when notmuch-fcc-dirs is a list.

> >  	  ((and (listp notmuch-fcc-dirs)
> > -		(= 1 (length (car notmuch-fcc-dirs))))
> > +		(stringp (car notmuch-fcc-dirs)))
> 
> So the "old configuration" was a single string?

No, it is a list with a string as the first element.  May I refer you to
"git show 0.4:emacs/notmuch-maildir-fcc.el" and current
emacs/notmuch-maildir-fcc.el?  It has good documentation with examples
for notmuch-fcc-dirs.  Also NEWS for 0.5 describe this change.

> And this has been
> inadvertently broken since 0.5?
> 

Old configuration format was changed in 0.5 in an incompatible way.
There is a check for the unsupported old-style configuration.  But the
check is broken and results in an error when running with a valid
new-style configuration.

> >  	   ;; Old style - no longer works.
> >  	   (error "Invalid `notmuch-fcc-dirs' setting (old style)"))
> 
> Yikes. That vague phrasing ("old style") is already in the code in error
> messages as well.
> 

Yes.

> Dmitry, can you help me know what's going on here?

I hope above helps.

> (Preferably by
> sending a newer commit with a more thorough commit message.)
> 

I am not sure what you expect from the commit message here.  IMO it is
enough for this small bugfix and those who interested can always refer
to documentation for details.

Regards,
  Dmitry

> Thanks,
> 
> -Carl
Non-text part: application/pgp-signature
> _______________________________________________
> notmuch mailing list
> notmuch@notmuchmail.org
> http://notmuchmail.org/mailman/listinfo/notmuch

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH 17/25] avoid segfault when calling sanitize_string() on NULL
  2011-05-28 21:51                                 ` [PATCH 17/25] avoid segfault when calling sanitize_string() on NULL Jameson Graef Rollins
  2011-05-28 21:51                                   ` [PATCH 18/25] Fix search output sanitization test Jameson Graef Rollins
@ 2011-06-03 19:24                                   ` Carl Worth
  1 sibling, 0 replies; 62+ messages in thread
From: Carl Worth @ 2011-06-03 19:24 UTC (permalink / raw)
  To: Jameson Graef Rollins, Notmuch Mail; +Cc: Daniel Kahn Gillmor

[-- Attachment #1: Type: text/plain, Size: 928 bytes --]

On Sat, 28 May 2011 14:51:52 -0700, Jameson Graef Rollins <jrollins@finestructure.net> wrote:
> +    if (NULL == str)
> +	return NULL;

I haven't been blocking patches because of this, but can I please ask
everyone to not use the above style?

I understand that the above style is intended to generate a compiler
error in the case of the programmer mistyping '=' where '==' was
intended.

But I just can't stand this style.

It looks so unnatural to me to read "if some_value is some_variable"
instead of the natural "if some_variable is some_value".

Also, gcc is kind enough to warn ("suggest parentheses around assignment
used as truth value") in the case of "if (str = NULL)" anyway, so
there's no actual benefit to the unnatural style.

I really do want our code to be readable, and I think that little things
do make a difference.

Thanks for your attention, (and thanks for your patience if I seem off
my rocker).

-Carl

[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH 25/25] Fix stdout stream grabbing in format_part_content_text
  2011-05-28 21:52                                                 ` [PATCH 25/25] Fix stdout stream grabbing in format_part_content_text Jameson Graef Rollins
@ 2011-06-03 19:56                                                   ` Carl Worth
  2011-06-03 21:26                                                     ` Jameson Graef Rollins
  2011-06-03 21:39                                                     ` Jameson Graef Rollins
  0 siblings, 2 replies; 62+ messages in thread
From: Carl Worth @ 2011-06-03 19:56 UTC (permalink / raw)
  To: Jameson Graef Rollins, Notmuch Mail

[-- Attachment #1: Type: text/plain, Size: 1678 bytes --]

On Sat, 28 May 2011 14:52:00 -0700, Jameson Graef Rollins <jrollins@finestructure.net> wrote:
> The declaration of the GMimeStream pointer to stdout in
> format_part_content_text was somehow preventing subsequent printf
> calls from outputting to stdout if the output was redirected to a
> file.  Scoping the declaration to the actual use of the stream pointer
> works around this problem.

This commit message sounds like we don't actually understand the problem
being fixed here.

I'd like to investigate this more. Perhaps with a test case?

Otherwise, the patches up to this point in the thread have all either
been pushed or I've asked for some additional information (perhaps
that's just this patch and the "old style fcc dirs" patch?).

I'll continue to work through my patch queue as contained in email
messages. I'm finding it easier to do that (and just piping the patches
I like to "git am") as opposed to working through a release-candidate
branch in git, (and having to keep rebasing/postponing it after I reject
some patch in the series).

I'm actually a bit surprised to see myself preferring patches in
email. When Linus first wrote git, I couldn't understand why the Linux
community kept to such a consistent culture of sending patches via
email. It seemed so backwards to do these awkward machinations (git
format-patch, git send-email, SMTP, MUA, git am), and risk all the
problems of email clients corrupting patches, etc.—especially when git
has such clean mechanisms for reliably moving patches around (git push,
git pull).

Call me converted. Email really is the right way to do collaborative
code development.

-Carl

[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH 14/25] Fix old style notmuch-fcc-dirs configuration check.
  2011-06-02  6:49                               ` Dmitry Kurochkin
@ 2011-06-03 20:05                                 ` Carl Worth
  2011-06-03 20:22                                   ` Dmitry Kurochkin
  0 siblings, 1 reply; 62+ messages in thread
From: Carl Worth @ 2011-06-03 20:05 UTC (permalink / raw)
  To: Dmitry Kurochkin, Notmuch Mail

[-- Attachment #1: Type: text/plain, Size: 2153 bytes --]

On Thu, 02 Jun 2011 10:49:57 +0400, Dmitry Kurochkin <dmitry.kurochkin@gmail.com> wrote:
> Well, it says that changes are in notmuch 0.5.  So "old" and "previous"
> refer to pre-0.5 (i.e. 0.4) and "new" refers to 0.5.

Sure, but I happen to ahve already forgotten the details of how the
variable could be configured in 0.4 and in 0.5. More importantly, anyone
in the future reading the commit log is much more likely not to
remember.

> Any configuration when `notmuch-fcc-dirs' is a list.  That variable has
> a nice documentation.

Again, I'd like our commit messages to be self-contained. They are much
more useful if the describe the change being made without assuming to
much outside knowledge.

> > It would be easier to understand the code if there were a corresponding
> > test case for it.
...
> I do not think we need a test for this fix.  What we need are tests for
> FCC functionality when notmuch-fcc-dirs is a list.

Yes!

> Old configuration format was changed in 0.5 in an incompatible way.
> There is a check for the unsupported old-style configuration.  But the
> check is broken and results in an error when running with a valid
> new-style configuration.

This is actually what I meant by "corresponding test case". If the bug
here is that a "new-style configuration" doesn't work , (and I still
don't like that wording---don't say "new style"---explain what it
actually *is*), then yes, we need a test case showing that bug.

> I am not sure what you expect from the commit message here.  IMO it is
> enough for this small bugfix and those who interested can always refer
> to documentation for details.

The commit message should provide a self-contained description of the
change. It should be along the lines of:

	When fcc-dirs is set to
	<some-particular-datatype-that-should-work> notmuch was
	incorecctly detecting this as the
	<old-style-that-is-no-longer-supported> and generating an error
	message. Fix the test so that this configuration now works.

Where the <phrases> above should be replaced with actual descriptions,
not relative pointers to information like "old style" or "new style".

Does that make sense?

-Carl

[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH 14/25] Fix old style notmuch-fcc-dirs configuration check.
  2011-06-03 20:05                                 ` Carl Worth
@ 2011-06-03 20:22                                   ` Dmitry Kurochkin
  2011-06-03 21:03                                     ` Carl Worth
  2011-06-23 22:22                                     ` Carl Worth
  0 siblings, 2 replies; 62+ messages in thread
From: Dmitry Kurochkin @ 2011-06-03 20:22 UTC (permalink / raw)
  To: Carl Worth, Notmuch Mail

On Fri, 03 Jun 2011 13:05:00 -0700, Carl Worth <cworth@cworth.org> wrote:
Non-text part: multipart/signed
> On Thu, 02 Jun 2011 10:49:57 +0400, Dmitry Kurochkin <dmitry.kurochkin@gmail.com> wrote:
> > Well, it says that changes are in notmuch 0.5.  So "old" and "previous"
> > refer to pre-0.5 (i.e. 0.4) and "new" refers to 0.5.
> 
> Sure, but I happen to ahve already forgotten the details of how the
> variable could be configured in 0.4 and in 0.5. More importantly, anyone
> in the future reading the commit log is much more likely not to
> remember.
> 
> > Any configuration when `notmuch-fcc-dirs' is a list.  That variable has
> > a nice documentation.
> 
> Again, I'd like our commit messages to be self-contained. They are much
> more useful if the describe the change being made without assuming to
> much outside knowledge.
> 
> > > It would be easier to understand the code if there were a corresponding
> > > test case for it.
> ...
> > I do not think we need a test for this fix.  What we need are tests for
> > FCC functionality when notmuch-fcc-dirs is a list.
> 
> Yes!
> 
> > Old configuration format was changed in 0.5 in an incompatible way.
> > There is a check for the unsupported old-style configuration.  But the
> > check is broken and results in an error when running with a valid
> > new-style configuration.
> 
> This is actually what I meant by "corresponding test case". If the bug
> here is that a "new-style configuration" doesn't work , (and I still
> don't like that wording---don't say "new style"---explain what it
> actually *is*), then yes, we need a test case showing that bug.
> 
> > I am not sure what you expect from the commit message here.  IMO it is
> > enough for this small bugfix and those who interested can always refer
> > to documentation for details.
> 
> The commit message should provide a self-contained description of the
> change. It should be along the lines of:
> 
> 	When fcc-dirs is set to
> 	<some-particular-datatype-that-should-work> notmuch was
> 	incorecctly detecting this as the
> 	<old-style-that-is-no-longer-supported> and generating an error
> 	message. Fix the test so that this configuration now works.
> 
> Where the <phrases> above should be replaced with actual descriptions,
> not relative pointers to information like "old style" or "new style".
> 
> Does that make sense?
> 

"notmuch was incorecctly detecting this as the ..." is not right.  It is
a wrong-type-argument lisp error (evaluating (length '(a . b))).  How
about:

  Fix wrong-type-argument lisp error in `notmuch-fcc-header-setup' when
  `notmuch-fcc-dirs' is set to a list.  The error was in the
  `notmuch-fcc-dirs' format check which was changed in an incompatible
  way from 0.4 to 0.5.

Regards,
  Dmitry

> -Carl
Non-text part: application/pgp-signature

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH 14/25] Fix old style notmuch-fcc-dirs configuration check.
  2011-06-03 20:22                                   ` Dmitry Kurochkin
@ 2011-06-03 21:03                                     ` Carl Worth
  2011-06-23 22:22                                     ` Carl Worth
  1 sibling, 0 replies; 62+ messages in thread
From: Carl Worth @ 2011-06-03 21:03 UTC (permalink / raw)
  To: Dmitry Kurochkin, Notmuch Mail

[-- Attachment #1: Type: text/plain, Size: 801 bytes --]

On Sat, 04 Jun 2011 00:22:04 +0400, Dmitry Kurochkin <dmitry.kurochkin@gmail.com> wrote:
> "notmuch was incorecctly detecting this as the ..." is not right.

Thanks. I was sure my commit message wasn't right yet. That was my
point---I didn't know what the right message would be! ;-)

> It is a wrong-type-argument lisp error (evaluating (length '(a . b))).  How
> about:
> 
>   Fix wrong-type-argument lisp error in `notmuch-fcc-header-setup' when
>   `notmuch-fcc-dirs' is set to a list.  The error was in the
>   `notmuch-fcc-dirs' format check which was changed in an incompatible
>   way from 0.4 to 0.5.

Perfect! This way, if I want to investigate this patch before committing
it, I now have the information I need to test it.

Thanks,

-Carl

-- 
carl.d.worth@intel.com

[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH 25/25] Fix stdout stream grabbing in format_part_content_text
  2011-06-03 19:56                                                   ` Carl Worth
@ 2011-06-03 21:26                                                     ` Jameson Graef Rollins
  2011-06-03 22:38                                                       ` Carl Worth
  2011-06-03 21:39                                                     ` Jameson Graef Rollins
  1 sibling, 1 reply; 62+ messages in thread
From: Jameson Graef Rollins @ 2011-06-03 21:26 UTC (permalink / raw)
  To: Carl Worth, Notmuch Mail

[-- Attachment #1: Type: text/plain, Size: 1312 bytes --]

On Fri, 03 Jun 2011 12:56:50 -0700, Carl Worth <cworth@cworth.org> wrote:
> On Sat, 28 May 2011 14:52:00 -0700, Jameson Graef Rollins <jrollins@finestructure.net> wrote:
> > The declaration of the GMimeStream pointer to stdout in
> > format_part_content_text was somehow preventing subsequent printf
> > calls from outputting to stdout if the output was redirected to a
> > file.  Scoping the declaration to the actual use of the stream pointer
> > works around this problem.
> 
> This commit message sounds like we don't actually understand the problem
> being fixed here.

Well actually it's only meant to sound like the committer doesn't
understand the problem!

> I'd like to investigate this more. Perhaps with a test case?

The current tests are how I found the problem!  Without this patch at
least the multipart tests will fail.  I don't see how another test will
add anything.

Carl, if you (or anyone else) understands what the issue is, then please
go ahead and modify the commit message.  I don't understand things
enough myself to do any better.  Clearly there is some strange
interaction with things that try to use stdout after
g_mime_stream_file_new() has already grabbed it.

I really wouldn't block on this, though, since the patch does fix an
actual bug.

jamie.

[-- Attachment #2: Type: application/pgp-signature, Size: 835 bytes --]

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH 25/25] Fix stdout stream grabbing in format_part_content_text
  2011-06-03 19:56                                                   ` Carl Worth
  2011-06-03 21:26                                                     ` Jameson Graef Rollins
@ 2011-06-03 21:39                                                     ` Jameson Graef Rollins
  1 sibling, 0 replies; 62+ messages in thread
From: Jameson Graef Rollins @ 2011-06-03 21:39 UTC (permalink / raw)
  To: Carl Worth, Notmuch Mail

[-- Attachment #1: Type: text/plain, Size: 1376 bytes --]

On Fri, 03 Jun 2011 12:56:50 -0700, Carl Worth <cworth@cworth.org> wrote:
> Otherwise, the patches up to this point in the thread have all either
> been pushed or I've asked for some additional information (perhaps
> that's just this patch and the "old style fcc dirs" patch?).

Great!  That's really great news, Carl.  Thank you very much.  I think
at this point the only thing we need for 0.6 are:

* Austin's atomicity patches
* maybe fix the frc822 handling issue

Can we set a target date for 0.6 release?  So we'll all start feeling
really bad if we miss it?

> I'm actually a bit surprised to see myself preferring patches in
> email. When Linus first wrote git, I couldn't understand why the Linux
> community kept to such a consistent culture of sending patches via
> email. It seemed so backwards to do these awkward machinations (git
> format-patch, git send-email, SMTP, MUA, git am), and risk all the
> problems of email clients corrupting patches, etc.—especially when git
> has such clean mechanisms for reliably moving patches around (git push,
> git pull).

Yeah, I'm with you that I'm surprised by liking this method as well.  I
think it only really works once most of the bulk of things are already
working, but for bug fixes and feature additions it really works well.
It's nice to have comments for patches on list.

jamie.

[-- Attachment #2: Type: application/pgp-signature, Size: 835 bytes --]

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH 25/25] Fix stdout stream grabbing in format_part_content_text
  2011-06-03 21:26                                                     ` Jameson Graef Rollins
@ 2011-06-03 22:38                                                       ` Carl Worth
  2011-06-03 22:57                                                         ` Jameson Graef Rollins
  0 siblings, 1 reply; 62+ messages in thread
From: Carl Worth @ 2011-06-03 22:38 UTC (permalink / raw)
  To: Jameson Graef Rollins, Notmuch Mail

[-- Attachment #1: Type: text/plain, Size: 2602 bytes --]

On Fri, 03 Jun 2011 14:26:48 -0700, Jameson Graef Rollins <jrollins@finestructure.net> wrote:
> Well actually it's only meant to sound like the committer doesn't
> understand the problem!

Heh, OK.

> > I'd like to investigate this more. Perhaps with a test case?
> 
> The current tests are how I found the problem!  Without this patch at
> least the multipart tests will fail.  I don't see how another test will
> add anything.

Ah, in my review I'd managed to get this commit detached from the
original previous commit that introduced the test failures. It's funny
that while you were replying I was reviewing *that* commit and thinking,
"why are all these tests failing now just because they changed to
test_expect_equal_file"?

> Carl, if you (or anyone else) understands what the issue is, then please
> go ahead and modify the commit message.

Done.

>                                         I don't understand things
> enough myself to do any better.  Clearly there is some strange
> interaction with things that try to use stdout after
> g_mime_stream_file_new() has already grabbed it.

g_mime_stream_file_new is a bad citizen, API-wise. It closes files that
it didn't open, (by default).

> I really wouldn't block on this, though, since the patch does fix an
> actual bug.

Not blocked. All pushed. New commit message below for reference.

-Carl

commit d5b4d950245605b84c56ce991fa3c59a073a70e5
Author: Jameson Graef Rollins <jrollins@finestructure.net>
Date:   Sat May 28 14:52:00 2011 -0700

    show: Avoid inadvertently closing stdout
    
    GMime has a nasty habit of taking ownership by default of any FILE*
    handed to it va g_mime_stream_file_new. Specifically it will close the
    FILE* when the stream is destroyed---even though GMime didn't open the
    file itself.
    
    To avoid this bad behavior, we have to carefully set_owner(FALSE)
    after calling g_mime_stream_file_new. In the format_part_content_text
    function, since commit d92146d3a6809f8ad940302af49cd99a0820665e we've
    been calling g_mime_stream_file_new unconditionally, but only calling
    g_mime_stream_file_set_owner(FALSE) conditionally.
    
    This led to the FILE* being closed early when notmuch show output was
    redirected to a file.
    
    Fixing this fixes the test-suite cases that broke with the previous
    commit, (which added redirected "notmuch show" calls to the test suite
    to expose this bug).
    
    Edited-by: Carl Worth <cworth@cworth.org> with a new commit message to
    explain the bug and fix.

[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH 25/25] Fix stdout stream grabbing in format_part_content_text
  2011-06-03 22:38                                                       ` Carl Worth
@ 2011-06-03 22:57                                                         ` Jameson Graef Rollins
  0 siblings, 0 replies; 62+ messages in thread
From: Jameson Graef Rollins @ 2011-06-03 22:57 UTC (permalink / raw)
  To: Carl Worth, Notmuch Mail

[-- Attachment #1: Type: text/plain, Size: 1408 bytes --]

On Fri, 03 Jun 2011 15:38:29 -0700, Carl Worth <cworth@cworth.org> wrote:
> commit d5b4d950245605b84c56ce991fa3c59a073a70e5
> Author: Jameson Graef Rollins <jrollins@finestructure.net>
> Date:   Sat May 28 14:52:00 2011 -0700
> 
>     show: Avoid inadvertently closing stdout
>     
>     GMime has a nasty habit of taking ownership by default of any FILE*
>     handed to it va g_mime_stream_file_new. Specifically it will close the
>     FILE* when the stream is destroyed---even though GMime didn't open the
>     file itself.
>     
>     To avoid this bad behavior, we have to carefully set_owner(FALSE)
>     after calling g_mime_stream_file_new. In the format_part_content_text
>     function, since commit d92146d3a6809f8ad940302af49cd99a0820665e we've
>     been calling g_mime_stream_file_new unconditionally, but only calling
>     g_mime_stream_file_set_owner(FALSE) conditionally.
>     
>     This led to the FILE* being closed early when notmuch show output was
>     redirected to a file.
>     
>     Fixing this fixes the test-suite cases that broke with the previous
>     commit, (which added redirected "notmuch show" calls to the test suite
>     to expose this bug).
>     
>     Edited-by: Carl Worth <cworth@cworth.org> with a new commit message to
>     explain the bug and fix.

Now I sound like I know what I'm talking about!  Thanks, Carl.

jamie.

[-- Attachment #2: Type: application/pgp-signature, Size: 835 bytes --]

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: release-candidate/0.6 redux
  2011-05-31 18:43   ` Jameson Graef Rollins
@ 2011-06-04  1:27     ` Carl Worth
  2011-06-06  0:35       ` Jameson Graef Rollins
  0 siblings, 1 reply; 62+ messages in thread
From: Carl Worth @ 2011-06-04  1:27 UTC (permalink / raw)
  To: Jameson Graef Rollins, Notmuch Mail

[-- Attachment #1: Type: text/plain, Size: 1495 bytes --]

On Tue, 31 May 2011 11:43:31 -0700, Jameson Graef Rollins <jrollins@finestructure.net> wrote:
> Hi, folks.  I have pushed a new version of the release-candidate/0.6
> branch to my repo [0].  It is all reworked on top of notmuch/master [1],
> and includes:
...
> cworth: do you want to review this for the new release?  We're very close!
> One last push and we can get this thing out.

I've been going through it, but trying to focus more on the emails I
have queued up (which is currently 58 messages).

From a quick rebase of your release-candidate branch and a comparison
with what I have queued it looks like only the following commits are
left on your branch and not in my email queue:

    emacs: update notmuch-crypto-process-mime config variable documentation.
    bump debian standards version
    Increment library version to 1.4.0
    Increment notmuch version to 0.6
    debian: update list of symbols for libnotmuch
    debian: separate build dependency entries on to separate lines
    debian: update changelog for 0.6

That's mostly just the release bookkeeping, which is good---that means
I've been through most of the "meat" of the patches on your branch.

I'll now work through what I still have in my queue (Austin's atomicity
work is the only big piece) and then look at the above, at which point
we should be there. (And yes, I know I sound like I'm talking along the
lines of a feature-based release rather than a time-based release.)

-Carl

[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: release-candidate/0.6 redux
  2011-06-04  1:27     ` Carl Worth
@ 2011-06-06  0:35       ` Jameson Graef Rollins
  2011-06-06 12:17         ` Carl Worth
  0 siblings, 1 reply; 62+ messages in thread
From: Jameson Graef Rollins @ 2011-06-06  0:35 UTC (permalink / raw)
  To: Carl Worth, Notmuch Mail

[-- Attachment #1: Type: text/plain, Size: 893 bytes --]

On Fri, 03 Jun 2011 18:27:42 -0700, Carl Worth <cworth@cworth.org> wrote:
> From a quick rebase of your release-candidate branch and a comparison
> with what I have queued it looks like only the following commits are
> left on your branch and not in my email queue:
> 
>     emacs: update notmuch-crypto-process-mime config variable documentation.

Hey, Carl.  This is actually a five-patch series that starts at:

 emacs: add notmuch-show-refresh-view function
  id:"1306627784-3401-1-git-send-email-jrollins@finestructure.net"

You should also look at the following two patch series to fix the
message/rfc822 part handling:

 Do not attept to output part raw if part is not GMimePart.
  id:"1307120466-4980-1-git-send-email-jrollins@finestructure.net"

 improving message/rfc822 part handling
  id:"1307320169-29905-1-git-send-email-jrollins@finestructure.net"

jamie.

[-- Attachment #2: Type: application/pgp-signature, Size: 835 bytes --]

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: release-candidate/0.6 redux
  2011-06-06  0:35       ` Jameson Graef Rollins
@ 2011-06-06 12:17         ` Carl Worth
  2011-06-06 16:28           ` tag sharing [was: Re: release-candidate/0.6 redux] Jameson Graef Rollins
  0 siblings, 1 reply; 62+ messages in thread
From: Carl Worth @ 2011-06-06 12:17 UTC (permalink / raw)
  To: Jameson Graef Rollins, Notmuch Mail

[-- Attachment #1: Type: text/plain, Size: 1319 bytes --]

On Sun, 05 Jun 2011 17:35:40 -0700, Jameson Graef Rollins <jrollins@finestructure.net> wrote:
> On Fri, 03 Jun 2011 18:27:42 -0700, Carl Worth <cworth@cworth.org> wrote:
> > From a quick rebase of your release-candidate branch and a comparison
> > with what I have queued it looks like only the following commits are
> > left on your branch and not in my email queue:
> > 
> >     emacs: update notmuch-crypto-process-mime config variable documentation.
> 
> Hey, Carl.  This is actually a five-patch series that starts at:
> 
>  emacs: add notmuch-show-refresh-view function
>   id:"1306627784-3401-1-git-send-email-jrollins@finestructure.net"

OK, good. That is actually part of my queue.

> You should also look at the following two patch series to fix the
> message/rfc822 part handling:
> 
>  Do not attept to output part raw if part is not GMimePart.
>   id:"1307120466-4980-1-git-send-email-jrollins@finestructure.net"
> 
>  improving message/rfc822 part handling
>   id:"1307320169-29905-1-git-send-email-jrollins@finestructure.net"

OK. These are also already queued.

Hopefully, someone will provide me with a good way to publish my queue
soon, ("notmuch search --output=html" ?), and then communication like
this will be a bit easier. ;-)

-Carl

-- 
carl.d.worth@intel.com

[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]

^ permalink raw reply	[flat|nested] 62+ messages in thread

* tag sharing [was: Re: release-candidate/0.6 redux]
  2011-06-06 12:17         ` Carl Worth
@ 2011-06-06 16:28           ` Jameson Graef Rollins
  2011-06-06 17:20             ` Jesse Rosenthal
  0 siblings, 1 reply; 62+ messages in thread
From: Jameson Graef Rollins @ 2011-06-06 16:28 UTC (permalink / raw)
  To: Carl Worth, Notmuch Mail

[-- Attachment #1: Type: text/plain, Size: 1154 bytes --]

On Mon, 06 Jun 2011 05:17:27 -0700, Carl Worth <cworth@cworth.org> wrote:
> Hopefully, someone will provide me with a good way to publish my queue
> soon, ("notmuch search --output=html" ?), and then communication like
> this will be a bit easier. ;-)

I've been thinking about this more and it really seems we need a way to
just share tags.  What if we had a way to export all the tags for a set
of messages as a notmuch dump file, that could just be piped into
notmuch to modify tags?  This would be a great way for lots of people to
keep tags synced on a set of messages.

The main difficulty (seems to me) would be the sharing of -tags.  You
wouldn't want the absence of a tag on a message in the tag file to mean
that the tag should be removed.  So we would need to represent both
+tags and -tags in the dump file [0].

It seems a little crazy, but would it be possible to store -tags in the
database somehow?

jamie.

[0] This would actually help with tags applied when the message is
indexed as well, like "signed" and "encrypted", since it would allow for
tagging messages that were indexed before the "signed"/"encrypted"
tagging was a feature.

[-- Attachment #2: Type: application/pgp-signature, Size: 835 bytes --]

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: tag sharing [was: Re: release-candidate/0.6 redux]
  2011-06-06 16:28           ` tag sharing [was: Re: release-candidate/0.6 redux] Jameson Graef Rollins
@ 2011-06-06 17:20             ` Jesse Rosenthal
  2011-06-08 17:46               ` Jameson Graef Rollins
  0 siblings, 1 reply; 62+ messages in thread
From: Jesse Rosenthal @ 2011-06-06 17:20 UTC (permalink / raw)
  To: Jameson Graef Rollins, Carl Worth, Notmuch Mail


On Mon, 06 Jun 2011 09:28:13 -0700, Jameson Graef Rollins <jrollins@finestructure.net> wrote:
> I've been thinking about this more and it really seems we need a way to
> just share tags.  What if we had a way to export all the tags for a set
> of messages as a notmuch dump file, that could just be piped into
> notmuch to modify tags?  This would be a great way for lots of people to
> keep tags synced on a set of messages.

After a conversation with David last year about bug-tracking, I worked
up a rough python-based prototype of this. It worked in terms of
namespaces, so Carl could associate the namespace "public" with a list
of tags he publishes to a http-accessable location. And you could
associate the namespace "cworth" with those same tags.

He types `whatevercommand push public` and all tags "public.*" go to an
config-associated URL.

You type `whatevercommand pull cworth` and the tags come down from that
URL as "cworth.*".

So what he has as "public.to-push" comes down to your notmuch as
"cworth.to-push".

It's available here:

    http://commonmeasure.org/~jkr/git/nm-remote.git

See these emails for more (but note that the repo url has changed to the
above).
    
    id:"m1k4rkkchy.fsf@watt.gilman.jhu.edu"        
    id:"m1hbmokbxj.fsf@watt.gilman.jhu.edu"

There were some details and inherent ambiguities about conflict
resolution, and the above emails explain how I dealt with them. 

Note also that it uses python's configparser, which will overwrite your
config -- which means it'll get rid of your comments. So if you use any
of the config-writing commands, make sure you back up your config first.

Best,
Jesse

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: tag sharing [was: Re: release-candidate/0.6 redux]
  2011-06-06 17:20             ` Jesse Rosenthal
@ 2011-06-08 17:46               ` Jameson Graef Rollins
  2011-06-08 19:18                 ` Jesse Rosenthal
  2011-10-06 12:56                 ` tag sharing David Bremner
  0 siblings, 2 replies; 62+ messages in thread
From: Jameson Graef Rollins @ 2011-06-08 17:46 UTC (permalink / raw)
  To: Jesse Rosenthal, Carl Worth, Notmuch Mail

[-- Attachment #1: Type: text/plain, Size: 1120 bytes --]

On Mon, 06 Jun 2011 13:20:00 -0400, Jesse Rosenthal <jrosenthal@jhu.edu> wrote:
> After a conversation with David last year about bug-tracking, I worked
> up a rough python-based prototype of this. It worked in terms of
> namespaces, so Carl could associate the namespace "public" with a list
> of tags he publishes to a http-accessable location. And you could
> associate the namespace "cworth" with those same tags.

This sounds very cool, Jesse.  Very git-like.  I like it.

> You type `whatevercommand pull cworth` and the tags come down from that
> URL as "cworth.*".
> 
> So what he has as "public.to-push" comes down to your notmuch as
> "cworth.to-push".

Did you guys try to address the issue of tag removal at all?  I've been
trying to decide if this is something we need to worry about or not.
For instance, if cworth pushed a tag ".needs-review", you would probably
want to have that tag removed if cworth removed it.  I guess
alternatively he could just push the tag ".reviewed" to nullify the
meaning of the previous one.  I'm not sure that would work in all cases,
though.

jamie.

[-- Attachment #2: Type: application/pgp-signature, Size: 835 bytes --]

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: tag sharing [was: Re: release-candidate/0.6 redux]
  2011-06-08 17:46               ` Jameson Graef Rollins
@ 2011-06-08 19:18                 ` Jesse Rosenthal
  2011-10-06 12:56                 ` tag sharing David Bremner
  1 sibling, 0 replies; 62+ messages in thread
From: Jesse Rosenthal @ 2011-06-08 19:18 UTC (permalink / raw)
  To: Jameson Graef Rollins, Carl Worth, Notmuch Mail

On Wed, 08 Jun 2011 10:46:57 -0700, Jameson Graef Rollins <jrollins@finestructure.net> wrote:
> Did you guys try to address the issue of tag removal at all?  I've been
> trying to decide if this is something we need to worry about or not.
> For instance, if cworth pushed a tag ".needs-review", you would probably
> want to have that tag removed if cworth removed it.  I guess
> alternatively he could just push the tag ".reviewed" to nullify the
> meaning of the previous one.  I'm not sure that would work in all cases,
> though.

Yes, if he deletes the tag "public.needs-review" in his notmuch, and
then pushes it, it will delete the tag "cworth.needs-review" from yours.

A couple points about this:

1. If you added your own "needs-review" tag to things that have a
"cworth.needs-review" tag, that wouldn't be deleted. In other words,
cworth's actions will only affect that namespace. Now, if you delete it,
and push it, and Carl pulls back from you (meaning he trusts you), then
it would be deleted on his. When he pushes next, it will be deleted on
everyone who pulls from him.

I'm sure there are resolution paradoxes here. It only had a ten-minute
trial run one day on IRC with me and someone else.

2. The history is available. If you run `nm-remote history msg-id`, it
will show you its history of being added and deleted. I think it will
show by whom it was added or deleted as well, but I don't quite remember
(I hacked this up over a year ago).

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH 14/25] Fix old style notmuch-fcc-dirs configuration check.
  2011-06-03 20:22                                   ` Dmitry Kurochkin
  2011-06-03 21:03                                     ` Carl Worth
@ 2011-06-23 22:22                                     ` Carl Worth
  2011-06-23 22:58                                       ` Dmitry Kurochkin
  1 sibling, 1 reply; 62+ messages in thread
From: Carl Worth @ 2011-06-23 22:22 UTC (permalink / raw)
  To: Dmitry Kurochkin, Notmuch Mail; +Cc: David Bremner

[-- Attachment #1: Type: text/plain, Size: 1335 bytes --]

On Sat, 04 Jun 2011 00:22:04 +0400, Dmitry Kurochkin <dmitry.kurochkin@gmail.com> wrote:
> On Fri, 03 Jun 2011 13:05:00 -0700, Carl Worth <cworth@cworth.org> wrote:
> > > I do not think we need a test for this fix.  What we need are tests for
> > > FCC functionality when notmuch-fcc-dirs is a list.
> > 
> > Yes!

I've written these now. And they do test this fix. What they show is
that a legitimate setting (of notmuch-fcc-dirs as a list) was resulting
in an error rather than working. That's a nasty little bug, (and poor
coverage from our test suite before.

>   Fix wrong-type-argument lisp error in `notmuch-fcc-header-setup' when
>   `notmuch-fcc-dirs' is set to a list.  The error was in the
>   `notmuch-fcc-dirs' format check which was changed in an incompatible
>   way from 0.4 to 0.5.

Thanks for the fixed wording. I've now pushed out the fix (along with
the tests).

With all the talk of "old style" vs. "new style" I was thinking that the
bug only affected people with the old-style FCC setting. The bug is much
worse than that, (preventing people from using the new list-based
style).

Anyway, thanks for the patch, Dmitry. And thanks for pushing me to take
another look.

David, I suggest including this fix (and its test) in the release
branch.

-Carl

-- 
carl.d.worth@intel.com

[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH 14/25] Fix old style notmuch-fcc-dirs configuration check.
  2011-06-23 22:22                                     ` Carl Worth
@ 2011-06-23 22:58                                       ` Dmitry Kurochkin
  2011-06-23 23:24                                         ` Carl Worth
  0 siblings, 1 reply; 62+ messages in thread
From: Dmitry Kurochkin @ 2011-06-23 22:58 UTC (permalink / raw)
  To: Carl Worth, Notmuch Mail; +Cc: David Bremner

On Thu, 23 Jun 2011 15:22:46 -0700, Carl Worth <cworth@cworth.org> wrote:
> On Sat, 04 Jun 2011 00:22:04 +0400, Dmitry Kurochkin <dmitry.kurochkin@gmail.com> wrote:
> > On Fri, 03 Jun 2011 13:05:00 -0700, Carl Worth <cworth@cworth.org> wrote:
> > > > I do not think we need a test for this fix.  What we need are tests for
> > > > FCC functionality when notmuch-fcc-dirs is a list.
> > > 
> > > Yes!
> 
> I've written these now. And they do test this fix. What they show is
> that a legitimate setting (of notmuch-fcc-dirs as a list) was resulting
> in an error rather than working. That's a nasty little bug, (and poor
> coverage from our test suite before.
> 
> >   Fix wrong-type-argument lisp error in `notmuch-fcc-header-setup' when
> >   `notmuch-fcc-dirs' is set to a list.  The error was in the
> >   `notmuch-fcc-dirs' format check which was changed in an incompatible
> >   way from 0.4 to 0.5.
> 
> Thanks for the fixed wording. I've now pushed out the fix (along with
> the tests).
> 
> With all the talk of "old style" vs. "new style" I was thinking that the
> bug only affected people with the old-style FCC setting. The bug is much
> worse than that, (preventing people from using the new list-based
> style).
> 
> Anyway, thanks for the patch, Dmitry. And thanks for pushing me to take
> another look.
> 

Well, I should have prepared a better commit message from the
beginning.  Then no pushing might have been needed :)

Regards,
  Dmitry

> David, I suggest including this fix (and its test) in the release
> branch.
> 
> -Carl
> 
> -- 
> carl.d.worth@intel.com

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH 14/25] Fix old style notmuch-fcc-dirs configuration check.
  2011-06-23 22:58                                       ` Dmitry Kurochkin
@ 2011-06-23 23:24                                         ` Carl Worth
  0 siblings, 0 replies; 62+ messages in thread
From: Carl Worth @ 2011-06-23 23:24 UTC (permalink / raw)
  To: Dmitry Kurochkin, Notmuch Mail; +Cc: David Bremner

[-- Attachment #1: Type: text/plain, Size: 458 bytes --]

On Fri, 24 Jun 2011 02:58:23 +0400, Dmitry Kurochkin <dmitry.kurochkin@gmail.com> wrote:
> Well, I should have prepared a better commit message from the
> beginning.  Then no pushing might have been needed :)

That, or a test case, (which would have clued me in to read the correct
interpretation of the original commit message).

Regardless, the fix is in place now, and that's what matters.

Thanks again,

-Carl

-- 
carl.d.worth@intel.com

[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: tag sharing 
  2011-06-08 17:46               ` Jameson Graef Rollins
  2011-06-08 19:18                 ` Jesse Rosenthal
@ 2011-10-06 12:56                 ` David Bremner
  2011-10-06 13:21                   ` Jesse Rosenthal
  1 sibling, 1 reply; 62+ messages in thread
From: David Bremner @ 2011-10-06 12:56 UTC (permalink / raw)
  To: Jameson Graef Rollins, Jesse Rosenthal, Notmuch Mail

On Wed, 08 Jun 2011 10:46:57 -0700, Jameson Graef Rollins <jrollins@finestructure.net> wrote:

> On Mon, 06 Jun 2011 13:20:00 -0400, Jesse Rosenthal <jrosenthal@jhu.edu> wrote:
> > After a conversation with David last year about bug-tracking, I worked
> > up a rough python-based prototype of this. It worked in terms of
> > namespaces, so Carl could associate the namespace "public" with a list
> > of tags he publishes to a http-accessable location. And you could
> > associate the namespace "cworth" with those same tags.
> 
> This sounds very cool, Jesse.  Very git-like.  I like it.
> 

Warning: git fanboi-ism ahead.

I like the concept too. But I worry a bit that we are re-inventing
things that could be done by git.  What do people think about a similar
namespace import export tool where we rely on git for a transport layer,
and for merging, conflict-resolution, and history tracking. Of course
there are details to be settled, but before I try to work them out,
would anyone like to convince me the idea is fundementally wrong headed?
Jesse, do you remember why you decided to roll your own?  I agree it is
subjective what is easier, but I think we have enough people comfortable
with git that collaborative maintenence of a bug-tag git repo would be
pretty easy.

d

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: tag sharing
  2011-10-06 12:56                 ` tag sharing David Bremner
@ 2011-10-06 13:21                   ` Jesse Rosenthal
  2011-10-06 14:18                     ` David Bremner
  0 siblings, 1 reply; 62+ messages in thread
From: Jesse Rosenthal @ 2011-10-06 13:21 UTC (permalink / raw)
  To: David Bremner, Jameson Graef Rollins, Notmuch Mail

On Thu, 06 Oct 2011 09:56:43 -0300, David Bremner <david@tethera.net> wrote:
> Jesse, do you remember why you decided to roll your own?

Only reason I can remember (a year and a half later) of is that it
seemed like the basic illustration of concept would be a saturday
morning's project. In retrospect, I think the main issue was that I was
trying to figure out how history would be kept. By using git, though,
your idea would be that we get history for free, right?

I think my format was:

    <TIMESTAMP>    <MESSAGID>     <TAG>
    12345          foo@bar        to-fix
    13456          bar@foo        feature-request

But using git would get us timestamps for free too, I guess.  And if we
get rid of timestamps, then we just have dumps. So what we would really
just need is a thin namespacing layer in some scripting language on top
of git? I.e., all we need something to just keep different dumps in
different namespaces, so that when I pull your dump, the tags come in as
`bremner/to-fix` (or whatever our separator is), and then when I dump
all `bremner` tags, it removes the namespace and puts it in
`bremner.tagfile`.

One rather obvious thing that I discovered: processing dumps and
restores from the ui is pretty slow, because you have to output a huge
file, and then find the tags in your preferred namespace. So using
either the library or the bindings would probably speed things up quite
a bit, by only dumping the tags you care about. Which means it couldn't
just be a shell script: it would have to be c/ruby/python.

Best,
Jesse

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: tag sharing
  2011-10-06 13:21                   ` Jesse Rosenthal
@ 2011-10-06 14:18                     ` David Bremner
  2011-10-06 19:49                       ` Jesse Rosenthal
  2011-10-07 11:36                       ` Jesse Rosenthal
  0 siblings, 2 replies; 62+ messages in thread
From: David Bremner @ 2011-10-06 14:18 UTC (permalink / raw)
  To: Jesse Rosenthal, Jameson Graef Rollins, Notmuch Mail

[-- Attachment #1: Type: text/plain, Size: 1610 bytes --]

On Thu, 06 Oct 2011 09:21:48 -0400, Jesse Rosenthal <jrosenthal@jhu.edu> wrote:

> morning's project. In retrospect, I think the main issue was that I was
> trying to figure out how history would be kept. By using git, though,
> your idea would be that we get history for free, right?

Yeah. Of course, one would have to decide if the history of the current
dump file format is intelligible, or if some alternative format should
be used.

> of git? I.e., all we need something to just keep different dumps in
> different namespaces, so that when I pull your dump, the tags come in as
> `bremner/to-fix` (or whatever our separator is), and then when I dump
> all `bremner` tags, it removes the namespace and puts it in
> `bremner.tagfile`.

something like that sounds plausible. Currently the query parser doesn't
handle searches like "tag:bremner/to-fix" very well, because it
helpfully splits at '/' (aiui; maybe somebody else can explain it
better).  "notmuch search "tag:notmuch*" does not seem to work either,
so my first idea to kludge around the problem by using
e.g. "notmuchPushed" doesn't seem to work either.

> So using
> either the library or the bindings would probably speed things up quite
> a bit, by only dumping the tags you care about. Which means it couldn't
> just be a shell script: it would have to be c/ruby/python.

Without looking at the code, I'd guess it wouldn't be too hard to have
notmuch-dump take a standard search term; it's just as I mentioned I
don't see an elegant way of doing what we want with a standard search
term. Of course I'd be happy to be proved wrong.

David




[-- Attachment #2: Type: application/pgp-signature, Size: 315 bytes --]

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: tag sharing
  2011-10-06 14:18                     ` David Bremner
@ 2011-10-06 19:49                       ` Jesse Rosenthal
  2011-10-06 20:23                         ` David Bremner
  2011-10-07 11:36                       ` Jesse Rosenthal
  1 sibling, 1 reply; 62+ messages in thread
From: Jesse Rosenthal @ 2011-10-06 19:49 UTC (permalink / raw)
  To: David Bremner, Jameson Graef Rollins, Notmuch Mail

On Thu, 06 Oct 2011 11:18:51 -0300, David Bremner <david@tethera.net> wrote:
> something like that sounds plausible. Currently the query parser doesn't
> handle searches like "tag:bremner/to-fix" very well, because it
> helpfully splits at '/' (aiui; maybe somebody else can explain it
> better).  "notmuch search "tag:notmuch*" does not seem to work either,
> so my first idea to kludge around the problem by using
> e.g. "notmuchPushed" doesn't seem to work either.

A period works: `tag:bremner.to-fix`. That would fit with java/python
conventions. Double-colons also seem to work, for what it's worth:
`tag:bremner::to-fix`

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: tag sharing
  2011-10-06 19:49                       ` Jesse Rosenthal
@ 2011-10-06 20:23                         ` David Bremner
  2011-10-06 20:40                           ` Jesse Rosenthal
  0 siblings, 1 reply; 62+ messages in thread
From: David Bremner @ 2011-10-06 20:23 UTC (permalink / raw)
  To: Jesse Rosenthal, Jameson Graef Rollins, Notmuch Mail

On Thu, 06 Oct 2011 15:49:10 -0400, Jesse Rosenthal <jrosenthal@jhu.edu> wrote:
> 
> A period works: `tag:bremner.to-fix`. That would fit with java/python
> conventions. Double-colons also seem to work, for what it's worth:
> `tag:bremner::to-fix`

Right, I was confused and/or unclear. What doesn't work is searches for
the whole namespace "notmuch search tag:bremner.*" will return nothing,
even though "notmuch search tag:bremner.to-fix" does.

d

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: tag sharing
  2011-10-06 20:23                         ` David Bremner
@ 2011-10-06 20:40                           ` Jesse Rosenthal
  2011-10-07  0:10                             ` David Bremner
  0 siblings, 1 reply; 62+ messages in thread
From: Jesse Rosenthal @ 2011-10-06 20:40 UTC (permalink / raw)
  To: David Bremner, Jameson Graef Rollins, Notmuch Mail

On Thu, 06 Oct 2011 17:23:21 -0300, David Bremner <david@tethera.net> wrote:
> What doesn't work is searches for the whole namespace "notmuch search
> tag:bremner.*" will return nothing, even though "notmuch search
> tag:bremner.to-fix" does.

A simple shell way to do this would be

    notmuch search-tags | grep "^bremner\." | xargs -I {} notmuch search tag:{}

That's pretty quick over a fair amount of messages. It would be quicker,
I imagine, if it did the grepping inside of a program, but this is still
way down there in the subsecond range.

NB. I don't have that many tags, so maybe the grepping step would bog
down a bit if I had more. But I doubt someone would have that much more
than a few hundred.

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: tag sharing
  2011-10-06 20:40                           ` Jesse Rosenthal
@ 2011-10-07  0:10                             ` David Bremner
  0 siblings, 0 replies; 62+ messages in thread
From: David Bremner @ 2011-10-07  0:10 UTC (permalink / raw)
  To: Jesse Rosenthal, Jameson Graef Rollins, Notmuch Mail

On Thu, 06 Oct 2011 16:40:00 -0400, Jesse Rosenthal <jrosenthal@jhu.edu> wrote:
> On Thu, 06 Oct 2011 17:23:21 -0300, David Bremner <david@tethera.net> wrote:
> > What doesn't work is searches for the whole namespace "notmuch search
> > tag:bremner.*" will return nothing, even though "notmuch search
> > tag:bremner.to-fix" does.
> 
> A simple shell way to do this would be
> 
>     notmuch search-tags | grep "^bremner\." | xargs -I {} notmuch search tag:{}
> 

Ah thanks, that is not so bad. It turns out to be literally a one line
change to add a query argument for notmuch-dump, _except_ that notmuch
dump already uses the first command line argument as an output file
name. I think I will start a seperate thread about that. If you want to
test, this works OK, except the output is put in a file named after the
query ;).

diff --git a/notmuch-dump.c b/notmuch-dump.c
index 7e7bc17..341207a 100644
--- a/notmuch-dump.c
+++ b/notmuch-dump.c
@@ -40,7 +40,7 @@ notmuch_dump_command (unused (void *ctx), int argc, char *argv[])
     if (notmuch == NULL)
 	return 1;
 
-    query = notmuch_query_create (notmuch, "");
+    query = notmuch_query_create (notmuch, argc > 0 ? argv[0] : "");
     if (query == NULL) {
 	fprintf (stderr, "Out of memory\n");
 	return 1;

^ permalink raw reply related	[flat|nested] 62+ messages in thread

* Re: tag sharing
  2011-10-06 14:18                     ` David Bremner
  2011-10-06 19:49                       ` Jesse Rosenthal
@ 2011-10-07 11:36                       ` Jesse Rosenthal
  2011-10-07 12:01                         ` Jesse Rosenthal
  1 sibling, 1 reply; 62+ messages in thread
From: Jesse Rosenthal @ 2011-10-07 11:36 UTC (permalink / raw)
  To: David Bremner, Jameson Graef Rollins, Notmuch Mail

On Thu, 06 Oct 2011 11:18:51 -0300, David Bremner <david@tethera.net> wrote:
Non-text part: multipart/signed
> On Thu, 06 Oct 2011 09:21:48 -0400, Jesse Rosenthal <jrosenthal@jhu.edu> wrote:
> > morning's project. In retrospect, I think the main issue was that I was
> > trying to figure out how history would be kept. By using git, though,
> > your idea would be that we get history for free, right?
> 
> Yeah. Of course, one would have to decide if the history of the current
> dump file format is intelligible, or if some alternative format should
> be used.

I've managed to reconstruct a bit of my thinking. I think it could work
with the current format if we went as follows. I also think we could use
git, but I'm not sure that wouldn't be overkill. Some of the steps are
in extreme slow motion, just to make sure we're on the same page. (I've
also replaced the real msg-ids to cut down on noise).

  1. David dumps the targeted messages (tags in namespace "my"), so we
     get a file like this:
      
      msg-id-1@example.1 (my.foo inbox)
      msg-id-2@example.2 (answered my.to-do inbox signed)

  2. David strips out everything but tags in the namespace and removes
     the namespace:

      msg-id-1@example.1 (foo)
      msg-id-2@example.2 (to-do)

  3. David makes it available, Jesse pulls.

  4. Jesse dumps the namespace he has associated with David ("bremner"):

      msg-id-3@example.3 (bremner.bar)
      msg-id-4@example.4 (bremner.bar unread)
      msg-id-1@example.1 (bremner.foo inbox)
      msg-id-5@example.5 (bremner.wishlist inbox)

  5. Jesse strips the tags:

      msg-id-3@example.3 (bar)
      msg-id-4@example.4 (bar)
      msg-id-1@example.1 (foo)
      msg-id-5@example.5 (wishlist)

  6. Jesse replaces this list with David's:

      msg-id-1@example.1 (foo)
      msg-id-2@example.2 (to-do)

  7. Jesse removes all tags with the "bremner" namespace from his
     database.

  8. Jesse adds the tags from the list in step (6), with the appropriate
     namespace, to his list of tags. The messages of interest now look like:

      msg-id-3@example.3 ()
      msg-id-4@example.4 (unread)
      msg-id-1@example.1 (bremner.foo inbox)
      msg-id-5@example.5 (inbox)
      msg-id-2@example.2 (bremner.to-do someothertag)

  9. Jesse runs `notmuch restore`

The reason I went through this slowly is to highlight the fact that the
only thing that needs to be recorded in diffs somehow (in git, let's
say) are the files in steps (5) and (6). So if we integrated this with
git, there would be something along the lines of a commit (on Jesse's
computer) in step (5) and then another commit (again on Jesse's
computer) in step (6). 

Note that we don't actually need (5) to do tag-sharing. The only reason
it's there is for keeping history.

I'm pretty sure that we don't need a commit on David's computer in step
(1), because what the history would record is when the tag-sharing
utility changed your tags, not when you did.

Note also that all we would really be asking git to do here is keep an
ordered collection of diffs of a single file. Honest question: since
this is the barest possible form of version control, is git necessary?
Some of the features, like commit messages, don't seem to fit well with
this model; and others, like branching, seem pretty useless. What's the
value added over just keeping a (compressed?) collection of diffs for
each namespace?

Best,
Jesse

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: tag sharing
  2011-10-07 11:36                       ` Jesse Rosenthal
@ 2011-10-07 12:01                         ` Jesse Rosenthal
  0 siblings, 0 replies; 62+ messages in thread
From: Jesse Rosenthal @ 2011-10-07 12:01 UTC (permalink / raw)
  To: David Bremner, Jameson Graef Rollins, Notmuch Mail

On Fri, 07 Oct 2011 07:36:30 -0400, Jesse Rosenthal <jrosenthal@jhu.edu> wrote:
> What's the value added over just keeping a (compressed?) collection of
> diffs for each namespace?

Okay -- please don't bother answering this part. It was early in the
morning, and I forgot some of the obvious advantages of real version
control (we can roll back to a previous moment, etc). We still don't
need most of what git offers, but if it's the best tool for keeping
track of the move from the file in step (5) to the file in step (6),
then sure, let's use it.

^ permalink raw reply	[flat|nested] 62+ messages in thread

end of thread, other threads:[~2011-10-07 12:01 UTC | newest]

Thread overview: 62+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-05-28 21:51 release-candidate/0.6 redux Jameson Graef Rollins
2011-05-28 21:51 ` [PATCH 01/25] fix check for libdir in ldconfig paths Jameson Graef Rollins
2011-05-28 21:51   ` [PATCH 02/25] add note about updating the debian symbols file to the RELEASE file Jameson Graef Rollins
2011-05-28 21:51     ` [PATCH 03/25] test: modify search-output test to use the new test_expect_equal_file function Jameson Graef Rollins
2011-05-28 21:51       ` [PATCH 04/25] test: move "Search for non-existent message prints nothing" to search-output, and add similar test for format=json Jameson Graef Rollins
2011-05-28 21:51         ` [PATCH 05/25] fix trailing newlines in notmuch search Jameson Graef Rollins
2011-05-28 21:51           ` [PATCH 06/25] test: move utf-8 subject search test from json to search test script Jameson Graef Rollins
2011-05-28 21:51             ` [PATCH 07/25] test: remove json test for search null result, since it's being more properly tested in search-output Jameson Graef Rollins
2011-05-28 21:51               ` [PATCH 08/25] create and set temporary home directory Jameson Graef Rollins
2011-05-28 21:51                 ` [PATCH 09/25] emacs: Define several faces for the crypto-status button Jameson Graef Rollins
2011-05-28 21:51                   ` [PATCH 10/25] Sanitize "Subject:" and "Author:" fields to not contain control characters in notmuch-search Jameson Graef Rollins
2011-05-28 21:51                     ` [PATCH 11/25] test: add test for sanitized notmuch-search output Jameson Graef Rollins
2011-05-28 21:51                       ` [PATCH 12/25] test: cleanup search-output test names (no functional change) Jameson Graef Rollins
2011-05-28 21:51                         ` [PATCH 13/25] emacs: Use "message-cited-text" instead of "message-cited-text-face" Jameson Graef Rollins
2011-05-28 21:51                           ` [PATCH 14/25] Fix old style notmuch-fcc-dirs configuration check Jameson Graef Rollins
2011-05-28 21:51                             ` [PATCH 15/25] Use message-field-value instead of message-fetch-field in FCC header setup Jameson Graef Rollins
2011-05-28 21:51                               ` [PATCH 16/25] lib/message-file: plug three memleaks Jameson Graef Rollins
2011-05-28 21:51                                 ` [PATCH 17/25] avoid segfault when calling sanitize_string() on NULL Jameson Graef Rollins
2011-05-28 21:51                                   ` [PATCH 18/25] Fix search output sanitization test Jameson Graef Rollins
2011-05-28 21:51                                     ` [PATCH 19/25] emacs: fix notmuch-show-part-button to not include newline Jameson Graef Rollins
2011-05-28 21:51                                       ` [PATCH 20/25] emacs: Don't always prompt for the "From" address when replying Jameson Graef Rollins
2011-05-28 21:51                                         ` [PATCH 21/25] emacs: Cleaner interface when prompting for sender address Jameson Graef Rollins
2011-05-28 21:51                                           ` [PATCH 22/25] test: fix test_expect_equal_file test to copy instead of mv test files Jameson Graef Rollins
2011-05-28 21:51                                             ` [PATCH 23/25] test: update emacs test to use test_expect_equal_file Jameson Graef Rollins
2011-05-28 21:51                                               ` [PATCH 24/25] test: modify multipart " Jameson Graef Rollins
2011-05-28 21:52                                                 ` [PATCH 25/25] Fix stdout stream grabbing in format_part_content_text Jameson Graef Rollins
2011-06-03 19:56                                                   ` Carl Worth
2011-06-03 21:26                                                     ` Jameson Graef Rollins
2011-06-03 22:38                                                       ` Carl Worth
2011-06-03 22:57                                                         ` Jameson Graef Rollins
2011-06-03 21:39                                                     ` Jameson Graef Rollins
2011-06-03 19:24                                   ` [PATCH 17/25] avoid segfault when calling sanitize_string() on NULL Carl Worth
2011-06-02  5:10                             ` [PATCH 14/25] Fix old style notmuch-fcc-dirs configuration check Carl Worth
2011-06-02  6:49                               ` Dmitry Kurochkin
2011-06-03 20:05                                 ` Carl Worth
2011-06-03 20:22                                   ` Dmitry Kurochkin
2011-06-03 21:03                                     ` Carl Worth
2011-06-23 22:22                                     ` Carl Worth
2011-06-23 22:58                                       ` Dmitry Kurochkin
2011-06-23 23:24                                         ` Carl Worth
2011-06-01 23:41               ` [PATCH 07/25] test: remove json test for search null result, since it's being more properly tested in search-output Carl Worth
2011-06-01 23:22   ` [PATCH 01/25] fix check for libdir in ldconfig paths Carl Worth
2011-06-01 23:27     ` Jameson Graef Rollins
2011-05-28 21:58 ` release-candidate/0.6 redux Jameson Graef Rollins
2011-05-29  2:49   ` Austin Clements
2011-05-31 18:43   ` Jameson Graef Rollins
2011-06-04  1:27     ` Carl Worth
2011-06-06  0:35       ` Jameson Graef Rollins
2011-06-06 12:17         ` Carl Worth
2011-06-06 16:28           ` tag sharing [was: Re: release-candidate/0.6 redux] Jameson Graef Rollins
2011-06-06 17:20             ` Jesse Rosenthal
2011-06-08 17:46               ` Jameson Graef Rollins
2011-06-08 19:18                 ` Jesse Rosenthal
2011-10-06 12:56                 ` tag sharing David Bremner
2011-10-06 13:21                   ` Jesse Rosenthal
2011-10-06 14:18                     ` David Bremner
2011-10-06 19:49                       ` Jesse Rosenthal
2011-10-06 20:23                         ` David Bremner
2011-10-06 20:40                           ` Jesse Rosenthal
2011-10-07  0:10                             ` David Bremner
2011-10-07 11:36                       ` Jesse Rosenthal
2011-10-07 12:01                         ` Jesse Rosenthal

Code repositories for project(s) associated with this public inbox

	https://yhetil.org/notmuch.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).