all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* bug#62741: 30.0.50; Eglot jdtls project test: pass on emacs-29, fail on master
@ 2023-04-09 17:46 Basil Contovounesios via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2023-04-09 19:13 ` João Távora
  0 siblings, 1 reply; 8+ messages in thread
From: Basil Contovounesios via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-04-09 17:46 UTC (permalink / raw)
  To: 62741; +Cc: João Távora, Dmitry Gutov

[-- Attachment #1: Type: text/plain, Size: 153 bytes --]

With the following JDT LS binary release:
https://download.eclipse.org/jdtls/milestones/1.21.0/

The test eglot-test-eclipse-connect passes on emacs-29:

[-- Attachment #2: emacs-29-check.txt --]
[-- Type: text/plain, Size: 3769 bytes --]

-*- mode: compilation; default-directory: "~/.local/src/emacs-29/" -*-
Compilation started at Sun Apr  9 18:24:01

make TEST_LOAD_EL=no TEST_BACKTRACE_LINE_LENGTH=120 SELECTOR='"eclipse"' test/eglot-tests
make -C test eglot-tests
make[1]: Entering directory '/home/bic/.local/src/emacs-29/test'
make[2]: Entering directory '/home/bic/.local/src/emacs-29/test'
  GEN      lisp/progmodes/eglot-tests.log
Running 1 tests (2023-04-09 18:24:01+0100, selector `"eclipse"')
[eglot] project 649b9e33-b84f-4a6f-9674-9e7c0d7bbf3f: \ 
[eglot] project 649b9e33-b84f-4a6f-9674-9e7c0d7bbf3f: | Refreshing Maven model Refreshing Maven model
[eglot] project 649b9e33-b84f-4a6f-9674-9e7c0d7bbf3f: /  Updating Maven Dependencies
[eglot] project 649b9e33-b84f-4a6f-9674-9e7c0d7bbf3f: \ 
[eglot] project 649b9e33-b84f-4a6f-9674-9e7c0d7bbf3f: | project jdt.ls-java-project Updating Maven Dependencies
[eglot] project 649b9e33-b84f-4a6f-9674-9e7c0d7bbf3f: /  Updating Maven Dependencies
[eglot] project c2a93e31-26af-433e-a8c3-9f605affe120: \ 
[eglot] project c2a93e31-26af-433e-a8c3-9f605affe120: | Initialize Workspace Initialize Workspace
[eglot] Connected! Server `EGLOT (project/(java-mode java-ts-mode))' now managing `(java-mode java-ts-mode)' buffers in project `project'.
[eglot] Event detected:
(:jsonrpc "2.0" :method "language/status" :params
	  (:type "Starting" :message "0% Starting Java Language Server"))

[eglot] Test body was OK
[eglot] Asking EGLOT (project/(java-mode java-ts-mode)) politely to terminate
[eglot] project 0a7b40e9-2cdd-4cfd-8e09-e1dea42e4280: \ 
[eglot] project 0a7b40e9-2cdd-4cfd-8e09-e1dea42e4280: | Repository registry initialization Repository registry initialization
[eglot] project 0a7b40e9-2cdd-4cfd-8e09-e1dea42e4280: /  Repository registry initialization
[eglot] project c2a93e31-26af-433e-a8c3-9f605affe120: /  Initialize Workspace
[eglot] project c2a93e31-26af-433e-a8c3-9f605affe120: -  Initialize Workspace
[eglot] project 3cb15c07-f157-482a-ada4-5186a38038cc: \ 
[eglot] project 3cb15c07-f157-482a-ada4-5186a38038cc: | Synchronizing projects Synchronizing projects
[eglot] project d6974c61-c657-4934-b1b4-33542dccd530: \ 
[eglot] project d6974c61-c657-4934-b1b4-33542dccd530: | Synchronizing projects Synchronizing projects
[eglot] project c2a93e31-26af-433e-a8c3-9f605affe120: \ 
[eglot] project c2a93e31-26af-433e-a8c3-9f605affe120: | Initialize Workspace Initialize Workspace
[eglot] project c2a93e31-26af-433e-a8c3-9f605affe120: /  Initialize Workspace
[eglot] project 3cb15c07-f157-482a-ada4-5186a38038cc: /  Synchronizing projects
[eglot] project 3cb15c07-f157-482a-ada4-5186a38038cc: \ 
[eglot] project 3cb15c07-f157-482a-ada4-5186a38038cc: | Synchronizing projects Synchronizing projects
[eglot] project 3cb15c07-f157-482a-ada4-5186a38038cc: /  Synchronizing projects
[eglot] project d6974c61-c657-4934-b1b4-33542dccd530: /  Synchronizing projects
[eglot] project d6974c61-c657-4934-b1b4-33542dccd530: \ 
[eglot] project d6974c61-c657-4934-b1b4-33542dccd530: | Synchronizing projects Synchronizing projects
[eglot] project d6974c61-c657-4934-b1b4-33542dccd530: /  Synchronizing projects
[eglot] (warning) Server tried to register unsupported capability `workspace/didChangeWorkspaceFolders'
Warning (eglot): Server tried to register unsupported capability `workspace/didChangeWorkspaceFolders'
[jsonrpc] Server exited with status 9
[eglot] Killing (Main.java), wiping /tmp/eglot--fixtureIeG1kx, restoring nil
   passed  1/1  eglot-test-eclipse-connect (2.025192 sec)

