#!/bin/sh # # Copyright (c) 2006 Brian C Gernhardt # global test_description := ''Format-patch numbering options'' source ./test-lib.sh test_expect_success setup ' echo A > file && git add file && git commit -m First && echo B >> file && git commit -a -m Second && echo C >> file && git commit -a -m Third ' # Each of these gets used multiple times. proc test_num_no_numbered { global cnt := $[grep "^Subject: \[PATCH\]" $1 | wc -l] && test $cnt = $2 } proc test_single_no_numbered { test_num_no_numbered $1 1 } proc test_no_numbered { test_num_no_numbered $1 2 } proc test_single_cover_letter_numbered { grep "^Subject: \[PATCH 0/1\]" $1 && grep "^Subject: \[PATCH 1/1\]" $1 } proc test_single_numbered { grep "^Subject: \[PATCH 1/1\]" $1 } proc test_numbered { grep "^Subject: \[PATCH 1/2\]" $1 && grep "^Subject: \[PATCH 2/2\]" $1 } test_expect_success 'single patch defaults to no numbers' ' git format-patch --stdout HEAD~1 >patch0.single && test_single_no_numbered patch0.single ' test_expect_success 'multiple patch defaults to numbered' ' git format-patch --stdout HEAD~2 >patch0.multiple && test_numbered patch0.multiple ' test_expect_success 'Use --numbered' ' git format-patch --numbered --stdout HEAD~1 >patch1 && test_single_numbered patch1 ' test_expect_success 'format.numbered = true' ' git config format.numbered true && git format-patch --stdout HEAD~2 >patch2 && test_numbered patch2 ' test_expect_success 'format.numbered && single patch' ' git format-patch --stdout HEAD^ > patch3 && test_single_numbered patch3 ' test_expect_success 'format.numbered && --no-numbered' ' git format-patch --no-numbered --stdout HEAD~2 >patch4 && test_no_numbered patch4 ' test_expect_success 'format.numbered && --keep-subject' ' git format-patch --keep-subject --stdout HEAD^ >patch4a && grep "^Subject: Third" patch4a ' test_expect_success 'format.numbered = auto' ' git config format.numbered auto && git format-patch --stdout HEAD~2 > patch5 && test_numbered patch5 ' test_expect_success 'format.numbered = auto && single patch' ' git format-patch --stdout HEAD^ > patch6 && test_single_no_numbered patch6 ' test_expect_success 'format.numbered = auto && --no-numbered' ' git format-patch --no-numbered --stdout HEAD~2 > patch7 && test_no_numbered patch7 ' test_expect_success '--start-number && --numbered' ' git format-patch --start-number 3 --numbered --stdout HEAD~1 > patch8 && grep "^Subject: \[PATCH 3/3\]" patch8 ' test_expect_success 'single patch with cover-letter defaults to numbers' ' git format-patch --cover-letter --stdout HEAD~1 >patch9.single && test_single_cover_letter_numbered patch9.single ' test_expect_success 'Use --no-numbered and --cover-letter single patch' ' git format-patch --no-numbered --stdout --cover-letter HEAD~1 >patch10 && test_no_numbered patch10 ' test_done (CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <"Format-patch numbering options">)} spids: [13] ) ] spids: [13] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(setup)} { (SQ <"\n"> <"\n"> <"\techo A > file &&\n"> <"\tgit add file &&\n"> <"\tgit commit -m First &&\n"> <"\n"> <"\techo B >> file &&\n"> <"\tgit commit -a -m Second &&\n"> <"\n"> <"\techo C >> file &&\n"> <"\tgit commit -a -m Third\n"> <"\n"> ) } ) (FuncDef name: test_num_no_numbered body: (BraceGroup children: [ (AndOr children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:cnt) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(grep)} { (DQ ("^Subject: ") (EscapedLiteralPart token: ) (PATCH) (EscapedLiteralPart token:) ) } {($ VSub_Number "$1")} ) (C {(wc)} {(-l)}) ] negated: False ) ] ) left_token: spids: [56 73] ) } spids: [55] ) ] spids: [55] ) (C {(test)} {($ VSub_Name "$cnt")} {(Lit_Other "=")} {($ VSub_Number "$2")}) ] op_id: Op_DAmp ) ] spids: [52] ) spids: [48 51] ) (FuncDef name: test_single_no_numbered body: (BraceGroup children: [(C {(test_num_no_numbered)} {($ VSub_Number "$1")} {(1)})] spids: [93] ) spids: [89 92] ) (FuncDef name: test_no_numbered body: (BraceGroup children: [(C {(test_num_no_numbered)} {($ VSub_Number "$1")} {(2)})] spids: [109] ) spids: [105 108] ) (FuncDef name: test_single_cover_letter_numbered body: (BraceGroup children: [ (AndOr children: [ (C {(grep)} { (DQ ("^Subject: ") (EscapedLiteralPart token:) ("PATCH 0/1") (EscapedLiteralPart token:) ) } {($ VSub_Number "$1")} ) (C {(grep)} { (DQ ("^Subject: ") (EscapedLiteralPart token:) ("PATCH 1/1") (EscapedLiteralPart token:) ) } {($ VSub_Number "$1")} ) ] op_id: Op_DAmp ) ] spids: [125] ) spids: [121 124] ) (FuncDef name: test_single_numbered body: (BraceGroup children: [ (C {(grep)} { (DQ ("^Subject: ") (EscapedLiteralPart token:) ("PATCH 1/1") (EscapedLiteralPart token:) ) } {($ VSub_Number "$1")} ) ] spids: [160] ) spids: [156 159] ) (FuncDef name: test_numbered body: (BraceGroup children: [ (AndOr children: [ (C {(grep)} { (DQ ("^Subject: ") (EscapedLiteralPart token:) ("PATCH 1/2") (EscapedLiteralPart token:) ) } {($ VSub_Number "$1")} ) (C {(grep)} { (DQ ("^Subject: ") (EscapedLiteralPart token:) ("PATCH 2/2") (EscapedLiteralPart token:) ) } {($ VSub_Number "$1")} ) ] op_id: Op_DAmp ) ] spids: [181] ) spids: [177 180] ) (C {(test_expect_success)} {(SQ <"single patch defaults to no numbers">)} { (SQ <"\n"> <"\tgit format-patch --stdout HEAD~1 >patch0.single &&\n"> <"\ttest_single_no_numbered patch0.single\n"> ) } ) (C {(test_expect_success)} {(SQ <"multiple patch defaults to numbered">)} { (SQ <"\n"> <"\n"> <"\tgit format-patch --stdout HEAD~2 >patch0.multiple &&\n"> <"\ttest_numbered patch0.multiple\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"Use --numbered">)} { (SQ <"\n"> <"\n"> <"\tgit format-patch --numbered --stdout HEAD~1 >patch1 &&\n"> <"\ttest_single_numbered patch1\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"format.numbered = true">)} { (SQ <"\n"> <"\n"> <"\tgit config format.numbered true &&\n"> <"\tgit format-patch --stdout HEAD~2 >patch2 &&\n"> <"\ttest_numbered patch2\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"format.numbered && single patch">)} { (SQ <"\n"> <"\n"> <"\tgit format-patch --stdout HEAD^ > patch3 &&\n"> <"\ttest_single_numbered patch3\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"format.numbered && --no-numbered">)} { (SQ <"\n"> <"\n"> <"\tgit format-patch --no-numbered --stdout HEAD~2 >patch4 &&\n"> <"\ttest_no_numbered patch4\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"format.numbered && --keep-subject">)} { (SQ <"\n"> <"\n"> <"\tgit format-patch --keep-subject --stdout HEAD^ >patch4a &&\n"> <"\tgrep \"^Subject: Third\" patch4a\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"format.numbered = auto">)} { (SQ <"\n"> <"\n"> <"\tgit config format.numbered auto &&\n"> <"\tgit format-patch --stdout HEAD~2 > patch5 &&\n"> <"\ttest_numbered patch5\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"format.numbered = auto && single patch">)} { (SQ <"\n"> <"\n"> <"\tgit format-patch --stdout HEAD^ > patch6 &&\n"> <"\ttest_single_no_numbered patch6\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"format.numbered = auto && --no-numbered">)} { (SQ <"\n"> <"\n"> <"\tgit format-patch --no-numbered --stdout HEAD~2 > patch7 &&\n"> <"\ttest_no_numbered patch7\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"--start-number && --numbered">)} { (SQ <"\n"> <"\n"> <"\tgit format-patch --start-number 3 --numbered --stdout HEAD~1 > patch8 &&\n"> <"\tgrep \"^Subject: \\[PATCH 3/3\\]\" patch8\n"> ) } ) (C {(test_expect_success)} {(SQ <"single patch with cover-letter defaults to numbers">)} { (SQ <"\n"> <"\tgit format-patch --cover-letter --stdout HEAD~1 >patch9.single &&\n"> <"\ttest_single_cover_letter_numbered patch9.single\n"> ) } ) (C {(test_expect_success)} {(SQ <"Use --no-numbered and --cover-letter single patch">)} { (SQ <"\n"> <"\tgit format-patch --no-numbered --stdout --cover-letter HEAD~1 >patch10 &&\n"> <"\ttest_no_numbered patch10\n"> ) } ) (C {(test_done)}) ] )