[PATCH 0/2] t: add and use a commit_body test helper

Shlok Kulshreshtha <[email protected]>
Newsgroups org.kernel.vger.git
Message-ID <[email protected]>
While reviewing "t7614: avoid hiding git's exit code in a pipe"
(now in master as b6b276974e), Junio pointed out that the pattern
fixed there by hand -- "cat-file the commit object, and strip away
the object header with sed" -- recurs throughout the test suite, and
suggested factoring it into a helper (cf. <[email protected]>):

    commit_body () {
        git cat-file commit "$1" >.commit &&
        sed -e "1,/^$/d" .commit &&
        rm -f .commit
    }

I said I would take this up as a follow-up once t7614 landed. It has,
so here it is.

Scope:

  1/2 adds the helper to t/test-lib-functions.sh, following Junio's
      sketch, with a t/README entry.

  2/2 converts the existing call sites: 60 sites across 11 files.
      The idiom appears in four equivalent spellings (piped or
      written to a file first, "sed -e" or plain "sed", "\$" or "$"
      in the address) that all produce byte-identical output and
      collapse to the same commit_body call. Two sites needed more
      than a mechanical substitution and are explained individually
      in that commit's message; a few more are left alone because
      they are not extracting a commit's message body at all (email
      headers, a hand-built object for fsck, a .patch file).

Converting the piped sites also closes the same exit-code hole t7614
fixed: the exit status of a pipeline is that of its last command, so
a crashing "git cat-file" was previously masked by "sed" succeeding
on empty input.

Verification: all 11 touched test scripts pass in full (build clean,
no new failures), and a deliberately failing "git cat-file" now fails
a converted test that previously passed, confirming the exit-code fix
is real.

Shlok Kulshreshtha (2):
  test-lib-functions: add commit_body helper
  t: use commit_body to extract commit message bodies

 t/README                                  | 11 ++++
 t/t3405-rebase-malformed.sh               |  8 +--
 t/t3408-rebase-multi-line.sh              |  4 +-
 t/t3434-rebase-i18n.sh                    |  3 +-
 t/t3900-i18n-commit.sh                    |  4 +-
 t/t4150-am.sh                             |  8 +--
 t/t7500-commit-template-squash-signoff.sh |  4 +-
 t/t7501-commit-basic-functionality.sh     | 21 +++----
 t/t7502-commit-porcelain.sh               | 77 ++++++++---------------
 t/t7600-merge.sh                          | 14 ++---
 t/t7604-merge-custom-message.sh           | 18 ++----
 t/t7614-merge-signoff.sh                  |  9 +--
 t/test-lib-functions.sh                   |  8 +++
 13 files changed, 81 insertions(+), 108 deletions(-)

-- 
2.52.0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.