* [PATCH] Testing strategy for Tree-sitter modes [not found] <m1tu112jgi.fsf.ref@yahoo.es> @ 2023-01-08 14:23 ` Daniel Martín 2023-01-08 14:56 ` Eli Zaretskii ` (2 more replies) 0 siblings, 3 replies; 4+ messages in thread From: Daniel Martín @ 2023-01-08 14:23 UTC (permalink / raw) To: emacs-devel; +Cc: casouri [-- Attachment #1: Type: text/plain, Size: 917 bytes --] I think the development of Tree-sitter modes would benefit from having a regression test suite that ensures that bug fixes for specific cases don't regress in the future. As a start, I've attached to this mail some ERT-based tests for the indentation feature of c-ts-mode. I've used the convenient feature of "erts" files to create the tests, which I think make them readable and maintainable. The tests are skipped if the Emacs build does not have Tree-sitter enabled, or if the corresponding grammar is not installed. Perhaps it would be a good idea to install these Tree-sitter dependencies in the container images used for EMBA (https://emba.gnu.org/emacs), so that we're able to run Tree-sitter tests in continuous integration, and even play with different versions of Tree-sitter or the Tree-sitter grammars to detect incompatibilities. I'll leave this decision to the people in charge of EMBA. Thanks. [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: 0001-Add-c-ts-mode-tests.patch --] [-- Type: text/x-patch, Size: 2810 bytes --] From c557b9aa3d733d9b2d4ab2b13b5b0c644d7675f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=ADn?= <mardani29@yahoo.es> Date: Sun, 8 Jan 2023 14:04:24 +0100 Subject: [PATCH] Add c-ts-mode tests * test/lisp/progmodes/c-ts-mode-resources/indent.erts: New .erts file to test indentation of typical C constructs and prevent regression of bug fixes. * test/lisp/progmodes/c-ts-mode-tests.el: New file with c-ts-mode tests. --- .../progmodes/c-ts-mode-resources/indent.erts | 44 +++++++++++++++++++ test/lisp/progmodes/c-ts-mode-tests.el | 31 +++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 test/lisp/progmodes/c-ts-mode-resources/indent.erts create mode 100644 test/lisp/progmodes/c-ts-mode-tests.el diff --git a/test/lisp/progmodes/c-ts-mode-resources/indent.erts b/test/lisp/progmodes/c-ts-mode-resources/indent.erts new file mode 100644 index 00000000000..5defcbd3c83 --- /dev/null +++ b/test/lisp/progmodes/c-ts-mode-resources/indent.erts @@ -0,0 +1,44 @@ +Code: + (lambda () + (c-ts-mode) + (indent-region (point-min) (point-max))) + +Name: Basic + +=-= +int +main (void) +{ + return 0; +} +=-=-= + +Name: Hanging Braces (GNU Style) + +=-= +int +main (void) +{ + if (true) + { + } +} +=-=-= + +Name: Multiline Parameter List (bug#60398) + +=-= +int f2(int x, + int y) { + return x + y; +}; +=-=-= + +Name: Multiline Block Comments (bug#60270) + +=-= +/** + * @some_func: + * @arg1: + */ +=-=-= diff --git a/test/lisp/progmodes/c-ts-mode-tests.el b/test/lisp/progmodes/c-ts-mode-tests.el new file mode 100644 index 00000000000..8606faf9913 --- /dev/null +++ b/test/lisp/progmodes/c-ts-mode-tests.el @@ -0,0 +1,31 @@ +;;; c-ts-mode-tests.el --- Tests for Tree-sitter-based C mode -*- lexical-binding: t; -*- + +;; Copyright (C) 2023 Free Software Foundation, Inc. + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. + +;;; Code: + +(require 'ert) +(require 'ert-x) +(require 'treesit) + +(ert-deftest c-ts-mode-test-indentation () + (skip-unless (treesit-ready-p 'c)) + (ert-test-erts-file (ert-resource-file "indent.erts"))) + +(provide 'c-ts-mode-tests) +;;; c-ts-mode-tests.el ends here -- 2.34.1 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] Testing strategy for Tree-sitter modes 2023-01-08 14:23 ` [PATCH] Testing strategy for Tree-sitter modes Daniel Martín @ 2023-01-08 14:56 ` Eli Zaretskii 2023-01-08 17:27 ` Michael Albinus 2023-01-08 21:14 ` Jostein Kjønigsen 2 siblings, 0 replies; 4+ messages in thread From: Eli Zaretskii @ 2023-01-08 14:56 UTC (permalink / raw) To: Daniel Martín; +Cc: emacs-devel, casouri > From: Daniel Martín <mardani29@yahoo.es> > Cc: casouri@gmail.com > Date: Sun, 08 Jan 2023 15:23:57 +0100 > > I think the development of Tree-sitter modes would benefit from having a > regression test suite that ensures that bug fixes for specific cases > don't regress in the future. Thanks, adding tests is always welcome. ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] Testing strategy for Tree-sitter modes 2023-01-08 14:23 ` [PATCH] Testing strategy for Tree-sitter modes Daniel Martín 2023-01-08 14:56 ` Eli Zaretskii @ 2023-01-08 17:27 ` Michael Albinus 2023-01-08 21:14 ` Jostein Kjønigsen 2 siblings, 0 replies; 4+ messages in thread From: Michael Albinus @ 2023-01-08 17:27 UTC (permalink / raw) To: Daniel Martín; +Cc: emacs-devel, casouri Daniel Martín <mardani29@yahoo.es> writes: Hi Daniel, > The tests are skipped if the Emacs build does not have Tree-sitter > enabled, or if the corresponding grammar is not installed. Perhaps it > would be a good idea to install these Tree-sitter dependencies in the > container images used for EMBA (https://emba.gnu.org/emacs), so that > we're able to run Tree-sitter tests in continuous integration, and even > play with different versions of Tree-sitter or the Tree-sitter grammars > to detect incompatibilities. I'll leave this decision to the people in > charge of EMBA. Good idea. See the source tree, file test/infra/Dockerfile.emba. If you could provide an extension for this, adding the Tree-sitter dependencies, we could arrange to bring it to EMBA. (Personally, I don't know what to do wrt Tree-sitter) > Thanks. Best regards, Michael. ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] Testing strategy for Tree-sitter modes 2023-01-08 14:23 ` [PATCH] Testing strategy for Tree-sitter modes Daniel Martín 2023-01-08 14:56 ` Eli Zaretskii 2023-01-08 17:27 ` Michael Albinus @ 2023-01-08 21:14 ` Jostein Kjønigsen 2 siblings, 0 replies; 4+ messages in thread From: Jostein Kjønigsen @ 2023-01-08 21:14 UTC (permalink / raw) To: emacs-devel On 08.01.2023 15:23, Daniel Martín wrote: > I think the development of Tree-sitter modes would benefit from having a > regression test suite that ensures that bug fixes for specific cases > don't regress in the future. > > As a start, I've attached to this mail some ERT-based tests for the > indentation feature of c-ts-mode. I've used the convenient feature of > "erts" files to create the tests, which I think make them readable and > maintainable. > > The tests are skipped if the Emacs build does not have Tree-sitter > enabled, or if the corresponding grammar is not installed. Perhaps it > would be a good idea to install these Tree-sitter dependencies in the > container images used for EMBA (https://emba.gnu.org/emacs), so that > we're able to run Tree-sitter tests in continuous integration, and even > play with different versions of Tree-sitter or the Tree-sitter grammars > to detect incompatibilities. I'll leave this decision to the people in > charge of EMBA. > > Thanks. > I fully support the addition of the possibility to have a test-suite run on CI. When we ported csharp-mode and typescript-mode from ELPA to new ts-based major modes in Emacs-core, I always felt like this was the one thing I really wished we'd have here as well. If this can be added easily, it would make it much easier (and safer!) to make changes to tree-sitter grammars in major-modes with complex grammer, and where it's not always obvious what rule covers what use-case(s). -- Jostein ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2023-01-08 21:14 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <m1tu112jgi.fsf.ref@yahoo.es> 2023-01-08 14:23 ` [PATCH] Testing strategy for Tree-sitter modes Daniel Martín 2023-01-08 14:56 ` Eli Zaretskii 2023-01-08 17:27 ` Michael Albinus 2023-01-08 21:14 ` Jostein Kjønigsen
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).