This repository has been archived on 2024-10-22. You can view files and clone it, but cannot push or open issues or pull requests.
spacemacs/contrib/lang/python/extensions/nose/README.md
syl20bnr d0b6a56b0a python layer: Update nose.el
Now compatible with virtualenv
2015-04-22 21:51:14 -04:00

2.2 KiB

nose.el

This gives a bunch of functions that handle running nosetests on a particular buffer or part of a buffer.

This is a fork from the bitbucket repository.

What's different ?

This fork:

  • brings Windows compatibility.
  • calls python with an inline script to launch nose.
  • can launch test suites (require to install the nose fixes via easy_install nose-fixes)
  • is compatible with virtualenv

Install

You'll need to add the directory containing nose.el to your load-path, and then

(require 'nose)

Usage

By default, the root of a project is found by looking for any of the files setup.cfg, .hg, .git and .projectile. You can add files to check for to the file list:

(add-to-list 'nose-project-root-files "something")

or you can change the project root test to detect in some other way whether a directory is the project root:

(setq nose-project-root-test (lambda (dirname) (equal dirname "foo")))

If you want dots as output, rather than the verbose output:

(defvar nose-use-verbose nil) ; default is t

Probably also want some key bindings:

(add-hook 'python-mode-hook
          (lambda ()
            (local-set-key "\C-ca" 'nosetests-all)
            (local-set-key "\C-cm" 'nosetests-module)
            (local-set-key "\C-cs" 'nosetests-suite)
            (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-cps" 'nosetests-pdb-suite)
            (local-set-key "\C-cp." 'nosetests-pdb-one)))

Notes

To be able to launch a test suite, your suite must define a function with the name load_tests.

For instance (typical example to make PyDev and nose.el happy):

import unittest

ALL_TESTS = unittest.TestSuite([my_suites_go_here]) 

def load_tests(loader=None, tests=None, pattern=None):
    return ALL_TESTS

if __name__ == '__main__':
    unittest.TextTestRunner(verbosity=2).run(ALL_TESTS)

Thanks

To the original authors of nose.el: Jason Pellerin and Augie Fackler