From 28183a4aa1c5615f943285df6301ed5f84bc6138 Mon Sep 17 00:00:00 2001 From: Ken Hornstein Date: Sat, 24 Mar 2012 02:08:03 -0400 Subject: [PATCH] Sigh. Turns out last change broke a few tests, because it trimmed the newline on the "body" component. Ignore that and the text component as well for trimming. Also create some tests for the repl changes. --- Makefile.am | 4 ++- sbr/fmt_scan.c | 20 ++++++++----- test/repl/test-multicomp | 62 +++++++++++++++++++++++++++++++++++++++ test/repl/test-trailing-newline | 46 +++++++++++++++++++++++++++++ 4 files changed, 124 insertions(+), 8 deletions(-) create mode 100755 test/repl/test-multicomp create mode 100755 test/repl/test-trailing-newline diff --git a/Makefile.am b/Makefile.am index c8006a9..057e37a 100644 --- a/Makefile.am +++ b/Makefile.am @@ -63,7 +63,9 @@ TESTS = test/bad-input/test-header \ test/post/test-post-multifrom test/post/test-post-envelope \ test/post/test-post-group \ test/refile/test-refile \ - test/repl/test-if-str test/scan/test-scan \ + test/repl/test-if-str test/repl/test-trailing-newline \ + test/repl/test-multicomp \ + test/scan/test-scan \ test/sequences/test-flist test/sequences/test-mark \ test/whatnow/test-attach-detach test/whatnow/test-cd \ test/whatnow/test-ls test/whom/test-whom \ diff --git a/sbr/fmt_scan.c b/sbr/fmt_scan.c index b194235..5e4bc88 100644 --- a/sbr/fmt_scan.c +++ b/sbr/fmt_scan.c @@ -318,14 +318,20 @@ fmt_scan (struct format *format, char *scanl, int width, int *dat) case FT_LS_COMP: case FT_LS_DECODECOMP: /* - * Trim these components of any newlines + * Trim these components of any newlines. + * + * But don't trim the "body" and "text" components. */ - if (! (fmt->f_comp->c_flags & CF_TRIMMED) && - fmt->f_comp->c_text) { - int i = strlen(fmt->f_comp->c_text); - if (fmt->f_comp->c_text[i - 1] == '\n') - fmt->f_comp->c_text[i - 1] = '\0'; - fmt->f_comp->c_flags |= CF_TRIMMED; + + comp = fmt->f_comp; + + if (! (comp->c_flags & CF_TRIMMED) && comp->c_text) { + i = strlen(comp->c_text); + if (comp->c_text[i - 1] == '\n' && + strcmp(comp->c_name, "body") != 0 && + strcmp(comp->c_name, "text") != 0) + comp->c_text[i - 1] = '\0'; + comp->c_flags |= CF_TRIMMED; } break; } diff --git a/test/repl/test-multicomp b/test/repl/test-multicomp new file mode 100755 index 0000000..ed5f97d --- /dev/null +++ b/test/repl/test-multicomp @@ -0,0 +1,62 @@ +#!/bin/sh +# +# See if we handle multiple components of the same name correctly. +# + +set -e + +if test -z "${MH_OBJ_DIR}"; then + srcdir=`dirname "$0"`/../.. + MH_OBJ_DIR=`cd "$srcdir" && pwd`; export MH_OBJ_DIR +fi + +. "$MH_OBJ_DIR/test/common.sh" + +setup_test + +# create test replcomps +form="$MH_TEST_DIR/$$.replcomps" +cat > "$form" < +%(lit)%(formataddr %<{reply-to}%?{from}%>)\ +%<(nonnull)%(void(width))%(putaddr To: )\n%>\ +%(lit)%(formataddr{cc})\ +%<(nonnull)%(void(width))%(putaddr cc: )\n%>\ +%<{subject}Subject: Re: %{subject}\n%>\ +-------- +EOF + +cat > "${MH_TEST_DIR}/Mail/inbox/11" < +To: Nowhere User +cc: Mister User One +Subject: This is a subject +cc: Mister User Two +Subject: that got continued on another line +Date: 28 Sep 2006 03:04:05 -0400 + +This is a new test message +EOF + +expected="$MH_TEST_DIR/$$.expected" +actual="$MH_TEST_DIR/Mail/draft" + +cat > "$expected" < +To: Test1 +cc: Mister User One , + Mister User Two +Subject: Re: This is a subject that got continued on another line +-------- +Test1 writes: +> This is a new test message +EOF + +repl -editor true -cc cc -format -form $form -width 72 -nowhatnowproc 11 \ + || exit 1 + +check "$expected" "$actual" + +test ${failed:-0} -eq 0 && rm "$form" + +exit $failed diff --git a/test/repl/test-trailing-newline b/test/repl/test-trailing-newline new file mode 100755 index 0000000..20d7637 --- /dev/null +++ b/test/repl/test-trailing-newline @@ -0,0 +1,46 @@ +#!/bin/sh +# +# Test to make sure repl doesn't put trailing spaces at the end of components +# (like subject) +# + +set -e + +if test -z "${MH_OBJ_DIR}"; then + srcdir=`dirname "$0"`/../.. + MH_OBJ_DIR=`cd "$srcdir" && pwd`; export MH_OBJ_DIR +fi + +. "$MH_OBJ_DIR/test/common.sh" + +setup_test + +# create test replcomps +form="$MH_TEST_DIR/$$.replcomps" +cat > "$form" < +%(lit)%(formataddr %<{reply-to}%?{from}%>)\ +%<(nonnull)%(void(width))%(putaddr To: )\n%>\ +%<{subject}Subject: Re: %{subject}\n%>\ +-------- +EOF + +expected="$MH_TEST_DIR/$$.expected" +actual="$MH_TEST_DIR/Mail/draft" + +cat > "$expected" < +To: Test1 +Subject: Re: Testing message 1 +-------- +Test1 writes: +> This is message number 1 +EOF + +repl -editor true -format -form $form -nowhatnowproc 1 || exit 1 + +check "$expected" "$actual" + +test ${failed:-0} -eq 0 && rm "$form" + +exit $failed -- 1.7.10.4