Subject: Re: bug#62741: 30.0.50; Eglot jdtls project test: pass on emacs-29, fail on master

From: Dmitry Gutov <[email-masked]>
Date: Mon, 10 Apr 2023 14:56:47 +0300

Hi!

On 10/04/2023 11:17, João Távora wrote:
> This is very odd then.  Why would project-files fail in the face of
> (presumably) a perfectly well-behaved Git repository?
> 
> Pasting the backtrace here for Dmitry to have a look.
> 
> Test eglot-test-eclipse-connect backtrace:
>    string-match("\0" nil 0)
>    split-string(nil "\0" t)
>    project--vc-list-files("/tmp/eglot--fixturernYTOR/project/" Git nil)
>    #f(compiled-function (dir) #<bytecode -0xa5be45661654310>)("/tmp/eglot--fixturernYTOR/project/")
>    mapcan(#f(compiled-function (dir) #<bytecode -0xa5be45661654310>) ("/tmp/eglot--fixturernYTOR/project/"))
>    #f(compiled-function (project &optional dirs) #<bytecode 0x114f4cd06dfc2088>)((vc Git "/tmp/eglot--fixturernYTOR/project/"))
>    apply(#f(compiled-function (project &optional dirs) #<bytecode 0x114f4cd06dfc2088>) (vc Git "/tmp/eglot--fixturernYTOR/project/") nil)
>    project-files((vc Git "/tmp/eglot--fixturernYTOR/project/"))
> 
> It would seem that the problem here is there are no files versioned yet,
> so this expression in project--vc-list-files
> 
>     (apply #'vc-git--run-command-string nil "ls-files" args)
> 
> Returns nil.
> 
> But I cannot reproduce this locally.

I haven't been able to reproduce this locally either. If I just use a 
repo after 'git init', the return value of vc-git--run-command-string 
(inside project--vc-list-files) is an empty string, not nil.

Could this be that the repo in the test isn't actually initialized? Or 
maybe there's something different in the test environment. My Git 
version is 2.37.2.