GNU bug report logs - #79177
31.0.50; [PATCH] [v4] Add tests to ispell.el

Previous Next

Package: emacs;

Reported by: Lockywolf <for_emacs_1 <at> lockywolf.net>

Date: Tue, 5 Aug 2025 14:10:03 UTC

Severity: normal

Tags: patch

Found in version 31.0.50

Full log


View this message in rfc822 format

From: Eli Zaretskii <eliz <at> gnu.org>
To: Lockywolf <for_emacs_1 <at> lockywolf.net>
Cc: 79177 <at> debbugs.gnu.org
Subject: bug#79177: 31.0.50; [PATCH] [v4] Add tests to ispell.el
Date: Thu, 07 Aug 2025 13:59:17 +0300
> From: Lockywolf <for_emacs_1 <at> lockywolf.net>
> Cc: Lockywolf <for_emacs_1 <at> lockywolf.net>,  79177 <at> debbugs.gnu.org
> Date: Thu, 07 Aug 2025 17:59:06 +0800
> 
> Eli Zaretskii <eliz <at> gnu.org> writes:
> 
> >> From: Lockywolf <for_emacs_1 <at> lockywolf.net>
> >> Cc: Lockywolf <for_emacs_1 <at> lockywolf.net>,  79177 <at> debbugs.gnu.org
> >> Date: Thu, 07 Aug 2025 16:07:54 +0800
> >> 
> >> >> diff --git a/test/lisp/textmodes/ispell-resources/fake-aspell.bash b/test/lisp/textmodes/ispell-resources/fake-aspell.bash
> >> >> new file mode 100755
> >> >> index 00000000000..4406a18a22e
> >> >> --- /dev/null
> >> >> +++ b/test/lisp/textmodes/ispell-resources/fake-aspell.bash
> >> >> @@ -0,0 +1,2 @@
> >> >> +#!/bin/bash
> >> >> +printf  '%s\n' "@(#) International Ispell Version 3.1.20 (but really Aspell 0.59.800)"
> >> >
> >> > I asked to use Emacs instead of a Bash script?  If that causes
> >> > problems, let's discuss that, okay?
> >> 
> >> Aspell needs to parse the "-vv" command-line argument, and Emacs
> >> launched in batch mode cannot do that.  Or I did not manage to make it.
> >
> > Sorry, I don't understand.  The Bash script just outputs a fixed
> > string, and Emacs is capable of doing that.  What did you try, and if
> > it didn''t work, how it failed to work?
> 
> No, it does not /just/ output a fixed string. It also _ignores_ the
> command-line argument "-vv", which, if passed to emacs --batch, produces
> and error Error: error ("Unknown option ‘-vv’"), and ispell.el does it
> when initialising the backend.

I feel there's some misunderstanding here.  What I suggested is that
instead of doing this:

  (let ((fake-aspell-path (expand-file-name
                           "./fake-aspell.bash"
                           tests-ispell-data-directory)))
    (chmod fake-aspell-path 504)
    (call-process fake-aspell-path nil nil nil)

where fake-aspell.bash does

  printf  '%s\n' "@(#) International Ispell Version 3.1.20 (but really Aspell 0.59.800)"

the code does this (not tested):

  (call-process "emacs" nil nil nil "-Q" "--batch" "--eval" "(princ \\"@(#) International Ispell Version 3.1.20 (but really Aspell 0.59.800)\\")")

For best results, use

  (expand invocation-name invocation-directory)

instead of a literal "emacs".  This makes sure you invoke the same
Emacs as the one running the test, not some other version.

> >> >> +    (let ((test-dict "nonexistent")
> >> >> +          (test-pdict "/tmp/lnonexistent.txt"))
> >> >                          ^^^^^^^^^^^^^^^^^^^^^^^
> >> > Likewise here: please use
> >> >
> >> >    (expand-file-name "lnonexistent.txt" temporary-file-directory)
> >> >
> >> > instead.  (There are several other places in the patch with the same
> >> > problem.)
> >> 
> >> This is not a file path.  This is just a string which looks like a file
> >> path.  If something tries to access this as if it is a path during the
> >> execution of the test, this is an error.
> >
> > OK, but the file name you use is not an absolute file name on Windows,
> > so it could cause problems.  Is there a problem with using my
> > suggestion, even though you don't need a real file name?
> 
> ispell's man page says the following:
> 
> ```
>  The  -p  option  is  used  to  specify an alternate personal dictionary file.  If the file name does not begin with "/", $HOME is prefixed.
> ```
> 
> I do not want ispell to do any mangling of the "HOME" directory if this
> "string which looks like a path" is by chance (if a test malfunctions)
> passed to ispell binary and it creates a bogus file in the home
> directory or overwrites something.
> On windows "temporary-file-directory" probably does not begin with "/".

Yes, but a Windows port of ispell will know that, and detect absolute
file names as appropriate: by looking at the drive letter, as in
"d:/foo".  On the contrary, using file names that begin with a slash
on Windows is likely to fail the test mentioned by the man page.




This bug report was last modified 8 days ago.

Previous Next


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