Sangeeta Jain <sangunb09@xxxxxxxxx> writes: > diff --git a/t/t4027-diff-submodule.sh b/t/t4027-diff-submodule.sh > ... > +test_expect_success 'git diff HEAD with dirty submodule (untracked) (none ignored)' ' > + git config diff.ignoreSubmodules none && > + git diff HEAD >actual && > + sed -e "1,/^@@/d" actual >actual.body && > + expect_from_to >expect.body $subtip $subprev-dirty && > + test_cmp expect.body actual.body && > + git config --unset diff.ignoreSubmodules > +' If any step concatenated by && in the above sequence fails, the test repository will have diff.ignoreSubmodules set to none (without getting it reset, since &&-chain prevents the last "config --unset" step from running). Unless the test is run under the --immediate option, that would affect the environment in which subsequent tests are run. Instead, our test usually do this: test_expect_success 'test title' ' test_config diff.ignoresubmodules none && git diff HEAD >actual && ... test_cmp expect.body actual.body ' "test_config" sets up a trigger, which will _always_ fire, whether the test fails at any intermediate steps or runs to the end and succeeds, to remove the configuration it just added. It is a short-hand for writing test_when_finished test_unconfig diff.ignoresubmodules && git config diff.ignoresubmodules none i.e. to use test_when_finished to set up the trigger. > - git diff HEAD >actual && > + git diff --ignore-submodules=none HEAD >actual && > sed -e "1,/^@@/d" actual >actual.body && > expect_from_to >expect.body $subprev $subprev-dirty && > test_cmp expect.body actual.body && > git diff --ignore-submodules=all HEAD >actual2 && > test_must_be_empty actual2 && > - git diff --ignore-submodules=untracked HEAD >actual3 && > + git diff HEAD >actual3 && This line can be left as-is, no? > diff --git a/t/t4041-diff-submodule-option.sh b/t/t4041-diff-submodule-option.sh > index f852136585..bb368b685d 100755 > --- a/t/t4041-diff-submodule-option.sh > +++ b/t/t4041-diff-submodule-option.sh > @@ -262,7 +262,7 @@ test_expect_success 'submodule is up to date' ' > > test_expect_success 'submodule contains untracked content' ' > echo new > sm1/new-file && > - git diff-index -p --submodule=log HEAD >actual && > + git diff-index -p --submodule=log HEAD --ignore-submodules=none >actual && > cat >expected <<-EOF && > Submodule sm1 contains untracked content > EOF > @@ -270,7 +270,7 @@ test_expect_success 'submodule contains untracked content' ' > ' > > test_expect_success 'submodule contains untracked content (untracked ignored)' ' > - git diff-index -p --ignore-submodules=untracked --submodule=log HEAD >actual && > + git diff-index -p --submodule=log HEAD >actual && Likewise.