# HG changeset patch # User Augie Fackler # Date 1239757632 18000 # Node ID f013f40e7b63c345cc74927bcd467fda3592c0e8 # Parent 568f9f350844a1357c91413566338503ca014e32 Import latest nosemacs, set nose to output dots instead of verbose output. diff --git a/.elisp/nose.el b/.elisp/nose.el --- a/.elisp/nose.el +++ b/.elisp/nose.el @@ -38,19 +38,23 @@ ;; (local-set-key "\C-cp." 'nosetests-pdb-one))) (defvar nose-project-names '("eco/bin/test")) +(defvar nose-project-root-files '("setup.py" ".hg" ".git")) +(defvar nose-project-root-test 'nose-project-root) (defvar nose-global-name "nosetests") (defun run-nose (&optional tests debug) "run nosetests" (let* ((nose (nose-find-test-runner)) - (where (expand-file-name "../.." (file-name-directory nose))) + (where (nose-find-project-root)) (args (if debug "--pdb" "")) (tnames (if tests tests ""))) - (funcall (if debug 'pdb '(lambda (command) - (compilation-start command - nil - (lambda (mode) (concat "*nosetests*"))))) - (format "%s -v %s -w %s -c %s/setup.cfg %s" + (funcall (if debug + 'pdb + '(lambda (command) + (compilation-start command + nil + (lambda (mode) (concat "*nosetests*"))))) + (format "%s -v %s -w %s -c %ssetup.cfg %s" (nose-find-test-runner) args where where tnames))) ) @@ -84,15 +88,17 @@ (defun nose-find-test-runner () (message - (let ((result (reduce '(lambda (x y) (or x y)) - (mapcar 'nose-find-test-runner-names nose-project-names)))) + (let ((result + (reduce '(lambda (x y) (or x y)) + (mapcar 'nose-find-test-runner-names nose-project-names)))) (if result result nose-global-name)))) (defun nose-find-test-runner-names (runner) "find eggs/bin/test in a parent dir of current buffer's file" - (nose-find-test-runner-in-dir-named (file-name-directory buffer-file-name) runner)) + (nose-find-test-runner-in-dir-named + (file-name-directory buffer-file-name) runner)) (defun nose-find-test-runner-in-dir-named (dn runner) (let ((fn (expand-file-name runner dn))) @@ -103,21 +109,46 @@ runner))))) (defun nose-py-testable () - (let ((remember-point (point))) + (let* ((inner-obj (inner-testable)) + (outer (outer-testable)) + ;; elisp can't return multiple values + (outer-def (car outer)) + (outer-obj (cdr outer))) + (cond ((equal outer-def "def") outer-obj) + ((equal inner-obj outer-obj) outer-obj) + (t (format "%s.%s" outer-obj inner-obj))))) + +(defun inner-testable () + (save-excursion (re-search-backward "^ \\{0,4\\}\\(class\\|def\\)[ \t]+\\([a-zA-Z0-9_]+\\)" nil t) - (setq t1 (buffer-substring-no-properties (match-beginning 2) (match-end 2))) - (goto-char remember-point) + (buffer-substring-no-properties (match-beginning 2) (match-end 2)))) + +(defun outer-testable () + (save-excursion (re-search-backward "^\\(class\\|def\\)[ \t]+\\([a-zA-Z0-9_]+\\)" nil t) - (setq outer - (buffer-substring-no-properties (match-beginning 1) (match-end 1))) - (setq t2 (buffer-substring-no-properties (match-beginning 2) (match-end 2))) - (let - ((result (cond ((string= outer "def") t2) - ((string= t1 t2) t2) - (t (format "%s.%s" t2 t1))))) - (goto-char remember-point) - result))) + (let ((result + (buffer-substring-no-properties (match-beginning 2) (match-end 2)))) + + (cons + (buffer-substring-no-properties (match-beginning 1) (match-end 1)) + result)))) +(defun nose-find-project-root (&optional dirname) + (interactive) + (let ((dn + (if dirname + dirname + (file-name-directory buffer-file-name)))) + (cond ((nose-project-root dn) (expand-file-name dn)) + ((equal (expand-file-name dn) "/") nil) + (t1 (nose-find-project-root + (file-name-directory (directory-file-name dn))))))) + +(defun nose-project-root (dirname) + (reduce '(lambda (x y) (or x y)) + (mapcar (lambda (d) (member d (directory-files dirname))) + nose-project-root-files))) + (provide 'nose) diff --git a/.elisp/settings/50.preferences.el b/.elisp/settings/50.preferences.el --- a/.elisp/settings/50.preferences.el +++ b/.elisp/settings/50.preferences.el @@ -30,3 +30,6 @@ ;; Automatically revert unedited files that change on the underlying ;; system. (global-auto-revert-mode) + +;; I like dots in my nose output +(defvar nose-use-verbose nil)