]> git.eshelyaron.com Git - emacs.git/commitdiff
New unit test for EDE project detection.
authorEric Ludlam <zappo@gnu.org>
Sun, 20 Apr 2014 18:03:23 +0000 (14:03 -0400)
committerEdward John Steere <edward.steere@gmail.com>
Wed, 25 Jan 2017 15:59:25 +0000 (17:59 +0200)
test/manual/cedet/cedet/ede/detect-utest.el [new file with mode: 0644]

diff --git a/test/manual/cedet/cedet/ede/detect-utest.el b/test/manual/cedet/cedet/ede/detect-utest.el
new file mode 100644 (file)
index 0000000..41ecb5e
--- /dev/null
@@ -0,0 +1,102 @@
+;;; ede/detect.el --- Tests for detecting different kinds of projects.
+;;
+;; Copyright (C) 2014 Eric M. Ludlam
+;;
+;; Author: Eric M. Ludlam <eric@siege-engine.com>
+;;
+;; This program 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.
+
+;; This program 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 this program.  If not, see http://www.gnu.org/licenses/.
+
+;;; Code:
+
+(require 'ede/linux)
+
+(defvar ede-detect-utest-project-list
+  '(
+    ( "src/proj/Project.ede" . ede-proj-project-p )
+    ( "src/automake/Makefile.am" . project-am-makefile-p )
+    ( "src/android/AndroidManifest.xml" . ede-android-project-p )
+    ( "src/android/src/test.java" . ede-android-project-p )
+    ( "src/emacs/Makefile" . ede-emacs-project-p )
+    ( "src/emacs/src/emacs.c" . ede-emacs-project-p )
+    ;( "src/ant/build.xml" . ede-ant-project-p )
+    ( "src/linux/Makefile" . ede-linux-project-p )
+    ( "src/linux/scripts/ver_linux" . ede-linux-project-p )
+     )
+  "List of sources to load in ndetectable projects.
+Each entry is a cons cell:
+  ( SRCFILE . PROJECT-TYPE )")
+
+;;;###autoload
+(defun ede-detect-utest ()
+  "Test out the detection scheme for EDE."
+  (interactive)
+  (save-excursion
+
+    (let ((errlog nil)
+         (project-linux-build-directory-default 'same)
+         (project-linux-architecture-default "glnx")
+         (ede-project-directories t) ; safe to load Project.ede
+         )
+      (cedet-utest-log-setup "EDE DETECT")
+
+      (set-buffer (semantic-find-file-noselect
+                  (expand-file-name "cedet/ede/detect.el"
+                                    cedet-utest-root)))
+
+      (dolist (fl ede-detect-utest-project-list)
+
+       ;; Make sure we have the files we think we have.
+       (when (not (file-exists-p (car fl)))
+         (error "Cannot find unit test file: %s" (car fl)))
+
+       ;; Do the detection
+       (let ((fb (find-buffer-visiting (car fl)))
+             (b (semantic-find-file-noselect (car fl))))
+
+         (save-excursion
+           (set-buffer b)
+
+           ;; Run the EDE detection code.  Firing up the mode isn't really needed.
+           (ede-initialize-state-current-buffer)
+
+           ;; Test the result.
+           (unless (funcall (cdr fl) ede-object-root-project)
+
+             (message "Found %S, wanted %S"
+                      ede-object-root-project
+                      (cdr fl))
+
+             (push fl errlog))
+           )
+
+         ;; If it wasn't already in memory, whack it.
+         (when (and b (not fb))
+           (kill-buffer b))
+         ))
+
+       (cedet-utest-log-shutdown
+       "EDE DETECT"
+       (when errlog
+        (format "%s Failures found." (length errlog))))
+
+      (when errlog
+       (error "Failures found looking for project in %s" (car (car errlog))))
+      ))
+
+  )
+
+
+(provide 'cedet/ede/detect-utest)
+
+;;; detect.el ends here