Am 12.06.2014 01:28, schrieb Pasha Bolokhov:
> +test_expect_success "setup" '
> +     mkdir repo-inside/ &&
> +     (
> +             cd repo-inside/ &&
> +             for f in a b c d
> +             do
> +                     echo "DATA" >"$f" || exit 1
> +             done &&
> +             mkdir dir1 dir1/meta &&
> +             mkdir dir1/ssubdir dir1/ssubdir/meta &&
> +             for f in e f g h
> +             do
> +                     echo "MORE DATA" >"dir1/$f" || exit 1
> +             done &&
> +             echo "EVEN more Data" >dir1/meta/aa &&
> +             echo "Data and BAIT" >dir1/ssubdir/meta/aaa &&
> +             mkdir dir2
> +             echo "Not a Metadata File" >dir2/meta

&&-chain broken twice.

We already use 'mkdir -p' elsewhere; you can use it here as well to
contract several mkdir invocations.

> +             git --git-dir=meta init
> +     ) &&
> +     mkdir repo-outside/ repo-outside/external repo-outside/tree &&
> +     (
> +             cd repo-outside/tree &&
> +             for f in n o p q
> +             do
> +                     echo "Literal Data" >"$f" || exit 1
> +             done &&
> +             mkdir meta sub sub/meta &&
> +             echo "Sample data" >meta/bb &&
> +             echo "Stream of data" >sub/meta/bbb &&
> +             git --git-dir=../external/meta init
> +     )
> +'
> +
> +
> +#
> +# The first set of tests (the repository is inside the work tree)
> +#
> +test_expect_success "'git status' ignores the repository directory" '
> +     (
> +             cd repo-inside &&
> +             git --git-dir=meta --work-tree=. status --porcelain 
> --untracked=all |
> +                     grep meta | sort >status.actual.2 &&

Please do not place a git invocation in a pipline such that it is not
the last command; its exist status would be ignored:

                git --git-dir=meta --work-tree=. status --porcelain 
--untracked=all
>status.actual.2+ &&
                grep meta status.actual.2+ | sort >status.actual.2 &&

There are more cases like this later in the patch.

> +             cat >status.expect.2 <<-\EOF &&
> +             ?? dir1/meta/aa
> +             ?? dir1/ssubdir/meta/aaa
> +             ?? dir2/meta
> +             EOF
> +             test_cmp status.actual.2 status.expect.2

It is customary to call the files 'expect' and 'actual'. Furthermore,
swap the order so that in case of a failure the diff shows how the
actual text was changed from the expected text:

                test_cmp status.expect.2 status.actual.2

> +     )
> +'
> +
> +test_expect_success "'git add -A' ignores the repository directory" '
> +     (
> +             cd repo-inside &&
> +             git --git-dir=meta --work-tree=. add -A &&
> +             git --git-dir=meta --work-tree=. status --porcelain | grep meta 
> | sort >status.actual.3 &&
> +             cat >status.expect.3 <<-\EOF &&
> +             A  dir1/meta/aa
> +             A  dir1/ssubdir/meta/aaa
> +             A  dir2/meta
> +             EOF
> +             test_cmp status.actual.3 status.expect.3
> +     )
> +'
> +
> +test_expect_success "'git grep --exclude-standard' ignores the repository 
> directory" '
> +     (
> +             cd repo-inside &&
> +             test_might_fail git --git-dir=meta \
> +                     grep --no-index --exclude-standard BAIT >grep.actual.4 
> &&
> +             cat >grep.expect.4 <<-\EOF &&
> +             dir1/ssubdir/meta/aaa:Data and BAIT
> +             EOF
> +             test_cmp grep.actual.4 grep.expect.4
> +     )
> +'
> +
> +#
> +# The second set of tests (the repository is outside of the work tree)
> +#
> +test_expect_success "'git status' acknowledges directories 'meta' \
> +if repo is not within work tree" '
> +     test_might_fail rm -rf meta/ &&

How might this fail? Only if permissions are wrong, and then we do want
this to fail.

Moreover, test_*_fail helpers are intended to be used only with git
commands; we don't expect system commands to fail in unexpected ways.

> +     (
> +             cd repo-outside/tree &&
> +             git --git-dir=../external/meta init &&
> +             git --git-dir=../external/meta --work-tree=. status --porcelain 
> --untracked=all |
> +                     grep meta | sort >status.actual.5 &&
> +             cat >status.expect.5 <<-\EOF &&
> +             ?? meta/bb
> +             ?? sub/meta/bbb
> +             EOF
> +             test_cmp status.actual.5 status.expect.5
> +     )
> +'
> +
> +test_expect_success "'git add -A' adds 'meta' if the repo is outside the 
> work tree" '
> +     (
> +             cd repo-outside/tree &&
> +             git --git-dir=../external/meta --work-tree=. add -A &&
> +             git --git-dir=../external/meta --work-tree=. status --porcelain 
> --untracked=all |
> +                     grep meta | sort >status.actual.6 &&
> +             cat >status.expect.6 <<-\EOF &&
> +             A  meta/bb
> +             A  sub/meta/bbb
> +             EOF
> +             test_cmp status.actual.6 status.expect.6
> +     )
> +'
> +
> +test_done
> 

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to