GNU bug report logs - #79257
31.0.50; flymake's ruby-backend test fails with ruby 3.4.5

Previous Next

Package: emacs;

Reported by: john muhl <jm <at> pub.pink>

Date: Sat, 16 Aug 2025 20:18:01 UTC

Severity: normal

Found in version 31.0.50

Done: Dmitry Gutov <dmitry <at> gutov.dev>

Full log


Message #8 received at 79257 <at> debbugs.gnu.org (full text, mbox):

From: john muhl <jm <at> pub.pink>
To: 79257 <at> debbugs.gnu.org
Subject: Re: bug#79257: 31.0.50; flymake's ruby-backend test fails with ruby
 3.4.5
Date: Sun, 24 Aug 2025 11:35:05 -0500
[Message part 1 (text/plain, inline)]
The cause is a change in the check output of new Ruby versions
which include the location of the executable; e.g.

  # Ruby 3.3.8
  -:3: warning: statement not reached
  -:6: syntax error, unexpected end-of-input, expecting `end' or dummy end

  # Ruby 3.4.5
  -:3: warning: statement not reached
  /usr/bin/ruby: -:5: syntax errors found (SyntaxError)

Here’s a patch that updates the regex to account for it. Tests
pass with both Ruby 3.3 and 3.4.

[0001-Fix-ruby-flymake-simple-for-Ruby-3.4-Bug-79257.patch (text/x-patch, attachment)]
[Message part 3 (text/plain, inline)]

john muhl <jm <at> pub.pink> writes:

> The test passes with Ruby 3.3.8:
>
> $ ruby --version
> ruby 3.3.8 (2025-04-09 revision b200bad6cd) [x86_64-linux-gnu]
>
> $ make -C test lisp/progmodes/flymake-tests.log
> make: Entering directory '/root/emacs/test'
>   GEN      lisp/progmodes/flymake-tests.log
> make: Leaving directory '/root/emacs/test'
>
> $ cat test/lisp/progmodes/flymake-tests.log
> Running 10 tests (2025-08-16 20:14:31+0000, selector `(not (or (tag :unstable) (tag :nativecomp)))')
>    passed   1/10  different-diagnostic-types (1.064348 sec)
>    passed   2/10  dummy-backends (1.001868 sec)
>    passed   3/10  eob-region-and-trailing-newline (0.000263 sec)
>    passed   4/10  foreign-diagnostics (2.039984 sec)
>    passed   5/10  included-c-header-files (2.038547 sec)
>    passed   6/10  perl-backend (1.013309 sec)
>    passed   7/10  recurrent-backend (1.002002 sec)
>    passed   8/10  ruby-backend (1.015112 sec)
>    passed   9/10  warning-predicate-function-gcc (1.017387 sec)
>    passed  10/10  warning-predicate-rx-gcc (1.019503 sec)
>
> Ran 10 tests, 10 results as expected, 0 unexpected (2025-08-16 20:14:42+0000, 11.213646 sec)
>
> Then fails with 3.4.5:
>
> $ ruby --version
> ruby 3.4.5 (2025-07-16 revision 20cda200d3) +PRISM [x86_64-linux]
>
> $ make -C test lisp/progmodes/flymake-tests.log
> make[1]: Entering directory '/root/emacs/test'
>   GEN      lisp/progmodes/flymake-tests.log
> Running 10 tests (2025-08-16 20:09:51+0000, selector `(not (or (tag :unstable) (tag :nativecomp)))')
>    passed   1/10  different-diagnostic-types (1.066408 sec)
>    passed   2/10  dummy-backends (1.001843 sec)
>    passed   3/10  eob-region-and-trailing-newline (0.000216 sec)
>    passed   4/10  foreign-diagnostics (2.041202 sec)
>    passed   5/10  included-c-header-files (2.038718 sec)
>    passed   6/10  perl-backend (1.014080 sec)
>    passed   7/10  recurrent-backend (1.002050 sec)
> Test ruby-backend backtrace:
>   signal(ert-test-failed (((should (eq 'flymake-error (face-at-point))
>   ert-fail(((should (eq 'flymake-error (face-at-point))) :form (eq fly
>   (if (unwind-protect (setq value-41 (apply fn-39 args-40)) (setq form
>   (let (form-description-43) (if (unwind-protect (setq value-41 (apply
>   (let ((value-41 'ert-form-evaluation-aborted-42)) (let (form-descrip
>   (let* ((fn-39 #'eq) (args-40 (condition-case err (list 'flymake-erro
>   #f(lambda () [t] (flymake-goto-next-error) (let* ((fn-34 #'eq) (args
>   funcall(#f(lambda () [t] (flymake-goto-next-error) (let* ((fn-34 #'e
>   (save-excursion (if sev-pred-supplied-p (progn (setq flymake-proc-di
>   (save-current-buffer (set-buffer buffer) (save-excursion (if sev-pre
>   (unwind-protect (save-current-buffer (set-buffer buffer) (save-excur
>   (let* ((file (expand-file-name file flymake-tests-data-directory)) (
>   (progn (let ((--cl-keys-- --cl-rest--)) (while --cl-keys-- (cond ((m
>   (let* ((sev-pred-supplied-p (plist-member --cl-rest-- ':severity-pre
>   flymake-tests--call-with-fixture(#f(lambda () [t] (flymake-goto-next
>   (let* ((process-environment (cons (format "HOME=%s" tempdir) process
>   (progn (let* ((process-environment (cons (format "HOME=%s" tempdir) 
>   (unwind-protect (progn (let* ((process-environment (cons (format "HO
>   (let* ((coding-system-for-write nil) (temp-file (file-name-as-direct
>   #f(lambda () [ruby-mode-hook t] (let* ((fn-29 #'executable-find) (ar
>   #f(compiled-function () #<bytecode 0xf2de8ace0c80c71>)()
>   handler-bind-1(#f(compiled-function () #<bytecode 0xf2de8ace0c80c71>
>   ert--run-test-internal(#s(ert--test-execution-info :test #s(ert-test
>   ert-run-test(#s(ert-test :name ruby-backend :documentation "Test the
>   ert-run-or-rerun-test(#s(ert--stats :selector ... :tests ... :test-m
>   ert-run-tests((not (or (tag :unstable) (tag :nativecomp))) #f(compil
>   ert-run-tests-batch((not (or (tag :unstable) (tag :nativecomp))))
>   ert-run-tests-batch-and-exit((not (or (tag :unstable) (tag :nativeco
>   eval((ert-run-tests-batch-and-exit '(not (or (tag :unstable) (tag :n
>   command-line-1(("-L" ":." "-l" "ert" "--eval" "(setq treesit-extra-l
>   command-line()
>   normal-top-level()
> Test ruby-backend condition:
>     (ert-test-failed
>      ((should (eq 'flymake-error (face-at-point))) :form
>       (eq flymake-error flymake-warning) :value nil))
>    FAILED   8/10  ruby-backend (1.013506 sec) at lisp/progmodes/flymake-tests.el:123
>    passed   9/10  warning-predicate-function-gcc (1.017136 sec)
>    passed  10/10  warning-predicate-rx-gcc (1.019550 sec)
>
> Ran 10 tests, 9 results as expected, 1 unexpected (2025-08-16 20:10:02+0000, 11.275721 sec)
>
> 1 unexpected results:
>    FAILED  ruby-backend

This bug report was last modified 15 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.