(command.CommandList
  children: [
    (command.ShAssignment
      left: <Id.Lit_VarLike 'test_description='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'test_description='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'test_description='> name:test_description)
          op: assign_op.Equal
          rhs: {(SQ <'git interpret-trailers'>)}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <.>
      more_env: []
      words: [{<.>} {<'./test-lib.sh'>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <setup>)}
        {
          (SQ <'\n'> <'\t: >empty &&\n'> <'\tcat >basic_message <<-\\EOF &&\n'> <'\t\tsubject\n'> <'\n'> 
            <'\t\tbody\n'> <'\tEOF\n'> <'\tcat >complex_message_body <<-\\EOF &&\n'> <'\t\tmy subject\n'> <'\n'> 
            <'\t\tmy body which is long\n'> <'\t\tand contains some special\n'> <'\t\tchars like : = ? !\n'> <'\n'> <'\tEOF\n'> 
            <'\tsed -e "s/ Z\\$/ /" >complex_message_trailers <<-\\EOF &&\n'> <'\t\tFixes: Z\n'> <'\t\tAcked-by: Z\n'> <'\t\tReviewed-by: Z\n'> <'\t\tSigned-off-by: Z\n'> <'\tEOF\n'> 
            <'\tcat >basic_patch <<-\\EOF\n'> <'\t\t---\n'> <'\t\t foo.txt | 2 +-\n'> <'\t\t 1 file changed, 1 insertion(+), 1 deletion(-)\n'> <'\n'> 
            <'\t\tdiff --git a/foo.txt b/foo.txt\n'> <'\t\tindex 0353767..1d91aa1 100644\n'> <'\t\t--- a/foo.txt\n'> <'\t\t+++ b/foo.txt\n'> 
            <'\t\t@@ -1,3 +1,3 @@\n'> <'\n'> <'\t\t-bar\n'> <'\t\t+baz\n'> <'\n'> <'\t\t--\n'> <'\t\t1.9.rc0.11.ga562ddc\n'> <'\n'> <'\tEOF\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'without config'>)}
        {
          (SQ <'\n'> <'\tsed -e "s/ Z\\$/ /" >expected <<-\\EOF &&\n'> <'\n'> <'\t\tack: Peff\n'> 
            <'\t\tReviewed-by: Z\n'> <'\t\tAcked-by: Johan\n'> <'\tEOF\n'> 
            <'\tgit interpret-trailers --trailer "ack = Peff" --trailer "Reviewed-by" \\\n'> <'\t\t--trailer "Acked-by: Johan" empty >actual &&\n'> <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'without config in another order'>)}
        {
          (SQ <'\n'> <'\tsed -e "s/ Z\\$/ /" >expected <<-\\EOF &&\n'> <'\n'> <'\t\tAcked-by: Johan\n'> 
            <'\t\tReviewed-by: Z\n'> <'\t\tack: Peff\n'> <'\tEOF\n'> 
            <'\tgit interpret-trailers --trailer "Acked-by: Johan" --trailer "Reviewed-by" \\\n'> <'\t\t--trailer "ack = Peff" empty >actual &&\n'> <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'--trim-empty without config'>)}
        {
          (SQ <'\n'> <'\tcat >expected <<-\\EOF &&\n'> <'\n'> <'\t\tack: Peff\n'> 
            <'\t\tAcked-by: Johan\n'> <'\tEOF\n'> <'\tgit interpret-trailers --trim-empty --trailer ack=Peff \\\n'> 
            <'\t\t--trailer "Reviewed-by" --trailer "Acked-by: Johan" \\\n'> <'\t\t--trailer "sob:" empty >actual &&\n'> <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'with config option on the command line'>)}
        {
          (SQ <'\n'> <'\tcat >expected <<-\\EOF &&\n'> <'\n'> <'\t\tAcked-by: Johan\n'> 
            <'\t\tReviewed-by: Peff\n'> <'\tEOF\n'> <'\t{ echo; echo "Acked-by: Johan"; } |\n'> 
            <'\tgit -c "trailer.Acked-by.ifexists=addifdifferent" interpret-trailers \\\n'> <'\t\t--trailer "Reviewed-by: Peff" --trailer "Acked-by: Johan" >actual &&\n'> 
            <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'with only a title in the message'>)}
        {
          (SQ <'\n'> <'\tcat >expected <<-\\EOF &&\n'> <'\t\tarea: change\n'> <'\n'> 
            <'\t\tReviewed-by: Peff\n'> <'\t\tAcked-by: Johan\n'> <'\tEOF\n'> <'\techo "area: change" |\n'> 
            <'\tgit interpret-trailers --trailer "Reviewed-by: Peff" \\\n'> <'\t\t--trailer "Acked-by: Johan" >actual &&\n'> <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'with multiline title in the message'>)}
        {
          (SQ <'\n'> <'\tcat >expected <<-\\EOF &&\n'> <'\t\tplace of\n'> <'\t\tcode: change\n'> <'\n'> 
            <'\t\tReviewed-by: Peff\n'> <'\t\tAcked-by: Johan\n'> <'\tEOF\n'> <'\tprintf "%s\\n" "place of" "code: change" |\n'> 
            <'\tgit interpret-trailers --trailer "Reviewed-by: Peff" \\\n'> <'\t\t--trailer "Acked-by: Johan" >actual &&\n'> <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'with config setup'>)}
        {
          (SQ <'\n'> <'\tgit config trailer.ack.key "Acked-by: " &&\n'> 
            <'\tcat >expected <<-\\EOF &&\n'> <'\n'> <'\t\tAcked-by: Peff\n'> <'\tEOF\n'> 
            <'\tgit interpret-trailers --trim-empty --trailer "ack = Peff" empty >actual &&\n'> <'\ttest_cmp expected actual &&\n'> 
            <'\tgit interpret-trailers --trim-empty --trailer "Acked-by = Peff" empty >actual &&\n'> <'\ttest_cmp expected actual &&\n'> 
            <'\tgit interpret-trailers --trim-empty --trailer "Acked-by :Peff" empty >actual &&\n'> <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'with config setup and ":=" as separators'>)}
        {
          (SQ <'\n'> <'\tgit config trailer.separators ":=" &&\n'> 
            <'\tgit config trailer.ack.key "Acked-by= " &&\n'> <'\tcat >expected <<-\\EOF &&\n'> <'\n'> <'\t\tAcked-by= Peff\n'> <'\tEOF\n'> 
            <'\tgit interpret-trailers --trim-empty --trailer "ack = Peff" empty >actual &&\n'> <'\ttest_cmp expected actual &&\n'> 
            <'\tgit interpret-trailers --trim-empty --trailer "Acked-by= Peff" empty >actual &&\n'> <'\ttest_cmp expected actual &&\n'> 
            <'\tgit interpret-trailers --trim-empty --trailer "Acked-by : Peff" empty >actual &&\n'> <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'with config setup and "%" as separators'>)}
        {
          (SQ <'\n'> <'\tgit config trailer.separators "%" &&\n'> <'\tcat >expected <<-\\EOF &&\n'> 
            <'\n'> <'\t\tbug% 42\n'> <'\t\tcount% 10\n'> <'\t\tbug% 422\n'> <'\tEOF\n'> 
            <'\tgit interpret-trailers --trim-empty --trailer "bug = 42" \\\n'> <'\t\t--trailer count%10 --trailer "test: stuff" \\\n'> 
            <'\t\t--trailer "bug % 422" empty >actual &&\n'> <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'with "%" as separators and a message with trailers'>)}
        {
          (SQ <'\n'> <'\tcat >special_message <<-\\EOF &&\n'> <'\t\tSpecial Message\n'> <'\n'> 
            <'\t\tbug% 42\n'> <'\t\tcount% 10\n'> <'\t\tbug% 422\n'> <'\tEOF\n'> <'\tcat >expected <<-\\EOF &&\n'> 
            <'\t\tSpecial Message\n'> <'\n'> <'\t\tbug% 42\n'> <'\t\tcount% 10\n'> <'\t\tbug% 422\n'> <'\t\tcount% 100\n'> <'\tEOF\n'> 
            <'\tgit interpret-trailers --trailer count%100 \\\n'> <'\t\tspecial_message >actual &&\n'> <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'with config setup and ":=#" as separators'>)}
        {
          (SQ <'\n'> <'\tgit config trailer.separators ":=#" &&\n'> 
            <'\tgit config trailer.bug.key "Bug #" &&\n'> <'\tcat >expected <<-\\EOF &&\n'> <'\n'> <'\t\tBug #42\n'> <'\tEOF\n'> 
            <'\tgit interpret-trailers --trim-empty --trailer "bug = 42" empty >actual &&\n'> <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'with commit basic message'>)}
        {
          (SQ <'\n'> <'\tcat basic_message >expected &&\n'> <'\techo >>expected &&\n'> 
            <'\tgit interpret-trailers <basic_message >actual &&\n'> <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'with basic patch'>)}
        {
          (SQ <'\n'> <'\tcat basic_message >input &&\n'> <'\tcat basic_patch >>input &&\n'> 
            <'\tcat basic_message >expected &&\n'> <'\techo >>expected &&\n'> <'\tcat basic_patch >>expected &&\n'> 
            <'\tgit interpret-trailers <input >actual &&\n'> <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'with commit complex message as argument'>)}
        {
          (SQ <'\n'> <'\tcat complex_message_body complex_message_trailers >complex_message &&\n'> 
            <'\tcat complex_message_body >expected &&\n'> <'\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n'> <'\t\tFixes: Z\n'> <'\t\tAcked-by= Z\n'> 
            <'\t\tReviewed-by: Z\n'> <'\t\tSigned-off-by: Z\n'> <'\tEOF\n'> <'\tgit interpret-trailers complex_message >actual &&\n'> 
            <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'with 2 files arguments'>)}
        {
          (SQ <'\n'> <'\tcat basic_message >>expected &&\n'> <'\techo >>expected &&\n'> 
            <'\tcat basic_patch >>expected &&\n'> <'\tgit interpret-trailers complex_message input >actual &&\n'> <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'with message that has comments'>)}
        {
          (SQ <'\n'> <'\tcat basic_message >message_with_comments &&\n'> 
            <'\tsed -e "s/ Z\\$/ /" >>message_with_comments <<-\\EOF &&\n'> <'\t\t# comment\n'> <'\n'> <'\t\t# other comment\n'> <'\t\tCc: Z\n'> <'\t\t# yet another comment\n'> 
            <'\t\tReviewed-by: Johan\n'> <'\t\tReviewed-by: Z\n'> <'\t\t# last comment\n'> <'\n'> <'\tEOF\n'> 
            <'\tcat basic_patch >>message_with_comments &&\n'> <'\tcat basic_message >expected &&\n'> <'\tcat >>expected <<-\\EOF &&\n'> <'\t\t# comment\n'> <'\n'> 
            <'\t\tReviewed-by: Johan\n'> <'\t\tCc: Peff\n'> <'\t\t# last comment\n'> <'\n'> <'\tEOF\n'> <'\tcat basic_patch >>expected &&\n'> 
            <
'\tgit interpret-trailers --trim-empty --trailer "Cc: Peff" message_with_comments >actual &&\n'
            > <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'with message that has an old style conflict block'>)}
        {
          (SQ <'\n'> <'\tcat basic_message >message_with_comments &&\n'> 
            <'\tsed -e "s/ Z\\$/ /" >>message_with_comments <<-\\EOF &&\n'> <'\t\t# comment\n'> <'\n'> <'\t\t# other comment\n'> <'\t\tCc: Z\n'> <'\t\t# yet another comment\n'> 
            <'\t\tReviewed-by: Johan\n'> <'\t\tReviewed-by: Z\n'> <'\t\t# last comment\n'> <'\n'> <'\t\tConflicts:\n'> <'\n'> <'\tEOF\n'> 
            <'\tcat basic_message >expected &&\n'> <'\tcat >>expected <<-\\EOF &&\n'> <'\t\t# comment\n'> <'\n'> <'\t\tReviewed-by: Johan\n'> 
            <'\t\tCc: Peff\n'> <'\t\t# last comment\n'> <'\n'> <'\t\tConflicts:\n'> <'\n'> <'\tEOF\n'> 
            <
'\tgit interpret-trailers --trim-empty --trailer "Cc: Peff" message_with_comments >actual &&\n'
            > <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'with commit complex message and trailer args'>)}
        {
          (SQ <'\n'> <'\tcat complex_message_body >expected &&\n'> 
            <'\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n'> <'\t\tFixes: Z\n'> <'\t\tAcked-by= Z\n'> <'\t\tReviewed-by: Z\n'> <'\t\tSigned-off-by: Z\n'> 
            <'\t\tAcked-by= Peff\n'> <'\t\tBug #42\n'> <'\tEOF\n'> <'\tgit interpret-trailers --trailer "ack: Peff" \\\n'> 
            <'\t\t--trailer "bug: 42" <complex_message >actual &&\n'> <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'with complex patch, args and --trim-empty'>)}
        {
          (SQ <'\n'> <'\tcat complex_message >complex_patch &&\n'> 
            <'\tcat basic_patch >>complex_patch &&\n'> <'\tcat complex_message_body >expected &&\n'> <'\tcat >>expected <<-\\EOF &&\n'> 
            <'\t\tAcked-by= Peff\n'> <'\t\tBug #42\n'> <'\tEOF\n'> <'\tcat basic_patch >>expected &&\n'> 
            <'\tgit interpret-trailers --trim-empty --trailer "ack: Peff" \\\n'> <'\t\t--trailer "bug: 42" <complex_patch >actual &&\n'> <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'in-place editing with basic patch'>)}
        {
          (SQ <'\n'> <'\tcat basic_message >message &&\n'> <'\tcat basic_patch >>message &&\n'> 
            <'\tcat basic_message >expected &&\n'> <'\techo >>expected &&\n'> <'\tcat basic_patch >>expected &&\n'> 
            <'\tgit interpret-trailers --in-place message &&\n'> <'\ttest_cmp expected message\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'in-place editing with additional trailer'>)}
        {
          (SQ <'\n'> <'\tcat basic_message >message &&\n'> <'\tcat basic_patch >>message &&\n'> 
            <'\tcat basic_message >expected &&\n'> <'\techo >>expected &&\n'> <'\tcat >>expected <<-\\EOF &&\n'> <'\t\tReviewed-by: Alice\n'> <'\tEOF\n'> 
            <'\tcat basic_patch >>expected &&\n'> <'\tgit interpret-trailers --trailer "Reviewed-by: Alice" --in-place message &&\n'> 
            <'\ttest_cmp expected message\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'in-place editing on stdin disallowed'>)}
        {
          (SQ <'\n'> 
            <
'\ttest_must_fail git interpret-trailers --trailer "Reviewed-by: Alice" --in-place < basic_message\n'
            >
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'in-place editing on non-existing file'>)}
        {
          (SQ <'\n'> 
            <
'\ttest_must_fail git interpret-trailers --trailer "Reviewed-by: Alice" --in-place nonexisting &&\n'
            > <'\ttest_path_is_missing nonexisting\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {<POSIXPERM> <Id.Lit_Comma ','> <SANITY>}
        {(DQ <'in-place editing doesn\'t clobber original file on error'>)}
        {
          (SQ <'\n'> <'\tcat basic_message >message &&\n'> <'\tchmod -r message &&\n'> 
            <
'\ttest_must_fail git interpret-trailers --trailer "Reviewed-by: Alice" --in-place message &&\n'
            > <'\tchmod +r message &&\n'> <'\ttest_cmp message basic_message\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'using "where = before"'>)}
        {
          (SQ <'\n'> <'\tgit config trailer.bug.where "before" &&\n'> 
            <'\tcat complex_message_body >expected &&\n'> <'\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n'> <'\t\tBug #42\n'> <'\t\tFixes: Z\n'> 
            <'\t\tAcked-by= Z\n'> <'\t\tReviewed-by: Z\n'> <'\t\tSigned-off-by: Z\n'> <'\t\tAcked-by= Peff\n'> <'\tEOF\n'> 
            <'\tgit interpret-trailers --trailer "ack: Peff" \\\n'> <'\t\t--trailer "bug: 42" complex_message >actual &&\n'> <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'using "where = after"'>)}
        {
          (SQ <'\n'> <'\tgit config trailer.ack.where "after" &&\n'> 
            <'\tcat complex_message_body >expected &&\n'> <'\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n'> <'\t\tBug #42\n'> <'\t\tFixes: Z\n'> 
            <'\t\tAcked-by= Z\n'> <'\t\tAcked-by= Peff\n'> <'\t\tReviewed-by: Z\n'> <'\t\tSigned-off-by: Z\n'> <'\tEOF\n'> 
            <'\tgit interpret-trailers --trailer "ack: Peff" \\\n'> <'\t\t--trailer "bug: 42" complex_message >actual &&\n'> <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'using "where = end"'>)}
        {
          (SQ <'\n'> <'\tgit config trailer.review.key "Reviewed-by" &&\n'> 
            <'\tgit config trailer.review.where "end" &&\n'> <'\tcat complex_message_body >expected &&\n'> <'\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n'> 
            <'\t\tFixes: Z\n'> <'\t\tAcked-by= Z\n'> <'\t\tAcked-by= Peff\n'> <'\t\tReviewed-by: Z\n'> <'\t\tSigned-off-by: Z\n'> 
            <'\t\tReviewed-by: Junio\n'> <'\t\tReviewed-by: Johannes\n'> <'\tEOF\n'> <'\tgit interpret-trailers --trailer "ack: Peff" \\\n'> 
            <'\t\t--trailer "Reviewed-by: Junio" --trailer "Reviewed-by: Johannes" \\\n'> <'\t\tcomplex_message >actual &&\n'> <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'using "where = start"'>)}
        {
          (SQ <'\n'> <'\tgit config trailer.review.key "Reviewed-by" &&\n'> 
            <'\tgit config trailer.review.where "start" &&\n'> <'\tcat complex_message_body >expected &&\n'> <'\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n'> 
            <'\t\tReviewed-by: Johannes\n'> <'\t\tReviewed-by: Junio\n'> <'\t\tFixes: Z\n'> <'\t\tAcked-by= Z\n'> <'\t\tAcked-by= Peff\n'> 
            <'\t\tReviewed-by: Z\n'> <'\t\tSigned-off-by: Z\n'> <'\tEOF\n'> <'\tgit interpret-trailers --trailer "ack: Peff" \\\n'> 
            <'\t\t--trailer "Reviewed-by: Junio" --trailer "Reviewed-by: Johannes" \\\n'> <'\t\tcomplex_message >actual &&\n'> <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'using "where = before" for a token in the middle of the message'>)}
        {
          (SQ <'\n'> <'\tgit config trailer.review.key "Reviewed-by:" &&\n'> 
            <'\tgit config trailer.review.where "before" &&\n'> <'\tcat complex_message_body >expected &&\n'> <'\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n'> 
            <'\t\tBug #42\n'> <'\t\tFixes: Z\n'> <'\t\tAcked-by= Z\n'> <'\t\tAcked-by= Peff\n'> <'\t\tReviewed-by:Johan\n'> 
            <'\t\tReviewed-by:\n'> <'\t\tSigned-off-by: Z\n'> <'\tEOF\n'> 
            <'\tgit interpret-trailers --trailer "ack: Peff" --trailer "bug: 42" \\\n'> <'\t\t--trailer "review: Johan" <complex_message >actual &&\n'> <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'using "where = before" and --trim-empty'>)}
        {
          (SQ <'\n'> <'\tcat complex_message_body >expected &&\n'> <'\tcat >>expected <<-\\EOF &&\n'> 
            <'\t\tBug #46\n'> <'\t\tBug #42\n'> <'\t\tAcked-by= Peff\n'> <'\t\tReviewed-by:Johan\n'> <'\tEOF\n'> 
            <'\tgit interpret-trailers --trim-empty --trailer "ack: Peff" \\\n'> <'\t\t--trailer "bug: 42" --trailer "review: Johan" \\\n'> 
            <'\t\t--trailer "Bug: 46" <complex_message >actual &&\n'> <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'the default is "ifExists = addIfDifferentNeighbor"'>)}
        {
          (SQ <'\n'> <'\tcat complex_message_body >expected &&\n'> 
            <'\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n'> <'\t\tBug #42\n'> <'\t\tFixes: Z\n'> <'\t\tAcked-by= Z\n'> <'\t\tAcked-by= Peff\n'> 
            <'\t\tAcked-by= Junio\n'> <'\t\tAcked-by= Peff\n'> <'\t\tReviewed-by:\n'> <'\t\tSigned-off-by: Z\n'> <'\tEOF\n'> 
            <'\tgit interpret-trailers --trailer "ack: Peff" --trailer "review:" \\\n'> <'\t\t--trailer "ack: Junio" --trailer "bug: 42" --trailer "ack: Peff" \\\n'> 
            <'\t\t--trailer "ack: Peff" <complex_message >actual &&\n'> <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'default "ifExists" is now "addIfDifferent"'>)}
        {
          (SQ <'\n'> <'\tgit config trailer.ifexists "addIfDifferent" &&\n'> 
            <'\tcat complex_message_body >expected &&\n'> <'\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n'> <'\t\tBug #42\n'> <'\t\tFixes: Z\n'> 
            <'\t\tAcked-by= Z\n'> <'\t\tAcked-by= Peff\n'> <'\t\tAcked-by= Junio\n'> <'\t\tReviewed-by:\n'> <'\t\tSigned-off-by: Z\n'> 
            <'\tEOF\n'> <'\tgit interpret-trailers --trailer "ack: Peff" --trailer "review:" \\\n'> 
            <'\t\t--trailer "ack: Junio" --trailer "bug: 42" --trailer "ack: Peff" \\\n'> <'\t\t--trailer "ack: Peff" <complex_message >actual &&\n'> <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'using "ifExists = addIfDifferent" with "where = end"'>)}
        {
          (SQ <'\n'> <'\tgit config trailer.ack.ifExists "addIfDifferent" &&\n'> 
            <'\tgit config trailer.ack.where "end" &&\n'> <'\tcat complex_message_body >expected &&\n'> <'\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n'> 
            <'\t\tBug #42\n'> <'\t\tFixes: Z\n'> <'\t\tAcked-by= Z\n'> <'\t\tReviewed-by:\n'> <'\t\tSigned-off-by: Z\n'> 
            <'\t\tAcked-by= Peff\n'> <'\tEOF\n'> <'\tgit interpret-trailers --trailer "ack: Peff" --trailer "review:" \\\n'> 
            <'\t\t--trailer "bug: 42" --trailer "ack: Peff" \\\n'> <'\t\t<complex_message >actual &&\n'> <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'using "ifExists = addIfDifferent" with "where = before"'>)}
        {
          (SQ <'\n'> <'\tgit config trailer.ack.ifExists "addIfDifferent" &&\n'> 
            <'\tgit config trailer.ack.where "before" &&\n'> <'\tcat complex_message_body >expected &&\n'> <'\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n'> 
            <'\t\tBug #42\n'> <'\t\tFixes: Z\n'> <'\t\tAcked-by= Peff\n'> <'\t\tAcked-by= Z\n'> <'\t\tReviewed-by:\n'> 
            <'\t\tSigned-off-by: Z\n'> <'\tEOF\n'> <'\tgit interpret-trailers --trailer "ack: Peff" --trailer "review:" \\\n'> 
            <'\t\t--trailer "bug: 42" --trailer "ack: Peff" \\\n'> <'\t\t<complex_message >actual &&\n'> <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'using "ifExists = addIfDifferentNeighbor" with "where = end"'>)}
        {
          (SQ <'\n'> <'\tgit config trailer.ack.ifExists "addIfDifferentNeighbor" &&\n'> 
            <'\tgit config trailer.ack.where "end" &&\n'> <'\tcat complex_message_body >expected &&\n'> <'\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n'> 
            <'\t\tBug #42\n'> <'\t\tFixes: Z\n'> <'\t\tAcked-by= Z\n'> <'\t\tReviewed-by:\n'> <'\t\tSigned-off-by: Z\n'> 
            <'\t\tAcked-by= Peff\n'> <'\t\tAcked-by= Junio\n'> <'\t\tTested-by: Jakub\n'> <'\t\tAcked-by= Junio\n'> <'\t\tAcked-by= Peff\n'> 
            <'\tEOF\n'> <'\tgit interpret-trailers --trailer "ack: Peff" --trailer "review:" \\\n'> 
            <'\t\t--trailer "ack: Junio" --trailer "bug: 42" \\\n'> <'\t\t--trailer "Tested-by: Jakub" --trailer "ack: Junio" \\\n'> 
            <'\t\t--trailer "ack: Junio" --trailer "ack: Peff" <complex_message >actual &&\n'> <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'using "ifExists = addIfDifferentNeighbor"  with "where = after"'>)}
        {
          (SQ <'\n'> <'\tgit config trailer.ack.ifExists "addIfDifferentNeighbor" &&\n'> 
            <'\tgit config trailer.ack.where "after" &&\n'> <'\tcat complex_message_body >expected &&\n'> <'\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n'> 
            <'\t\tBug #42\n'> <'\t\tFixes: Z\n'> <'\t\tAcked-by= Z\n'> <'\t\tAcked-by= Peff\n'> <'\t\tAcked-by= Junio\n'> 
            <'\t\tAcked-by= Peff\n'> <'\t\tReviewed-by:\n'> <'\t\tSigned-off-by: Z\n'> <'\t\tTested-by: Jakub\n'> <'\tEOF\n'> 
            <'\tgit interpret-trailers --trailer "ack: Peff" --trailer "review:" \\\n'> <'\t\t--trailer "ack: Junio" --trailer "bug: 42" \\\n'> 
            <'\t\t--trailer "Tested-by: Jakub" --trailer "ack: Junio" \\\n'> <'\t\t--trailer "ack: Junio" --trailer "ack: Peff" <complex_message >actual &&\n'> 
            <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'using "ifExists = addIfDifferentNeighbor" and --trim-empty'>)}
        {
          (SQ <'\n'> <'\tgit config trailer.ack.ifExists "addIfDifferentNeighbor" &&\n'> 
            <'\tcat complex_message_body >expected &&\n'> <'\tcat >>expected <<-\\EOF &&\n'> <'\t\tBug #42\n'> <'\t\tAcked-by= Peff\n'> <'\t\tAcked-by= Junio\n'> 
            <'\t\tAcked-by= Peff\n'> <'\tEOF\n'> <'\tgit interpret-trailers --trim-empty --trailer "ack: Peff" \\\n'> 
            <'\t\t--trailer "Acked-by= Peff" --trailer "review:" \\\n'> <'\t\t--trailer "ack: Junio" --trailer "bug: 42" \\\n'> 
            <'\t\t--trailer "ack: Peff" <complex_message >actual &&\n'> <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'using "ifExists = add" with "where = end"'>)}
        {
          (SQ <'\n'> <'\tgit config trailer.ack.ifExists "add" &&\n'> 
            <'\tgit config trailer.ack.where "end" &&\n'> <'\tcat complex_message_body >expected &&\n'> <'\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n'> 
            <'\t\tBug #42\n'> <'\t\tFixes: Z\n'> <'\t\tAcked-by= Z\n'> <'\t\tReviewed-by:\n'> <'\t\tSigned-off-by: Z\n'> 
            <'\t\tAcked-by= Peff\n'> <'\t\tAcked-by= Peff\n'> <'\t\tTested-by: Jakub\n'> <'\t\tAcked-by= Junio\n'> 
            <'\t\tTested-by: Johannes\n'> <'\t\tAcked-by= Peff\n'> <'\tEOF\n'> <'\tgit interpret-trailers --trailer "ack: Peff" \\\n'> 
            <'\t\t--trailer "Acked-by= Peff" --trailer "review:" \\\n'> <'\t\t--trailer "Tested-by: Jakub" --trailer "ack: Junio" \\\n'> 
            <'\t\t--trailer "bug: 42" --trailer "Tested-by: Johannes" \\\n'> <'\t\t--trailer "ack: Peff" <complex_message >actual &&\n'> <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'using "ifExists = add" with "where = after"'>)}
        {
          (SQ <'\n'> <'\tgit config trailer.ack.ifExists "add" &&\n'> 
            <'\tgit config trailer.ack.where "after" &&\n'> <'\tcat complex_message_body >expected &&\n'> <'\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n'> 
            <'\t\tBug #42\n'> <'\t\tFixes: Z\n'> <'\t\tAcked-by= Z\n'> <'\t\tAcked-by= Peff\n'> <'\t\tAcked-by= Peff\n'> 
            <'\t\tAcked-by= Junio\n'> <'\t\tAcked-by= Peff\n'> <'\t\tReviewed-by:\n'> <'\t\tSigned-off-by: Z\n'> <'\tEOF\n'> 
            <'\tgit interpret-trailers --trailer "ack: Peff" \\\n'> <'\t\t--trailer "Acked-by= Peff" --trailer "review:" \\\n'> 
            <'\t\t--trailer "ack: Junio" --trailer "bug: 42" \\\n'> <'\t\t--trailer "ack: Peff" <complex_message >actual &&\n'> <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'using "ifExists = replace"'>)}
        {
          (SQ <'\n'> <'\tgit config trailer.fix.key "Fixes: " &&\n'> 
            <'\tgit config trailer.fix.ifExists "replace" &&\n'> <'\tcat complex_message_body >expected &&\n'> <'\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n'> 
            <'\t\tBug #42\n'> <'\t\tAcked-by= Z\n'> <'\t\tAcked-by= Junio\n'> <'\t\tAcked-by= Peff\n'> <'\t\tReviewed-by:\n'> 
            <'\t\tSigned-off-by: Z\n'> <'\t\tFixes: 22\n'> <'\tEOF\n'> <'\tgit interpret-trailers --trailer "review:" \\\n'> 
            <'\t\t--trailer "fix=53" --trailer "ack: Junio" --trailer "fix=22" \\\n'> <'\t\t--trailer "bug: 42" --trailer "ack: Peff" \\\n'> <'\t\t<complex_message >actual &&\n'> 
            <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'using "ifExists = replace" with "where = after"'>)}
        {
          (SQ <'\n'> <'\tgit config trailer.fix.where "after" &&\n'> 
            <'\tcat complex_message_body >expected &&\n'> <'\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n'> <'\t\tBug #42\n'> <'\t\tFixes: 22\n'> 
            <'\t\tAcked-by= Z\n'> <'\t\tAcked-by= Junio\n'> <'\t\tAcked-by= Peff\n'> <'\t\tReviewed-by:\n'> <'\t\tSigned-off-by: Z\n'> 
            <'\tEOF\n'> <'\tgit interpret-trailers --trailer "review:" \\\n'> 
            <'\t\t--trailer "fix=53" --trailer "ack: Junio" --trailer "fix=22" \\\n'> <'\t\t--trailer "bug: 42" --trailer "ack: Peff" \\\n'> <'\t\t<complex_message >actual &&\n'> 
            <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'using "ifExists = doNothing"'>)}
        {
          (SQ <'\n'> <'\tgit config trailer.fix.ifExists "doNothing" &&\n'> 
            <'\tcat complex_message_body >expected &&\n'> <'\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n'> <'\t\tBug #42\n'> <'\t\tFixes: Z\n'> 
            <'\t\tAcked-by= Z\n'> <'\t\tAcked-by= Junio\n'> <'\t\tAcked-by= Peff\n'> <'\t\tReviewed-by:\n'> <'\t\tSigned-off-by: Z\n'> 
            <'\tEOF\n'> <'\tgit interpret-trailers --trailer "review:" --trailer "fix=53" \\\n'> 
            <'\t\t--trailer "ack: Junio" --trailer "fix=22" \\\n'> <'\t\t--trailer "bug: 42" --trailer "ack: Peff" \\\n'> <'\t\t<complex_message >actual &&\n'> 
            <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'the default is "ifMissing = add"'>)}
        {
          (SQ <'\n'> <'\tgit config trailer.cc.key "Cc: " &&\n'> 
            <'\tgit config trailer.cc.where "before" &&\n'> <'\tcat complex_message_body >expected &&\n'> <'\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n'> 
            <'\t\tBug #42\n'> <'\t\tCc: Linus\n'> <'\t\tFixes: Z\n'> <'\t\tAcked-by= Z\n'> <'\t\tAcked-by= Junio\n'> 
            <'\t\tAcked-by= Peff\n'> <'\t\tReviewed-by:\n'> <'\t\tSigned-off-by: Z\n'> <'\tEOF\n'> 
            <'\tgit interpret-trailers --trailer "review:" --trailer "fix=53" \\\n'> <'\t\t--trailer "cc=Linus" --trailer "ack: Junio" \\\n'> 
            <'\t\t--trailer "fix=22" --trailer "bug: 42" --trailer "ack: Peff" \\\n'> <'\t\t<complex_message >actual &&\n'> <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'when default "ifMissing" is "doNothing"'>)}
        {
          (SQ <'\n'> <'\tgit config trailer.ifmissing "doNothing" &&\n'> 
            <'\tcat complex_message_body >expected &&\n'> <'\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n'> <'\t\tFixes: Z\n'> <'\t\tAcked-by= Z\n'> 
            <'\t\tAcked-by= Junio\n'> <'\t\tAcked-by= Peff\n'> <'\t\tReviewed-by:\n'> <'\t\tSigned-off-by: Z\n'> <'\tEOF\n'> 
            <'\tgit interpret-trailers --trailer "review:" --trailer "fix=53" \\\n'> <'\t\t--trailer "cc=Linus" --trailer "ack: Junio" \\\n'> 
            <'\t\t--trailer "fix=22" --trailer "bug: 42" --trailer "ack: Peff" \\\n'> <'\t\t<complex_message >actual &&\n'> <'\ttest_cmp expected actual &&\n'> 
            <'\tgit config trailer.ifmissing "add"\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'using "ifMissing = add" with "where = end"'>)}
        {
          (SQ <'\n'> <'\tgit config trailer.cc.key "Cc: " &&\n'> 
            <'\tgit config trailer.cc.where "end" &&\n'> <'\tgit config trailer.cc.ifMissing "add" &&\n'> <'\tcat complex_message_body >expected &&\n'> 
            <'\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n'> <'\t\tBug #42\n'> <'\t\tFixes: Z\n'> <'\t\tAcked-by= Z\n'> <'\t\tAcked-by= Junio\n'> 
            <'\t\tAcked-by= Peff\n'> <'\t\tReviewed-by:\n'> <'\t\tSigned-off-by: Z\n'> <'\t\tCc: Linus\n'> <'\tEOF\n'> 
            <'\tgit interpret-trailers --trailer "review:" --trailer "fix=53" \\\n'> <'\t\t--trailer "ack: Junio" --trailer "fix=22" \\\n'> 
            <'\t\t--trailer "bug: 42" --trailer "cc=Linus" --trailer "ack: Peff" \\\n'> <'\t\t<complex_message >actual &&\n'> <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'using "ifMissing = add" with "where = before"'>)}
        {
          (SQ <'\n'> <'\tgit config trailer.cc.key "Cc: " &&\n'> 
            <'\tgit config trailer.cc.where "before" &&\n'> <'\tgit config trailer.cc.ifMissing "add" &&\n'> <'\tcat complex_message_body >expected &&\n'> 
            <'\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n'> <'\t\tCc: Linus\n'> <'\t\tBug #42\n'> <'\t\tFixes: Z\n'> <'\t\tAcked-by= Z\n'> <'\t\tAcked-by= Junio\n'> 
            <'\t\tAcked-by= Peff\n'> <'\t\tReviewed-by:\n'> <'\t\tSigned-off-by: Z\n'> <'\tEOF\n'> 
            <'\tgit interpret-trailers --trailer "review:" --trailer "fix=53" \\\n'> <'\t\t--trailer "ack: Junio" --trailer "fix=22" \\\n'> 
            <'\t\t--trailer "bug: 42" --trailer "cc=Linus" --trailer "ack: Peff" \\\n'> <'\t\t<complex_message >actual &&\n'> <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'using "ifMissing = doNothing"'>)}
        {
          (SQ <'\n'> <'\tgit config trailer.cc.ifMissing "doNothing" &&\n'> 
            <'\tcat complex_message_body >expected &&\n'> <'\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n'> <'\t\tBug #42\n'> <'\t\tFixes: Z\n'> 
            <'\t\tAcked-by= Z\n'> <'\t\tAcked-by= Junio\n'> <'\t\tAcked-by= Peff\n'> <'\t\tReviewed-by:\n'> <'\t\tSigned-off-by: Z\n'> 
            <'\tEOF\n'> <'\tgit interpret-trailers --trailer "review:" --trailer "fix=53" \\\n'> 
            <'\t\t--trailer "cc=Linus" --trailer "ack: Junio" \\\n'> <'\t\t--trailer "fix=22" --trailer "bug: 42" --trailer "ack: Peff" \\\n'> 
            <'\t\t<complex_message >actual &&\n'> <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'default "where" is now "after"'>)}
        {
          (SQ <'\n'> <'\tgit config trailer.where "after" &&\n'> 
            <'\tgit config --unset trailer.ack.where &&\n'> <'\tcat complex_message_body >expected &&\n'> <'\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n'> 
            <'\t\tBug #42\n'> <'\t\tFixes: Z\n'> <'\t\tAcked-by= Z\n'> <'\t\tAcked-by= Peff\n'> <'\t\tAcked-by= Peff\n'> 
            <'\t\tAcked-by= Junio\n'> <'\t\tAcked-by= Peff\n'> <'\t\tReviewed-by:\n'> <'\t\tSigned-off-by: Z\n'> <'\t\tTested-by: Jakub\n'> 
            <'\t\tTested-by: Johannes\n'> <'\tEOF\n'> <'\tgit interpret-trailers --trailer "ack: Peff" \\\n'> 
            <'\t\t--trailer "Acked-by= Peff" --trailer "review:" \\\n'> <'\t\t--trailer "Tested-by: Jakub" --trailer "ack: Junio" \\\n'> 
            <'\t\t--trailer "bug: 42" --trailer "Tested-by: Johannes" \\\n'> <'\t\t--trailer "ack: Peff" <complex_message >actual &&\n'> <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'with simple command'>)}
        {
          (SQ <'\n'> <'\tgit config trailer.sign.key "Signed-off-by: " &&\n'> 
            <'\tgit config trailer.sign.where "after" &&\n'> <'\tgit config trailer.sign.ifExists "addIfDifferentNeighbor" &&\n'> 
            <'\tgit config trailer.sign.command "echo \\"A U Thor <author@example.com>\\"" &&\n'> <'\tcat complex_message_body >expected &&\n'> <'\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n'> 
            <'\t\tFixes: Z\n'> <'\t\tAcked-by= Z\n'> <'\t\tReviewed-by:\n'> <'\t\tSigned-off-by: Z\n'> 
            <'\t\tSigned-off-by: A U Thor <author@example.com>\n'> <'\tEOF\n'> <'\tgit interpret-trailers --trailer "review:" --trailer "fix=22" \\\n'> 
            <'\t\t<complex_message >actual &&\n'> <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'with command using commiter information'>)}
        {
          (SQ <'\n'> <'\tgit config trailer.sign.ifExists "addIfDifferent" &&\n'> 
            <
'\tgit config trailer.sign.command "echo \\"\\$GIT_COMMITTER_NAME <\\$GIT_COMMITTER_EMAIL>\\"" &&\n'
            > <'\tcat complex_message_body >expected &&\n'> <'\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n'> 
            <'\t\tFixes: Z\n'> <'\t\tAcked-by= Z\n'> <'\t\tReviewed-by:\n'> <'\t\tSigned-off-by: Z\n'> 
            <'\t\tSigned-off-by: C O Mitter <committer@example.com>\n'> <'\tEOF\n'> <'\tgit interpret-trailers --trailer "review:" --trailer "fix=22" \\\n'> 
            <'\t\t<complex_message >actual &&\n'> <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'with command using author information'>)}
        {
          (SQ <'\n'> <'\tgit config trailer.sign.key "Signed-off-by: " &&\n'> 
            <'\tgit config trailer.sign.where "after" &&\n'> <'\tgit config trailer.sign.ifExists "addIfDifferentNeighbor" &&\n'> 
            <
'\tgit config trailer.sign.command "echo \\"\\$GIT_AUTHOR_NAME <\\$GIT_AUTHOR_EMAIL>\\"" &&\n'
            > <'\tcat complex_message_body >expected &&\n'> <'\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n'> 
            <'\t\tFixes: Z\n'> <'\t\tAcked-by= Z\n'> <'\t\tReviewed-by:\n'> <'\t\tSigned-off-by: Z\n'> 
            <'\t\tSigned-off-by: A U Thor <author@example.com>\n'> <'\tEOF\n'> <'\tgit interpret-trailers --trailer "review:" --trailer "fix=22" \\\n'> 
            <'\t\t<complex_message >actual &&\n'> <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'setup a commit'>)}
        {
          (SQ <'\n'> <'\techo "Content of the first commit." > a.txt &&\n'> <'\tgit add a.txt &&\n'> 
            <'\tgit commit -m "Add file a.txt"\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'with command using $ARG'>)}
        {
          (SQ <'\n'> <'\tgit config trailer.fix.ifExists "replace" &&\n'> 
            <
'\tgit config trailer.fix.command "git log -1 --oneline --format=\\"%h (%s)\\" --abbrev-commit --abbrev=14 \\$ARG" &&\n'
            > <'\tFIXED=$(git log -1 --oneline --format="%h (%s)" --abbrev-commit --abbrev=14 HEAD) &&\n'> 
            <'\tcat complex_message_body >expected &&\n'> <'\tsed -e "s/ Z\\$/ /" >>expected <<-EOF &&\n'> <'\t\tFixes: $FIXED\n'> <'\t\tAcked-by= Z\n'> 
            <'\t\tReviewed-by:\n'> <'\t\tSigned-off-by: Z\n'> <'\t\tSigned-off-by: A U Thor <author@example.com>\n'> <'\tEOF\n'> 
            <'\tgit interpret-trailers --trailer "review:" --trailer "fix=HEAD" \\\n'> <'\t\t<complex_message >actual &&\n'> <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'with failing command using $ARG'>)}
        {
          (SQ <'\n'> <'\tgit config trailer.fix.ifExists "replace" &&\n'> 
            <'\tgit config trailer.fix.command "false \\$ARG" &&\n'> <'\tcat complex_message_body >expected &&\n'> <'\tsed -e "s/ Z\\$/ /" >>expected <<-EOF &&\n'> 
            <'\t\tFixes: Z\n'> <'\t\tAcked-by= Z\n'> <'\t\tReviewed-by:\n'> <'\t\tSigned-off-by: Z\n'> 
            <'\t\tSigned-off-by: A U Thor <author@example.com>\n'> <'\tEOF\n'> <'\tgit interpret-trailers --trailer "review:" --trailer "fix=HEAD" \\\n'> 
            <'\t\t<complex_message >actual &&\n'> <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'with empty tokens'>)}
        {
          (SQ <'\n'> <'\tgit config --unset trailer.fix.command &&\n'> <'\tcat >expected <<-EOF &&\n'> 
            <'\n'> <'\t\tSigned-off-by: A U Thor <author@example.com>\n'> <'\tEOF\n'> 
            <'\tgit interpret-trailers --trailer ":" --trailer ":test" >actual <<-EOF &&\n'> <'\tEOF\n'> <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'with command but no key'>)}
        {
          (SQ <'\n'> <'\tgit config --unset trailer.sign.key &&\n'> <'\tcat >expected <<-EOF &&\n'> 
            <'\n'> <'\t\tsign: A U Thor <author@example.com>\n'> <'\tEOF\n'> 
            <'\tgit interpret-trailers >actual <<-EOF &&\n'> <'\tEOF\n'> <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'with no command and no key'>)}
        {
          (SQ <'\n'> <'\tgit config --unset trailer.review.key &&\n'> <'\tcat >expected <<-EOF &&\n'> 
            <'\n'> <'\t\treview: Junio\n'> <'\t\tsign: A U Thor <author@example.com>\n'> <'\tEOF\n'> 
            <'\tgit interpret-trailers --trailer "review:Junio" >actual <<-EOF &&\n'> <'\tEOF\n'> <'\ttest_cmp expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_done>
      more_env: []
      words: [{<test_done>}]
      redirects: []
      do_fork: T
    )
  ]
)