Ran 1 tests, 1 results as expected, 0 unexpected (2023-04-09 18:24:03+0100, 2.025296 sec)

make[2]: Leaving directory '/home/bic/.local/src/emacs-29/test'
make[1]: Leaving directory '/home/bic/.local/src/emacs-29/test'

Compilation finished at Sun Apr  9 18:24:03

[-- Attachment #3: Type: text/plain, Size: 22 bytes --]


But fails on master:

[-- Attachment #4: emacs-check.txt --]
[-- Type: text/plain, Size: 5298 bytes --]

-*- mode: compilation; default-directory: "~/.local/src/emacs/" -*-
Compilation started at Sun Apr  9 18:23:12

make TEST_LOAD_EL=no TEST_BACKTRACE_LINE_LENGTH=120 SELECTOR='"eclipse"' test/eglot-tests
make -C test eglot-tests
make[1]: Entering directory '/home/bic/.local/src/emacs/test'
make[2]: Entering directory '/home/bic/.local/src/emacs/test'
  GEN      lisp/progmodes/eglot-tests.log
Loading project...
Loading eldoc...
Loading seq...
Loading flymake...
Loading xref...
Loading jsonrpc...
Loading external-completion...
Running 1 tests (2023-04-09 18:23:12+0100, selector `"eclipse"')
[eglot-tests] [eglot-test-eclipse-connect]: test start
[eglot] Connected! Server `EGLOT (project/(java-mode java-ts-mode))' now managing `(java-mode java-ts-mode)' buffers in project `project'.
[eglot-tests] waiting for `(string= method language/status)'
[eglot-tests] detected: language/status
[eglot-tests] [eglot-test-eclipse-connect]: OK
[eglot] Asking EGLOT (project/(java-mode java-ts-mode)) politely to terminate
[jsonrpc] Server exited with status 9
[eglot-tests] Killing (Main.java), wiping /tmp/eglot--fixture4dC9ZE, restoring nil
Test eglot-test-eclipse-connect backtrace:
  string-match("\0" nil 0)
  split-string(nil "\0" t)
  project--vc-list-files("/tmp/eglot--fixture4dC9ZE/project/" Git nil)
  #f(compiled-function (dir) #<bytecode -0x2db03190cab6406>)("/tmp/eglot--fixture4dC9ZE/project/")
  mapcan(#f(compiled-function (dir) #<bytecode -0x2db03190cab6406>) ("/tmp/eglot--fixture4dC9ZE/project/"))
  #f(compiled-function (project &optional dirs) #<bytecode 0x16fba1d2f813cab9>)((vc Git "/tmp/eglot--fixture4dC9ZE/proje
  apply(#f(compiled-function (project &optional dirs) #<bytecode 0x16fba1d2f813cab9>) (vc Git "/tmp/eglot--fixture4dC9ZE
  project-files((vc Git "/tmp/eglot--fixture4dC9ZE/project/"))
  #f(compiled-function (arg1 arg2 arg3 &rest rest) "Handle dynamic registration of workspace/didChangeWatchedFiles." #<b
  apply(#f(compiled-function (arg1 arg2 arg3 &rest rest) "Handle dynamic registration of workspace/didChangeWatchedFiles
  eglot-register-capability(#<eglot-lsp-server eglot-lsp-server-157d10109c86> workspace/didChangeWatchedFiles "50f10b8a-
  apply(eglot-register-capability #<eglot-lsp-server eglot-lsp-server-157d10109c86> workspace/didChangeWatchedFiles "50f
  eglot--register-unregister(#<eglot-lsp-server eglot-lsp-server-157d10109c86> [(:id "50f10b8a-3194-4cc6-bbf1-57160d2a51
  #f(compiled-function (arg1 arg2 &rest rest) "Handle server request client/registerCapability." #<bytecode 0xcd39a94e63
  apply(#f(compiled-function (arg1 arg2 &rest rest) "Handle server request client/registerCapability." #<bytecode 0xcd39
  eglot-handle-request(#<eglot-lsp-server eglot-lsp-server-157d10109c86> client/registerCapability :registrations [(:id 
  apply(eglot-handle-request #<eglot-lsp-server eglot-lsp-server-157d10109c86> client/registerCapability (:registrations
  #f(compiled-function (server method params) #<bytecode -0xa39412486497b61>)(#<eglot-lsp-server eglot-lsp-server-157d10
  jsonrpc-connection-receive(#<eglot-lsp-server eglot-lsp-server-157d10109c86> (:jsonrpc "2.0" :id "1" :method "client/r
  jsonrpc--process-filter(#<process EGLOT (project/(java-mode java-ts-mode))> "Content-Length: 120\15\n\15\n{\"jsonrpc\"
  accept-process-output(nil 30)
  jsonrpc-request(#<eglot-lsp-server eglot-lsp-server-157d10109c86> :shutdown nil :timeout 3 :cancel-on-input nil :cance
  eglot--request(#<eglot-lsp-server eglot-lsp-server-157d10109c86> :shutdown nil :timeout 3)
  eglot-shutdown(#<eglot-lsp-server eglot-lsp-server-157d10109c86> nil 3 nil)
  #f(compiled-function () #<bytecode 0x1f0e58730483c7dc>)()
  eglot--call-with-fixture((("project/src/main/java/foo" ("Main.java" . "")) ("project/.git/")) #f(compiled-function () 
  #f(compiled-function () #<bytecode -0x1ca1b560e59ba4f0>)()
  ert--run-test-internal(#s(ert--test-execution-info :test #s(ert-test :name eglot-test-eclipse-connect :documentation "
  ert-run-test(#s(ert-test :name eglot-test-eclipse-connect :documentation "Connect to eclipse.jdt.ls server..." :body #
  ert-run-or-rerun-test(#s(ert--stats :selector "eclipse" :tests ... :test-map #<hash-table eql 1/1 0x157d100e68ab> :tes
  ert-run-tests("eclipse" #f(compiled-function (event-type &rest event-args) #<bytecode -0x13d91a0b22d7ab7f>) nil)
  ert-run-tests-batch("eclipse")
  ert-run-tests-batch-and-exit("eclipse")
  eval((ert-run-tests-batch-and-exit '"eclipse") t)
  command-line-1(("-L" ":." "-l" "ert" "--eval" "(setq ert-batch-backtrace-right-margin 120)" "-l" "lisp/progmodes/eglot
  command-line()
  normal-top-level()
Test eglot-test-eclipse-connect condition:
    (wrong-type-argument stringp nil)
   FAILED  1/1  eglot-test-eclipse-connect (1.765819 sec) at lisp/progmodes/eglot-tests.el:324

Ran 1 tests, 0 results as expected, 1 unexpected (2023-04-09 18:23:14+0100, 1.827689 sec)

1 unexpected results:
   FAILED  eglot-test-eclipse-connect

make[2]: *** [Makefile:181: lisp/progmodes/eglot-tests.log] Error 1
make[2]: Leaving directory '/home/bic/.local/src/emacs/test'
make[1]: *** [Makefile:247: lisp/progmodes/eglot-tests] Error 2
make[1]: Leaving directory '/home/bic/.local/src/emacs/test'
make: *** [Makefile:1100: test/eglot-tests] Error 2

Compilation exited abnormally with code 2 at Sun Apr  9 18:23:14

[-- Attachment #5: Type: text/plain, Size: 53 bytes --]


The following change lets it pass on both branches:

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #6: eglot.diff --]
[-- Type: text/x-diff, Size: 675 bytes --]

diff --git a/test/lisp/progmodes/eglot-tests.el b/test/lisp/progmodes/eglot-tests.el
index 62e04539ebf..041aafabe8e 100644
--- a/test/lisp/progmodes/eglot-tests.el
+++ b/test/lisp/progmodes/eglot-tests.el
@@ -325,8 +325,7 @@ eglot-test-eclipse-connect
   "Connect to eclipse.jdt.ls server."
   (skip-unless (executable-find "jdtls"))
   (eglot--with-fixture
-      '(("project/src/main/java/foo" . (("Main.java" . "")))
-        ("project/.git/" . nil))
+      '(("project/src/main/java/foo" . (("Main.java" . ""))))
     (with-current-buffer
         (eglot--find-file-noselect "project/src/main/java/foo/Main.java")
       (eglot--sniffing (:server-notifications s-notifs)

[-- Attachment #7: Type: text/plain, Size: 6791 bytes --]


Which I assume means that project-current picks up .git as a project
root marker, but project-files unexpectedly finds no registered files.

I'm not sure whether this is expected on either the project or eglot
side.  If I squint hard enough it kind of reminds me of bug#62735.

WDYT?

Thanks,

-- 
Basil

In GNU Emacs 29.0.60 (build 1, x86_64-pc-linux-gnu, X toolkit, cairo
 version 1.16.0, Xaw3d scroll bars) of 2023-04-09 built on blc
Repository revision: 57490fff6ecf3cc1de7d8d833d1b6c895330b762
Repository branch: wt/emacs-29
Windowing system distributor 'The X.Org Foundation', version 11.0.12101003
System Description: Ubuntu 22.04.2 LTS

Configured using:
 'configure CC=gcc-12 'CFLAGS=-Og -ggdb3' --prefix=/home/bic/.local
 --with-program-suffix=-29 --with-file-notification=yes --with-x
 --with-x-toolkit=lucid'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
JSON LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NOTIFY
INOTIFY PDUMPER PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF
TOOLKIT_SCROLL_BARS TREE_SITTER WEBP X11 XAW3D XDBE XIM XINPUT2 XPM
LUCID ZLIB

Important settings:
  value of $LC_MONETARY: en_IE.UTF-8
  value of $LC_NUMERIC: en_IE.UTF-8
  value of $LC_TIME: en_IE.UTF-8
  value of $LANG: en_GB.UTF-8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix

Major mode: Lisp Interaction

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  line-number-mode: t
  indent-tabs-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug message mailcap yank-media puny dired
dired-loaddefs rfc822 mml mml-sec password-cache epa derived epg rfc6068
epg-config gnus-util text-property-search time-date subr-x mm-decode
mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader
cl-loaddefs cl-lib sendmail rfc2047 rfc2045 ietf-drums mm-util
mail-prsvr mail-utils rmc iso-transl tooltip cconv eldoc paren electric
uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel
term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image
regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode
prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu
timer select scroll-bar mouse jit-lock font-lock syntax font-core
term/tty-colors frame minibuffer nadvice seq simple cl-generic
indonesian philippine cham georgian utf-8-lang misc-lang vietnamese
tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek
romanian slovak czech european ethiopic indian cyrillic chinese
composite emoji-zwj charscript charprop case-table epa-hook
jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs
theme-loaddefs faces cus-face macroexp files window text-properties
overlay sha1 md5 base64 format env code-pages mule custom widget keymap
hashtable-print-readable backquote threads dbusbind inotify lcms2
dynamic-setting system-font-setting font-render-setting cairo x-toolkit
xinput2 x multi-tty make-network-process emacs)

Memory information:
((conses 16 36570 7455)
 (symbols 48 5149 0)
 (strings 32 13868 1570)
 (string-bytes 1 379298)
 (vectors 16 9299)
 (vector-slots 8 148612 10553)
 (floats 8 23 25)
 (intervals 56 248 0)
 (buffers 984 10))

In GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, X toolkit, cairo
 version 1.16.0, Xaw3d scroll bars) of 2023-04-09 built on blc
Repository revision: c9e13048bb9b1b5fb156fb128b32030ae2f1003b
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12101003
System Description: Ubuntu 22.04.2 LTS

Configured using:
 'configure CC=gcc-12 'CFLAGS=-Og -ggdb3' --prefix=/home/bic/.local
 --with-file-notification=yes --with-x --with-x-toolkit=lucid'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
JSON LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NOTIFY
INOTIFY PDUMPER PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF
TOOLKIT_SCROLL_BARS TREE_SITTER WEBP X11 XAW3D XDBE XIM XINPUT2 XPM
LUCID ZLIB

Important settings:
  value of $LC_MONETARY: en_IE.UTF-8
  value of $LC_NUMERIC: en_IE.UTF-8
  value of $LC_TIME: en_IE.UTF-8
  value of $LANG: en_GB.UTF-8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix

Major mode: Lisp Interaction

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  line-number-mode: t
  indent-tabs-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug message mailcap yank-media puny dired
dired-loaddefs rfc822 mml mml-sec password-cache epa derived epg rfc6068
epg-config gnus-util text-property-search time-date subr-x mm-decode
mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader
cl-loaddefs cl-lib sendmail rfc2047 rfc2045 ietf-drums mm-util
mail-prsvr mail-utils rmc iso-transl tooltip cconv eldoc paren electric
uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel
term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image
regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode
prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu
timer select scroll-bar mouse jit-lock font-lock syntax font-core
term/tty-colors frame minibuffer nadvice seq simple cl-generic
indonesian philippine cham georgian utf-8-lang misc-lang vietnamese
tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek
romanian slovak czech european ethiopic indian cyrillic chinese
composite emoji-zwj charscript charprop case-table epa-hook
jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs
theme-loaddefs faces cus-face macroexp files window text-properties
overlay sha1 md5 base64 format env code-pages mule custom widget keymap
hashtable-print-readable backquote threads dbusbind inotify lcms2
dynamic-setting system-font-setting font-render-setting cairo x-toolkit
xinput2 x multi-tty make-network-process emacs)

Memory information:
((conses 16 36595 9309)
 (symbols 48 5171 0)
 (strings 32 13872 1628)
 (string-bytes 1 377598)
 (vectors 16 9294)
 (vector-slots 8 148577 11099)
 (floats 8 23 25)
 (intervals 56 244 0)
 (buffers 984 10))

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* bug#62741: 30.0.50; Eglot jdtls project test: pass on emacs-29, fail on master
  2023-04-09 17:46 bug#62741: 30.0.50; Eglot jdtls project test: pass on emacs-29, fail on master Basil Contovounesios via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-04-09 19:13 ` João Távora
  2023-04-09 23:13   ` Basil Contovounesios via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 8+ messages in thread
From: João Távora @ 2023-04-09 19:13 UTC (permalink / raw)
  To: Basil Contovounesios; +Cc: Dmitry Gutov, 62741

Basil Contovounesios <contovob@tcd.ie> writes:

> diff --git a/test/lisp/progmodes/eglot-tests.el b/test/lisp/progmodes/eglot-tests.el
> index 62e04539ebf..041aafabe8e 100644
> --- a/test/lisp/progmodes/eglot-tests.el
> +++ b/test/lisp/progmodes/eglot-tests.el
> @@ -325,8 +325,7 @@ eglot-test-eclipse-connect
>    "Connect to eclipse.jdt.ls server."
>    (skip-unless (executable-find "jdtls"))
>    (eglot--with-fixture
> -      '(("project/src/main/java/foo" . (("Main.java" . "")))
> -        ("project/.git/" . nil))
> +      '(("project/src/main/java/foo" . (("Main.java" . ""))))
>      (with-current-buffer
>          (eglot--find-file-noselect "project/src/main/java/foo/Main.java")
>        (eglot--sniffing (:server-notifications s-notifs)
>
>
> Which I assume means that project-current picks up .git as a project
> root marker, but project-files unexpectedly finds no registered files.
>
> I'm not sure whether this is expected on either the project or eglot
> side.  If I squint hard enough it kind of reminds me of bug#62735.

I think the change is fine, please install it, and thanks.  Let's hope
it doesn't break on Emacs 26.3, 27 and 28 

(f you could test, it would be great, if not it's OK.  It'd involve
making a GitHub fork and using the GitHub actions scripts)

A safer, but slightly slower route:

   (should (zerop (shell-command "git init")))

Some tests known to need project-files already do this.

But why does it pass on Emacs 29?? Maybe project-files simply doesn't
error there?

João





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#62741: 30.0.50; Eglot jdtls project test: pass on emacs-29, fail on master
  2023-04-09 19:13 ` João Távora
@ 2023-04-09 23:13   ` Basil Contovounesios via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2023-04-10  8:17     ` João Távora
  0 siblings, 1 reply; 8+ messages in thread
From: Basil Contovounesios via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-04-09 23:13 UTC (permalink / raw)
  To: João Távora; +Cc: Dmitry Gutov, 62741

João Távora [2023-04-09 20:13 +0100] wrote:

> Basil Contovounesios <contovob@tcd.ie> writes:
>
>> diff --git a/test/lisp/progmodes/eglot-tests.el b/test/lisp/progmodes/eglot-tests.el
>> index 62e04539ebf..041aafabe8e 100644
>> --- a/test/lisp/progmodes/eglot-tests.el
>> +++ b/test/lisp/progmodes/eglot-tests.el
>> @@ -325,8 +325,7 @@ eglot-test-eclipse-connect
>>    "Connect to eclipse.jdt.ls server."
>>    (skip-unless (executable-find "jdtls"))
>>    (eglot--with-fixture
>> -      '(("project/src/main/java/foo" . (("Main.java" . "")))
>> -        ("project/.git/" . nil))
>> +      '(("project/src/main/java/foo" . (("Main.java" . ""))))
>>      (with-current-buffer
>>          (eglot--find-file-noselect "project/src/main/java/foo/Main.java")
>>        (eglot--sniffing (:server-notifications s-notifs)
>>
>>
>> Which I assume means that project-current picks up .git as a project
>> root marker, but project-files unexpectedly finds no registered files.
>>
>> I'm not sure whether this is expected on either the project or eglot
>> side.  If I squint hard enough it kind of reminds me of bug#62735.
>
> I think the change is fine, please install it, and thanks.

Done:

Avoid Git project in eglot-test-eclipse-connect
6674ac17eb4 2023-04-09 23:32:14 +0100
https://git.sv.gnu.org/cgit/emacs.git/commit/?id=6674ac17eb4


> Let's hope it doesn't break on Emacs 26.3, 27 and 28
>
> (f you could test, it would be great, if not it's OK.  It'd involve
> making a GitHub fork and using the GitHub actions scripts)

Seems to work there too:
https://github.com/basil-conto/eglot/commit/e915db94a6
https://github.com/basil-conto/eglot/actions/runs/4652799056

> A safer, but slightly slower route:
>
>    (should (zerop (shell-command "git init")))
>
> Some tests known to need project-files already do this.

This continues to fail in the same way, both in emacs.git and eglot.git:
https://github.com/basil-conto/eglot/commit/1b2d13eaf6
https://github.com/basil-conto/eglot/actions/runs/4652805286

> But why does it pass on Emacs 29?? Maybe project-files simply doesn't
> error there?

Maybe, but why not?

Thanks,

-- 
Basil





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#62741: 30.0.50; Eglot jdtls project test: pass on emacs-29, fail on master
  2023-04-09 23:13   ` Basil Contovounesios via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-04-10  8:17     ` João Távora
  2023-04-10  9:11       ` Basil Contovounesios via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2023-04-10 11:56       ` Dmitry Gutov
  0 siblings, 2 replies; 8+ messages in thread
From: João Távora @ 2023-04-10  8:17 UTC (permalink / raw)
  To: Basil Contovounesios; +Cc: Dmitry Gutov, 62741

Basil Contovounesios <contovob@tcd.ie> writes:

> João Távora [2023-04-09 20:13 +0100] wrote:
>
>> Basil Contovounesios <contovob@tcd.ie> writes:
>>
>>> diff --git a/test/lisp/progmodes/eglot-tests.el b/test/lisp/progmodes/eglot-tests.el
>>> index 62e04539ebf..041aafabe8e 100644
>>> --- a/test/lisp/progmodes/eglot-tests.el
>>> +++ b/test/lisp/progmodes/eglot-tests.el
>>> @@ -325,8 +325,7 @@ eglot-test-eclipse-connect
>>>    "Connect to eclipse.jdt.ls server."
>>>    (skip-unless (executable-find "jdtls"))
>>>    (eglot--with-fixture
>>> -      '(("project/src/main/java/foo" . (("Main.java" . "")))
>>> -        ("project/.git/" . nil))
>>> +      '(("project/src/main/java/foo" . (("Main.java" . ""))))
>>>      (with-current-buffer
>>>          (eglot--find-file-noselect "project/src/main/java/foo/Main.java")
>>>        (eglot--sniffing (:server-notifications s-notifs)
>>>
>>>
>>> Which I assume means that project-current picks up .git as a project
>>> root marker, but project-files unexpectedly finds no registered files.
>>>
>>> I'm not sure whether this is expected on either the project or eglot
>>> side.  If I squint hard enough it kind of reminds me of bug#62735.
>>
>> I think the change is fine, please install it, and thanks.
>
> Done:
>
> Avoid Git project in eglot-test-eclipse-connect
> 6674ac17eb4 2023-04-09 23:32:14 +0100
> https://git.sv.gnu.org/cgit/emacs.git/commit/?id=6674ac17eb4
>
>> Let's hope it doesn't break on Emacs 26.3, 27 and 28
>>
>> (f you could test, it would be great, if not it's OK.  It'd involve
>> making a GitHub fork and using the GitHub actions scripts)
>
> Seems to work there too:
> https://github.com/basil-conto/eglot/commit/e915db94a6
> https://github.com/basil-conto/eglot/actions/runs/4652799056

Thanks!

>> A safer, but slightly slower route:
>>
>>    (should (zerop (shell-command "git init")))
>>
>> Some tests known to need project-files already do this.
>
> This continues to fail in the same way, both in emacs.git and eglot.git:
> https://github.com/basil-conto/eglot/commit/1b2d13eaf6
> https://github.com/basil-conto/eglot/actions/runs/4652805286

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'll leave it up to you, Basil, to decide whether to close or leave this
bug open.

João





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#62741: 30.0.50; Eglot jdtls project test: pass on emacs-29, fail on master
  2023-04-10  8:17     ` João Távora
@ 2023-04-10  9:11       ` Basil Contovounesios via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2023-04-10  9:51         ` João Távora
  2023-04-10 11:56       ` Dmitry Gutov
  1 sibling, 1 reply; 8+ messages in thread
From: Basil Contovounesios via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-04-10  9:11 UTC (permalink / raw)
  To: João Távora; +Cc: Dmitry Gutov, 62741-done

close 62741 30.1
severity 62741 minor
quit

João Távora [2023-04-10 09:17 +0100] wrote:

> 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.

It's easy to reproduce the backtrace without Eglot, and it happens both
on master and emacs-29.  From emacs -Q:

  (let ((dir (make-nearby-temp-file "my-" t)))
    (unwind-protect
        (let ((default-directory (file-name-as-directory dir)))
          (make-directory ".git")
          (make-empty-file "file") ; Optional.
          (require 'project)
          (project-files (project-current)))
      (delete-directory dir t)))

  C-x C-e

  Debugger entered--Lisp error: (wrong-type-argument stringp nil)
    string-match("\0" nil 0)
    split-string(nil "\0" t)
    project--vc-list-files("/tmp/my-VHbIUg/" Git nil)
    #f(compiled-function (dir) #<bytecode 0x12e526b1f733674a>)("/tmp/my-VHbIUg/")
    mapcan(#f(compiled-function (dir) #<bytecode 0x12e526b1f733674a>) ("/tmp/my-VHbIUg/"))
    #f(compiled-function (project &optional dirs) #<bytecode 0xea2b226a1860ab9>)((vc Git "/tmp/my-VHbIUg/"))
    apply(#f(compiled-function (project &optional dirs) #<bytecode 0xea2b226a1860ab9>)
          (vc Git "/tmp/my-VHbIUg/") nil)
    project-files((vc Git "/tmp/my-VHbIUg/"))

> I'll leave it up to you, Basil, to decide whether to close or leave this
> bug open.

Closing, since the difference between master and emacs-29 materialised
in the context of Eglot.

If Dmitry thinks project-files is doing something unexpected, we can
open a new ticket if necessary.

Thanks,

-- 
Basil





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#62741: 30.0.50; Eglot jdtls project test: pass on emacs-29, fail on master
  2023-04-10  9:11       ` Basil Contovounesios via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-04-10  9:51         ` João Távora
  0 siblings, 0 replies; 8+ messages in thread
From: João Távora @ 2023-04-10  9:51 UTC (permalink / raw)
  To: Basil Contovounesios; +Cc: Dmitry Gutov, 62741-done

On Mon, Apr 10, 2023 at 10:11 AM Basil Contovounesios <contovob@tcd.ie> wrote:
>
> close 62741 30.1
> severity 62741 minor
> quit
>
> João Távora [2023-04-10 09:17 +0100] wrote:
>
> > 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.
>
> It's easy to reproduce the backtrace without Eglot, and it happens both
> on master and emacs-29.  From emacs -Q:
>
>   (let ((dir (make-nearby-temp-file "my-" t)))
>     (unwind-protect
>         (let ((default-directory (file-name-as-directory dir)))
>           (make-directory ".git")
>           (make-empty-file "file") ; Optional.
>           (require 'project)
>           (project-files (project-current)))
>       (delete-directory dir t)))
>
>   C-x C-e

This indeed breaks, but it doesn't break if you replace the
'make-directory' with '(shell-command "git init")'.

And yet, when you tried that in Eglot's CI, it seem it _did_
break with the same error.  So I don't know what's going on.

João





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#62741: 30.0.50; Eglot jdtls project test: pass on emacs-29, fail on master
  2023-04-10  8:17     ` João Távora
  2023-04-10  9:11       ` Basil Contovounesios via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-04-10 11:56       ` Dmitry Gutov
  2023-04-10 12:00         ` João Távora
  1 sibling, 1 reply; 8+ messages in thread
From: Dmitry Gutov @ 2023-04-10 11:56 UTC (permalink / raw)
  To: João Távora, Basil Contovounesios; +Cc: 62741

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.





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#62741: 30.0.50; Eglot jdtls project test: pass on emacs-29, fail on master
  2023-04-10 11:56       ` Dmitry Gutov
@ 2023-04-10 12:00         ` João Távora
  0 siblings, 0 replies; 8+ messages in thread
From: João Távora @ 2023-04-10 12:00 UTC (permalink / raw)
  To: Dmitry Gutov; +Cc: Basil Contovounesios, 62741

On Mon, Apr 10, 2023 at 12:56 PM Dmitry Gutov <dmitry@gutov.dev> wrote:
>
> 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.

In the GitHub CI, Basil used both strategies, iow he invoked
"git init" in a directory that already had an empty ".git"
directory.  Maybe the Git version in GitHub's ubuntu machines
doesn't react to that the same way my Git version does (which is
to not be bothered by the existing directory, and do its work
all the same).

I don't think this is extremely important though.  It'll pop up
eventually if it is a real problem.

João





^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2023-04-10 12:00 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-04-09 17:46 bug#62741: 30.0.50; Eglot jdtls project test: pass on emacs-29, fail on master Basil Contovounesios via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-04-09 19:13 ` João Távora
2023-04-09 23:13   ` Basil Contovounesios via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-04-10  8:17     ` João Távora
2023-04-10  9:11       ` Basil Contovounesios via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-04-10  9:51         ` João Távora
2023-04-10 11:56       ` Dmitry Gutov
2023-04-10 12:00         ` João Távora

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

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.