From: Jeff King <peff@peff.net>
To: Junio C Hamano <gitster@pobox.com>
Cc: Devin Lehmacher <lehmacdj@gmail.com>, git@vger.kernel.org
Subject: Re: [GSoC][PATCH v4 4/4] credential-cache: add tests for XDG functionality
Date: Thu, 16 Mar 2017 13:58:57 -0400 [thread overview]
Message-ID: <20170316175857.77tftld54gqqm22c@sigill.intra.peff.net> (raw)
In-Reply-To: <xmqq8to5chh5.fsf@gitster.mtv.corp.google.com>
On Thu, Mar 16, 2017 at 09:29:58AM -0700, Junio C Hamano wrote:
> Devin Lehmacher <lehmacdj@gmail.com> writes:
>
> > @@ -20,4 +21,67 @@ helper_test_timeout cache --timeout=1
> > # our socket, leaving us with no way to access the daemon.
> > git credential-cache exit
> >
> > +# we need to use rm -rf here since sometimes the daemon hasn't finished
> > +# cleaning up after itself and rmdir fails
>
> Hmmmm. Peff, do you have ideas on better ways to do this (or
> explanation why this is the best we could do)?
If you call "git credential-cache exit", that should be deterministic.
The client program won't exit until the other side closes the
descriptor, which it won't do until it has cleaned up the socket. See
the comment at line 130 of credential-cache--daemon.c.
So here:
> > +test_expect_success 'credential-cache --socket option overrides default location' '
> > + test_when_finished "rm -rf \"$HOME\"/dir/" &&
> > + check approve "cache --socket \"$HOME/dir/socket\"" <<-\EOF &&
> > + protocol=https
> > + host=example.com
> > + username=store-user
> > + password=store-pass
> > + EOF
> > + test -S "$HOME/dir/socket" &&
> > + git credential-cache exit
> > +'
This is almost right, except:
- the "exit" needs to be told which socket to use
- we should do the "exit" even when the test fails early (so in
test_when_finished)
- the test_when_finished block will interpolate $HOME when setting up
the block, which will break if it contains double-quotes or other
special characters. It should use \$HOME.
I suspect the "check" invocation needs to do so as well, though it
is even trickier (we shove it into a single-quoted "-c" argument).
I think you could get by in both cases with relative paths.
So all together, probably:
test_when_finished "
git credential-cache --socket dir/socket &&
rmdir dir
" &&
check approve "cache --socket dir/socket" <<-\EOF &&
...
EOF
test -S dir/socket
The final "test -S" should be OK in practice. We're assuming that the
cache-daemon is still running, but it has a 900 second timeout by
default (and besides, all the other tests have exact same race).
-Peff
next prev parent reply other threads:[~2017-03-16 17:59 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-13 17:22 [GSoC][PATCH 0/3] Move ~/.git-credential-cache to ~/.cache/git Devin Lehmacher
2017-03-13 17:22 ` [GSoC][PATCH 1/3] path.c: Add xdg_cache_home to get paths under XDG_CACHE_HOME Devin Lehmacher
2017-03-13 18:48 ` Jeff King
2017-03-13 19:44 ` Devin Lehmacher
2017-03-13 17:22 ` [GSoC][PATCH 2/3] credential-cache.c: Make git use XDG_CACHE_HOME for credentials Devin Lehmacher
2017-03-13 18:09 ` Junio C Hamano
2017-03-13 19:03 ` Jeff King
2017-03-13 19:05 ` Junio C Hamano
2017-03-13 19:24 ` Devin Lehmacher
2017-03-13 19:22 ` Devin Lehmacher
2017-03-13 18:11 ` Junio C Hamano
2017-03-13 19:01 ` Jeff King
2017-03-13 17:22 ` [GSoC][PATCH 3/3] Update documentation to reflect new socket location Devin Lehmacher
2017-03-13 18:04 ` Junio C Hamano
2017-03-13 20:42 ` [GSoC][PATCH v2 2/2] credential-cache: use XDG_CACHE_HOME for socket Devin Lehmacher
2017-03-13 20:43 ` [GSoC][PATCH v2 1/2] path.c: add xdg_cache_home Devin Lehmacher
2017-03-13 20:43 ` [GSoC][PATCH v2 2/2] credential-cache: use XDG_CACHE_HOME for socket Devin Lehmacher
2017-03-13 21:52 ` Junio C Hamano
2017-03-14 0:32 ` [GSoC][PATCH/RFC v3 0/3] Fix commit messages, check if socket is socket Devin Lehmacher
2017-03-14 0:32 ` [GSoC][PATCH/RFC v3 1/3] path.c: add xdg_cache_home Devin Lehmacher
2017-03-14 0:32 ` [GSoC][PATCH/RFC v3 2/3] credential-cache: use XDG_CACHE_HOME for socket Devin Lehmacher
2017-03-14 1:50 ` Junio C Hamano
2017-03-14 0:32 ` [GSoC][PATCH/RFC v3 3/3] credential-cache: only use user_socket if a socket Devin Lehmacher
2017-03-14 0:40 ` Devin Lehmacher
2017-03-14 0:44 ` Brandon Williams
2017-03-14 1:30 ` Devin Lehmacher
2017-03-14 17:03 ` Brandon Williams
2017-03-14 1:52 ` Junio C Hamano
2017-03-14 6:10 ` Junio C Hamano
2017-03-14 6:17 ` Devin Lehmacher
2017-03-16 5:18 ` [GSoC][PATCH v4 0/4] Moving credential-cache socket to xdg path Devin Lehmacher
2017-03-16 5:18 ` [GSoC][PATCH v4 1/4] path.c: add xdg_cache_home Devin Lehmacher
2017-03-16 5:18 ` [GSoC][PATCH v4 2/4] dir: add directory_exists Devin Lehmacher
2017-03-16 16:09 ` Junio C Hamano
2017-03-16 18:26 ` Junio C Hamano
2017-03-16 5:18 ` [GSoC][PATCH v4 3/4] credential-cache: use XDG_CACHE_HOME for socket Devin Lehmacher
2017-03-16 16:20 ` Junio C Hamano
2017-03-16 18:02 ` Jeff King
2017-03-16 5:18 ` [GSoC][PATCH v4 4/4] credential-cache: add tests for XDG functionality Devin Lehmacher
2017-03-16 16:29 ` Junio C Hamano
2017-03-16 17:58 ` Jeff King [this message]
2017-03-17 2:53 ` [GSoC][PATCH v5 1/3] path.c: add xdg_cache_home Devin Lehmacher
2017-03-17 2:53 ` [GSoC][PATCH v5 2/3] credential-cache: use XDG_CACHE_HOME for socket Devin Lehmacher
2017-03-17 16:12 ` Ramsay Jones
2017-03-17 19:31 ` Devin Lehmacher
2017-03-17 2:53 ` [GSoC][PATCH v5 3/3] credential-cache: add tests for XDG functionality Devin Lehmacher
2017-03-17 5:38 ` Junio C Hamano
2017-03-17 12:36 ` [GSoC][PATCH v6 1/3] path.c: add xdg_cache_home Devin Lehmacher
2017-03-17 12:36 ` [GSoC][PATCH v6 2/3] credential-cache: use XDG_CACHE_HOME for socket Devin Lehmacher
2017-03-17 13:42 ` Jeff King
2017-03-17 12:36 ` [GSoC][PATCH v6 3/3] credential-cache: add tests for XDG functionality Devin Lehmacher
2017-03-17 13:38 ` Jeff King
2017-03-17 13:42 ` [GSoC][PATCH v6 1/3] path.c: add xdg_cache_home Jeff King
2017-03-13 21:39 ` [GSoC][PATCH v2 1/2] " Junio C Hamano
2017-03-16 21:03 [GSoC][PATCH v4 4/4] credential-cache: add tests for XDG functionality Devin Lehmacher
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=20170316175857.77tftld54gqqm22c@sigill.intra.peff.net \
--to=peff@peff.net \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=lehmacdj@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.