@@ -709,4 +709,88 @@ test_expect_success TTY 'format-patch --stdout paginates' '
709
709
test_path_is_missing .git/pager_used
710
710
'
711
711
712
+ test_expect_success ' format-patch handles multi-line subjects' '
713
+ rm -rf patches/ &&
714
+ echo content >>file &&
715
+ for i in one two three; do echo $i; done >msg &&
716
+ git add file &&
717
+ git commit -F msg &&
718
+ git format-patch -o patches -1 &&
719
+ grep ^Subject: patches/0001-one.patch >actual &&
720
+ echo "Subject: [PATCH] one two three" >expect &&
721
+ test_cmp expect actual
722
+ '
723
+
724
+ test_expect_success ' format-patch handles multi-line encoded subjects' '
725
+ rm -rf patches/ &&
726
+ echo content >>file &&
727
+ for i in en två tre; do echo $i; done >msg &&
728
+ git add file &&
729
+ git commit -F msg &&
730
+ git format-patch -o patches -1 &&
731
+ grep ^Subject: patches/0001-en.patch >actual &&
732
+ echo "Subject: [PATCH] =?UTF-8?q?en=20tv=C3=A5=20tre?=" >expect &&
733
+ test_cmp expect actual
734
+ '
735
+
736
+ M8=" foo bar "
737
+ M64=$M8$M8$M8$M8$M8$M8$M8$M8
738
+ M512=$M64$M64$M64$M64$M64$M64$M64$M64
739
+ cat > expect << 'EOF '
740
+ Subject: [PATCH] foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo
741
+ bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar
742
+ foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo
743
+ bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar
744
+ foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo
745
+ bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar
746
+ foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo
747
+ bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar
748
+ foo bar foo bar foo bar foo bar
749
+ EOF
750
+ test_expect_success ' format-patch wraps extremely long headers (ascii)' '
751
+ echo content >>file &&
752
+ git add file &&
753
+ git commit -m "$M512" &&
754
+ git format-patch --stdout -1 >patch &&
755
+ sed -n "/^Subject/p; /^ /p; /^$/q" <patch >subject &&
756
+ test_cmp expect subject
757
+ '
758
+
759
+ M8=" föö bar "
760
+ M64=$M8$M8$M8$M8$M8$M8$M8$M8
761
+ M512=$M64$M64$M64$M64$M64$M64$M64$M64
762
+ cat > expect << 'EOF '
763
+ Subject: [PATCH] =?UTF-8?q?f=C3=B6=C3=B6=20bar=20f=C3=B6=C3=B6=20bar=20f=C3=B6?=
764
+ =?UTF-8?q?=C3=B6=20bar=20f=C3=B6=C3=B6=20bar=20f=C3=B6=C3=B6=20bar=20f=C3=B6?=
765
+ =?UTF-8?q?=C3=B6=20bar=20f=C3=B6=C3=B6=20bar=20f=C3=B6=C3=B6=20bar=20f=C3=B6?=
766
+ =?UTF-8?q?=C3=B6=20bar=20f=C3=B6=C3=B6=20bar=20f=C3=B6=C3=B6=20bar=20f=C3=B6?=
767
+ =?UTF-8?q?=C3=B6=20bar=20f=C3=B6=C3=B6=20bar=20f=C3=B6=C3=B6=20bar=20f=C3=B6?=
768
+ =?UTF-8?q?=C3=B6=20bar=20f=C3=B6=C3=B6=20bar=20f=C3=B6=C3=B6=20bar=20f=C3=B6?=
769
+ =?UTF-8?q?=C3=B6=20bar=20f=C3=B6=C3=B6=20bar=20f=C3=B6=C3=B6=20bar=20f=C3=B6?=
770
+ =?UTF-8?q?=C3=B6=20bar=20f=C3=B6=C3=B6=20bar=20f=C3=B6=C3=B6=20bar=20f=C3=B6?=
771
+ =?UTF-8?q?=C3=B6=20bar=20f=C3=B6=C3=B6=20bar=20f=C3=B6=C3=B6=20bar=20f=C3=B6?=
772
+ =?UTF-8?q?=C3=B6=20bar=20f=C3=B6=C3=B6=20bar=20f=C3=B6=C3=B6=20bar=20f=C3=B6?=
773
+ =?UTF-8?q?=C3=B6=20bar=20f=C3=B6=C3=B6=20bar=20f=C3=B6=C3=B6=20bar=20f=C3=B6?=
774
+ =?UTF-8?q?=C3=B6=20bar=20f=C3=B6=C3=B6=20bar=20f=C3=B6=C3=B6=20bar=20f=C3=B6?=
775
+ =?UTF-8?q?=C3=B6=20bar=20f=C3=B6=C3=B6=20bar=20f=C3=B6=C3=B6=20bar=20f=C3=B6?=
776
+ =?UTF-8?q?=C3=B6=20bar=20f=C3=B6=C3=B6=20bar=20f=C3=B6=C3=B6=20bar=20f=C3=B6?=
777
+ =?UTF-8?q?=C3=B6=20bar=20f=C3=B6=C3=B6=20bar=20f=C3=B6=C3=B6=20bar=20f=C3=B6?=
778
+ =?UTF-8?q?=C3=B6=20bar=20f=C3=B6=C3=B6=20bar=20f=C3=B6=C3=B6=20bar=20f=C3=B6?=
779
+ =?UTF-8?q?=C3=B6=20bar=20f=C3=B6=C3=B6=20bar=20f=C3=B6=C3=B6=20bar=20f=C3=B6?=
780
+ =?UTF-8?q?=C3=B6=20bar=20f=C3=B6=C3=B6=20bar=20f=C3=B6=C3=B6=20bar=20f=C3=B6?=
781
+ =?UTF-8?q?=C3=B6=20bar=20f=C3=B6=C3=B6=20bar=20f=C3=B6=C3=B6=20bar=20f=C3=B6?=
782
+ =?UTF-8?q?=C3=B6=20bar=20f=C3=B6=C3=B6=20bar=20f=C3=B6=C3=B6=20bar=20f=C3=B6?=
783
+ =?UTF-8?q?=C3=B6=20bar=20f=C3=B6=C3=B6=20bar=20f=C3=B6=C3=B6=20bar=20f=C3=B6?=
784
+ =?UTF-8?q?=C3=B6=20bar=20f=C3=B6=C3=B6=20bar?=
785
+ EOF
786
+ test_expect_success ' format-patch wraps extremely long headers (rfc2047)' '
787
+ rm -rf patches/ &&
788
+ echo content >>file &&
789
+ git add file &&
790
+ git commit -m "$M512" &&
791
+ git format-patch --stdout -1 >patch &&
792
+ sed -n "/^Subject/p; /^ /p; /^$/q" <patch >subject &&
793
+ test_cmp expect subject
794
+ '
795
+
712
796
test_done
0 commit comments