Metadata-Version: 2.0
Name: unittest-jasmine
Version: 1.0.2
Summary: A unittest test loader for Jasmine tests
Home-page: https://github.com/moses-palmer/unittest-jasmine
Author: Moses Palmér
Author-email: moses.palmer@gmail.com
License: GPLv3
Platform: UNKNOWN

*Jasmine* integration for *unittest*
====================================

This package allows you to run `Jasmine <http://jasmine.github.io/>`_ unit
tests fully integrated with the *Python* standard module *unittest*.

The main use case is to run *JavaScript* tests for Python server APIs.


Quick start
-----------

To use this module, please follow these steps:

1. Add ``unittest-jasmine`` to the ``tests_require`` parameter to
   ``setuptools.setup()``.
2. Change or add the ``test_loader`` argument to ``setuptools.setup()`` to
   ``'unittest_jasmine.SetuptoolsLoader'``.
3. Add your *Jasmine* specs to your test package, and make sure the file names
   end with ``spec.js``.

If your project uses *npm* to manage dependencies, those will be automatically
updated when the tests are run using ``npm install``.


Advanced options
----------------

Pass additional options to *unittest-jasmine* by modifying the ``test_suite``
parameter to ``setuptools.setup()``; append the character ``'|'`` and then
the options separated by ``';'``::

    setuptools.setup(
        . . .
        test_suite='tests|option1=value1;option2={"flag":true}',
        . . .
    )

The value part of an option may be either *JSON* or a simple string. Anything
that is not parsable as *JSON* is treated as a simple string. A simple string
is treated as a *JSON* string.

The following options are recognised by *unittest-jasmine*:

lifecycle
    A module receiving notifications about the lifecycle of suites and tests.
    See `I need to run Python code before each test or suite`_ for more
    information.

spec_regex
    A regular expression used to find the spec files in the test directory.

test_directory
    The directory that contains the spec files. This must be an absolute path.

Any option not in this list will be passed on to the *Jasmine* ``loadConfig``
method.


Common tasks
------------


My *Jasmine* specs are not located in the same directory as my *Python* tests
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Override the default path to the spec files by setting the option
``test_directory``. This must be the absolute path to the directory containing
the spec files.


My *Jasmine* spec files do not end with ``spec.js``
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Override the regular expression used to filter spec files from the test
directory by setting the option ``spec_regex``. This is used as a regular
expression to filter the files to include.

An example value is::

    setuptools.setup(
        . . .
        test_suite='tests|spec_regex=.*?-test\\.js',
        . . .
    )


I need to run *Python* code before each test or suite
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Set the option ``lifecycle`` to specify a module with functions handling the
setup and teardown of tests and suites.

The functions ``suite_setup``, ``suite_teardown``, ``test_setup`` and
``test_teardown``, if defined, will be called with the suite or test as
parameter. The functions will be called as instance methods of the respective
suites and tests.

You may copy templates for these functions from
``.../unittest_jasmine/_setuptools.py``.

An example value is::

    setuptools.setup(
        . . .
        test_suite='tests|lifecycle=test._jasmine_lifecycle',
        . . .
    )


I need to load *Jasmine* helper files
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Set the option ``helper`` to a *JSON* encoded list of strings. The strings are
interpreted by *Jasmine* as paths to helper files, relative to the directory
containing the spec files; they must not be absolute paths.


I have specs written in *CoffeeScript*
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

To enable running tests written in *CoffeeScript*, first modify the option
``spec_regex`` to ensure that it also includes ``.coffee`` files, and then make
sure that one of your *Jasmine* helper files contains the expression
``require("coffee-script/register")``. An example value is::

    setuptools.setup(
        . . .
        test_suite='tests|spec_regex=.*?spec\\.(js|coffee);helpers=["cs.js"]',
        . . .
    )


Release notes
=============

v1.0.2 - pkg_resources fixes
----------------------------
*  Make sure to actually include the *JavaScript* runner in the package.
*  Use ``__name__`` instead of ``__package__`` when loading runner using
   ``pkg_resources`` to work on *Python 3*.


v1.0.1 - Python 3 fixes
-----------------------
*  Corrected dynamic method addition to work with *Python 3*.
*  Allow using release maker script on *Python 3*.
*  Build a universal wheel when making a release.


v1.0 - Initial Release
----------------------
*  Initial release


