]> git.eshelyaron.com Git - emacs.git/commitdiff
Move semantic/format.el tests to follow our conventions
authorStefan Kangas <stefan@marxist.se>
Wed, 10 Feb 2021 03:14:48 +0000 (04:14 +0100)
committerStefan Kangas <stefan@marxist.se>
Wed, 10 Feb 2021 05:36:09 +0000 (06:36 +0100)
* test/lisp/cedet/semantic-utest-fmt.el: Move from here...
* test/lisp/cedet/semantic/format-tests.el: ...to here.
(ert, ert-x): Require.
(semantic-fmt-utest-file-list): Use ert-resource-file.
* test/manual/cedet/tests/test-fmt.cpp:
* test/manual/cedet/tests/test-fmt.el: Move from here...
* test/lisp/cedet/semantic/format-resources/test-fmt.cpp:
* test/lisp/cedet/semantic/format-resources/test-fmt.el: ...to here.

test/lisp/cedet/semantic-utest-fmt.el [deleted file]
test/lisp/cedet/semantic/format-resources/test-fmt.cpp [new file with mode: 0644]
test/lisp/cedet/semantic/format-resources/test-fmt.el [new file with mode: 0644]
test/lisp/cedet/semantic/format-tests.el [new file with mode: 0644]
test/manual/cedet/tests/test-fmt.cpp [deleted file]
test/manual/cedet/tests/test-fmt.el [deleted file]

