I'd appreciate help fixing a problem running `nosetests` on the nose tests in a 
file within the current emacs buffer. I'm new to nose and fairly new to python, 
but have been coding awhile and using emacs forever, but don't know enough 
elisp to debug the code in question. I'm starting a nose tutorial

http://ivory.idyll.org/articles/nose-intro.html
> Here's the simplest nose test you can write:
>
> def test_b():
>     assert 'b' == 'b'
>
> Put this in a file called test_me.py, and then run nosetests.

on an ubuntu box with python 2.6.5, GNU Emacs 23.1.50.1, and

me@it:~$ sudo easy_install nose
me@it:~$ pushd ~/code/python/nose/
me@it:~/code/python/nose$ ls -al
> -rw-r--r-- 1 me me   36 2011-07-28 18:47 test_me.py
me@it:~/code/python/nose$ nosetests -v
> test_stuff.test_b ... ok
>
> ----------------------------------------------------------------------
> Ran 1 test in 0.015s
>
> OK

But I wanna run from inside emacs, so I

1 downloaded nose.el from

https://bitbucket.org/jpellerin/nosemacs/src

2 hooked it into my init.el via

me@it:~/.emacs.d$ diff -u tlrPython.el~ tlrPython.el
...
> +;;; nose support (for testing)
> +(require 'nose)
> +(add-hook 'python-mode-hook
> +          (lambda ()
> +            (local-set-key "\C-ca" 'nosetests-all)
> +            (local-set-key "\C-cm" 'nosetests-module)
> +            (local-set-key "\C-c." 'nosetests-one)
> +            (local-set-key "\C-cpa" 'nosetests-pdb-all)
> +            (local-set-key "\C-cpm" 'nosetests-pdb-module)
> +            (local-set-key "\C-cp." 'nosetests-pdb-one)))
> +

3 byte-compiled everything

4 restarted emacs

But when I open ~/code/python/nose/test_me.py in a buffer and do any of the key 
sequences

C-c m
C-c .
C-c a

I get buffer=*nosetests* like the following

> -*- mode: compilation; default-directory: "~/code/python/nose/" -*-
> Compilation started at Thu Jul 28 20:25:55
>
* nosetests -v   -w nil -c nilsetup.cfg /home/me/code/python/nose/test_me.py
> Traceback (most recent call last):
>   File "/usr/local/bin/nosetests", line 9, in <module>
>     load_entry_point('nose==1.1.1', 'console_scripts', 'nosetests')()
>   File 
> "/usr/local/lib/python2.6/dist-packages/nose-1.1.1-py2.6.egg/nose/core.py", 
> line 118, in __init__
>     **extra_args)
>   File "/usr/lib/python2.6/unittest.py", line 816, in __init__
>     self.parseArgs(argv)
>   File 
> "/usr/local/lib/python2.6/dist-packages/nose-1.1.1-py2.6.egg/nose/core.py", 
> line 135, in parseArgs
>     self.config.configure(argv, doc=self.usage())
>   File 
> "/usr/local/lib/python2.6/dist-packages/nose-1.1.1-py2.6.egg/nose/config.py", 
> line 317, in configure
>     self.configureWhere(options.where)
>   File 
> "/usr/local/lib/python2.6/dist-packages/nose-1.1.1-py2.6.egg/nose/config.py", 
> line 400, in configureWhere
>     "not a directory" % path)
> ValueError: Working directory nil not found, or not a directory
>
> Compilation exited abnormally with code 1 at Thu Jul 28 20:25:56

The only difference in the *nosetests* buffer is the `nosetests` line, which is 
variously

C-c m -> nosetests -v -w nil -c nilsetup.cfg 
/home/me/code/python/nose/test_me.py
C-c . -> nosetests -v -w nil -c nilsetup.cfg 
/home/me/code/python/nose/test_me.py:test_b
C-c a -> nosetests -v -w nil -c nilsetup.cfg

but I note, when running from bash, I get

me@it:~/code/python/nose$ nosetests -v   -w nil -c nilsetup.cfg 
/home/me/code/python/nose/test_me.py
... same error as above ...
me@it:~/code/python/nose$ nosetests -v   -w . -c nilsetup.cfg 
/home/me/code/python/nose/test_me.py
> Failure: ImportError (No module named test_me) ... ERROR
>
> ======================================================================
> ERROR: Failure: ImportError (No module named test_me)
> ----------------------------------------------------------------------
> Traceback (most recent call last):
>   File 
> "/usr/local/lib/python2.6/dist-packages/nose-1.1.1-py2.6.egg/nose/loader.py", 
> line 390, in loadTestsFromName
>     addr.filename, addr.module)
>   File 
> "/usr/local/lib/python2.6/dist-packages/nose-1.1.1-py2.6.egg/nose/importer.py",
>  line 39, in importFromPath
>     return self.importFromDir(dir_path, fqname)
>   File 
> "/usr/local/lib/python2.6/dist-packages/nose-1.1.1-py2.6.egg/nose/importer.py",
>  line 71, in importFromDir
>     fh, filename, desc = find_module(part, path)
> ImportError: No module named test_me
>
> ----------------------------------------------------------------------
> Ran 1 test in 0.005s
>
> FAILED (errors=1)
me@it:~/code/python/nose$ nosetests -v   -w . -c nilsetup.cfg test_me.py
> test_me.test_b ... ok
>
> ----------------------------------------------------------------------
> Ran 1 test in 0.004s
>
> OK
me@it:~/code/python/nose$ nosetests -v   -w . -c nilsetup.cfg ./test_me.py
> test_me.test_b ... ok
>
> ----------------------------------------------------------------------
> Ran 1 test in 0.006s
>
> OK
me@it:~/code/python/nose$ nosetests -v   -w . -c nilsetup.cfg 
./test_me.py:test_b
> test_me.test_b ... ok
>
> ----------------------------------------------------------------------
> Ran 1 test in 0.006s
>
> OK
me@it:~/code/python/nose$ nosetests -v   -w nil -c nilsetup.cfg ./test_me.py
... same error as above ...

So I'm wondering,

1 What should I configure to make nose.el correctly invoke `nosetests` to run 
the nose tests contained in the current buffer?

2 is there a better tool for this usecase (i.e., running the nose tests in the 
current emacs buffer from within emacs)?

TIA, Tom Roche <tom_ro...@pobox.com>
_______________________________________________
Python-mode mailing list
Python-mode@python.org
http://mail.python.org/mailman/listinfo/python-mode

Reply via email to