SubmittingPatches: document how to reference previous commits
[gitweb.git] / t / t4014-format-patch.sh
index ae25353a14234b2f7471bfdcafb0a0cd4bbec909..3b99434e3e6f534efe44850fef3d1d77c04f5856 100755 (executable)
@@ -43,7 +43,7 @@ test_expect_success setup '
 test_expect_success "format-patch --ignore-if-in-upstream" '
 
        git format-patch --stdout master..side >patch0 &&
-       cnt=`grep "^From " patch0 | wc -l` &&
+       cnt=$(grep "^From " patch0 | wc -l) &&
        test $cnt = 3
 
 '
@@ -52,11 +52,19 @@ test_expect_success "format-patch --ignore-if-in-upstream" '
 
        git format-patch --stdout \
                --ignore-if-in-upstream master..side >patch1 &&
-       cnt=`grep "^From " patch1 | wc -l` &&
+       cnt=$(grep "^From " patch1 | wc -l) &&
        test $cnt = 2
 
 '
 
+test_expect_success "format-patch --ignore-if-in-upstream handles tags" '
+       git tag -a v1 -m tag side &&
+       git tag -a v2 -m tag master &&
+       git format-patch --stdout --ignore-if-in-upstream v2..v1 >patch1 &&
+       cnt=$(grep "^From " patch1 | wc -l) &&
+       test $cnt = 2
+'
+
 test_expect_success "format-patch doesn't consider merge commits" '
 
        git checkout -b slave master &&
@@ -69,7 +77,7 @@ test_expect_success "format-patch doesn't consider merge commits" '
        git checkout -b merger master &&
        test_tick &&
        git merge --no-ff slave &&
-       cnt=`git format-patch -3 --stdout | grep "^From " | wc -l` &&
+       cnt=$(git format-patch -3 --stdout | grep "^From " | wc -l) &&
        test $cnt = 3
 '
 
@@ -77,7 +85,7 @@ test_expect_success "format-patch result applies" '
 
        git checkout -b rebuild-0 master &&
        git am -3 patch0 &&
-       cnt=`git rev-list master.. | wc -l` &&
+       cnt=$(git rev-list master.. | wc -l) &&
        test $cnt = 2
 '
 
@@ -85,7 +93,7 @@ test_expect_success "format-patch --ignore-if-in-upstream result applies" '
 
        git checkout -b rebuild-1 master &&
        git am -3 patch1 &&
-       cnt=`git rev-list master.. | wc -l` &&
+       cnt=$(git rev-list master.. | wc -l) &&
        test $cnt = 2
 '
 
@@ -802,7 +810,7 @@ test_expect_success '--no-signature suppresses format.signaturefile ' '
 '
 
 test_expect_success '--signature-file overrides format.signaturefile' '
-       cat >other-mail-signature <<-\EOF
+       cat >other-mail-signature <<-\EOF &&
        Use this other signature instead of mail-signature.
        EOF
        test_config format.signaturefile mail-signature &&
@@ -1423,4 +1431,33 @@ test_expect_success 'cover letter auto user override' '
        test_line_count = 2 list
 '
 
+test_expect_success 'format-patch --zero-commit' '
+       git format-patch --zero-commit --stdout v2..v1 >patch2 &&
+       grep "^From " patch2 | sort | uniq >actual &&
+       echo "From $_z40 Mon Sep 17 00:00:00 2001" >expect &&
+       test_cmp expect actual
+'
+
+test_expect_success 'From line has expected format' '
+       git format-patch --stdout v2..v1 >patch2 &&
+       grep "^From " patch2 >from &&
+       grep "^From $_x40 Mon Sep 17 00:00:00 2001$" patch2 >filtered &&
+       test_cmp from filtered
+'
+
+test_expect_success 'format-patch format.outputDirectory option' '
+       test_config format.outputDirectory patches &&
+       rm -fr patches &&
+       git format-patch master..side &&
+       test $(git rev-list master..side | wc -l) -eq $(ls patches | wc -l)
+'
+
+test_expect_success 'format-patch -o overrides format.outputDirectory' '
+       test_config format.outputDirectory patches &&
+       rm -fr patches patchset &&
+       git format-patch master..side -o patchset &&
+       test_path_is_missing patches &&
+       test_path_is_dir patchset
+'
+
 test_done