Developer Guide
===============
Requirements
------------
Besides an appropriate version of Python, Large Image tests are run via `tox `_. This is also a convenient way to setup a development environment.
The ``tox`` Python package must be installed:
.. code-block:: bash
pip install tox
See the tox documentation for how to recreate test environments or perform other maintenance tasks.
By default, instead of storing test environments in a ``.tox`` directory, they are stored in the ``build/tox`` directory. This is done for convenience in handling build artifacts from Girder-specific tests.
nodejs and npm for Girder Tests or Development
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
``nodejs`` version 14.x and a corresponding version of ``npm`` are required to build and test Girder client code. See `nodejs `_ for how to download and install it. Remember to get version 12 or 14.
Mongo for Girder Tests or Development
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
To run the full test suite, including Girder, ensure that a MongoDB instance is ready on ``localhost:27017``. This can be done with docker via ``docker run -p 27017:27017 -d mongo:latest``.
Running Tests
-------------
Tests are run via tox environments:
.. code-block:: bash
tox -e test-py39,lint,lintclient
Or, without Girder:
.. code-block:: bash
tox -e core-py39,lint
You can build the docs. They are created in the ``docs/build`` directory:
.. code-block:: bash
tox -e docs
You can run specific tests using pytest's options, e.g., to try one specific test:
.. code-block:: bash
tox -e core-py39 -- -k testFromTiffRGBJPEG
Development Environment
-----------------------
To set up a development environment, you can use tox. Use the ``core`` environment instead of the ``test`` environment if you aren't using Girder. This is not required to run tests:
.. code-block:: bash
tox --devenv /my/env/path -e test
and then switch to that environment:
.. code-block:: bash
. /my/env/path/bin/activate
If you are using Girder, build and start it:
.. code-block:: bash
girder build --dev
girder serve