* Locations of Tests @ 2015-11-04 17:36 Phillip Lord 2015-11-04 17:53 ` John Wiegley 2015-11-06 10:02 ` Makefile-help (was Re: Locations of Tests) Phillip Lord 0 siblings, 2 replies; 43+ messages in thread From: Phillip Lord @ 2015-11-04 17:36 UTC (permalink / raw) To: emacs-devel I was thinking that a "jump to tests" feature would be nice for emacs-lisp mode the other day. While I had a quick thing about how to implement this, I looked at the emacs source, and noticed that the location of automated tests is a little erratic. So, we have thingatpt.el (as a test), file-notify-tests.el (for filenotify). There is also no reflection of the organisation of the lisp in the tests. So, elisp-mode-tests.el at top level, while elisp-mode.el is in lisp/progmodes. Similar issue with gnus-test.el and pcase.el. Is there an organisation for tests that I am unaware off? Would there be interest in a policy based on file name? Phil ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: Locations of Tests 2015-11-04 17:36 Locations of Tests Phillip Lord @ 2015-11-04 17:53 ` John Wiegley 2015-11-04 18:14 ` Artur Malabarba 2015-11-04 19:07 ` Michael Albinus 2015-11-06 10:02 ` Makefile-help (was Re: Locations of Tests) Phillip Lord 1 sibling, 2 replies; 43+ messages in thread From: John Wiegley @ 2015-11-04 17:53 UTC (permalink / raw) To: Phillip Lord; +Cc: emacs-devel >>>>> Phillip Lord <phillip.lord@russet.org.uk> writes: > So, we have thingatpt.el (as a test), file-notify-tests.el (for filenotify). > There is also no reflection of the organisation of the lisp in the tests. > So, elisp-mode-tests.el at top level, while elisp-mode.el is in > lisp/progmodes. Similar issue with gnus-test.el and pcase.el. > > Is there an organisation for tests that I am unaware off? Would there be > interest in a policy based on file name? Huge interest. There should be a purely mechanical way of going from a source file in core, to the set of tests for that file. Then we could add M-x emacs-lisp-jump-to-test. I'd happily accept a patch to move things into accordance with the naming structure under lisp/. John ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: Locations of Tests 2015-11-04 17:53 ` John Wiegley @ 2015-11-04 18:14 ` Artur Malabarba 2015-11-04 18:21 ` John Wiegley 2015-11-04 19:15 ` Steinar Bang 2015-11-04 19:07 ` Michael Albinus 1 sibling, 2 replies; 43+ messages in thread From: Artur Malabarba @ 2015-11-04 18:14 UTC (permalink / raw) To: emacs-devel, Phillip Lord [-- Attachment #1: Type: text/plain, Size: 228 bytes --] On 4 Nov 2015 5:53 pm, "John Wiegley" <jwiegley@gmail.com> wrote: > I'd happily accept a patch to move things into accordance with the naming > structure under lisp/. Same here. Just make sure it doesn't mess up git blame. ;-) [-- Attachment #2: Type: text/html, Size: 344 bytes --] ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: Locations of Tests 2015-11-04 18:14 ` Artur Malabarba @ 2015-11-04 18:21 ` John Wiegley 2015-11-25 9:23 ` Phillip Lord 2015-11-04 19:15 ` Steinar Bang 1 sibling, 1 reply; 43+ messages in thread From: John Wiegley @ 2015-11-04 18:21 UTC (permalink / raw) To: Artur Malabarba; +Cc: Phillip Lord, emacs-devel >>>>> Artur Malabarba <bruce.connor.am@gmail.com> writes: > Same here. Just make sure it doesn't mess up git blame. ;-) From *Man git-blame*: The origin of lines is automatically followed across whole-file renames (currently there is no option to turn the rename-following off). To follow lines moved from one file to another, or to follow lines that were copied and pasted from another file, etc., see the -C and -M options. John ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: Locations of Tests 2015-11-04 18:21 ` John Wiegley @ 2015-11-25 9:23 ` Phillip Lord 2015-11-25 9:43 ` Artur Malabarba 0 siblings, 1 reply; 43+ messages in thread From: Phillip Lord @ 2015-11-25 9:23 UTC (permalink / raw) To: Artur Malabarba, jwiegley; +Cc: emacs-devel John Wiegley <jwiegley@gmail.com> writes: >>>>>> Artur Malabarba <bruce.connor.am@gmail.com> writes: > >> Same here. Just make sure it doesn't mess up git blame. ;-) > >>From *Man git-blame*: > > The origin of lines is automatically followed across whole-file renames (currently > there is no option to turn the rename-following off). To follow lines moved from > one file to another, or to follow lines that were copied and pasted from another > file, etc., see the -C and -M options. > > John Okay, so I have moved all the test files according to the scheme discussed, and pushed to branch feature/standard-test-location. I wasn't able to do this in a single commit -- the move was one, so hopefully git should have tracked the file moves. Then, I updated the makefiles, fixed the tests that depend on their location. Finally, I had to restore a couple of manual (non automake) makefiles which I accidentally removed (very underhand, didn't check the .gitignore). I'd appreciate if you could have a look at this, then I'll merge to master. Phil ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: Locations of Tests 2015-11-25 9:23 ` Phillip Lord @ 2015-11-25 9:43 ` Artur Malabarba 2015-11-25 14:17 ` Phillip Lord 0 siblings, 1 reply; 43+ messages in thread From: Artur Malabarba @ 2015-11-25 9:43 UTC (permalink / raw) To: Phillip Lord; +Cc: John Wiegley, emacs-devel [-- Attachment #1: Type: text/plain, Size: 257 bytes --] On 25 Nov 2015 9:23 am, "Phillip Lord" <phillip.lord@russet.org.uk> wrote: > I wasn't able to do this in a single commit -- the move was one, so > hopefully git should have tracked the file moves. Why not try git blame so we can lose that "hopefully"? :-) [-- Attachment #2: Type: text/html, Size: 388 bytes --] ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: Locations of Tests 2015-11-25 9:43 ` Artur Malabarba @ 2015-11-25 14:17 ` Phillip Lord 0 siblings, 0 replies; 43+ messages in thread From: Phillip Lord @ 2015-11-25 14:17 UTC (permalink / raw) To: Artur Malabarba; +Cc: John Wiegley, emacs-devel Artur Malabarba <bruce.connor.am@gmail.com> writes: > On 25 Nov 2015 9:23 am, "Phillip Lord" <phillip.lord@russet.org.uk> wrote: >> I wasn't able to do this in a single commit -- the move was one, so >> hopefully git should have tracked the file moves. > > Why not try git blame so we can lose that "hopefully"? :-) Potentially... I did try this already and it seems to be good d7df36e7 test/automated/elisp-mode-tests.el (Stephen Leake 2015-08-10 21:53:19 -0500 405) (list d7df36e7 test/automated/elisp-mode-tests.el (Stephen Leake 2015-08-10 21:53:19 -0500 406) (xref-make "(cl-defgeneric xref-location-marker)" d7df36e7 test/automated/elisp-mode-tests.el (Stephen Leake 2015-08-10 21:53:19 -0500 407) (xref-make-elisp-location 0382fd42 test/automated/elisp-mode-tests.el (Stephen Leake 2015-08-13 12:54:39 -0500 408) 'xref-location-marker 'cl-defgeneric 6fdd750c test/lisp/progmodes/elisp-mode-tests.el (Phillip Lord 2015-11-24 22:35:23 +0000 409) (expand-file-name "../../../lisp/progmodes/xref.el" emacs-test-dir))) d7df36e7 test/automated/elisp-mode-tests.el (Stephen Leake 2015-08-10 21:53:19 -0500 410) (xref-make "(cl-defmethod xref-location-marker ((l xref-elisp-location)))" d7df36e7 test/automated/elisp-mode-tests.el (Stephen Leake 2015-08-10 21:53:19 -0500 411) (xref-make-elisp-location d7df36e7 test/automated/elisp-mode-tests.el (Stephen Leake 2015-08-10 21:53:19 -0500 412) '(xref-location-marker xref-elisp-location) 'cl-defmethod 6fdd750c test/lisp/progmodes/elisp-mode-tests.el (Phillip Lord 2015-11-24 22:35:23 +0000 413) (expand-file-name "../../../lisp/progmodes/elisp-mode.el" emacs-test-dir))) d7df36e7 test/automated/elisp-mode-tests.el (Stephen Leake 2015-08-10 21:53:19 -0500 414) (xref-make "(cl-defmethod xref-location-marker ((l xref-file-location)))" d7df36e7 test/automated/elisp-mode-tests.el (Stephen Leake 2015-08-10 21:53:19 -0500 415) (xref-make-elisp-location d7df36e7 test/automated/elisp-mode-tests.el (Stephen Leake 2015-08-10 21:53:19 -0500 416) '(xref-location-marker xref-file-location) 'cl-defmethod I fear this has failed for the four Makefile. ./lisp/progmodes/flymake-resources/Makefile ./manual/indent/Makefile ./manual/etags/Makefile ./manual/etags/make-src/Makefile which all appear to have been written by me. The "real" makefile (Makefile.in) is good. Phil ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: Locations of Tests 2015-11-04 18:14 ` Artur Malabarba 2015-11-04 18:21 ` John Wiegley @ 2015-11-04 19:15 ` Steinar Bang 2015-11-04 19:23 ` David Kastrup 1 sibling, 1 reply; 43+ messages in thread From: Steinar Bang @ 2015-11-04 19:15 UTC (permalink / raw) To: emacs-devel >>>>> Artur Malabarba <bruce.connor.am@gmail.com>: > On 4 Nov 2015 5:53 pm, "John Wiegley" <jwiegley@gmail.com> wrote: >> I'd happily accept a patch to move things into accordance with the naming >> structure under lisp/. > Same here. Just make sure it doesn't mess up git blame. ;-) ...and file history. What this means in practice, is that files should be moved verbatim. You can change files once they are in place in the new location, but the first commit in the new location should be of files with identical SHA1 hashes as the files in the old location. git tracks history across moves/renames by matching the file content SHA1 hashes of files in other locations. ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: Locations of Tests 2015-11-04 19:15 ` Steinar Bang @ 2015-11-04 19:23 ` David Kastrup 2015-11-04 21:33 ` Phillip Lord 0 siblings, 1 reply; 43+ messages in thread From: David Kastrup @ 2015-11-04 19:23 UTC (permalink / raw) To: emacs-devel Steinar Bang <sb@dod.no> writes: >>>>>> Artur Malabarba <bruce.connor.am@gmail.com>: >> On 4 Nov 2015 5:53 pm, "John Wiegley" <jwiegley@gmail.com> wrote: > >>> I'd happily accept a patch to move things into accordance with the naming >>> structure under lisp/. > >> Same here. Just make sure it doesn't mess up git blame. ;-) > > ...and file history. > > What this means in practice, is that files should be moved verbatim. > > You can change files once they are in place in the new location, but the > first commit in the new location should be of files with identical SHA1 > hashes as the files in the old location. > > git tracks history across moves/renames by matching the file content > SHA1 hashes of files in other locations. That's what always works, but git blame's -C option will try getting stuff matched even if you don't properly rename. But -C is expensive. And it's always a nuisance to supply the like of C-x v g with additional options. -- David Kastrup ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: Locations of Tests 2015-11-04 19:23 ` David Kastrup @ 2015-11-04 21:33 ` Phillip Lord 0 siblings, 0 replies; 43+ messages in thread From: Phillip Lord @ 2015-11-04 21:33 UTC (permalink / raw) To: emacs-devel David Kastrup <dak@gnu.org> writes: > Steinar Bang <sb@dod.no> writes: > >>>>>>> Artur Malabarba <bruce.connor.am@gmail.com>: >>> On 4 Nov 2015 5:53 pm, "John Wiegley" <jwiegley@gmail.com> wrote: >> >>>> I'd happily accept a patch to move things into accordance with the naming >>>> structure under lisp/. >> >>> Same here. Just make sure it doesn't mess up git blame. ;-) >> >> ...and file history. >> >> What this means in practice, is that files should be moved verbatim. >> > > That's what always works, but git blame's -C option will try getting > stuff matched even if you don't properly rename. But -C is expensive. > And it's always a nuisance to supply the like of C-x v g with additional > options. Okay, so I hearby publically state that if I become responsible for another git mega-thread, I will serve my penance by giving up Emacs and moving to Ed for all future text manipulation needs. Phil ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: Locations of Tests 2015-11-04 17:53 ` John Wiegley 2015-11-04 18:14 ` Artur Malabarba @ 2015-11-04 19:07 ` Michael Albinus 2015-11-04 19:15 ` John Wiegley 1 sibling, 1 reply; 43+ messages in thread From: Michael Albinus @ 2015-11-04 19:07 UTC (permalink / raw) To: emacs-devel John Wiegley <jwiegley@gmail.com> writes: >> So, we have thingatpt.el (as a test), file-notify-tests.el (for filenotify). >> There is also no reflection of the organisation of the lisp in the tests. >> So, elisp-mode-tests.el at top level, while elisp-mode.el is in >> lisp/progmodes. Similar issue with gnus-test.el and pcase.el. >> >> Is there an organisation for tests that I am unaware off? Would there be >> interest in a policy based on file name? > > Huge interest. There should be a purely mechanical way of going from a source > file in core, to the set of tests for that file. Then we could add M-x > emacs-lisp-jump-to-test. > > I'd happily accept a patch to move things into accordance with the naming > structure under lisp/. Before we rename everything, wouldn't a simple directive in the source file do the job? ;; Package-Tests: test/automated/file-notify-tests.el I don't know how much of the path name shall be included there. We have also files outside Emacs core, for example in Elpa. Here the path name could start at the package root directory: ;; Package-Tests: tests/stream-tests.el > John Best regards, Michael. ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: Locations of Tests 2015-11-04 19:07 ` Michael Albinus @ 2015-11-04 19:15 ` John Wiegley 2015-11-04 21:26 ` Phillip Lord 0 siblings, 1 reply; 43+ messages in thread From: John Wiegley @ 2015-11-04 19:15 UTC (permalink / raw) To: Michael Albinus; +Cc: emacs-devel >>>>> Michael Albinus <michael.albinus@gmx.de> writes: > Before we rename everything, wouldn't a simple directive in the source file > do the job? > ;; Package-Tests: test/automated/file-notify-tests.el That would also work, but having a naming structure also makes it easier for contributors to know where new files they create should go. So I'd prefer to have a convention, rather than make it freeform, with a set of textual links to relate the two sets. John ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: Locations of Tests 2015-11-04 19:15 ` John Wiegley @ 2015-11-04 21:26 ` Phillip Lord 2015-11-05 13:41 ` Stephen Leake 0 siblings, 1 reply; 43+ messages in thread From: Phillip Lord @ 2015-11-04 21:26 UTC (permalink / raw) To: emacs-devel; +Cc: johnw, Michael Albinus [-- Attachment #1: Type: text/plain, Size: 1229 bytes --] John Wiegley <jwiegley@gmail.com> writes: >>>>>> Michael Albinus <michael.albinus@gmx.de> writes: > >> Before we rename everything, wouldn't a simple directive in the source file >> do the job? > >> ;; Package-Tests: test/automated/file-notify-tests.el > > That would also work, but having a naming structure also makes it easier for > contributors to know where new files they create should go. So I'd prefer to > have a convention, rather than make it freeform, with a set of textual links > to relate the two sets. I'd tend to agree. I think I'd like to get a specification sorted first before making the changes. I've included my starter-for-ten below. I'm willing to take any feedback here -- or I could add it to the emacs-repo as an orphan branch, then people could change directly. I've given locations for test files, and resources (data files). This is both for Emacs-lisp source files and for lisp tests for features provided in C (inotify-test.el for example). There are also suggestions for ELPA packages. I've said nothing about C tests for the C core, because I know nothing about C testing (and almost nothing about C coding!). Adding a buffer-local as suggested above as a legacy might make sense. Phil [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: emacs-tests.org --] [-- Type: text/x-org, Size: 2276 bytes --] #+TITLE: The Location of Emacs-Lisp Tests * Introduction In this document, we describe the relationship between Emacs-Lisp files and their associated automated test files. * In Emacs The Emacs repository contains a very large number of Emacs-Lisp files, many of which pre-date both formal package support for Emacs and automated unit testing. The test layout is, therefore, somewhat different than for ELPA packages. All paths are relative to the Emacs root directory. ** Source Lisp files are stored in the ~lisp~ directory or its sub-directories. Sub-directories are in many cases themed after packages (~gnus~, ~org~, ~calc~), related functionality (~net~, ~emacs-lisp~, ~progmodes~) or status (~obsolete~). C source is stored in the ~src~ directory, which is flat. ** Test Files Automated tests should be stored in the ~test/automated~ directory. Tests should reflect the directory structure of the source tree; so tests for files in the ~emacs-lisp~ source directory should reside in the ~test/automated/emacs-lisp~ directory. Tests should normally reside in a file with an ~-test~ added to the name of the tested source file; hence ~ert.el~ is tested in ~ert-test.el~, or ~pcase.el~ is tested in ~pcase-test.el~. Where features of the C source are tested using Emacs-Lisp test files, these should reside in ~/test/automated/c~ and be named after the C file. ** Resource Files Resource files for tests (containing test data) should reside in a directory named after the feature with a ~-resources~ suffix. Hence, tests files for ~flymake.el~ should reside in a directory called ~flymake-resources~. No guidance is given for the organisation of resource files inside the ~-resource~ directory; files can be organised at the author's discretion. * In ELPA All paths are given relative to the package root. ** Source Files ELPA lisp files should be stored at top-level within the package. ** Test Files Test files should normally reside in the ~test~ directory, and be named after the file being tested. ** Resources Files Resource files for tests should reside in the ~dev-resources~ directory. No guidance is given for the organisation of resource files inside the ~dev-resource~ directory; files can be organised at the author's discretion. ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: Locations of Tests 2015-11-04 21:26 ` Phillip Lord @ 2015-11-05 13:41 ` Stephen Leake 2015-11-05 13:59 ` Artur Malabarba ` (2 more replies) 0 siblings, 3 replies; 43+ messages in thread From: Stephen Leake @ 2015-11-05 13:41 UTC (permalink / raw) To: Phillip Lord; +Cc: johnw, Michael Albinus, emacs-devel phillip.lord@russet.org.uk (Phillip Lord) writes: > John Wiegley <jwiegley@gmail.com> writes: > > > #+TITLE: The Location of Emacs-Lisp Tests This looks good in general; a couple minor comments below. > * Introduction > > In this document, we describe the relationship between Emacs-Lisp files and > their associated automated test files. > > > * In Emacs > > The Emacs repository contains a very large number of Emacs-Lisp files, many of > which pre-date both formal package support for Emacs and automated unit > testing. The test layout is, therefore, somewhat different than for ELPA > packages. > > All paths are relative to the Emacs root directory. > > ** Source > > Lisp files are stored in the ~lisp~ directory or its sub-directories. > Sub-directories are in many cases themed after packages (~gnus~, ~org~, > ~calc~), related functionality (~net~, ~emacs-lisp~, ~progmodes~) or status > (~obsolete~). > > C source is stored in the ~src~ directory, which is flat. > > ** Test Files > > Automated tests should be stored in the ~test/automated~ directory. Tests > should reflect the directory structure of the source tree; so tests for files > in the ~emacs-lisp~ source directory should reside in the > ~test/automated/emacs-lisp~ directory. > > Tests should normally reside in a file with an ~-test~ added to the name of > the tested source file; hence ~ert.el~ is tested in ~ert-test.el~, or > ~pcase.el~ is tested in ~pcase-test.el~. > > Where features of the C source are tested using Emacs-Lisp test files, these > should reside in ~/test/automated/c~ and be named after the C file. Since we are trying to mimic the source layout, perhaps it would be better to have: tests/automated/src ;; tests of files in the src dir tests/automated/lisp ;; tests of file in the lisp dir tests/automated/lisp/prog-modes ;; etc > ** Resource Files > > Resource files for tests (containing test data) should reside in a directory > named after the feature with a ~-resources~ suffix. Hence, tests files for > ~flymake.el~ should reside in a directory called ~flymake-resources~. > > No guidance is given for the organisation of resource files inside the > ~-resource~ directory; files can be organised at the author's discretion. > > > * In ELPA > > All paths are given relative to the package root. > > ** Source Files > > ELPA lisp files should be stored at top-level within the package. > > ** Test Files > > Test files should normally reside in the ~test~ directory, and be named after > the file being tested. With the -test suffix; it helps to be very clear, > ** Resources Files > > Resource files for tests should reside in the ~dev-resources~ directory. No > guidance is given for the organisation of resource files inside the > ~dev-resource~ directory; files can be organised at the author's discretion. -- -- Stephe ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: Locations of Tests 2015-11-05 13:41 ` Stephen Leake @ 2015-11-05 13:59 ` Artur Malabarba 2015-11-05 15:02 ` Nicolas Petton 2015-11-05 15:27 ` Juanma Barranquero 2015-11-06 9:55 ` Phillip Lord 2 siblings, 1 reply; 43+ messages in thread From: Artur Malabarba @ 2015-11-05 13:59 UTC (permalink / raw) To: Stephen Leake; +Cc: emacs-devel, johnw, Michael Albinus, Phillip Lord >> ** Test Files >> >> Automated tests should be stored in the ~test/automated~ directory. Tests >> should reflect the directory structure of the source tree; so tests for files >> in the ~emacs-lisp~ source directory should reside in the >> ~test/automated/emacs-lisp~ directory. >> >> Tests should normally reside in a file with an ~-test~ added to the name of >> the tested source file; hence ~ert.el~ is tested in ~ert-test.el~, or >> ~pcase.el~ is tested in ~pcase-test.el~. Then let's also remember to rename all the *-test.el out there to *-test.el ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: Locations of Tests 2015-11-05 13:59 ` Artur Malabarba @ 2015-11-05 15:02 ` Nicolas Petton 2015-11-05 15:08 ` Artur Malabarba 0 siblings, 1 reply; 43+ messages in thread From: Nicolas Petton @ 2015-11-05 15:02 UTC (permalink / raw) To: bruce.connor.am, Stephen Leake Cc: johnw, Michael Albinus, Phillip Lord, emacs-devel [-- Attachment #1: Type: text/plain, Size: 193 bytes --] Artur Malabarba <bruce.connor.am@gmail.com> writes: > Then let's also remember to rename all the *-test.el out there to > *-test.el hmmm... I'm not following. Could you rephrase this? Nico [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 512 bytes --] ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: Locations of Tests 2015-11-05 15:02 ` Nicolas Petton @ 2015-11-05 15:08 ` Artur Malabarba 2015-11-06 9:56 ` Phillip Lord 0 siblings, 1 reply; 43+ messages in thread From: Artur Malabarba @ 2015-11-05 15:08 UTC (permalink / raw) To: Nicolas Petton Cc: Stephen Leake, johnw, Michael Albinus, Phillip Lord, emacs-devel [-- Attachment #1: Type: text/plain, Size: 443 bytes --] On 5 Nov 2015 3:02 pm, "Nicolas Petton" <nicolas@petton.fr> wrote: > > Artur Malabarba <bruce.connor.am@gmail.com> writes: > > > Then let's also remember to rename all the *-test.el out there to > > *-test.el > > hmmm... I'm not following. Could you rephrase this? > > Nico Oops. :-) missed an s in there. I meant "rename all the *-tests.el to *-test.el". Or the other way around, I'm just saying to normalise the use of plural /singular. [-- Attachment #2: Type: text/html, Size: 708 bytes --] ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: Locations of Tests 2015-11-05 15:08 ` Artur Malabarba @ 2015-11-06 9:56 ` Phillip Lord 0 siblings, 0 replies; 43+ messages in thread From: Phillip Lord @ 2015-11-06 9:56 UTC (permalink / raw) To: Artur Malabarba Cc: Stephen Leake, Nicolas Petton, johnw, Michael Albinus, emacs-devel Artur Malabarba <bruce.connor.am@gmail.com> writes: > On 5 Nov 2015 3:02 pm, "Nicolas Petton" <nicolas@petton.fr> wrote: >> >> Artur Malabarba <bruce.connor.am@gmail.com> writes: >> >> > Then let's also remember to rename all the *-test.el out there to >> > *-test.el >> >> hmmm... I'm not following. Could you rephrase this? >> >> Nico > > Oops. :-) missed an s in there. > I meant "rename all the *-tests.el to *-test.el". > Or the other way around, I'm just saying to normalise the use of plural > /singular. Yeah, I checked. "-tests.el" is more common in existing code, so easier to go that way. Although, it would be good if this worked for other packages (GNU ELPA and others). I'll check these out also. Phil ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: Locations of Tests 2015-11-05 13:41 ` Stephen Leake 2015-11-05 13:59 ` Artur Malabarba @ 2015-11-05 15:27 ` Juanma Barranquero 2015-11-06 9:55 ` Phillip Lord 2 siblings, 0 replies; 43+ messages in thread From: Juanma Barranquero @ 2015-11-05 15:27 UTC (permalink / raw) To: Stephen Leake; +Cc: Emacs developers, johnw, Michael Albinus, Phillip Lord [-- Attachment #1: Type: text/plain, Size: 349 bytes --] On Thu, Nov 5, 2015 at 2:41 PM, Stephen Leake < stephen_leake@stephe-leake.org> wrote: > Since we are trying to mimic the source layout, perhaps it would be > better to have: > > tests/automated/src ;; tests of files in the src dir > > tests/automated/lisp ;; tests of file in the lisp dir > > tests/automated/lisp/prog-modes ;; etc Yes, please. [-- Attachment #2: Type: text/html, Size: 523 bytes --] ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: Locations of Tests 2015-11-05 13:41 ` Stephen Leake 2015-11-05 13:59 ` Artur Malabarba 2015-11-05 15:27 ` Juanma Barranquero @ 2015-11-06 9:55 ` Phillip Lord 2 siblings, 0 replies; 43+ messages in thread From: Phillip Lord @ 2015-11-06 9:55 UTC (permalink / raw) To: Stephen Leake; +Cc: johnw, Michael Albinus, emacs-devel Stephen Leake <stephen_leake@stephe-leake.org> writes: > phillip.lord@russet.org.uk (Phillip Lord) writes: > >> Where features of the C source are tested using Emacs-Lisp test files, these >> should reside in ~/test/automated/c~ and be named after the C file. > > Since we are trying to mimic the source layout, perhaps it would be > better to have: > > tests/automated/src ;; tests of files in the src dir > > tests/automated/lisp ;; tests of file in the lisp dir > >> ** Test Files >> >> Test files should normally reside in the ~test~ directory, and be named after >> the file being tested. > > With the -test suffix; it helps to be very clear, > Both good calls, with incorporate. ^ permalink raw reply [flat|nested] 43+ messages in thread
* Makefile-help (was Re: Locations of Tests) 2015-11-04 17:36 Locations of Tests Phillip Lord 2015-11-04 17:53 ` John Wiegley @ 2015-11-06 10:02 ` Phillip Lord 2015-11-07 6:48 ` Stephen Leake 1 sibling, 1 reply; 43+ messages in thread From: Phillip Lord @ 2015-11-06 10:02 UTC (permalink / raw) To: emacs-devel Phillip Lord <phillip.lord@russet.org.uk> writes: > Is there an organisation for tests that I am unaware off? Would there be > interest in a policy based on file name? I've started work on writing a script to move all the files (seems better than doing it manually as it's more checkable), and I've updated my specification based on comments; I'll push all of this to a scratch branch tomorrow. While doing this, I've realised that I'm going to need to update the Makefile (which assumes a flat directory structure for tests). My make expertise is quite limited. Would anyone be free to help me get this working. Phil ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: Makefile-help (was Re: Locations of Tests) 2015-11-06 10:02 ` Makefile-help (was Re: Locations of Tests) Phillip Lord @ 2015-11-07 6:48 ` Stephen Leake 2015-11-07 10:55 ` Location of tests (again) (was Re: Makefile-help) Phillip Lord 0 siblings, 1 reply; 43+ messages in thread From: Stephen Leake @ 2015-11-07 6:48 UTC (permalink / raw) To: Phillip Lord; +Cc: emacs-devel phillip.lord@russet.org.uk (Phillip Lord) writes: > Phillip Lord <phillip.lord@russet.org.uk> writes: > >> Is there an organisation for tests that I am unaware off? Would there be >> interest in a policy based on file name? > > > I've started work on writing a script to move all the files (seems > better than doing it manually as it's more checkable), and I've updated > my specification based on comments; I'll push all of this to a scratch > branch tomorrow. > > While doing this, I've realised that I'm going to need to update the > Makefile (which assumes a flat directory structure for tests). > > My make expertise is quite limited. Would anyone be free to help me get > this working. I'm fairly good with make, and have time to work on this. Let me know the scratch branch name. -- -- Stephe ^ permalink raw reply [flat|nested] 43+ messages in thread
* Location of tests (again) (was Re: Makefile-help) 2015-11-07 6:48 ` Stephen Leake @ 2015-11-07 10:55 ` Phillip Lord 2015-11-07 11:06 ` Juanma Barranquero 2015-11-10 20:34 ` Przemysław Wojnowski 0 siblings, 2 replies; 43+ messages in thread From: Phillip Lord @ 2015-11-07 10:55 UTC (permalink / raw) To: Stephen Leake; +Cc: emacs-devel Stephen Leake <stephen_leake@stephe-leake.org> writes: > phillip.lord@russet.org.uk (Phillip Lord) writes: > >> Phillip Lord <phillip.lord@russet.org.uk> writes: >> >>> Is there an organisation for tests that I am unaware off? Would there be >>> interest in a policy based on file name? >> >> >> I've started work on writing a script to move all the files (seems >> better than doing it manually as it's more checkable), and I've updated >> my specification based on comments; I'll push all of this to a scratch >> branch tomorrow. >> >> While doing this, I've realised that I'm going to need to update the >> Makefile (which assumes a flat directory structure for tests). >> >> My make expertise is quite limited. Would anyone be free to help me get >> this working. > > I'm fairly good with make, and have time to work on this. > > Let me know the scratch branch name. Actually, it turned out not to be so difficult. I didn't know about eval in make, but once I'd worked that out, the changes were quite minimal. It's on scratch/multi-level-test-makefile My solution is currently limited to a fixed number of subdirs (i.e it's not fully recursive), but then that isn't like to change quickly, if at all. I'd welcome feedback, though. The proposed directory layout is inside a file called emacs-tests.org at top level (obviously not where I intend to leave it). I've accepted most of the changes people suggested except for one. Some one suggested to but tests of C core ~test/automated/src~ which sounded good. But thinking about it, it probably makes more sense to leave this for C level testing framework. So now we have test/automated/lisp test/automated/lisp/emacs-lisp test/automated/lisp/progmodes (and so on....) test/automated/lisp/c (lisp tests for the C core) test/automated/lisp/legacy (ones which don't fit, to be fixed) test/automated/src (empty but reserved for C tests of C core) There's a shell-script embedded in emacs-tests.org to actually apply the move. As we are in feature freeze, I'd plan to do this immediately after the release branch is ready. Comments welcome. Phil ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: Location of tests (again) (was Re: Makefile-help) 2015-11-07 10:55 ` Location of tests (again) (was Re: Makefile-help) Phillip Lord @ 2015-11-07 11:06 ` Juanma Barranquero 2015-11-07 11:22 ` Phillip Lord 2015-11-10 20:34 ` Przemysław Wojnowski 1 sibling, 1 reply; 43+ messages in thread From: Juanma Barranquero @ 2015-11-07 11:06 UTC (permalink / raw) To: Phillip Lord; +Cc: Stephen Leake, Emacs developers [-- Attachment #1: Type: text/plain, Size: 818 bytes --] On Sat, Nov 7, 2015 at 11:55 AM, Phillip Lord <phillip.lord@russet.org.uk> wrote: > Some one suggested to > but tests of C core ~test/automated/src~ which sounded good. But > thinking about it, it probably makes more sense to leave this for C > level testing framework. So now we have > > test/automated/lisp > test/automated/lisp/emacs-lisp > test/automated/lisp/progmodes (and so on....) > test/automated/lisp/c (lisp tests for the C core) This breaks the symmetry between our source layout and the test layout. And, of course, if we some day add a C testing framework there's no reason why lisp tests and C tests cannot share test/automated/c. In fact, it seems to me like a nice property that if we have both C and elisp tests for, say, keymap.c, then keymap-tests.c and keymap-tests.el are in close proximity. [-- Attachment #2: Type: text/html, Size: 1022 bytes --] ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: Location of tests (again) (was Re: Makefile-help) 2015-11-07 11:06 ` Juanma Barranquero @ 2015-11-07 11:22 ` Phillip Lord 2015-11-07 11:36 ` Juanma Barranquero 2015-11-07 11:45 ` Eli Zaretskii 0 siblings, 2 replies; 43+ messages in thread From: Phillip Lord @ 2015-11-07 11:22 UTC (permalink / raw) To: Juanma Barranquero; +Cc: Stephen Leake, Emacs developers Juanma Barranquero <lekktu@gmail.com> writes: > On Sat, Nov 7, 2015 at 11:55 AM, Phillip Lord <phillip.lord@russet.org.uk> > wrote: > >> Some one suggested to >> but tests of C core ~test/automated/src~ which sounded good. But >> thinking about it, it probably makes more sense to leave this for C >> level testing framework. So now we have >> >> test/automated/lisp >> test/automated/lisp/emacs-lisp >> test/automated/lisp/progmodes (and so on....) >> test/automated/lisp/c (lisp tests for the C core) > > This breaks the symmetry between our source layout and the test layout. It does, and I think this is unfortunate. > And, of course, if we some day add a C testing framework there's no reason > why lisp tests and C tests cannot share test/automated/c. > > In fact, it seems to me like a nice property that if we have both C and > elisp tests for, say, keymap.c, then keymap-tests.c and keymap-tests.el are > in close proximity. I thought about that. Obviously it makes the Makefile harder (since you need one that can cope with both the C framework and the Lisp framework), which is why I though to keep things separate. This seemed worth breaking the symmetry. Very open to persuasion. Phil ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: Location of tests (again) (was Re: Makefile-help) 2015-11-07 11:22 ` Phillip Lord @ 2015-11-07 11:36 ` Juanma Barranquero 2015-11-07 17:46 ` Phillip Lord 2015-11-07 11:45 ` Eli Zaretskii 1 sibling, 1 reply; 43+ messages in thread From: Juanma Barranquero @ 2015-11-07 11:36 UTC (permalink / raw) To: Phillip Lord; +Cc: Stephen Leake, Emacs developers [-- Attachment #1: Type: text/plain, Size: 593 bytes --] On Sat, Nov 7, 2015 at 12:22 PM, Phillip Lord <phillip.lord@russet.org.uk> wrote: > I thought about that. Obviously it makes the Makefile harder (since you > need one that can cope with both the C framework and the Lisp > framework), which is why I though to keep things separate. Well, Emacs isn't a project known by the simplicity of its makefiles ;-) > Very open to persuasion. We don't have a C testing framework, and we don't know when, or if, we'll have one. I'd say worrying about how complex the makefiles will be for that case is a bit premature. Just my 0.02€ [-- Attachment #2: Type: text/html, Size: 797 bytes --] ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: Location of tests (again) (was Re: Makefile-help) 2015-11-07 11:36 ` Juanma Barranquero @ 2015-11-07 17:46 ` Phillip Lord 0 siblings, 0 replies; 43+ messages in thread From: Phillip Lord @ 2015-11-07 17:46 UTC (permalink / raw) To: Juanma Barranquero; +Cc: Stephen Leake, Emacs developers Juanma Barranquero <lekktu@gmail.com> writes: > On Sat, Nov 7, 2015 at 12:22 PM, Phillip Lord <phillip.lord@russet.org.uk> > wrote: > >> I thought about that. Obviously it makes the Makefile harder (since you >> need one that can cope with both the C framework and the Lisp >> framework), which is why I though to keep things separate. > > Well, Emacs isn't a project known by the simplicity of its makefiles ;-) > >> Very open to persuasion. > > We don't have a C testing framework, and we don't know when, or if, we'll > have one. I'd say worrying about how complex the makefiles will be for that > case is a bit premature. > > Just my 0.02€ Okay, well that's two voices, so I am persuaded. The changes have been pushed. Phil ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: Location of tests (again) (was Re: Makefile-help) 2015-11-07 11:22 ` Phillip Lord 2015-11-07 11:36 ` Juanma Barranquero @ 2015-11-07 11:45 ` Eli Zaretskii 2015-11-07 18:09 ` Stephen Leake 1 sibling, 1 reply; 43+ messages in thread From: Eli Zaretskii @ 2015-11-07 11:45 UTC (permalink / raw) To: Phillip Lord; +Cc: lekktu, stephen_leake, emacs-devel > From: phillip.lord@russet.org.uk (Phillip Lord) > Date: Sat, 07 Nov 2015 11:22:04 +0000 > Cc: Stephen Leake <stephen_leake@stephe-leake.org>, > Emacs developers <emacs-devel@gnu.org> > > Juanma Barranquero <lekktu@gmail.com> writes: > > > On Sat, Nov 7, 2015 at 11:55 AM, Phillip Lord <phillip.lord@russet.org.uk> > > wrote: > > > >> Some one suggested to > >> but tests of C core ~test/automated/src~ which sounded good. But > >> thinking about it, it probably makes more sense to leave this for C > >> level testing framework. So now we have > >> > >> test/automated/lisp > >> test/automated/lisp/emacs-lisp > >> test/automated/lisp/progmodes (and so on....) > >> test/automated/lisp/c (lisp tests for the C core) > > > > This breaks the symmetry between our source layout and the test layout. > > It does, and I think this is unfortunate. Sorry, I don't understand why not use the simpler test/automated/src (tests for the C core) test/automated/lisp test/automated/lisp/emacs-lisp ... > > In fact, it seems to me like a nice property that if we have both C and > > elisp tests for, say, keymap.c, then keymap-tests.c and keymap-tests.el are > > in close proximity. > > I thought about that. Obviously it makes the Makefile harder (since you > need one that can cope with both the C framework and the Lisp > framework), which is why I though to keep things separate. This seemed > worth breaking the symmetry. We don't have any C framework, and I very much doubt we will any time soon. (I don't even think it's feasible, since Emacs is not a library, and doesn't provide a way of exercising it from a C program.) We can move files again if and when we do, just like we intend to move files now. OTOH, breaking the symmetry on behalf of a feature we don't have doesn't sound right to me. ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: Location of tests (again) (was Re: Makefile-help) 2015-11-07 11:45 ` Eli Zaretskii @ 2015-11-07 18:09 ` Stephen Leake 0 siblings, 0 replies; 43+ messages in thread From: Stephen Leake @ 2015-11-07 18:09 UTC (permalink / raw) To: Eli Zaretskii; +Cc: lekktu, emacs-devel, Phillip Lord Eli Zaretskii <eliz@gnu.org> writes: >> From: phillip.lord@russet.org.uk (Phillip Lord) >> I thought about that. Obviously it makes the Makefile harder (since you >> need one that can cope with both the C framework and the Lisp >> framework), which is why I though to keep things separate. This seemed >> worth breaking the symmetry. > > We don't have any C framework, and I very much doubt we will any time > soon. (I don't even think it's feasible, since Emacs is not a > library, and doesn't provide a way of exercising it from a C program.) > We can move files again if and when we do, just like we intend to move > files now. OTOH, breaking the symmetry on behalf of a feature we > don't have doesn't sound right to me. +1 -- -- Stephe ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: Location of tests (again) (was Re: Makefile-help) 2015-11-07 10:55 ` Location of tests (again) (was Re: Makefile-help) Phillip Lord 2015-11-07 11:06 ` Juanma Barranquero @ 2015-11-10 20:34 ` Przemysław Wojnowski 2015-11-10 20:45 ` Phillip Lord 1 sibling, 1 reply; 43+ messages in thread From: Przemysław Wojnowski @ 2015-11-10 20:34 UTC (permalink / raw) To: Phillip Lord; +Cc: Stephen Leake, emacs-devel phillip.lord@russet.org.uk (Phillip Lord) writes: > test/automated/lisp > test/automated/lisp/emacs-lisp > test/automated/lisp/progmodes (and so on....) > test/automated/lisp/c (lisp tests for the C core) > test/automated/lisp/legacy (ones which don't fit, to be fixed) > test/automated/src (empty but reserved for C tests of C core) Sorry to comment on this so late, but it wouldn't it make sense to move automated tests to directly under "test/" ? "automated/" here looks a bit artificial to me. Sooner or later all tests will be automated anyway. ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: Location of tests (again) (was Re: Makefile-help) 2015-11-10 20:34 ` Przemysław Wojnowski @ 2015-11-10 20:45 ` Phillip Lord 2015-11-10 21:41 ` Przemysław Wojnowski 0 siblings, 1 reply; 43+ messages in thread From: Phillip Lord @ 2015-11-10 20:45 UTC (permalink / raw) To: Przemysław Wojnowski; +Cc: Stephen Leake, emacs-devel Przemysław Wojnowski <esperanto@cumego.com> writes: > phillip.lord@russet.org.uk (Phillip Lord) writes: > >> test/automated/lisp >> test/automated/lisp/emacs-lisp >> test/automated/lisp/progmodes (and so on....) >> test/automated/lisp/c (lisp tests for the C core) >> test/automated/lisp/legacy (ones which don't fit, to be fixed) >> test/automated/src (empty but reserved for C tests of C core) > > Sorry to comment on this so late, No worries. I'm not going to make this move now, anyway, given that we are approaching feature freeze (technically, I guess, tests are not a feature but still...). > but it wouldn't it make sense to move automated tests to directly > under "test/" ? "automated/" here looks a bit artificial to me. > > Sooner or later all tests will be automated anyway. I doubt the latter is true (simply because some display related tests will always involve looking at emacs). Having said that, I largely agree with you. We'd have something like? test/lisp test/src test/non-ert Other names which leap to mind: test/non-automated test/manual Phil ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: Location of tests (again) (was Re: Makefile-help) 2015-11-10 20:45 ` Phillip Lord @ 2015-11-10 21:41 ` Przemysław Wojnowski 2015-11-10 22:27 ` John Wiegley ` (2 more replies) 0 siblings, 3 replies; 43+ messages in thread From: Przemysław Wojnowski @ 2015-11-10 21:41 UTC (permalink / raw) To: Phillip Lord; +Cc: Stephen Leake, emacs-devel phillip.lord@russet.org.uk (Phillip Lord) writes: [...] >> Sooner or later all tests will be automated anyway. > > I doubt the latter is true (simply because some display related tests > will always involve looking at emacs). Ok, "all" was exaggerated a bit, but most things can be tested automatically. > Having said that, I largely agree with you. We'd have something like? > > test/lisp > test/src [...] > test/manual I'm for "test/manual" here, but other names are fine too. (I would also change "test/src/" to "test/c", because "lisp" are sources too, after all. But I don't insist on that, especially that it may result in a flood here. ;-) ) ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: Location of tests (again) (was Re: Makefile-help) 2015-11-10 21:41 ` Przemysław Wojnowski @ 2015-11-10 22:27 ` John Wiegley 2015-11-11 0:28 ` bikeshedding (was Re: Location of tests (again) (was Re: Makefile-help)) Stephen Leake 2015-11-11 10:31 ` Location of tests (again) (was Re: Makefile-help) Phillip Lord 2 siblings, 0 replies; 43+ messages in thread From: John Wiegley @ 2015-11-10 22:27 UTC (permalink / raw) To: Przemysław Wojnowski; +Cc: emacs-devel, Stephen Leake, Phillip Lord >>>>> Przemysław Wojnowski <esperanto@cumego.com> writes: >> test/lisp >> test/src > [...] >> test/manual > I'm for "test/manual" here, but other names are fine too. I like this structure. John ^ permalink raw reply [flat|nested] 43+ messages in thread
* bikeshedding (was Re: Location of tests (again) (was Re: Makefile-help)) 2015-11-10 21:41 ` Przemysław Wojnowski 2015-11-10 22:27 ` John Wiegley @ 2015-11-11 0:28 ` Stephen Leake 2015-11-11 10:31 ` Location of tests (again) (was Re: Makefile-help) Phillip Lord 2 siblings, 0 replies; 43+ messages in thread From: Stephen Leake @ 2015-11-11 0:28 UTC (permalink / raw) To: Przemysław Wojnowski; +Cc: emacs-devel, Phillip Lord Przemysław Wojnowski <esperanto@cumego.com> writes: > (I would also change "test/src/" to "test/c", because "lisp" are sources > too, after all. But I don't insist on that, especially that it may result > in a flood here. ;-) ) Only if you also change <root>/src to <root>/c. Or to: <root> src/ src/lisp src/c or just include lisp and C in one src/ directory; is that really a problem? -- -- Stephe ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: Location of tests (again) (was Re: Makefile-help) 2015-11-10 21:41 ` Przemysław Wojnowski 2015-11-10 22:27 ` John Wiegley 2015-11-11 0:28 ` bikeshedding (was Re: Location of tests (again) (was Re: Makefile-help)) Stephen Leake @ 2015-11-11 10:31 ` Phillip Lord 2015-11-11 17:02 ` UI tests Richard Stallman 2 siblings, 1 reply; 43+ messages in thread From: Phillip Lord @ 2015-11-11 10:31 UTC (permalink / raw) To: Przemysław Wojnowski; +Cc: Stephen Leake, emacs-devel Przemysław Wojnowski <esperanto@cumego.com> writes: > phillip.lord@russet.org.uk (Phillip Lord) writes: > [...] >>> Sooner or later all tests will be automated anyway. >> >> I doubt the latter is true (simply because some display related tests >> will always involve looking at emacs). > Ok, "all" was exaggerated a bit, but most things can be tested > automatically. > >> Having said that, I largely agree with you. We'd have something like? >> >> test/lisp >> test/src > [...] >> test/manual > I'm for "test/manual" here, but other names are fine too. > > (I would also change "test/src/" to "test/c", because "lisp" are sources > too, after all. But I don't insist on that, especially that it may result > in a flood here. ;-) ) I suggested that -- personally, I don't like having "src" in "test" because "src" is, well, source, not test. But the general feeling was that keeping it symmetrical makes more sense. Either way, it answers my use-case of a deterministic link between source and test. Phil ^ permalink raw reply [flat|nested] 43+ messages in thread
* UI tests 2015-11-11 10:31 ` Location of tests (again) (was Re: Makefile-help) Phillip Lord @ 2015-11-11 17:02 ` Richard Stallman 2015-11-11 17:25 ` John Wiegley ` (2 more replies) 0 siblings, 3 replies; 43+ messages in thread From: Richard Stallman @ 2015-11-11 17:02 UTC (permalink / raw) To: Phillip Lord; +Cc: stephen_leake, esperanto, emacs-devel [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] Unlike the typical graphical applications, Emacs's UIs are mostly controlled by events that have a very shallow translation to Lisp data. Even mouse clicks can be faked, and a convenient Lisp function to make that totally easy would not be hard to write. Perhaps the input side of testing UI features will be fairly easy. The output side is not so straightforward, but if we set up something to accumulate a sort of dribble record of X11 output operations, in the form of Lisp-visible data, maybe tests could check that to see if they have changed from before. -- Dr Richard Stallman President, Free Software Foundation (gnu.org, fsf.org) Internet Hall-of-Famer (internethalloffame.org) Skype: No way! See stallman.org/skype.html. ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: UI tests 2015-11-11 17:02 ` UI tests Richard Stallman @ 2015-11-11 17:25 ` John Wiegley 2015-11-12 14:09 ` Phillip Lord 2015-11-15 12:14 ` Przemysław Wojnowski 2 siblings, 0 replies; 43+ messages in thread From: John Wiegley @ 2015-11-11 17:25 UTC (permalink / raw) To: Richard Stallman; +Cc: esperanto, emacs-devel, stephen_leake, Phillip Lord >>>>> Richard Stallman <rms@gnu.org> writes: > The output side is not so straightforward, but if we set up something to > accumulate a sort of dribble record of X11 output operations, in the form of > Lisp-visible data, maybe tests could check that to see if they have changed > from before. Ah, I hadn't considered using output deltas as a way of testing. Good idea! John ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: UI tests 2015-11-11 17:02 ` UI tests Richard Stallman 2015-11-11 17:25 ` John Wiegley @ 2015-11-12 14:09 ` Phillip Lord 2015-11-12 14:37 ` Alan Mackenzie ` (2 more replies) 2015-11-15 12:14 ` Przemysław Wojnowski 2 siblings, 3 replies; 43+ messages in thread From: Phillip Lord @ 2015-11-12 14:09 UTC (permalink / raw) To: Richard Stallman; +Cc: stephen_leake, esperanto, emacs-devel Richard Stallman <rms@gnu.org> writes: > [[[ To any NSA and FBI agents reading my email: please consider ]]] > [[[ whether defending the US Constitution against all enemies, ]]] > [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > > Unlike the typical graphical applications, Emacs's UIs are mostly > controlled by events that have a very shallow translation to Lisp > data. Even mouse clicks can be faked, and a convenient Lisp function > to make that totally easy would not be hard to write. I would agree. I've been working on a library (called sisyphus) to support higher-level operations for testing, and that would be a nice addition. > Perhaps the input side of testing UI features will be fairly easy. > > The output side is not so straightforward, but if we set up something > to accumulate a sort of dribble record of X11 output operations, in > the form of Lisp-visible data, maybe tests could check that to see > if they have changed from before. If that would allow me to test things like before and after-string overlay properties that would be excellent. Testing, for example, completion engines is hard in Emacs since the buffer doesn't change, only the visualisation of it. One additional problem, though, is that Emacs doesn't really have a concept of "headless". Things like syntax highlighting in buffers just work different when running in batch, because Emacs assumes it's running on a TTY. For example, HTML generated by htmlize comes out differently in batch, than from a windowed Emacs, because Emacs in batch cannot display colour. Phil ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: UI tests 2015-11-12 14:09 ` Phillip Lord @ 2015-11-12 14:37 ` Alan Mackenzie 2015-11-12 16:33 ` Eli Zaretskii 2015-11-13 21:58 ` Richard Stallman 2 siblings, 0 replies; 43+ messages in thread From: Alan Mackenzie @ 2015-11-12 14:37 UTC (permalink / raw) To: Phillip Lord; +Cc: esperanto, stephen_leake, Richard Stallman, emacs-devel Hello, Phillip. On Thu, Nov 12, 2015 at 02:09:32PM +0000, Phillip Lord wrote: [ .... ] > One additional problem, though, is that Emacs doesn't really have a > concept of "headless". Things like syntax highlighting in buffers just > work different when running in batch, because Emacs assumes it's running > on a TTY. For example, HTML generated by htmlize comes out differently > in batch, than from a windowed Emacs, because Emacs in batch cannot > display colour. I'm not sure whether or not this is relevant, but Emacs can be duped into doing font-locking in batch mode. Please examine the following function (out of CC Mode's 000tests.el), and see if there's anything in it you could use: (defun cc-test-force-font-lock-buffer () ;; Try to forcibly font lock the current buffer, even in batch mode. ;; We're doing really dirty things to trick font-lock into action in ;; batch mode in the different emacsen. (let ((orig-noninteractive-function (and (fboundp 'noninteractive) (symbol-function 'noninteractive))) (orig-noninteractive-variable (and (boundp 'noninteractive) (symbol-value 'noninteractive))) ;; font-lock in XEmacs 19 looks at a variable named `noninteractive'. (noninteractive nil)) (unwind-protect (progn (when orig-noninteractive-function ;; XEmacs (at least 21.4) calls `noninteractive' to check ;; for batch mode, so we let it lie. (fset 'noninteractive (lambda () nil))) (font-lock-mode 1) (unless (or (get-text-property (point-min) 'face) (next-single-property-change (point-min) 'face)) ;; Some emacsen have already fontified the buffer above, ;; but others need some more coercion.. (let (;; Avoid getting some lazy fontification package that ;; might decide that nothing should be done. (font-lock-fontify-buffer-function 'font-lock-default-fontify-buffer)) (font-lock-fontify-buffer)))) (when orig-noninteractive-function (fset 'noninteractive orig-noninteractive-function))))) > Phil -- Alan Mackenzie (Nuremberg, Germany). ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: UI tests 2015-11-12 14:09 ` Phillip Lord 2015-11-12 14:37 ` Alan Mackenzie @ 2015-11-12 16:33 ` Eli Zaretskii 2015-11-13 21:58 ` Richard Stallman 2 siblings, 0 replies; 43+ messages in thread From: Eli Zaretskii @ 2015-11-12 16:33 UTC (permalink / raw) To: Phillip Lord; +Cc: esperanto, stephen_leake, rms, emacs-devel > From: phillip.lord@russet.org.uk (Phillip Lord) > Date: Thu, 12 Nov 2015 14:09:32 +0000 > Cc: stephen_leake@stephe-leake.org, esperanto@cumego.com, emacs-devel@gnu.org > > One additional problem, though, is that Emacs doesn't really have a > concept of "headless". Things like syntax highlighting in buffers just > work different when running in batch, because Emacs assumes it's running > on a TTY. For example, HTML generated by htmlize comes out differently > in batch, than from a windowed Emacs, because Emacs in batch cannot > display colour. Most GUI APIs (like Xlib etc.) won't work without a real display and a window (a.k.a. "frame"), so if we want a "headless" Emacs that will work as with GUI frames, we will have to emulate all those calls. Not for a faint at heart, I'd say. ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: UI tests 2015-11-12 14:09 ` Phillip Lord 2015-11-12 14:37 ` Alan Mackenzie 2015-11-12 16:33 ` Eli Zaretskii @ 2015-11-13 21:58 ` Richard Stallman 2 siblings, 0 replies; 43+ messages in thread From: Richard Stallman @ 2015-11-13 21:58 UTC (permalink / raw) To: Phillip Lord; +Cc: stephen_leake, esperanto, emacs-devel [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > One additional problem, though, is that Emacs doesn't really have a > concept of "headless". We could implement a fake terminal of any desired type and use it to test display for real terminals of that type. -- Dr Richard Stallman President, Free Software Foundation (gnu.org, fsf.org) Internet Hall-of-Famer (internethalloffame.org) Skype: No way! See stallman.org/skype.html. ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: UI tests 2015-11-11 17:02 ` UI tests Richard Stallman 2015-11-11 17:25 ` John Wiegley 2015-11-12 14:09 ` Phillip Lord @ 2015-11-15 12:14 ` Przemysław Wojnowski 2015-11-16 19:32 ` Richard Stallman 2 siblings, 1 reply; 43+ messages in thread From: Przemysław Wojnowski @ 2015-11-15 12:14 UTC (permalink / raw) To: Richard Stallman; +Cc: emacs-devel, stephen_leake, Phillip Lord Richard Stallman <rms@gnu.org> writes: > Unlike the typical graphical applications, Emacs's UIs are mostly > controlled by events that have a very shallow translation to Lisp > data. Even mouse clicks can be faked, and a convenient Lisp function > to make that totally easy would not be hard to write. > > Perhaps the input side of testing UI features will be fairly easy. > > The output side is not so straightforward, but if we set up something > to accumulate a sort of dribble record of X11 output operations, in > the form of Lisp-visible data, maybe tests could check that to see > if they have changed from before. I'm not sure what do you mean by "output side" here? My understanding is that inputs and outputs are on system's boundaries and isolate system's functionality using stable interfaces (common in different architectural pattern - e.g. [1], [2]). In Emacs, as you wrote, user actions can be faked and that can be used in tests. The other side - the outputs - is not that clear to me. Usually the outputs are hidden under stable interfaces. The interfaces allow to exchange implementations without affecting the system and the boundary is used to test the output of the system. In case of display output, this won't allow to test every single pixel (so no X11 output), but at least it will allow to test that the system produces correct output for display, no matter what that display (its underlying library) is. Two things to note when introducing automated tests: 1. Tests pyramid [3] - indicates which tests are most important and ratio between them. TL;DR Emacs should focus on unit tests. 2. Ice Cream Cone anti-pattern [3,4] is a common trap for existing projects that start to add automated tests. [1] Layers in "Pattern Oriented Software Architecture vol 1" [2] http://alistair.cockburn.us/Hexagonal+architecture [3] http://googletesting.blogspot.co.uk/2015/04/just-say-no-to-more-end-to-end-tests.html (from "The True Value of Tests") [4] http://watirmelon.com/2012/01/31/introducing-the-software-testing-ice-cream-cone/ ^ permalink raw reply [flat|nested] 43+ messages in thread
* Re: UI tests 2015-11-15 12:14 ` Przemysław Wojnowski @ 2015-11-16 19:32 ` Richard Stallman 0 siblings, 0 replies; 43+ messages in thread From: Richard Stallman @ 2015-11-16 19:32 UTC (permalink / raw) To: Przemysław Wojnowski; +Cc: emacs-devel, stephen_leake, phillip.lord [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > I'm not sure what do you mean by "output side" here? I mean anything that shows on the screen. When it comes to testing the user interface at a lower level, we would have to test what it does to the screen. -- Dr Richard Stallman President, Free Software Foundation (gnu.org, fsf.org) Internet Hall-of-Famer (internethalloffame.org) Skype: No way! See stallman.org/skype.html. ^ permalink raw reply [flat|nested] 43+ messages in thread
end of thread, other threads:[~2015-11-25 14:17 UTC | newest] Thread overview: 43+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2015-11-04 17:36 Locations of Tests Phillip Lord 2015-11-04 17:53 ` John Wiegley 2015-11-04 18:14 ` Artur Malabarba 2015-11-04 18:21 ` John Wiegley 2015-11-25 9:23 ` Phillip Lord 2015-11-25 9:43 ` Artur Malabarba 2015-11-25 14:17 ` Phillip Lord 2015-11-04 19:15 ` Steinar Bang 2015-11-04 19:23 ` David Kastrup 2015-11-04 21:33 ` Phillip Lord 2015-11-04 19:07 ` Michael Albinus 2015-11-04 19:15 ` John Wiegley 2015-11-04 21:26 ` Phillip Lord 2015-11-05 13:41 ` Stephen Leake 2015-11-05 13:59 ` Artur Malabarba 2015-11-05 15:02 ` Nicolas Petton 2015-11-05 15:08 ` Artur Malabarba 2015-11-06 9:56 ` Phillip Lord 2015-11-05 15:27 ` Juanma Barranquero 2015-11-06 9:55 ` Phillip Lord 2015-11-06 10:02 ` Makefile-help (was Re: Locations of Tests) Phillip Lord 2015-11-07 6:48 ` Stephen Leake 2015-11-07 10:55 ` Location of tests (again) (was Re: Makefile-help) Phillip Lord 2015-11-07 11:06 ` Juanma Barranquero 2015-11-07 11:22 ` Phillip Lord 2015-11-07 11:36 ` Juanma Barranquero 2015-11-07 17:46 ` Phillip Lord 2015-11-07 11:45 ` Eli Zaretskii 2015-11-07 18:09 ` Stephen Leake 2015-11-10 20:34 ` Przemysław Wojnowski 2015-11-10 20:45 ` Phillip Lord 2015-11-10 21:41 ` Przemysław Wojnowski 2015-11-10 22:27 ` John Wiegley 2015-11-11 0:28 ` bikeshedding (was Re: Location of tests (again) (was Re: Makefile-help)) Stephen Leake 2015-11-11 10:31 ` Location of tests (again) (was Re: Makefile-help) Phillip Lord 2015-11-11 17:02 ` UI tests Richard Stallman 2015-11-11 17:25 ` John Wiegley 2015-11-12 14:09 ` Phillip Lord 2015-11-12 14:37 ` Alan Mackenzie 2015-11-12 16:33 ` Eli Zaretskii 2015-11-13 21:58 ` Richard Stallman 2015-11-15 12:14 ` Przemysław Wojnowski 2015-11-16 19:32 ` Richard Stallman
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).