git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Christian Couder <christian.couder@gmail.com>
To: Ben Peart <peartben@gmail.com>
Cc: git <git@vger.kernel.org>, Junio C Hamano <gitster@pobox.com>,
	Ben Peart <benpeart@microsoft.com>,
	Nguyen Thai Ngoc Duy <pclouds@gmail.com>,
	Johannes Schindelin <johannes.schindelin@gmx.de>,
	David Turner <David.Turner@twosigma.com>,
	Jeff King <peff@peff.net>
Subject: Re: [PATCH v3 4/6] fsmonitor: add test cases for fsmonitor extension
Date: Wed, 31 May 2017 06:33:07 +0200	[thread overview]
Message-ID: <CAP8UFD3jkAOOpFqJg2LurBfXRzeOLNO6+Wso3OPt_40TUVZy9g@mail.gmail.com> (raw)
In-Reply-To: <bfab707a-7f3a-ca7d-1f67-66dcb6ab2ea6@gmail.com>

On Tue, May 30, 2017 at 11:21 PM, Ben Peart <peartben@gmail.com> wrote:
>
> On 5/30/2017 9:18 AM, Christian Couder wrote:
>>
>> On Thu, May 25, 2017 at 8:36 PM, Ben Peart <peartben@gmail.com> wrote:
>>
>>> +       printf "untracked\0"
>>> +       printf "dir1/untracked\0"
>>> +       printf "dir2/untracked\0"
>>> +       printf "modified\0"
>>> +       printf "dir1/modified\0"
>>> +       printf "dir2/modified\0"
>>> +       printf "new\0""
>>> +       printf "dir1/new\0"
>>> +       printf "dir2/new\0"
>>
>> Maybe something like the following to save a few lines and remove some
>> redundancies:
>>
>>         printf "%s\0" untracked dir1/untracked dir2/untracked \
>>                               modified dir1/modified dir2/modified \
>>                               new dir1/new dir2/new
>>
>> or perhaps:
>>
>>         for f in untracked modified new
>>         do
>>                printf "%s\0" "$f" "dir1/$f" "dir2/$f"
>>         done
>
> That is a clever solution that certainly is fewer lines of code. However, I
> have to read the loop and think through the logic to figure out what it is
> doing vs the existing implementation where what it is doing is apparent from
> just glancing at the code.  I was also trying to maintain consistency with
> the other status test code in t7508-status.sh

Ok fair enough.

>>> +       EOF
>>> +       : >tracked &&
>>> +       : >modified &&
>>> +       mkdir dir1 &&
>>> +       : >dir1/tracked &&
>>> +       : >dir1/modified &&
>>> +       mkdir dir2 &&
>>> +       : >dir2/tracked &&
>>> +       : >dir2/modified &&
>>> +       git add . &&
>>> +       test_tick &&
>>> +       git commit -m initial &&
>>> +       dirty_repo
>>> +'
>>> +
>>> +cat >.gitignore <<\EOF
>>> +.gitignore
>>> +expect*
>>> +output*
>>> +marker*
>>> +EOF
>>
>> This could be part of the previous setup test.
>
> I had followed the pattern in t7508-status.sh with this but I can move it in
> if that is the preferred model.

Yeah, I think it is preferred these days to have all the setup code
inside tests.

>>> +       git config core.fsmonitor true  &&
>>> +       git config core.untrackedcache true &&
>>> +       git -c core.fsmonitor=false -c core.untrackedcache=true status
>>> >expect &&
>>
>> I don't understand why there is " -c core.untrackedcache=true" in the
>> above command as you already set core.untrackedcache to true on the
>> previous line.
>
> Defensive programming. :) The global setting was to ensure it was set when
> the test sub-functions clean and dirty were called and the command line
> settings were used to make it explicit what was being tested.  I can remove
> them if it is causing confusion.

I think it is a bit confusing indeed.

>>> +test_expect_success 'refresh_index() invalidates fsmonitor cache' '
>>> +       git config core.fsmonitor true &&
>>> +       git config core.untrackedcache true &&
>>> +       clean_repo &&
>>> +       git status &&
>>> +       test_path_is_missing marker &&
>>> +       dirty_repo &&
>>> +       write_script .git/hooks/query-fsmonitor<<-\EOF &&
>>> +       :>marker
>>> +       EOF
>>> +       git add . &&
>>> +       git commit -m "to reset" &&
>>> +       git status &&
>>> +       test_path_is_file marker &&

Ok so "marker" is there now.

>>> +       git reset HEAD~1 &&
>>> +       git status >output &&
>>> +       test_path_is_file marker &&
>>
>> You already checked that "marker" exists 3 lines above, and as far as
>> I can see nothing could remove this file since the previous test, as
>> the hook can only create it.
>> So I wonder if something is missing or if this test is redundant.
>
> Testing it each time ensures it is being created when it is supposed to be
> (ie when the test believes it is using the query-fsmonitor hook) and that it
> isn't when it isn't supposed to be (ie when the hook should not be called).

I would agree with that if the "marker" file was removed after the
previous "test_path_is_file marker", but I don't see any "clean_repo"
or "rm marker" call that removes it.

  parent reply	other threads:[~2017-05-31  4:33 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-05-25 18:36 [PATCH v3 0/6] Fast git status via a file system watcher Ben Peart
2017-05-25 18:36 ` [PATCH v3 1/6] bswap: add 64 bit endianness helper get_be64 Ben Peart
2017-05-25 18:36 ` [PATCH v3 2/6] dir: make lookup_untracked() available outside of dir.c Ben Peart
2017-05-25 18:36 ` [PATCH v3 3/6] fsmonitor: teach git to optionally utilize a file system monitor to speed up detecting new or changed files Ben Peart
2017-05-25 18:36 ` [PATCH v3 4/6] fsmonitor: add test cases for fsmonitor extension Ben Peart
2017-05-30 13:18   ` Christian Couder
2017-05-30 21:21     ` Ben Peart
2017-05-30 22:37       ` Junio C Hamano
2017-05-31  0:10         ` Ben Peart
2017-05-31  4:33       ` Christian Couder [this message]
2017-05-31 14:57         ` Ben Peart
2017-05-25 18:36 ` [PATCH v3 5/6] fsmonitor: add documentation for the " Ben Peart
2017-05-25 18:36 ` [PATCH v3 6/6] fsmonitor: add a sample query-fsmonitor hook script for Watchman Ben Peart
2017-05-31 13:21   ` Christian Couder

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=CAP8UFD3jkAOOpFqJg2LurBfXRzeOLNO6+Wso3OPt_40TUVZy9g@mail.gmail.com \
    --to=christian.couder@gmail.com \
    --cc=David.Turner@twosigma.com \
    --cc=benpeart@microsoft.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=johannes.schindelin@gmx.de \
    --cc=pclouds@gmail.com \
    --cc=peartben@gmail.com \
    --cc=peff@peff.net \
    /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).