diff --git a/test/lisp/cedet/semantic-utest-fmt.el b/test/lisp/cedet/semantic-utest-fmt.el
deleted file mode 100644 (file)
index d6e5ce7..0000000
+++ /dev/null
@@ -1,127 +0,0 @@
-;;; cedet/semantic-utest-fmt.el --- Parsing / Formatting tests -*- lexical-binding:t -*-
-
-;;; Copyright (C) 2003-2004, 2007-2021 Free Software Foundation, Inc.
-
-;; Author: Eric M. Ludlam <zappo@gnu.org>
-
-;; 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/>.
-
-;;; Commentary:
-;;
-;; Unit tests for the formatting feature.
-;;
-;; Using test code from the tests source directory, parse the source
-;; file.  After parsing, read the comments for each signature, and
-;; make sure that the semantic-tag-format-* functions in question
-;; created the desired output.
-
-(require 'semantic)
-(require 'semantic/format)
-
-;;; Code:
-
-(defvar cedet-utest-directory
-  (let* ((C (file-name-directory (locate-library "cedet")))
-         (D (expand-file-name "../../test/manual/cedet/" C)))
-    D)
-  "Location of test files for this test suite.")
-
-(defvar semantic-fmt-utest-file-list
-  '("tests/test-fmt.cpp"
-    ;; "tests/test-fmt.el" - add this when elisp is support by dflt in Emacs
-    )
-  "List of files to run unit tests in.")
-
-(defvar semantic-fmt-utest-error-log-list nil
-  "Log errors during testing in this variable.")
-
-(ert-deftest semantic-fmt-utest ()
-  "Visit all file entries, and run formatting test.
-Files to visit are in `semantic-fmt-utest-file-list'."
-  (save-current-buffer
-    (semantic-mode 1)
-    (let ((fl semantic-fmt-utest-file-list)
-         (fname nil)
-         )
-
-      (dolist (FILE fl)
-
-       (save-current-buffer
-         (setq fname (expand-file-name FILE cedet-utest-directory))
-
-         ;; Make sure we have the files we think we have.
-         (should (file-exists-p fname))
-         ;; (error "Cannot find unit test file: %s" fname))
-
-         ;; Run the tests.
-         (let ((fb (find-buffer-visiting fname))
-               (b (semantic-find-file-noselect fname))
-               (tags nil))
-
-           (save-current-buffer
-             (set-buffer b)
-             (should (semantic-active-p))
-             ;;(error "Cannot open %s for format tests" fname))
-
-             ;; This will force a reparse, removing any chance of semanticdb cache
-             ;; using stale data.
-             (semantic-clear-toplevel-cache)
-             ;; Force the reparse
-             (setq tags (semantic-fetch-tags))
-
-             (save-excursion
-               (while tags
-                 (let* ((T (car tags))
-                        (start (semantic-tag-end T))
-                        (end (if (cdr tags)
-                                 (semantic-tag-start (car (cdr tags)))
-                               (point-max)))
-                        (TESTS nil)
-                        )
-                   (goto-char start)
-                   ;; Scan the space between tags for all test condition matches.
-                   (while (re-search-forward "## \\([a-z-]+\\) \"\\([^\n\"]+\\)\"$" end t)
-                     (push (cons (match-string 1) (match-string 2)) TESTS))
-                   (setq TESTS (nreverse TESTS))
-
-                   (dolist (TST TESTS)
-                     (let* ( ;; For each test, convert CAR into a semantic-format-tag* fcn
-                            (sym (intern (concat "semantic-format-tag-" (car TST))))
-                            ;; Convert the desired result from a string syntax to a string.
-                            (desired (cdr TST))
-                            ;; What does the fmt function do?
-                            (actual (funcall sym T))
-                            )
-                       (when (not (string= desired actual))
-                         (should-not (list "Desired" desired
-                                           "Actual" actual
-                                           "Formatter" (car TST))))
-                       )))
-                 (setq tags (cdr tags)))
-
-               ))
-
-           ;; If it wasn't already in memory, whack it.
-           (when (and b (not fb))
-             (kill-buffer b)))
-         ))
-
-      )))
-
-
-(provide 'cedet/semantic/fmt-utest)
-
-;;; semantic-fmt-utest.el ends here
diff --git a/test/lisp/cedet/semantic/format-resources/test-fmt.cpp b/test/lisp/cedet/semantic/format-resources/test-fmt.cpp
new file mode 100644 (file)
index 0000000..ab869c1
--- /dev/null
@@ -0,0 +1,108 @@
+/** test-fmt.cpp --- Signatures, and format answers for testing
+ *
+ * Copyright (C) 2012, 2016, 2019-2021 Free Software Foundation, Inc.
+ *
+ * Author: Eric M. Ludlam <zappo@gnu.org>
+ *
+ * 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/>.
+ */
+
+/*
+ * About semantic-fmt-utest :
+ *
+ * These tests validate two features:
+ * 1) The C++ parser can parse the different signatures
+ * 2) The semantic-tag-format-* functions can recreate them.
+ *
+ */
+
+void basic_fcn() { }
+/*
+ * ## name "basic_fcn"
+ * ## abbreviate "basic_fcn()"
+ * ## prototype "void basic_fcn ()"
+ * ## uml-prototype "basic_fcn () : void"
+ */
+
+int twoargs_fcn(int a, char b) { }
+/*
+ * ## name "twoargs_fcn"
+ * ## abbreviate "twoargs_fcn()"
+ * ## prototype "int twoargs_fcn (int a,char b)"
+ * ## uml-prototype "twoargs_fcn (a : int,b : char) : int"
+ */
+
+struct moose {
+  int field1;
+  char field2;
+};
+/*
+ * ## name "moose"
+ * ## abbreviate "moose{}"
+ * ## prototype "struct moose {}"
+ * ## uml-prototype "moose{} : struct"
+ */
+
+struct moose struct_fcn ( struct moose in, char *out);
+/*
+ * ## name "struct_fcn"
+ * ## abbreviate "struct_fcn()"
+ * ## prototype "struct moose struct_fcn (struct moose in,char* out)"
+ * ## uml-prototype "struct_fcn (in : struct moose,out : char*) : struct moose"
+ */
+
+struct moose *var_one = NULL;
+/*
+ * ## name "var_one"
+ * ## summarize "Variables: struct moose* var_one[=NULL]"
+ * ## prototype "struct moose* var_one[=NULL]"
+ * ## uml-prototype "var_one : struct moose*"
+ */
+
+const int var_two = 1;
+/*
+ * ## name "var_two"
+ * ## summarize "Variables: const int var_two[=1]"
+ * ## prototype "const int var_two[=1]"
+ * ## uml-prototype "var_two : int"
+ */
+
+namespace NS {
+  enum TestEnum {a,b};
+}
+/*
+ * ## name "NS"
+ * ## summarize "Types: namespace NS {}"
+ * ## prototype "namespace NS {}"
+ * ## uml-prototype "NS{} : namespace"
+ */
+
+
+// void func_ns_arg(NS::TestEnum v = NS::a);  <<--- TODO - bring FIX from CEDET on SF
+/*
+ * # # name "func_ns_arg"
+ * # # summarize "Functions: void func_ns_arg (NS::TestEnum v[=NS::a])"
+ * # # prototype "void func_ns_arg (NS::TestEnum v[=NS::a])"
+ * # # uml-prototype "func_ns_arg (v : NS::TestEnum) : void"
+ */
+
+//int const var_three = 1;
+/*
+ * # # name "var_three"
+ * # # summarize "Variables: int const var_three"  <-- this fails
+ * # # prototype "int const var_three"        <-- this fails
+ * # # uml-prototype "var_three : int"
+ */
diff --git a/test/lisp/cedet/semantic/format-resources/test-fmt.el b/test/lisp/cedet/semantic/format-resources/test-fmt.el
new file mode 100644 (file)
index 0000000..941aaae
--- /dev/null
@@ -0,0 +1,65 @@
+;;; test-fmt.el --- test semantic tag formatting  -*- lexical-binding: t -*-
+
+;;; Copyright (C) 2012, 2019-2021 Free Software Foundation, Inc.
+
+;; Author: Eric M. Ludlam <zappo@gnu.org>
+
+;; 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/>.
+
+;;; Commentary:
+;;
+;;
+
+;;; Code:
+(require 'semantic)
+;;
+;; ## name "semantic"
+;; ## abbreviate "semantic<>"
+;; ## summarize "Requires: semantic"
+
+(defun test-fmt-1 (a)
+  "Function with 1 arg.")
+;;
+;; ## name "test-fmt-1"
+;; ## abbreviate "(test-fmt-1)"
+;; ## summarize "Defuns: (test-fmt-1 a)"
+;; ## short-doc "Function with 1 arg."
+;; ## uml-prototype "(test-fmt-1 a)"   <-- That is probably wrong.
+
+(defvar test-fmt-var nil
+  "Variable test.")
+;;
+;; ## name "test-fmt-var"
+;; ## abbreviate "test-fmt-var"
+;; ## summarize "Variables: test-fmt-var"
+;; ## short-doc "Variable test."
+;; ## uml-prototype "test-fmt-var"
+
+(defclass test-fmt-class ()
+  ((slot1 :initarg :slot1))
+  "Class for testing.")
+;;
+;; ## name "test-fmt-class"
+;; ## abbreviate "test-fmt-class{}"
+;; ## summarize "Types: class test-fmt-class {}"
+;; ## short-doc "Class for testing."
+;; ## uml-prototype "class test-fmt-class {}"
+
+
+
+(provide 'test-fmt)
+
+;;; test-fmt.el ends here
diff --git a/test/lisp/cedet/semantic/format-tests.el b/test/lisp/cedet/semantic/format-tests.el
new file mode 100644 (file)
index 0000000..a9eb448
--- /dev/null
@@ -0,0 +1,111 @@
+;;; semantic/format-tests.el --- Parsing / Formatting tests -*- lexical-binding:t -*-
+
+;;; Copyright (C) 2003-2004, 2007-2021 Free Software Foundation, Inc.
+
+;; Author: Eric M. Ludlam <zappo@gnu.org>
+
+;; 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/>.
+
+;;; Commentary:
+;;
+;; Unit tests for the formatting feature.
+;;
+;; Using test code from the tests source directory, parse the source
+;; file.  After parsing, read the comments for each signature, and
+;; make sure that the semantic-tag-format-* functions in question
+;; created the desired output.
+
+;;; Code:
+
+(require 'ert)
+(require 'ert-x)
+(require 'semantic/format)
+
+(defvar semantic-fmt-utest-file-list
+  (list (ert-resource-file "test-fmt.cpp")
+    ;; "tests/test-fmt.el" - add this when elisp is support by dflt in Emacs
+    )
+  "List of files to run unit tests in.")
+
+(defvar semantic-fmt-utest-error-log-list nil
+  "Log errors during testing in this variable.")
+
+(ert-deftest semantic-fmt-utest ()
+  "Visit all file entries, and run formatting test.
+Files to visit are in `semantic-fmt-utest-file-list'."
+  (save-current-buffer
+    (semantic-mode 1)
+    (let ((fl semantic-fmt-utest-file-list))
+      (dolist (fname fl)
+        (save-current-buffer
+          (let ((fb (find-buffer-visiting fname))
+               (b (semantic-find-file-noselect fname))
+               (tags nil))
+
+           (save-current-buffer
+             (set-buffer b)
+             (should (semantic-active-p))
+             ;;(error "Cannot open %s for format tests" fname))
+
+             ;; This will force a reparse, removing any chance of semanticdb cache
+             ;; using stale data.
+             (semantic-clear-toplevel-cache)
+             ;; Force the reparse
+             (setq tags (semantic-fetch-tags))
+
+             (save-excursion
+               (while tags
+                 (let* ((T (car tags))
+                        (start (semantic-tag-end T))
+                        (end (if (cdr tags)
+                                 (semantic-tag-start (car (cdr tags)))
+                               (point-max)))
+                        (TESTS nil)
+                        )
+                   (goto-char start)
+                   ;; Scan the space between tags for all test condition matches.
+                   (while (re-search-forward "## \\([a-z-]+\\) \"\\([^\n\"]+\\)\"$" end t)
+                     (push (cons (match-string 1) (match-string 2)) TESTS))
+                   (setq TESTS (nreverse TESTS))
+
+                   (dolist (TST TESTS)
+                     (let* ( ;; For each test, convert CAR into a semantic-format-tag* fcn
+                            (sym (intern (concat "semantic-format-tag-" (car TST))))
+                            ;; Convert the desired result from a string syntax to a string.
+                            (desired (cdr TST))
+                            ;; What does the fmt function do?
+                            (actual (funcall sym T))
+                            )
+                       (when (not (string= desired actual))
+                         (should-not (list "Desired" desired
+                                           "Actual" actual
+                                           "Formatter" (car TST))))
+                       )))
+                 (setq tags (cdr tags)))
+
+               ))
+
+           ;; If it wasn't already in memory, whack it.
+           (when (and b (not fb))
+             (kill-buffer b)))
+         ))
+
+      )))
+
+
+(provide 'format-tests)
+
+;;; format-tests.el ends here
diff --git a/test/manual/cedet/tests/test-fmt.cpp b/test/manual/cedet/tests/test-fmt.cpp
deleted file mode 100644 (file)
index ab869c1..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-/** test-fmt.cpp --- Signatures, and format answers for testing
- *
- * Copyright (C) 2012, 2016, 2019-2021 Free Software Foundation, Inc.
- *
- * Author: Eric M. Ludlam <zappo@gnu.org>
- *
- * 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/>.
- */
-
-/*
- * About semantic-fmt-utest :
- *
- * These tests validate two features:
- * 1) The C++ parser can parse the different signatures
- * 2) The semantic-tag-format-* functions can recreate them.
- *
- */
-
-void basic_fcn() { }
-/*
- * ## name "basic_fcn"
- * ## abbreviate "basic_fcn()"
- * ## prototype "void basic_fcn ()"
- * ## uml-prototype "basic_fcn () : void"
- */
-
-int twoargs_fcn(int a, char b) { }
-/*
- * ## name "twoargs_fcn"
- * ## abbreviate "twoargs_fcn()"
- * ## prototype "int twoargs_fcn (int a,char b)"
- * ## uml-prototype "twoargs_fcn (a : int,b : char) : int"
- */
-
-struct moose {
-  int field1;
-  char field2;
-};
-/*
- * ## name "moose"
- * ## abbreviate "moose{}"
- * ## prototype "struct moose {}"
- * ## uml-prototype "moose{} : struct"
- */
-
-struct moose struct_fcn ( struct moose in, char *out);
-/*
- * ## name "struct_fcn"
- * ## abbreviate "struct_fcn()"
- * ## prototype "struct moose struct_fcn (struct moose in,char* out)"
- * ## uml-prototype "struct_fcn (in : struct moose,out : char*) : struct moose"
- */
-
-struct moose *var_one = NULL;
-/*
- * ## name "var_one"
- * ## summarize "Variables: struct moose* var_one[=NULL]"
- * ## prototype "struct moose* var_one[=NULL]"
- * ## uml-prototype "var_one : struct moose*"
- */
-
-const int var_two = 1;
-/*
- * ## name "var_two"
- * ## summarize "Variables: const int var_two[=1]"
- * ## prototype "const int var_two[=1]"
- * ## uml-prototype "var_two : int"
- */
-
-namespace NS {
-  enum TestEnum {a,b};
-}
-/*
- * ## name "NS"
- * ## summarize "Types: namespace NS {}"
- * ## prototype "namespace NS {}"
- * ## uml-prototype "NS{} : namespace"
- */
-
-
-// void func_ns_arg(NS::TestEnum v = NS::a);  <<--- TODO - bring FIX from CEDET on SF
-/*
- * # # name "func_ns_arg"
- * # # summarize "Functions: void func_ns_arg (NS::TestEnum v[=NS::a])"
- * # # prototype "void func_ns_arg (NS::TestEnum v[=NS::a])"
- * # # uml-prototype "func_ns_arg (v : NS::TestEnum) : void"
- */
-
-//int const var_three = 1;
-/*
- * # # name "var_three"
- * # # summarize "Variables: int const var_three"  <-- this fails
- * # # prototype "int const var_three"        <-- this fails
- * # # uml-prototype "var_three : int"
- */
diff --git a/test/manual/cedet/tests/test-fmt.el b/test/manual/cedet/tests/test-fmt.el
deleted file mode 100644 (file)
index 1225713..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-;;; test-fmt.el --- test semantic tag formatting
-
-;;; Copyright (C) 2012, 2019-2021 Free Software Foundation, Inc.
-
-;; Author: Eric M. Ludlam <zappo@gnu.org>
-
-;; 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/>.
-
-;;; Commentary:
-;;
-;;
-
-;;; Code:
-(require 'semantic)
-;;
-;; ## name "semantic"
-;; ## abbreviate "semantic<>"
-;; ## summarize "Requires: semantic"
-
-(defun test-fmt-1 (a)
-  "Function with 1 arg.")
-;;
-;; ## name "test-fmt-1"
-;; ## abbreviate "(test-fmt-1)"
-;; ## summarize "Defuns: (test-fmt-1 a)"
-;; ## short-doc "Function with 1 arg."
-;; ## uml-prototype "(test-fmt-1 a)"   <-- That is probably wrong.
-
-(defvar test-fmt-var nil
-  "Variable test.")
-;;
-;; ## name "test-fmt-var"
-;; ## abbreviate "test-fmt-var"
-;; ## summarize "Variables: test-fmt-var"
-;; ## short-doc "Variable test."
-;; ## uml-prototype "test-fmt-var"
-
-(defclass test-fmt-class ()
-  ((slot1 :initarg :slot1))
-  "Class for testing.")
-;;
-;; ## name "test-fmt-class"
-;; ## abbreviate "test-fmt-class{}"
-;; ## summarize "Types: class test-fmt-class {}"
-;; ## short-doc "Class for testing."
-;; ## uml-prototype "class test-fmt-class {}"
-
-
-
-(provide 'test-fmt)
-
-;;; test-fmt.el ends here