branch: externals/matlab-mode
commit 3719a797abb055f3dccc5db1dada9fe22c893e35
Author: John Ciolfi <[email protected]>
Commit: John Ciolfi <[email protected]>

    treesit-how-to: added fill-paragraph testing
---
 contributing/treesit-mode-how-to.org               | 127 ++++++++++++++++++++-
 .../fill_paragraph_test1.m                         |  13 +++
 .../fill_paragraph_test1_expected.org              |  47 ++++++++
 3 files changed, 185 insertions(+), 2 deletions(-)

diff --git a/contributing/treesit-mode-how-to.org 
b/contributing/treesit-mode-how-to.org
index e2802c6a0a..21de63d73a 100644
--- a/contributing/treesit-mode-how-to.org
+++ b/contributing/treesit-mode-how-to.org
@@ -1314,7 +1314,130 @@ LANGUAGE-ts-mode--thing-settings)= after you've setup 
your syntax table.
 
 ** Test: Fill Paragraph
 
-TODO
+We use =t-utils-xr= and a looping test to look over all
+=./tests/test-LANGUAGE-ts-mode-fill-paragraph-files/fill_paragraph_test*.lang= 
files:
+
+#+begin_example
+  ./LANGUAGE-ts-mode.el
+  ./tests/test-LANGUAGE-ts-mode-fill-paragraph.el
+  ./tests/test-LANGUAGE-ts-mode-fill-paragraph-files/fill_paragraph_test1.lang
+  
./tests/test-LANGUAGE-ts-mode-fill-paragraph-files/fill_paragraph_test1_expected.org
+  ./tests/test-LANGUAGE-ts-mode-fill-paragraph-files/fill_paragraph_test2.lang
+  
./tests/test-LANGUAGE-ts-mode-fill-paragraph-files/fill_paragraph_test2_expected.org
+  ....
+#+end_example
+
+An example =fill_paragraph_test1.lang= where '%' starts a comment:
+
+#+begin_src matlab
+  % -*- matlab-ts -*-
+  function b = fill_paragraph_test1(a)
+
+      % Setup test to use a small fill column
+      % (t-utils-xr (set-fill-column 60))
+      %
+      % Test of fill paragraph
+      % (t-utils-xr "C-n" "C-n" "M-q")
+      %
+      % A very long comment. A very long comment. A very long comment. A very 
long comment. A very long comment.
+
+      b = 1;
+  end
+#+end_src
+
+and the corresponding baseline, =fill_paragraph_test1_expected.org=
+
+#+begin_src org
+  ,#+startup: showall
+
+  ,* Executing commands from fill_paragraph_test1.m:5:6:
+
+    (t-utils-xr (set-fill-column 60))
+
+  - Invoking      : (set-fill-column 60)
+    Start point   :  142
+    No point movement
+    No buffer modifications
+
+  ,* Executing commands from fill_paragraph_test1.m:8:6:
+
+    (t-utils-xr "C-n" "C-n" "M-q")
+
+  - Invoking      : "C-n" = next-line
+    Start point   :  214
+    Moved to point:  220
+    : 9:5:     %
+    :           ^
+    No buffer modifications
+
+  - Invoking      : "C-n" = next-line
+    Start point   :  220
+    Moved to point:  226
+    : 10:5:     % A very long comment. A very long comment. A very long 
comment. A very long comment. A very long comment.
+    :            ^
+    No buffer modifications
+
+  - Invoking      : "M-q" = prog-fill-reindent-defun
+    Start point   :  226
+    No point movement
+    Buffer modified:
+    ,#+begin_src diff
+  --- start_contents
+  +++ end_contents
+  @@ -7,7 +7,8 @@
+       % Test of fill paragraph
+       % (t-utils-xr "C-n" "C-n" "M-q")
+       %
+  -    % A very long comment. A very long comment. A very long comment. A very 
long comment. A very long comment.
+  +    % A very long comment. A very long comment. A very long
+  +    % comment. A very long comment. A very long comment.
+   
+       b = 1;
+   end
+    ,#+end_src diff
+
+#+end_src
+
+The =test-LANGUAGE-ts-mode-fill-paragraph.el=:
+
+#+begin_src emacs-lisp
+  (require 't-utils)
+  (require 'LANGUAGE-ts-mode)
+
+  (defvar test-LANGUAGE-ts-mode-fill-paragraph--file nil)
+
+  (defun test-LANGUAGE-ts-mode-fill-paragraph--file (lang-file)
+    "Test an individual LANG-FILE.
+  This is provided for debugging.
+    M-: (test-LANGUAGE-ts-mode-fill-paragraph--file
+         \"test-LANGUAGE-ts-mode-fill-paragraph-files/LANG-FILE\")"
+    (let ((test-LANGUAGE-ts-mode-fill-paragraph--file lang-file))
+      (ert-run-tests-interactively "test-LANGUAGE-ts-mode-fill-paragraph")))
+
+  (ert-deftest test-LANGUAGE-ts-mode-fill-paragraph ()
+    "Test fill paragraph using 
./test-LANGUAGE-ts-mode-fill-paragraph-files/NAME.lang.
+  Using ./test-LANGUAGE-ts-mode-fill-paragraph-files/NAME.lang, run
+  `fill-paragraph' and compare result against
+  ./test-LANGUAGE-ts-mode-fill-paragraph-files/NAME_expected.org.  This loops
+  on all ./test-LANGUAGE-ts-mode-comments-files/NAME.lang files.
+
+  To add a test, create
+    ./test-LANGUAGE-ts-mode-fill-paragraph-files/NAME.lang
+  and run this function.  The baseline is saved for you as
+    ./test-LANGUAGE-ts-mode-fill-paragraph-files/NAME_expected.org~
+  after validating it, rename it to
+    ./test-LANGUAGE-ts-mode-fill-paragraph-files/NAME_expected.org"
+
+    (let* ((test-name "test-LANGUAGE-ts-mode-fill-paragraph")
+           (lang-files (t-utils-get-files
+                     test-name
+                     (rx ".lang" eos)
+                     nil
+                     test-LANGUAGE-ts-mode-fill-paragraph--file)))
+      (t-utils-error-if-no-treesit-for 'LANGUAGE test-name)
+      (t-utils-test-xr test-name lang-files)))
+#+end_src
+
 
 * Setup: treesit-defun-name-function
 
@@ -1746,7 +1869,7 @@ To add a menu, we do it using =easy-menu-define=.
       ["Command 2" language-command-2
        :help "help for command 2"]))
 
-    ;;;###autoload
+  ;;;###autoload
   (define-derived-mode LANGUAGE-ts-mode prog-mode "LANGUAGE:ts"
      ;;; <snip>
     )
diff --git 
a/tests/test-matlab-ts-mode-fill-paragraph-files/fill_paragraph_test1.m 
b/tests/test-matlab-ts-mode-fill-paragraph-files/fill_paragraph_test1.m
new file mode 100644
index 0000000000..fe86bbf2e3
--- /dev/null
+++ b/tests/test-matlab-ts-mode-fill-paragraph-files/fill_paragraph_test1.m
@@ -0,0 +1,13 @@
+% -*- matlab-ts -*-
+function b = fill_paragraph_test1(a)
+
+    % Setup test to use a small fill column
+    % (t-utils-xr (set-fill-column 60))
+    %
+    % Test of fill paragraph
+    % (t-utils-xr "C-n" "C-n" "M-q")
+    %
+    % A very long comment. A very long comment. A very long comment. A very 
long comment. A very long comment.
+
+    b = 1;
+end
diff --git 
a/tests/test-matlab-ts-mode-fill-paragraph-files/fill_paragraph_test1_expected.org
 
b/tests/test-matlab-ts-mode-fill-paragraph-files/fill_paragraph_test1_expected.org
new file mode 100644
index 0000000000..8b32b5c1cc
--- /dev/null
+++ 
b/tests/test-matlab-ts-mode-fill-paragraph-files/fill_paragraph_test1_expected.org
@@ -0,0 +1,47 @@
+#+startup: showall
+
+* Executing commands from fill_paragraph_test1.m:5:6:
+
+  (t-utils-xr (set-fill-column 60))
+
+- Invoking      : (set-fill-column 60)
+  Start point   :  142
+  No point movement
+  No buffer modifications
+
+* Executing commands from fill_paragraph_test1.m:8:6:
+
+  (t-utils-xr "C-n" "C-n" "M-q")
+
+- Invoking      : "C-n" = next-line
+  Start point   :  214
+  Moved to point:  220
+  : 9:5:     %
+  :           ^
+  No buffer modifications
+
+- Invoking      : "C-n" = next-line
+  Start point   :  220
+  Moved to point:  226
+  : 10:5:     % A very long comment. A very long comment. A very long comment. 
A very long comment. A very long comment.
+  :            ^
+  No buffer modifications
+
+- Invoking      : "M-q" = prog-fill-reindent-defun
+  Start point   :  226
+  No point movement
+  Buffer modified:
+  #+begin_src diff
+--- start_contents
++++ end_contents
+@@ -7,7 +7,8 @@
+     % Test of fill paragraph
+     % (t-utils-xr "C-n" "C-n" "M-q")
+     %
+-    % A very long comment. A very long comment. A very long comment. A very 
long comment. A very long comment.
++    % A very long comment. A very long comment. A very long
++    % comment. A very long comment. A very long comment.
+ 
+     b = 1;
+ end
+  #+end_src diff

Reply via email to