On 2021-10-28 19:16+0000, Eric Wong wrote:
> Thomas Weißschuh <[email protected]> wrote:
> > It turned out that in my 
> > $XDG_CONFIG_HOME/lei/all_locals_ever.git/lei_ale.state
> > there were entries for the repositories in
> > $PUBLIC_INBOX_SRC/t/home2/{t1,t2}.
> > 
> > I'm not sure how those entries came to be but probably because of some
> > debugging things I did before.
> 
> The presence of t1 & t2 entries is harmless for normal lei
> operation; but they shouldn't be there...
> 
> I wonder, do you have XDG_CACHE_HOME explicitly set in your env?
> If so, that would've caused problems (fixed below).

Yes I have it set explicitly

> > IMO it would make sense to prevent p-i to read this global state during
> > unittests.
> 
> Yes, I think this was from our failure to clobber XDG_CACHE_HOME:

That works, thanks!

Tested-by: Thomas Weißschuh <[email protected]>

> ------------8<------------
> Subject: [PATCH] test_common: clear XDG_CACHE_HOME before lei tests
> 
> We don't want to read a users'
> $XDG_CACHE_HOME/lei/all_locals_ever.git during tests.
> 
> Reported-by: Thomas Weißschuh <[email protected]>
> Link: 
> https://public-inbox.org/meta/[email protected]/
> ---
>  lib/PublicInbox/TestCommon.pm | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/lib/PublicInbox/TestCommon.pm b/lib/PublicInbox/TestCommon.pm
> index c3820d3a..052d6e45 100644
> --- a/lib/PublicInbox/TestCommon.pm
> +++ b/lib/PublicInbox/TestCommon.pm
> @@ -556,16 +556,20 @@ SKIP: {
>       require_git(2.6, 1) or skip('git 2.6+ required for lei test', 2);
>       my $mods = $test_opt->{mods} // [ 'lei' ];
>       require_mods(@$mods, 2);
> +
> +     # set PERL_INLINE_DIRECTORY before clobbering XDG_CACHE_HOME
> +     require PublicInbox::Spawn;
>       require PublicInbox::Config;
>       require File::Path;
> +
>       local %ENV = %ENV;
>       delete $ENV{XDG_DATA_HOME};
>       delete $ENV{XDG_CONFIG_HOME};
> +     delete $ENV{XDG_CACHE_HOME};
>       $ENV{GIT_COMMITTER_EMAIL} = '[email protected]';
>       $ENV{GIT_COMMITTER_NAME} = 'lei user';
>       my (undef, $fn, $lineno) = caller(0);
>       my $t = "$fn:$lineno";
> -     require PublicInbox::Spawn;
>       state $lei_daemon = PublicInbox::Spawn->can('send_cmd4') ||
>                               eval { require Socket::MsgHdr; 1 };
>       unless ($lei_daemon) {

Reply via email to