From: Johannes Sixt <j6t@kdbg.org>
To: Pasha Bolokhov <pasha.bolokhov@gmail.com>
Cc: pclouds@gmail.com, jrnieder@gmail.com, jnareb@gmail.com,
git@vger.kernel.org
Subject: Re: [PATCH v6] Add an explicit GIT_DIR to the list of excludes
Date: Thu, 12 Jun 2014 08:19:19 +0200 [thread overview]
Message-ID: <53994667.90209@kdbg.org> (raw)
In-Reply-To: <1402529308-3940-1-git-send-email-pasha.bolokhov@gmail.com>
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
>
next prev parent reply other threads:[~2014-06-12 6:19 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-04 20:15 [PATCH v5] Add an explicit GIT_DIR to the list of excludes Pasha Bolokhov
2014-06-08 10:17 ` Duy Nguyen
2014-06-10 3:18 ` Pasha Bolokhov
2014-06-11 10:48 ` Duy Nguyen
2014-06-11 23:28 ` [PATCH v6] " Pasha Bolokhov
2014-06-12 6:19 ` Johannes Sixt [this message]
2014-06-13 16:10 ` Pasha Bolokhov
2014-06-13 16:50 ` Junio C Hamano
2014-06-14 19:16 ` [PATCH v8] " Pasha Bolokhov
2014-06-13 16:32 ` [PATCH v7] " Pasha Bolokhov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=53994667.90209@kdbg.org \
--to=j6t@kdbg.org \
--cc=git@vger.kernel.org \
--cc=jnareb@gmail.com \
--cc=jrnieder@gmail.com \
--cc=pasha.bolokhov@gmail.com \
--cc=pclouds@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).