[PATCH] test: make script exit (1) if it "fails" to source (.) a file
authorTomi Ollila <tomi.ollila@iki.fi>
Thu, 6 Aug 2015 09:13:36 +0000 (12:13 +0300)
committerW. Trevor King <wking@tremily.us>
Sat, 20 Aug 2016 21:49:16 +0000 (14:49 -0700)
44/f3ff75b4ee2c645f28d3dbfe96b411bbe93067 [new file with mode: 0644]

diff --git a/44/f3ff75b4ee2c645f28d3dbfe96b411bbe93067 b/44/f3ff75b4ee2c645f28d3dbfe96b411bbe93067
new file mode 100644 (file)
index 0000000..71184f5
--- /dev/null
@@ -0,0 +1,1042 @@
+Return-Path: <too@guru-group.fi>\r
+X-Original-To: notmuch@notmuchmail.org\r
+Delivered-To: notmuch@notmuchmail.org\r
+Received: from localhost (localhost [127.0.0.1])\r
+ by arlo.cworth.org (Postfix) with ESMTP id BE3FC6DE00DF\r
+ for <notmuch@notmuchmail.org>; Thu,  6 Aug 2015 02:13:54 -0700 (PDT)\r
+X-Virus-Scanned: Debian amavisd-new at cworth.org\r
+X-Spam-Flag: NO\r
+X-Spam-Score: 0.288\r
+X-Spam-Level: \r
+X-Spam-Status: No, score=0.288 tagged_above=-999 required=5 tests=[AWL=0.828, \r
+ RP_MATCHES_RCVD=-0.55, T_HEADER_FROM_DIFFERENT_DOMAINS=0.01]\r
+ autolearn=disabled\r
+Received: from arlo.cworth.org ([127.0.0.1])\r
+ by localhost (arlo.cworth.org [127.0.0.1]) (amavisd-new, port 10024)\r
+ with ESMTP id R_Id2_iRnk6G for <notmuch@notmuchmail.org>;\r
+ Thu,  6 Aug 2015 02:13:52 -0700 (PDT)\r
+Received: from guru.guru-group.fi (guru.guru-group.fi [46.183.73.34])\r
+ by arlo.cworth.org (Postfix) with ESMTP id 65A106DE00DE\r
+ for <notmuch@notmuchmail.org>; Thu,  6 Aug 2015 02:13:51 -0700 (PDT)\r
+Received: by guru.guru-group.fi (Postfix, from userid 501)\r
+ id E75BB10009D; Thu,  6 Aug 2015 12:13:37 +0300 (EEST)\r
+From: Tomi Ollila <tomi.ollila@iki.fi>\r
+To: notmuch@notmuchmail.org\r
+Subject: [PATCH] test: make script exit (1) if it "fails" to source (.) a file\r
+Date: Thu,  6 Aug 2015 12:13:36 +0300\r
+Message-Id: <1438852416-32210-1-git-send-email-tomi.ollila@iki.fi>\r
+X-Mailer: git-send-email 2.0.0\r
+Cc: tomi.ollila@iki.fi\r
+X-BeenThere: notmuch@notmuchmail.org\r
+X-Mailman-Version: 2.1.18\r
+Precedence: list\r
+List-Id: "Use and development of the notmuch mail system."\r
+ <notmuch.notmuchmail.org>\r
+List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,\r
+ <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>\r
+List-Archive: <http://notmuchmail.org/pipermail/notmuch/>\r
+List-Post: <mailto:notmuch@notmuchmail.org>\r
+List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>\r
+List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,\r
+ <mailto:notmuch-request@notmuchmail.org?subject=subscribe>\r
+X-List-Received-Date: Thu, 06 Aug 2015 09:13:54 -0000\r
+\r
+The files (test) scripts source (with builtin command `.`) provides\r
+information which the scripts depend, and without the `source` to\r
+succeed allowing script to continue may lead to dangerous situations\r
+(e.g. rm -rf "${undefined_variable}"/*).\r
+\r
+At the end of all source (.) lines construct ' || exit 1' was added;\r
+In our case the script script will exit if it cannot find (or read) the\r
+file to be sourced. Additionally script would also exits if the last\r
+command of the sourced file exited nonzero.\r
+---\r
+\r
+\r
+I did ./test/T050-new.sh, and in T050-new.sh there is line\r
+`rm -rf "${MAIL_DIR}"/* "${MAIL_DIR}"/.notmuch`\r
+as the `test-lib.sh` did not reside in notmuch root directory,\r
+T050-new.sh could not read it -- but continued to execute that `rm`\r
+line w/o ${MAIL_DIR} defined...\r
+... I saw rm complaining it cannot remove files from /etc/ ... and /home/\r
+was next. I lost almost all of my files in my $HOME directory before\r
+I realized I have to press Ctrl-C\r
+\r
+\r
+ devel/gen-testdb.sh                           | 2 +-\r
+ performance-test/M00-new.sh                   | 2 +-\r
+ performance-test/M01-dump-restore.sh          | 2 +-\r
+ performance-test/T00-new.sh                   | 2 +-\r
+ performance-test/T01-dump-restore.sh          | 2 +-\r
+ performance-test/T02-tag.sh                   | 2 +-\r
+ performance-test/perf-test-lib.sh             | 4 ++--\r
+ test/README                                   | 2 +-\r
+ test/T000-basic.sh                            | 2 +-\r
+ test/T010-help-test.sh                        | 2 +-\r
+ test/T020-compact.sh                          | 2 +-\r
+ test/T030-config.sh                           | 2 +-\r
+ test/T040-setup.sh                            | 2 +-\r
+ test/T050-new.sh                              | 2 +-\r
+ test/T060-count.sh                            | 2 +-\r
+ test/T070-insert.sh                           | 2 +-\r
+ test/T080-search.sh                           | 2 +-\r
+ test/T090-search-output.sh                    | 2 +-\r
+ test/T095-address.sh                          | 2 +-\r
+ test/T100-search-by-folder.sh                 | 2 +-\r
+ test/T110-search-position-overlap-bug.sh      | 2 +-\r
+ test/T120-search-insufficient-from-quoting.sh | 2 +-\r
+ test/T130-search-limiting.sh                  | 2 +-\r
+ test/T140-excludes.sh                         | 2 +-\r
+ test/T150-tagging.sh                          | 2 +-\r
+ test/T160-json.sh                             | 2 +-\r
+ test/T170-sexp.sh                             | 2 +-\r
+ test/T180-text.sh                             | 2 +-\r
+ test/T190-multipart.sh                        | 2 +-\r
+ test/T200-thread-naming.sh                    | 2 +-\r
+ test/T205-author-naming.sh                    | 2 +-\r
+ test/T210-raw.sh                              | 2 +-\r
+ test/T220-reply.sh                            | 2 +-\r
+ test/T230-reply-to-sender.sh                  | 2 +-\r
+ test/T240-dump-restore.sh                     | 2 +-\r
+ test/T250-uuencode.sh                         | 2 +-\r
+ test/T260-thread-order.sh                     | 2 +-\r
+ test/T270-author-order.sh                     | 2 +-\r
+ test/T280-from-guessing.sh                    | 2 +-\r
+ test/T290-long-id.sh                          | 2 +-\r
+ test/T300-encoding.sh                         | 2 +-\r
+ test/T310-emacs.sh                            | 2 +-\r
+ test/T320-emacs-large-search-buffer.sh        | 2 +-\r
+ test/T330-emacs-subject-to-filename.sh        | 2 +-\r
+ test/T340-maildir-sync.sh                     | 2 +-\r
+ test/T350-crypto.sh                           | 2 +-\r
+ test/T360-symbol-hiding.sh                    | 2 +-\r
+ test/T370-search-folder-coherence.sh          | 2 +-\r
+ test/T380-atomicity.sh                        | 2 +-\r
+ test/T390-python.sh                           | 2 +-\r
+ test/T395-ruby.sh                             | 2 +-\r
+ test/T400-hooks.sh                            | 2 +-\r
+ test/T410-argument-parsing.sh                 | 2 +-\r
+ test/T420-emacs-test-functions.sh             | 2 +-\r
+ test/T430-emacs-address-cleaning.sh           | 2 +-\r
+ test/T440-emacs-hello.sh                      | 2 +-\r
+ test/T450-emacs-show.sh                       | 2 +-\r
+ test/T455-emacs-charsets.sh                   | 2 +-\r
+ test/T460-emacs-tree.sh                       | 2 +-\r
+ test/T470-missing-headers.sh                  | 2 +-\r
+ test/T480-hex-escaping.sh                     | 2 +-\r
+ test/T490-parse-time-string.sh                | 2 +-\r
+ test/T500-search-date.sh                      | 2 +-\r
+ test/T510-thread-replies.sh                   | 2 +-\r
+ test/T520-show.sh                             | 2 +-\r
+ test/T530-upgrade.sh                          | 2 +-\r
+ test/T550-db-features.sh                      | 2 +-\r
+ test/T560-lib-error.sh                        | 2 +-\r
+ test/test-lib-common.sh                       | 2 +-\r
+ test/test-lib.sh                              | 5 +++--\r
+ test/test-verbose                             | 2 +-\r
+ 71 files changed, 74 insertions(+), 73 deletions(-)\r
+\r
+diff --git a/devel/gen-testdb.sh b/devel/gen-testdb.sh\r
+index 621b31e..61ae48a 100755\r
+--- a/devel/gen-testdb.sh\r
++++ b/devel/gen-testdb.sh\r
+@@ -79,7 +79,7 @@ while getopts v:c:s: opt; do\r
+ done\r
+ shift `expr $OPTIND - 1`\r
\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ SHORT_CORPUS=$(basename ${CORPUS:-database})\r
+ DBNAME=${SHORT_CORPUS}${SUFFIX}\r
+diff --git a/performance-test/M00-new.sh b/performance-test/M00-new.sh\r
+index 99c3f52..a040a97 100755\r
+--- a/performance-test/M00-new.sh\r
++++ b/performance-test/M00-new.sh\r
+@@ -2,7 +2,7 @@\r
\r
+ test_description='notmuch new'\r
\r
+-. ./perf-test-lib.sh\r
++. ./perf-test-lib.sh || exit 1\r
\r
+ # ensure initial 'notmuch new' is run by memory_start\r
+ uncache_database\r
+diff --git a/performance-test/M01-dump-restore.sh b/performance-test/M01-dump-restore.sh\r
+index be5894a..8fea982 100755\r
+--- a/performance-test/M01-dump-restore.sh\r
++++ b/performance-test/M01-dump-restore.sh\r
+@@ -2,7 +2,7 @@\r
\r
+ test_description='dump and restore'\r
\r
+-. ./perf-test-lib.sh\r
++. ./perf-test-lib.sh || exit 1\r
\r
+ memory_start\r
\r
+diff --git a/performance-test/T00-new.sh b/performance-test/T00-new.sh\r
+index 553bb8b..b9f2115 100755\r
+--- a/performance-test/T00-new.sh\r
++++ b/performance-test/T00-new.sh\r
+@@ -2,7 +2,7 @@\r
\r
+ test_description='notmuch new'\r
\r
+-. ./perf-test-lib.sh\r
++. ./perf-test-lib.sh || exit 1\r
\r
+ uncache_database\r
\r
+diff --git a/performance-test/T01-dump-restore.sh b/performance-test/T01-dump-restore.sh\r
+index b2ff940..9cfd5cd 100755\r
+--- a/performance-test/T01-dump-restore.sh\r
++++ b/performance-test/T01-dump-restore.sh\r
+@@ -2,7 +2,7 @@\r
\r
+ test_description='dump and restore'\r
\r
+-. ./perf-test-lib.sh\r
++. ./perf-test-lib.sh || exit 1\r
\r
+ time_start\r
\r
+diff --git a/performance-test/T02-tag.sh b/performance-test/T02-tag.sh\r
+index 78ceccc..dacb50b 100755\r
+--- a/performance-test/T02-tag.sh\r
++++ b/performance-test/T02-tag.sh\r
+@@ -2,7 +2,7 @@\r
\r
+ test_description='tagging'\r
\r
+-. ./perf-test-lib.sh\r
++. ./perf-test-lib.sh || exit 1\r
\r
+ time_start\r
\r
+diff --git a/performance-test/perf-test-lib.sh b/performance-test/perf-test-lib.sh\r
+index 88601fc..00d2f1c 100644\r
+--- a/performance-test/perf-test-lib.sh\r
++++ b/performance-test/perf-test-lib.sh\r
+@@ -1,4 +1,4 @@\r
+-. ./version.sh\r
++. ./version.sh || exit 1\r
\r
+ corpus_size=large\r
\r
+@@ -25,7 +25,7 @@ do\r
+               echo "error: unknown performance test option '$1'" >&2; exit 1 ;;\r
+       esac\r
+ done\r
+-. ../test/test-lib-common.sh\r
++. ../test/test-lib-common.sh || exit 1\r
\r
+ set -e\r
\r
+diff --git a/test/README b/test/README\r
+index daf4160..ce403ce 100644\r
+--- a/test/README\r
++++ b/test/README\r
+@@ -138,7 +138,7 @@ Source 'test-lib.sh'\r
+ After assigning test_description, the test script should source\r
+ test-lib.sh like this:\r
\r
+-      . ./test-lib.sh\r
++      . ./test-lib.sh || exit 1\r
\r
+ This test harness library does the following things:\r
\r
+diff --git a/test/T000-basic.sh b/test/T000-basic.sh\r
+index ef64245..d6811bd 100755\r
+--- a/test/T000-basic.sh\r
++++ b/test/T000-basic.sh\r
+@@ -14,7 +14,7 @@ then\r
+       exit 1\r
+ fi\r
\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ ################################################################\r
+ # Test harness\r
+diff --git a/test/T010-help-test.sh b/test/T010-help-test.sh\r
+index d7266ff..c173237 100755\r
+--- a/test/T010-help-test.sh\r
++++ b/test/T010-help-test.sh\r
+@@ -1,7 +1,7 @@\r
+ #!/usr/bin/env bash\r
\r
+ test_description="online help"\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ test_expect_success 'notmuch --help' 'notmuch --help'\r
+ test_expect_success 'notmuch help' 'notmuch help'\r
+diff --git a/test/T020-compact.sh b/test/T020-compact.sh\r
+index 507f769..8b4dbbc 100755\r
+--- a/test/T020-compact.sh\r
++++ b/test/T020-compact.sh\r
+@@ -1,6 +1,6 @@\r
+ #!/usr/bin/env bash\r
+ test_description='"notmuch compact"'\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ add_message '[subject]=One'\r
+ add_message '[subject]=Two'\r
+diff --git a/test/T030-config.sh b/test/T030-config.sh\r
+index 7d14a85..f404908 100755\r
+--- a/test/T030-config.sh\r
++++ b/test/T030-config.sh\r
+@@ -1,7 +1,7 @@\r
+ #!/usr/bin/env bash\r
\r
+ test_description='"notmuch config"'\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ test_begin_subtest "Get string value"\r
+ test_expect_equal "$(notmuch config get user.name)" "Notmuch Test Suite"\r
+diff --git a/test/T040-setup.sh b/test/T040-setup.sh\r
+index 0e9f279..cf0c00b 100755\r
+--- a/test/T040-setup.sh\r
++++ b/test/T040-setup.sh\r
+@@ -1,7 +1,7 @@\r
+ #!/usr/bin/env bash\r
\r
+ test_description='"notmuch setup"'\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ test_begin_subtest "Notmuch new without a config suggests notmuch setup"\r
+ output=$(notmuch --config=new-notmuch-config new 2>&1)\r
+diff --git a/test/T050-new.sh b/test/T050-new.sh\r
+index ff1c354..6257392 100755\r
+--- a/test/T050-new.sh\r
++++ b/test/T050-new.sh\r
+@@ -1,6 +1,6 @@\r
+ #!/usr/bin/env bash\r
+ test_description='"notmuch new" in several variations'\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ test_begin_subtest "No new messages"\r
+ output=$(NOTMUCH_NEW --debug)\r
+diff --git a/test/T060-count.sh b/test/T060-count.sh\r
+index da86c8c..5ef3879 100755\r
+--- a/test/T060-count.sh\r
++++ b/test/T060-count.sh\r
+@@ -1,6 +1,6 @@\r
+ #!/usr/bin/env bash\r
+ test_description='"notmuch count" for messages and threads'\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ add_email_corpus\r
\r
+diff --git a/test/T070-insert.sh b/test/T070-insert.sh\r
+index 7e71c3b..e7ec6a6 100755\r
+--- a/test/T070-insert.sh\r
++++ b/test/T070-insert.sh\r
+@@ -1,6 +1,6 @@\r
+ #!/usr/bin/env bash\r
+ test_description='"notmuch insert"'\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ test_require_external_prereq gdb\r
\r
+diff --git a/test/T080-search.sh b/test/T080-search.sh\r
+index 05027fb..5e8b20c 100755\r
+--- a/test/T080-search.sh\r
++++ b/test/T080-search.sh\r
+@@ -1,6 +1,6 @@\r
+ #!/usr/bin/env bash\r
+ test_description='"notmuch search" in several variations'\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ add_email_corpus\r
\r
+diff --git a/test/T090-search-output.sh b/test/T090-search-output.sh\r
+index fe2ec9a..a28eaf2 100755\r
+--- a/test/T090-search-output.sh\r
++++ b/test/T090-search-output.sh\r
+@@ -1,6 +1,6 @@\r
+ #!/usr/bin/env bash\r
+ test_description='various settings for "notmuch search --output="'\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ add_email_corpus\r
\r
+diff --git a/test/T095-address.sh b/test/T095-address.sh\r
+index ed0cac7..8eecb2a 100755\r
+--- a/test/T095-address.sh\r
++++ b/test/T095-address.sh\r
+@@ -1,6 +1,6 @@\r
+ #!/usr/bin/env bash\r
+ test_description='"notmuch address" in several variants'\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ add_email_corpus\r
\r
+diff --git a/test/T100-search-by-folder.sh b/test/T100-search-by-folder.sh\r
+index 583bdf5..2844ec6 100755\r
+--- a/test/T100-search-by-folder.sh\r
++++ b/test/T100-search-by-folder.sh\r
+@@ -1,6 +1,6 @@\r
+ #!/usr/bin/env bash\r
+ test_description='"notmuch search" by folder: and path: (with variations)'\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ add_message '[dir]=bad' '[subject]="To the bone"'\r
+ add_message '[dir]=.' '[subject]="Top level"'\r
+diff --git a/test/T110-search-position-overlap-bug.sh b/test/T110-search-position-overlap-bug.sh\r
+index 5da6ad6..2a4238f 100755\r
+--- a/test/T110-search-position-overlap-bug.sh\r
++++ b/test/T110-search-position-overlap-bug.sh\r
+@@ -18,7 +18,7 @@\r
+ # id:3wd4o8wa7fx.fsf@testarossa.amd.com\r
\r
+ test_description='that notmuch does not overlap term positions'\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ add_message '[to]="a@b.c, x@y.z"'\r
\r
+diff --git a/test/T120-search-insufficient-from-quoting.sh b/test/T120-search-insufficient-from-quoting.sh\r
+index e83ea3d..4862d82 100755\r
+--- a/test/T120-search-insufficient-from-quoting.sh\r
++++ b/test/T120-search-insufficient-from-quoting.sh\r
+@@ -1,6 +1,6 @@\r
+ #!/usr/bin/env bash\r
+ test_description='messages with unquoted . in name'\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ add_message \\r
+   '[from]="Some.Name for Someone <bugs@quoting.com>"' \\r
+diff --git a/test/T130-search-limiting.sh b/test/T130-search-limiting.sh\r
+index 303762c..c8986f4 100755\r
+--- a/test/T130-search-limiting.sh\r
++++ b/test/T130-search-limiting.sh\r
+@@ -1,6 +1,6 @@\r
+ #!/usr/bin/env bash\r
+ test_description='"notmuch search" --offset and --limit parameters'\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ add_email_corpus\r
\r
+diff --git a/test/T140-excludes.sh b/test/T140-excludes.sh\r
+index 8bbbc2d..f91d4d7 100755\r
+--- a/test/T140-excludes.sh\r
++++ b/test/T140-excludes.sh\r
+@@ -1,6 +1,6 @@\r
+ #!/usr/bin/env bash\r
+ test_description='"notmuch search, count and show" with excludes in several variations'\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ # Generates a thread consisting of a top level message and 'length'\r
+ # replies. The subject of the top message 'subject: top message"\r
+diff --git a/test/T150-tagging.sh b/test/T150-tagging.sh\r
+index 4a2673d..821d393 100755\r
+--- a/test/T150-tagging.sh\r
++++ b/test/T150-tagging.sh\r
+@@ -1,6 +1,6 @@\r
+ #!/usr/bin/env bash\r
+ test_description='"notmuch tag"'\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ add_message '[subject]=One'\r
+ add_message '[subject]=Two'\r
+diff --git a/test/T160-json.sh b/test/T160-json.sh\r
+index c1cf649..b346f37 100755\r
+--- a/test/T160-json.sh\r
++++ b/test/T160-json.sh\r
+@@ -1,6 +1,6 @@\r
+ #!/usr/bin/env bash\r
+ test_description="--format=json output"\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ test_begin_subtest "Show message: json"\r
+ add_message "[subject]=\"json-show-subject\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" "[bcc]=\"test_suite+bcc@notmuchmail.org\"" "[reply-to]=\"test_suite+replyto@notmuchmail.org\"" "[body]=\"json-show-message\""\r
+diff --git a/test/T170-sexp.sh b/test/T170-sexp.sh\r
+index 667e319..800ebc6 100755\r
+--- a/test/T170-sexp.sh\r
++++ b/test/T170-sexp.sh\r
+@@ -1,6 +1,6 @@\r
+ #!/usr/bin/env bash\r
+ test_description="--format=sexp output"\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ test_begin_subtest "Show message: sexp"\r
+ add_message "[subject]=\"sexp-show-subject\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" "[bcc]=\"test_suite+bcc@notmuchmail.org\"" "[reply-to]=\"test_suite+replyto@notmuchmail.org\"" "[body]=\"sexp-show-message\""\r
+diff --git a/test/T180-text.sh b/test/T180-text.sh\r
+index b5ccefc..3a265db 100755\r
+--- a/test/T180-text.sh\r
++++ b/test/T180-text.sh\r
+@@ -1,6 +1,6 @@\r
+ #!/usr/bin/env bash\r
+ test_description="--format=text output"\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ test_begin_subtest "Show message: text"\r
+ add_message "[subject]=\"text-show-subject\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" "[body]=\"text-show-message\""\r
+diff --git a/test/T190-multipart.sh b/test/T190-multipart.sh\r
+index ad8d29e..7c4c9f7 100755\r
+--- a/test/T190-multipart.sh\r
++++ b/test/T190-multipart.sh\r
+@@ -1,6 +1,6 @@\r
+ #!/usr/bin/env bash\r
+ test_description="output of multipart message"\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ cat <<EOF > embedded_message\r
+ From: Carl Worth <cworth@cworth.org>\r
+diff --git a/test/T200-thread-naming.sh b/test/T200-thread-naming.sh\r
+index dcfc1b3..132c1d7 100755\r
+--- a/test/T200-thread-naming.sh\r
++++ b/test/T200-thread-naming.sh\r
+@@ -1,6 +1,6 @@\r
+ #!/usr/bin/env bash\r
+ test_description="naming of threads with changing subject"\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ test_begin_subtest "Initial thread name (oldest-first search)"\r
+ add_message '[subject]="thread-naming: Initial thread subject"' \\r
+diff --git a/test/T205-author-naming.sh b/test/T205-author-naming.sh\r
+index cb678ae..69d8dc5 100755\r
+--- a/test/T205-author-naming.sh\r
++++ b/test/T205-author-naming.sh\r
+@@ -1,6 +1,6 @@\r
+ #!/usr/bin/env bash\r
+ test_description="naming of authors with unusual addresses"\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ test_begin_subtest "Add author with empty quoted real name"\r
+ add_message '[subject]="author-naming: Initial thread subject"' \\r
+diff --git a/test/T210-raw.sh b/test/T210-raw.sh\r
+index daf5735..dfea2d1 100755\r
+--- a/test/T210-raw.sh\r
++++ b/test/T210-raw.sh\r
+@@ -1,7 +1,7 @@\r
+ #!/usr/bin/env bash\r
\r
+ test_description='notmuch show --format=raw'\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ add_message\r
+ add_message\r
+diff --git a/test/T220-reply.sh b/test/T220-reply.sh\r
+index b0d854a..30b78f6 100755\r
+--- a/test/T220-reply.sh\r
++++ b/test/T220-reply.sh\r
+@@ -1,6 +1,6 @@\r
+ #!/usr/bin/env bash\r
+ test_description="\"notmuch reply\" in several variations"\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ test_begin_subtest "Basic reply"\r
+ add_message '[from]="Sender <sender@example.com>"' \\r
+diff --git a/test/T230-reply-to-sender.sh b/test/T230-reply-to-sender.sh\r
+index 30e5e38..608334d 100755\r
+--- a/test/T230-reply-to-sender.sh\r
++++ b/test/T230-reply-to-sender.sh\r
+@@ -1,6 +1,6 @@\r
+ #!/usr/bin/env bash\r
+ test_description="\"notmuch reply --reply-to=sender\" in several variations"\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ test_begin_subtest "Basic reply-to-sender"\r
+ add_message '[from]="Sender <sender@example.com>"' \\r
+diff --git a/test/T240-dump-restore.sh b/test/T240-dump-restore.sh\r
+index efe463e..e6976ff 100755\r
+--- a/test/T240-dump-restore.sh\r
++++ b/test/T240-dump-restore.sh\r
+@@ -1,6 +1,6 @@\r
+ #!/usr/bin/env bash\r
+ test_description="\"notmuch dump\" and \"notmuch restore\""\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ add_email_corpus\r
\r
+diff --git a/test/T250-uuencode.sh b/test/T250-uuencode.sh\r
+index b3e1ac1..6f45d39 100755\r
+--- a/test/T250-uuencode.sh\r
++++ b/test/T250-uuencode.sh\r
+@@ -1,6 +1,6 @@\r
+ #!/usr/bin/env bash\r
+ test_description="handling of uuencoded data"\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ add_message [subject]=uuencodetest '[date]="Sat, 01 Jan 2000 12:00:00 -0000"' \\r
+ '[body]="This message is used to ensure that notmuch correctly handles a\r
+diff --git a/test/T260-thread-order.sh b/test/T260-thread-order.sh\r
+index 5239bd4..f720c99 100755\r
+--- a/test/T260-thread-order.sh\r
++++ b/test/T260-thread-order.sh\r
+@@ -1,6 +1,6 @@\r
+ #!/usr/bin/env bash\r
+ test_description="threading when messages received out of order"\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ # Generate all single-root four message thread structures.  We'll use\r
+ # this for multiple tests below.\r
+diff --git a/test/T270-author-order.sh b/test/T270-author-order.sh\r
+index 6ffeffc..9124ece 100755\r
+--- a/test/T270-author-order.sh\r
++++ b/test/T270-author-order.sh\r
+@@ -1,6 +1,6 @@\r
+ #!/usr/bin/env bash\r
+ test_description="author reordering;"\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ test_begin_subtest "Adding parent message"\r
+ generate_message [body]=findme [id]=new-parent-id [subject]=author-reorder-threadtest '[from]="User <user@example.com>"' '[date]="Sat, 01 Jan 2000 12:00:00 -0000"'\r
+diff --git a/test/T280-from-guessing.sh b/test/T280-from-guessing.sh\r
+index 6dfaa40..7c562fb 100755\r
+--- a/test/T280-from-guessing.sh\r
++++ b/test/T280-from-guessing.sh\r
+@@ -1,6 +1,6 @@\r
+ #!/usr/bin/env bash\r
+ test_description="From line heuristics (with multiple configured addresses)"\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ test_begin_subtest "Magic from guessing (nothing to go on)"\r
+ add_message '[from]="Sender <sender@example.com>"' \\r
+diff --git a/test/T290-long-id.sh b/test/T290-long-id.sh\r
+index 85e620f..1fb7c03 100755\r
+--- a/test/T290-long-id.sh\r
++++ b/test/T290-long-id.sh\r
+@@ -1,6 +1,6 @@\r
+ #!/usr/bin/env bash\r
+ test_description="messages with ridiculously-long message IDs"\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ test_begin_subtest "Referencing long ID before adding"\r
+ generate_message '[subject]="Reference of ridiculously-long message ID"' \\r
+diff --git a/test/T300-encoding.sh b/test/T300-encoding.sh\r
+index b6c86bf..8d201c7 100755\r
+--- a/test/T300-encoding.sh\r
++++ b/test/T300-encoding.sh\r
+@@ -1,6 +1,6 @@\r
+ #!/usr/bin/env bash\r
+ test_description="encoding issues"\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ test_begin_subtest "Message with text of unknown charset"\r
+ add_message '[content-type]="text/plain; charset=unknown-8bit"' \\r
+diff --git a/test/T310-emacs.sh b/test/T310-emacs.sh\r
+index d72799b..61bc369 100755\r
+--- a/test/T310-emacs.sh\r
++++ b/test/T310-emacs.sh\r
+@@ -1,7 +1,7 @@\r
+ #!/usr/bin/env bash\r
\r
+ test_description="emacs interface"\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ EXPECTED=$TEST_DIRECTORY/emacs.expected-output\r
\r
+diff --git a/test/T320-emacs-large-search-buffer.sh b/test/T320-emacs-large-search-buffer.sh\r
+index 8b1251f..3fd6958 100755\r
+--- a/test/T320-emacs-large-search-buffer.sh\r
++++ b/test/T320-emacs-large-search-buffer.sh\r
+@@ -1,6 +1,6 @@\r
+ #!/usr/bin/env bash\r
+ test_description="Emacs with large search results buffer"\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ x=xxxxxxxxxx # 10\r
+ x=$x$x$x$x$x$x$x$x$x$x # 100\r
+diff --git a/test/T330-emacs-subject-to-filename.sh b/test/T330-emacs-subject-to-filename.sh\r
+index 230c324..517fa83 100755\r
+--- a/test/T330-emacs-subject-to-filename.sh\r
++++ b/test/T330-emacs-subject-to-filename.sh\r
+@@ -1,7 +1,7 @@\r
+ #!/usr/bin/env bash\r
\r
+ test_description="emacs: mail subject to filename"\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ # emacs server can't be started in a child process with $(test_emacs ...)\r
+ test_emacs '(ignore)' > /dev/null\r
+diff --git a/test/T340-maildir-sync.sh b/test/T340-maildir-sync.sh\r
+index 3186e70..efeaa3f 100755\r
+--- a/test/T340-maildir-sync.sh\r
++++ b/test/T340-maildir-sync.sh\r
+@@ -2,7 +2,7 @@\r
\r
+ test_description="maildir synchronization"\r
\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ # Create the expected maildir structure\r
+ mkdir $MAIL_DIR/cur\r
+diff --git a/test/T350-crypto.sh b/test/T350-crypto.sh\r
+index 477b397..3656cce 100755\r
+--- a/test/T350-crypto.sh\r
++++ b/test/T350-crypto.sh\r
+@@ -5,7 +5,7 @@\r
+ # - verification of signatures from expired/revoked keys\r
\r
+ test_description='PGP/MIME signature verification and decryption'\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ add_gnupg_home ()\r
+ {\r
+diff --git a/test/T360-symbol-hiding.sh b/test/T360-symbol-hiding.sh\r
+index 98e4d4d..4ec0ea6 100755\r
+--- a/test/T360-symbol-hiding.sh\r
++++ b/test/T360-symbol-hiding.sh\r
+@@ -9,7 +9,7 @@\r
\r
+ test_description='exception symbol hiding'\r
\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ test_begin_subtest 'running test' run_test\r
+ mkdir -p ${PWD}/fakedb/.notmuch\r
+diff --git a/test/T370-search-folder-coherence.sh b/test/T370-search-folder-coherence.sh\r
+index 5e72a6c..da4ec2b 100755\r
+--- a/test/T370-search-folder-coherence.sh\r
++++ b/test/T370-search-folder-coherence.sh\r
+@@ -1,6 +1,6 @@\r
+ #!/usr/bin/env bash\r
+ test_description='folder tags removed and added through file renames remain consistent'\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ test_begin_subtest "No new messages"\r
+ output=$(NOTMUCH_NEW)\r
+diff --git a/test/T380-atomicity.sh b/test/T380-atomicity.sh\r
+index ee1e2f4..845dfde 100755\r
+--- a/test/T380-atomicity.sh\r
++++ b/test/T380-atomicity.sh\r
+@@ -1,6 +1,6 @@\r
+ #!/usr/bin/env bash\r
+ test_description='atomicity'\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ # This script tests the effects of killing and restarting "notmuch\r
+ # new" at arbitrary points.  If notmuch new is properly atomic, the\r
+diff --git a/test/T390-python.sh b/test/T390-python.sh\r
+index c3f24f7..4726bc3 100755\r
+--- a/test/T390-python.sh\r
++++ b/test/T390-python.sh\r
+@@ -1,6 +1,6 @@\r
+ #!/usr/bin/env bash\r
+ test_description="python bindings"\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ test_require_external_prereq ${NOTMUCH_PYTHON}\r
\r
+diff --git a/test/T395-ruby.sh b/test/T395-ruby.sh\r
+index 8b8e6d2..d5cade8 100755\r
+--- a/test/T395-ruby.sh\r
++++ b/test/T395-ruby.sh\r
+@@ -1,6 +1,6 @@\r
+ #!/usr/bin/env bash\r
+ test_description="ruby bindings"\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ if [ "${NOTMUCH_HAVE_RUBY_DEV}" = "0" ]; then\r
+     test_subtest_missing_external_prereq_["ruby development files"]=t\r
+diff --git a/test/T400-hooks.sh b/test/T400-hooks.sh\r
+index 1adab2f..ed11913 100755\r
+--- a/test/T400-hooks.sh\r
++++ b/test/T400-hooks.sh\r
+@@ -1,6 +1,6 @@\r
+ #!/usr/bin/env bash\r
+ test_description='hooks'\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ HOOK_DIR=${MAIL_DIR}/.notmuch/hooks\r
\r
+diff --git a/test/T410-argument-parsing.sh b/test/T410-argument-parsing.sh\r
+index 2e5d7ae..f8ff8ff 100755\r
+--- a/test/T410-argument-parsing.sh\r
++++ b/test/T410-argument-parsing.sh\r
+@@ -1,6 +1,6 @@\r
+ #!/usr/bin/env bash\r
+ test_description="argument parsing"\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ test_begin_subtest "sanity check"\r
+ $TEST_DIRECTORY/arg-test  pos1  --keyword=one --string=foo pos2 --int=7 --flag=one --flag=three > OUTPUT\r
+diff --git a/test/T420-emacs-test-functions.sh b/test/T420-emacs-test-functions.sh\r
+index ca4a798..955c5f7 100755\r
+--- a/test/T420-emacs-test-functions.sh\r
++++ b/test/T420-emacs-test-functions.sh\r
+@@ -1,7 +1,7 @@\r
+ #!/usr/bin/env bash\r
\r
+ test_description="emacs test function sanity"\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ test_begin_subtest "emacs test function sanity"\r
+ test_emacs_expect_t 't'\r
+diff --git a/test/T430-emacs-address-cleaning.sh b/test/T430-emacs-address-cleaning.sh\r
+index 0472346..664b79d 100755\r
+--- a/test/T430-emacs-address-cleaning.sh\r
++++ b/test/T430-emacs-address-cleaning.sh\r
+@@ -1,7 +1,7 @@\r
+ #!/usr/bin/env bash\r
\r
+ test_description="emacs address cleaning"\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ test_begin_subtest "notmuch-test-address-clean part 1"\r
+ test_emacs_expect_t '(notmuch-test-address-cleaning-1)'\r
+diff --git a/test/T440-emacs-hello.sh b/test/T440-emacs-hello.sh\r
+index f729616..a8ed228 100755\r
+--- a/test/T440-emacs-hello.sh\r
++++ b/test/T440-emacs-hello.sh\r
+@@ -1,7 +1,7 @@\r
+ #!/usr/bin/env bash\r
\r
+ test_description="emacs notmuch-hello view"\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ EXPECTED=$TEST_DIRECTORY/emacs.expected-output\r
\r
+diff --git a/test/T450-emacs-show.sh b/test/T450-emacs-show.sh\r
+index bfcd5ef..0342a87 100755\r
+--- a/test/T450-emacs-show.sh\r
++++ b/test/T450-emacs-show.sh\r
+@@ -1,7 +1,7 @@\r
+ #!/usr/bin/env bash\r
\r
+ test_description="emacs notmuch-show view"\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ EXPECTED=$TEST_DIRECTORY/emacs-show.expected-output\r
\r
+diff --git a/test/T455-emacs-charsets.sh b/test/T455-emacs-charsets.sh\r
+index 3078f9c..7624fa4 100755\r
+--- a/test/T455-emacs-charsets.sh\r
++++ b/test/T455-emacs-charsets.sh\r
+@@ -1,7 +1,7 @@\r
+ #!/usr/bin/env bash\r
\r
+ test_description="emacs notmuch-show charset handling"\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
\r
+ UTF8_YEN=$'\xef\xbf\xa5'\r
+diff --git a/test/T460-emacs-tree.sh b/test/T460-emacs-tree.sh\r
+index 8e9f37c..b6181b5 100755\r
+--- a/test/T460-emacs-tree.sh\r
++++ b/test/T460-emacs-tree.sh\r
+@@ -1,7 +1,7 @@\r
+ #!/usr/bin/env bash\r
\r
+ test_description="emacs tree view interface"\r
+-. test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ EXPECTED=$TEST_DIRECTORY/tree.expected-output\r
\r
+diff --git a/test/T470-missing-headers.sh b/test/T470-missing-headers.sh\r
+index cb38301..e256c10 100755\r
+--- a/test/T470-missing-headers.sh\r
++++ b/test/T470-missing-headers.sh\r
+@@ -1,6 +1,6 @@\r
+ #!/usr/bin/env bash\r
+ test_description='messages with missing headers'\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ # Notmuch requires at least one of from, subject, or to or it will\r
+ # ignore the file.  Generate two messages so that together they cover\r
+diff --git a/test/T480-hex-escaping.sh b/test/T480-hex-escaping.sh\r
+index ad50e1b..10527b1 100755\r
+--- a/test/T480-hex-escaping.sh\r
++++ b/test/T480-hex-escaping.sh\r
+@@ -1,6 +1,6 @@\r
+ #!/usr/bin/env bash\r
+ test_description="hex encoding and decoding"\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ test_begin_subtest "round trip"\r
+ find $TEST_DIRECTORY/corpus -type f -print | sort | xargs cat > EXPECTED\r
+diff --git a/test/T490-parse-time-string.sh b/test/T490-parse-time-string.sh\r
+index 6aa9d43..ab90fcc 100755\r
+--- a/test/T490-parse-time-string.sh\r
++++ b/test/T490-parse-time-string.sh\r
+@@ -1,6 +1,6 @@\r
+ #!/usr/bin/env bash\r
+ test_description="date/time parser module"\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ # Sanity/smoke tests for the date/time parser independent of notmuch\r
\r
+diff --git a/test/T500-search-date.sh b/test/T500-search-date.sh\r
+index 70bcf34..b28496b 100755\r
+--- a/test/T500-search-date.sh\r
++++ b/test/T500-search-date.sh\r
+@@ -1,6 +1,6 @@\r
+ #!/usr/bin/env bash\r
+ test_description="date:since..until queries"\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ add_email_corpus\r
\r
+diff --git a/test/T510-thread-replies.sh b/test/T510-thread-replies.sh\r
+index 1392fbe..5ab066a 100755\r
+--- a/test/T510-thread-replies.sh\r
++++ b/test/T510-thread-replies.sh\r
+@@ -9,7 +9,7 @@ test_description='test of proper handling of in-reply-to and references headers'\r
+ # database is constructed properly, even in the presence of\r
+ # non-RFC-compliant headers'\r
\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ test_begin_subtest "Use References when In-Reply-To is broken"\r
+ add_message '[id]="foo@one.com"' \\r
+diff --git a/test/T520-show.sh b/test/T520-show.sh\r
+index 0657c99..fb232a3 100755\r
+--- a/test/T520-show.sh\r
++++ b/test/T520-show.sh\r
+@@ -1,7 +1,7 @@\r
+ #!/usr/bin/env bash\r
+ test_description='"notmuch show"'\r
\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ add_email_corpus\r
\r
+diff --git a/test/T530-upgrade.sh b/test/T530-upgrade.sh\r
+index 6b42a69..7faf03d 100755\r
+--- a/test/T530-upgrade.sh\r
++++ b/test/T530-upgrade.sh\r
+@@ -1,7 +1,7 @@\r
+ #!/usr/bin/env bash\r
+ test_description="database upgrade"\r
\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ dbtarball=database-v1.tar.xz\r
\r
+diff --git a/test/T550-db-features.sh b/test/T550-db-features.sh\r
+index 5569768..f94a660 100755\r
+--- a/test/T550-db-features.sh\r
++++ b/test/T550-db-features.sh\r
+@@ -1,7 +1,7 @@\r
+ #!/usr/bin/env bash\r
+ test_description="database version and feature compatibility"\r
\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ test_begin_subtest "future database versions abort open"\r
+ ${TEST_DIRECTORY}/make-db-version ${MAIL_DIR} 9999 ""\r
+diff --git a/test/T560-lib-error.sh b/test/T560-lib-error.sh\r
+index b1e77aa..1ef4ff2 100755\r
+--- a/test/T560-lib-error.sh\r
++++ b/test/T560-lib-error.sh\r
+@@ -1,7 +1,7 @@\r
+ #!/usr/bin/env bash\r
+ test_description="error reporting for library"\r
\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ backup_database () {\r
+     rm -rf notmuch-dir-backup\r
+diff --git a/test/test-lib-common.sh b/test/test-lib-common.sh\r
+index f99ed11..b1fc33d 100644\r
+--- a/test/test-lib-common.sh\r
++++ b/test/test-lib-common.sh\r
+@@ -40,7 +40,7 @@ TEST_DIRECTORY=$(pwd)\r
+ notmuch_path=`find_notmuch_path "$TEST_DIRECTORY"`\r
\r
+ # configure output\r
+-. $notmuch_path/sh.config\r
++. $notmuch_path/sh.config || exit 1\r
\r
+ if test -n "$valgrind"\r
+ then\r
+diff --git a/test/test-lib.sh b/test/test-lib.sh\r
+index db3b6aa..a1620e5 100644\r
+--- a/test/test-lib.sh\r
++++ b/test/test-lib.sh\r
+@@ -96,7 +96,8 @@ _x32="$_x04$_x04$_x04$_x04$_x04$_x04$_x04$_x04"\r
+ # test_description='Description of this test...\r
+ # This test checks if command xyzzy does the right thing...\r
+ # '\r
+-# . ./test-lib.sh\r
++# . ./test-lib.sh || exit 1\r
++\r
+ [ "x$ORIGINAL_TERM" != "xdumb" ] && (\r
+               TERM=$ORIGINAL_TERM &&\r
+               export TERM &&\r
+@@ -1223,7 +1224,7 @@ test_init_ () {\r
+ }\r
\r
\r
+-. ./test-lib-common.sh\r
++. ./test-lib-common.sh || exit 1\r
\r
+ emacs_generate_script\r
\r
+diff --git a/test/test-verbose b/test/test-verbose\r
+index 4100c05..1723ce6 100755\r
+--- a/test/test-verbose\r
++++ b/test/test-verbose\r
+@@ -2,7 +2,7 @@\r
\r
+ test_description='the verbosity options of the test framework itself.'\r
\r
+-. ./test-lib.sh\r
++. ./test-lib.sh || exit 1\r
\r
+ test_expect_success 'print something in test_expect_success and pass' '\r
+   echo "hello stdout" &&\r
+-- \r
+2.4.1\r
+\r