From: Eric Ludlam Date: Sun, 20 Apr 2014 18:03:23 +0000 (-0400) Subject: New unit test for EDE project detection. X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=b0da9061e11e08cfcc9474197ef4fa7b5fe98010;p=emacs.git New unit test for EDE project detection. --- diff --git a/test/manual/cedet/cedet/ede/detect-utest.el b/test/manual/cedet/cedet/ede/detect-utest.el new file mode 100644 index 00000000000..41ecb5ea293 --- /dev/null +++ b/test/manual/cedet/cedet/ede/detect-utest.el @@ -0,0 +1,102 @@ +;;; ede/detect.el --- Tests for detecting different kinds of projects. +;; +;; Copyright (C) 2014 Eric M. Ludlam +;; +;; Author: Eric M. Ludlam +;; +;; 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