more war on "sleep" in tests
[gitweb.git] / t / t3301-notes.sh
index 9393a25511f46632763c374fec700c3eb446509e..1e34f4836f4840b1cd30fdc635e56e50e4c669df 100755 (executable)
@@ -16,7 +16,7 @@ VISUAL=./fake_editor.sh
 export VISUAL
 
 test_expect_success 'cannot annotate non-existing HEAD' '
-       ! MSG=3 git notes edit
+       (MSG=3 && export MSG && test_must_fail git notes edit)
 '
 
 test_expect_success setup '
@@ -31,8 +31,27 @@ test_expect_success setup '
 '
 
 test_expect_success 'need valid notes ref' '
-       ! MSG=1 GIT_NOTES_REF='/' git notes edit &&
-       ! MSG=2 GIT_NOTES_REF='/' git notes show
+       (MSG=1 GIT_NOTES_REF=/ && export MSG GIT_NOTES_REF &&
+        test_must_fail git notes edit) &&
+       (MSG=2 GIT_NOTES_REF=/ && export MSG GIT_NOTES_REF &&
+        test_must_fail git notes show)
+'
+
+test_expect_success 'refusing to edit in refs/heads/' '
+       (MSG=1 GIT_NOTES_REF=refs/heads/bogus &&
+        export MSG GIT_NOTES_REF &&
+        test_must_fail git notes edit)
+'
+
+test_expect_success 'refusing to edit in refs/remotes/' '
+       (MSG=1 GIT_NOTES_REF=refs/remotes/bogus &&
+        export MSG GIT_NOTES_REF &&
+        test_must_fail git notes edit)
+'
+
+# 1 indicates caught gracefully by die, 128 means git-show barked
+test_expect_success 'handle empty notes gracefully' '
+       git notes show ; test 1 = $?
 '
 
 test_expect_success 'create notes' '
@@ -42,7 +61,7 @@ test_expect_success 'create notes' '
        test 1 = $(git ls-tree refs/notes/commits | wc -l) &&
        test b1 = $(git notes show) &&
        git show HEAD^ &&
-       ! git notes show HEAD^
+       test_must_fail git notes show HEAD^
 '
 
 cat > expect << EOF
@@ -91,5 +110,41 @@ test_expect_success 'show multi-line notes' '
        git log -2 > output &&
        test_cmp expect-multiline output
 '
+test_expect_success 'create -m and -F notes (setup)' '
+       : > a4 &&
+       git add a4 &&
+       test_tick &&
+       git commit -m 4th &&
+       echo "xyzzy" > note5 &&
+       git notes edit -m spam -F note5 -m "foo
+bar
+baz"
+'
+
+whitespace="    "
+cat > expect-m-and-F << EOF
+commit 15023535574ded8b1a89052b32673f84cf9582b8
+Author: A U Thor <author@example.com>
+Date:   Thu Apr 7 15:16:13 2005 -0700
+
+    4th
+
+Notes:
+    spam
+$whitespace
+    xyzzy
+$whitespace
+    foo
+    bar
+    baz
+EOF
+
+printf "\n" >> expect-m-and-F
+cat expect-multiline >> expect-m-and-F
+
+test_expect_success 'show -m and -F notes' '
+       git log -3 > output &&
+       test_cmp expect-m-and-F output
+'
 
 test_done