summaryrefslogtreecommitdiff
path: root/test/lisp
diff options
context:
space:
mode:
authorStefan Kangas <stefan@marxist.se>2021-02-10 04:14:48 +0100
committerStefan Kangas <stefan@marxist.se>2021-02-10 06:36:09 +0100
commitc07459fd10a9352b32d4de6e9145a419772bd70b (patch)
tree3736698a505597b85ef41a48c544ce65dbac7360 /test/lisp
parent18ad1388d00e40a031bead1d0b5a0ae429dcc8ad (diff)
downloademacs-c07459fd10a9352b32d4de6e9145a419772bd70b.tar.gz
emacs-c07459fd10a9352b32d4de6e9145a419772bd70b.tar.bz2
emacs-c07459fd10a9352b32d4de6e9145a419772bd70b.zip
Move semantic/format.el tests to follow our conventions
* 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.
Diffstat (limited to 'test/lisp')
-rw-r--r--test/lisp/cedet/semantic/format-resources/test-fmt.cpp108
-rw-r--r--test/lisp/cedet/semantic/format-resources/test-fmt.el65
-rw-r--r--test/lisp/cedet/semantic/format-tests.el (renamed from test/lisp/cedet/semantic-utest-fmt.el)38
3 files changed, 184 insertions, 27 deletions
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
index 00000000000..ab869c1ce00
--- /dev/null
+++ b/test/lisp/cedet/semantic/format-resources/test-fmt.cpp
@@ -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
index 00000000000..941aaae8595
--- /dev/null
+++ b/test/lisp/cedet/semantic/format-resources/test-fmt.el
@@ -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-utest-fmt.el b/test/lisp/cedet/semantic/format-tests.el
index d6e5ce7a0fd..a9eb4489d59 100644
--- a/test/lisp/cedet/semantic-utest-fmt.el
+++ b/test/lisp/cedet/semantic/format-tests.el
@@ -1,4 +1,4 @@
-;;; cedet/semantic-utest-fmt.el --- Parsing / Formatting tests -*- lexical-binding:t -*-
+;;; semantic/format-tests.el --- Parsing / Formatting tests -*- lexical-binding:t -*-
;;; Copyright (C) 2003-2004, 2007-2021 Free Software Foundation, Inc.
@@ -28,19 +28,14 @@
;; 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.")
+(require 'ert)
+(require 'ert-x)
+(require 'semantic/format)
(defvar semantic-fmt-utest-file-list
- '("tests/test-fmt.cpp"
+ (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.")
@@ -53,21 +48,10 @@
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))
+ (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))
@@ -122,6 +106,6 @@ Files to visit are in `semantic-fmt-utest-file-list'."
)))
-(provide 'cedet/semantic/fmt-utest)
+(provide 'format-tests)
-;;; semantic-fmt-utest.el ends here
+;;; format-tests.el ends here