]> git.ipfire.org Git - thirdparty/git.git/blobdiff - t/t4014-format-patch.sh
Merge branch 'dl/checkout-p-merge-base'
[thirdparty/git.git] / t / t4014-format-patch.sh
index 294e76c860cf29103422657f5840ef4ce0723812..c5e5e0da3feef439415dbf9cfd235140eba7d0d9 100755 (executable)
@@ -313,6 +313,60 @@ test_expect_success 'multiple files' '
        ls patches/0001-Side-changes-1.patch patches/0002-Side-changes-2.patch patches/0003-Side-changes-3-with-n-backslash-n-in-it.patch
 '
 
+test_expect_success 'filename length limit' '
+       test_when_finished "rm -f 000*" &&
+       rm -rf 000[1-9]-*.patch &&
+       for len in 15 25 35
+       do
+               git format-patch --filename-max-length=$len -3 side &&
+               max=$(
+                       for patch in 000[1-9]-*.patch
+                       do
+                               echo "$patch" | wc -c
+                       done |
+                       sort -nr |
+                       head -n 1
+               ) &&
+               test $max -le $len || return 1
+       done
+'
+
+test_expect_success 'filename length limit from config' '
+       test_when_finished "rm -f 000*" &&
+       rm -rf 000[1-9]-*.patch &&
+       for len in 15 25 35
+       do
+               git -c format.filenameMaxLength=$len format-patch -3 side &&
+               max=$(
+                       for patch in 000[1-9]-*.patch
+                       do
+                               echo "$patch" | wc -c
+                       done |
+                       sort -nr |
+                       head -n 1
+               ) &&
+               test $max -le $len || return 1
+       done
+'
+
+test_expect_success 'filename limit applies only to basename' '
+       test_when_finished "rm -rf patches/" &&
+       rm -rf patches/ &&
+       for len in 15 25 35
+       do
+               git format-patch -o patches --filename-max-length=$len -3 side &&
+               max=$(
+                       for patch in patches/000[1-9]-*.patch
+                       do
+                               echo "${patch#patches/}" | wc -c
+                       done |
+                       sort -nr |
+                       head -n 1
+               ) &&
+               test $max -le $len || return 1
+       done
+'
+
 test_expect_success 'reroll count' '
        rm -fr patches &&
        git format-patch -o patches --cover-letter --reroll-count 4 master..side >list &&
@@ -1919,6 +1973,39 @@ test_expect_success 'format-patch -o overrides format.outputDirectory' '
        test_path_is_dir patchset
 '
 
+test_expect_success 'format-patch forbids multiple outputs' '
+       rm -fr outfile outdir &&
+       test_must_fail \
+               git format-patch --stdout --output-directory=outdir &&
+       test_must_fail \
+               git format-patch --stdout --output=outfile &&
+       test_must_fail \
+               git format-patch --output=outfile --output-directory=outdir
+'
+
+test_expect_success 'configured outdir does not conflict with output options' '
+       rm -fr outfile outdir &&
+       test_config format.outputDirectory outdir &&
+       git format-patch --stdout &&
+       test_path_is_missing outdir &&
+       git format-patch --output=outfile &&
+       test_path_is_missing outdir
+'
+
+test_expect_success 'format-patch --output' '
+       rm -fr outfile &&
+       git format-patch -3 --stdout HEAD >expect &&
+       git format-patch -3 --output=outfile HEAD &&
+       test_cmp expect outfile
+'
+
+test_expect_success 'format-patch --cover-letter --output' '
+       rm -fr outfile &&
+       git format-patch --cover-letter -3 --stdout HEAD >expect &&
+       git format-patch --cover-letter -3 --output=outfile HEAD &&
+       test_cmp expect outfile
+'
+
 test_expect_success 'format-patch --base' '
        git checkout patchid &&