git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Eric Sunshine <sunshine@sunshineco.com>
To: shubham verma <shubhunic@gmail.com>
Cc: Git List <git@vger.kernel.org>
Subject: Re: [PATCH 06/11] t7001: change (cd <path> && git foo) to (git -C <path> foo)
Date: Fri, 25 Sep 2020 14:53:40 -0400	[thread overview]
Message-ID: <CAPig+cQipTK8ePVLKMeytmaePZ8yWSoFCjue=huKORjPGpTg+Q@mail.gmail.com> (raw)
In-Reply-To: <20200925170256.11490-7-shubhunic@gmail.com>

On Fri, Sep 25, 2020 at 1:03 PM shubham verma <shubhunic@gmail.com> wrote:
> t7001: change (cd <path> && git foo) to (git -C <path> foo)

This is misleading. We don't want the `git -C` form in a subshell, so
it shouldn't be enclosed in parentheses. Perhaps write it like this:

    t7001 use `git -C` to avoid `cd` outside of subshells

> Let's avoid the use of `cd` outside subshells by encapsulating them
> inside subshells or by using `git -C <dir> ...`.

This is misleading in two ways. First, none of the changes made by
this patch add subshell encapsulation. Second, many of the changes
drop the subhsell in favor of `git -C`, so describing them as "`cd`
outside of subshells" is wrong.

It's also important for the commit message to explain _why_ this
change is important when `cd` is used outside of a subshell. A
possible rewrite might be:

    t7001: avoid using `cd` outside of subshells

    Avoid using `cd` outside of subshells since, if the test fails,
    there is no guarantee that the current working directory is the
    expected one, which may cause subsequent tests to run in the wrong
    directory.

    While at it, make some other tests more concise by replacing
    simple subshells with `git -C`.

In fact, fixing the cases in which `cd` is used outside of a subshell
is much more important than the mere mechanical conversion made to the
other tests by replacing a subshell with `git -C`. As such, I'm
tempted to suggest splitting this patch into two: one which fixes the
cases of `cd` outside of subshell, and another which converts the
simple subshell cases to use `git -C`.

> Signed-off-by: shubham verma <shubhunic@gmail.com>
> ---
> diff --git a/t/t7001-mv.sh b/t/t7001-mv.sh
> @@ -11,12 +11,11 @@ test_expect_success 'prepare reference tree' '
>  test_expect_success 'moving the file out of subdirectory' '
> -       cd path0 && git mv COPYING ../path1/COPYING
> +       git -C path0 mv COPYING ../path1/COPYING
>  '
>
> -# in path0 currently
>  test_expect_success 'commiting the change' '
> -       cd .. && git commit -m move-out -a
> +       git commit -m move-out -a
>  '

This transformation looks fine, as do the following two tests which
get the same transformation.

I do have a very slight hesitation, though, that these changes go
against the grain of the tests. In particular, at the top of this
script, we see:

    test_description='git mv in subdirs'

which suggests that the tests really want to test the bare `git mv`
command while actually running in a subdirectory. This would imply
that these test should be rewritten as:

    test_expect_success 'title' '
        (
            cd path0 &&
            ...
        )
    '

However, it's such a minor misgiving that it's probably not worth considering.

> @@ -364,16 +356,10 @@ test_expect_success 'git mv moves a submodule with gitfile' '
> -       (
> -               cd mod &&
> -               git mv ../sub/ .
> -       ) &&
> +       git -C mod mv ../sub/ . &&

Okay. At first glance one might expect you to strip the `../` from the
argument, but indeed `../sub/` is correct since `-C mod` really does
change to the new directory, so the argument is interpreted relative
to `mod`.

  reply	other threads:[~2020-09-25 18:53 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-25 17:02 [PATCH 00/11] Modernizing the t7001 test script shubham verma
2020-09-25 17:02 ` [PATCH 01/11] t7001: convert tests from the old style to the current style shubham verma
2020-09-25 17:40   ` Eric Sunshine
2020-09-25 17:02 ` [PATCH 02/11] t7001: use TAB instead of spaces shubham verma
2020-09-25 17:44   ` Eric Sunshine
2020-09-25 17:02 ` [PATCH 03/11] t7001: remove unnecessary blank lines shubham verma
2020-09-25 17:50   ` Eric Sunshine
2020-09-25 20:19     ` Junio C Hamano
2020-09-25 17:02 ` [PATCH 04/11] t7001: change the style for cd according to subshell shubham verma
2020-09-25 18:12   ` Eric Sunshine
2020-09-25 17:02 ` [PATCH 05/11] t7001: remove whitespace after redirect operators shubham verma
2020-09-25 17:02 ` [PATCH 06/11] t7001: change (cd <path> && git foo) to (git -C <path> foo) shubham verma
2020-09-25 18:53   ` Eric Sunshine [this message]
2020-09-25 17:02 ` [PATCH 07/11] t7001: use ': >' rather than 'touch' shubham verma
2020-09-25 18:57   ` Eric Sunshine
2020-09-25 20:21     ` Junio C Hamano
2020-09-25 17:02 ` [PATCH 08/11] t7001: put each command on a separate line shubham verma
2020-09-25 19:01   ` Eric Sunshine
2020-09-25 17:02 ` [PATCH 09/11] t7001: use here-docs instead of echo shubham verma
2020-09-25 20:23   ` Junio C Hamano
2020-09-25 17:02 ` [PATCH 10/11] t7001: use `test` rather than `[` shubham verma
2020-09-25 17:02 ` [PATCH 11/11] t7001: move cleanup code from outside the tests into them shubham verma
2020-09-25 19:36   ` Eric Sunshine
2020-09-25 20:54   ` Junio C Hamano
2020-09-25 17:33 ` [PATCH 00/11] Modernizing the t7001 test script Eric Sunshine
2020-10-01  5:42   ` Shubham Verma
2020-12-22 19:22     ` Junio C Hamano

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

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAPig+cQipTK8ePVLKMeytmaePZ8yWSoFCjue=huKORjPGpTg+Q@mail.gmail.com' \
    --to=sunshine@sunshineco.com \
    --cc=git@vger.kernel.org \
    --cc=shubhunic@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.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).