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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.