From: Eric Ludlam Date: Sun, 18 May 2014 22:58:05 +0000 (-0400) Subject: Added cpproot and java root to detection tests X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=9c2d002a0b99bb53eb7474a002b724ca82635814;p=emacs.git Added cpproot and java root to detection tests * test/manual/cedet/cedet/ede/detect-utest.el: (ede-detect-utest-project-list): Add cpproot and javaroot. Add sub dirs under project and automake types. (ede-detect-utest-basedir): New function (UTESTCPP, UTESTJAVA): New. (ede-detect-utest): Improve debug output for failed tests. (ede-detect-utest-subproj-p, ede-detect-utest-subautomake-p): New. --- diff --git a/test/manual/cedet/cedet/ede/detect-utest.el b/test/manual/cedet/cedet/ede/detect-utest.el index 41ecb5ea293..ca9aa715799 100644 --- a/test/manual/cedet/cedet/ede/detect-utest.el +++ b/test/manual/cedet/cedet/ede/detect-utest.el @@ -23,7 +23,9 @@ (defvar ede-detect-utest-project-list '( + ( "src/proj/sub/TEST" . ede-detect-utest-subproj-p ) ( "src/proj/Project.ede" . ede-proj-project-p ) + ( "src/automake/sub/Makefile.am" . ede-detect-utest-subautomake-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 ) @@ -32,11 +34,33 @@ ;( "src/ant/build.xml" . ede-ant-project-p ) ( "src/linux/Makefile" . ede-linux-project-p ) ( "src/linux/scripts/ver_linux" . ede-linux-project-p ) + ;; these ROOT projects are created by hand in a .emacs file. + ;; These need to be defined in here to get this test to work. + ( "src/cpproot/src/main.cpp" . ede-cpp-root-project-p ) + ( "src/cpproot/README" . ede-cpp-root-project-p ) + ( "src/javaroot/com/test/Foo.Java" . ede-java-root-project-p ) + ( "src/javaroot/README" . ede-java-root-project-p ) ) "List of sources to load in ndetectable projects. Each entry is a cons cell: ( SRCFILE . PROJECT-TYPE )") +(defun ede-detect-utest-basedir () + "Get the basedir of the detection unit tests." + (save-current-buffer + (set-buffer (semantic-find-file-noselect + (expand-file-name "cedet/ede/detect.el" + cedet-utest-root))) + (expand-file-name "src" default-directory))) + +(ede-cpp-root-project "UTESTCPP" + :file (expand-file-name "cpproot/README" + (ede-detect-utest-basedir))) + +(ede-java-root-project "UTESTJAVA" + :file (expand-file-name "javaroot/README" + (ede-detect-utest-basedir))) + ;;;###autoload (defun ede-detect-utest () "Test out the detection scheme for EDE." @@ -47,12 +71,16 @@ Each entry is a cons cell: (project-linux-build-directory-default 'same) (project-linux-architecture-default "glnx") (ede-project-directories t) ; safe to load Project.ede + (basedir nil) + (baselen nil) ) (cedet-utest-log-setup "EDE DETECT") (set-buffer (semantic-find-file-noselect (expand-file-name "cedet/ede/detect.el" cedet-utest-root))) + (setq basedir default-directory + baselen (length basedir)) (dolist (fl ede-detect-utest-project-list) @@ -68,17 +96,52 @@ Each entry is a cons cell: (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)) - ) + (condition-case err + (ede-initialize-state-current-buffer) + (error + (semantic-ia-utest-log "!! In %s: load threw error %S\n" + (substring default-directory baselen) + err) + (push fl errlog) + )) + + (let* ((proj ede-object-root-project)) + + (if (not proj) + (progn + + ;; Use the detector to to provide better debugging info. + (let ((projdetect (ede-detect-directory-for-project default-directory))) + + (if (not projdetect) + (progn + ;; Detected nothing + (semantic-ia-utest-log "!! In %s: Detected nothing, wanted %S\n" + (substring default-directory baselen) + (cdr fl)) + (push fl errlog)) + + ;; Else, some other error. + (semantic-ia-utest-log "!! In %s: Detected %S, failed to load project type %s\n" + (substring default-directory baselen) + (eieio-object-name (cdr projdetect)) + (cdr fl)) + (push fl errlog)))) + + ;; Test the result. + (if (funcall (cdr fl) proj) + + (semantic-ia-utest-log "** In %s: Found %s ... Done\n" + (substring default-directory baselen) + (cdr fl)) + + (semantic-ia-utest-log "!! In %s: Found %S, wanted %S\n" + (substring default-directory baselen) + (eieio-object-name proj) + (cdr fl)) + + (push fl errlog)) + ))) ;; If it wasn't already in memory, whack it. (when (and b (not fb)) @@ -96,6 +159,19 @@ Each entry is a cons cell: ) +(defun ede-detect-utest-subproj-p (project) + "Special predicate for testing the ede-proj-project type." + (and (ede-proj-project-p project) + (string= (file-name-nondirectory (directory-file-name (oref project directory))) "proj") + (not (eq project (ede-current-project))) + )) + +(defun ede-detect-utest-subautomake-p (project) + "Special predicate for testing the ede-proj-project type." + (and (project-am-makefile project) + (string= (file-name-nondirectory (directory-file-name (oref project directory))) "automake") + (not (eq project (ede-current-project))) + )) (provide 'cedet/ede/detect-utest)