Re: [PATCH v1 4/4] maintenance: use XDG config if it exists
- From
Eric Sunshine <sunshine@sunshineco.com>
- Date
- Oct 23, 2023, 11:39 UTC
- Message-ID
- <CAPig+cTx_wbs_b6he2O1EyUwZFp+5T8u6400_h87oCHxADb98A@mail.gmail.com>
- In-Reply-To
- <ZTZDsIcrB0zwHlFR@tanuki>
On Mon, Oct 23, 2023 at 5:58 AM Patrick Steinhardt <ps@pks.im> wrote:
Show 22 quoted lines
> On Wed, Oct 18, 2023 at 10:28:41PM +0200, Kristoffer Haugsbakk wrote: > > `git maintenance register` registers the repository in the user's global > > config. `$XDG_CONFIG_HOME/git/config` is supposed to be used if > > `~/.gitconfig` does not exist. However, this command creates a > > `~/.gitconfig` file and writes to that one even though the XDG variant > > exists. > > > > This used to work correctly until 50a044f1e4 (gc: replace config > > subprocesses with API calls, 2022-09-27), when the command started calling > > the config API instead of git-config(1). > > > > Also change `unregister` accordingly. > > > > Signed-off-by: Kristoffer Haugsbakk <code@khaugsbakk.name> > > --- > > +test_expect_success 'register uses XDG_CONFIG_HOME config if it exists' ' > > + XDG_CONFIG_HOME=.config && > > + test_when_finished rm -r "$XDG_CONFIG_HOME"/git/config && > > + export "XDG_CONFIG_HOME" && > > Also, I think we need to unset this variable at the end of this test as > tests don't run in a subshell. [...]
Yup, well spotted. Almost the entire body of this test should be in a subshell to ensure that the environment variable does not live beyond the end of this test. But test_when_finished() can't be used in a subshell, so a little care is needed:
test_expect_success 'register uses XDG_CONFIG_HOME config if it exists' '
test_when_finished rm -r .config/git/config &&
(
XDG_CONFIG_HOME=.config &&
...
)
'> > + mkdir -p "$XDG_CONFIG_HOME"/git && > > + touch "$XDG_CONFIG_HOME"/git/config &&
If the timestamp of the file is not significant, then we use `>` to create it rather than `touch`:
>"$XDG_CONFIG_HOME"/git/config &&
Show 5 quoted lines
> > + git maintenance register && > > + git config --file="$XDG_CONFIG_HOME"/git/config --get maintenance.repo >actual && > > + pwd >expect && > > + test_cmp expect actual > > +'