############################ How to use Django App Helper ############################ We'll assume that you have an application for django CMS that you're working on. Once you have django CMS installed, it'll be available using ``django-app-helper`` command. ``cd`` into the root directory of your application (that is, the outer directory containing its ``setup.py``). You need to be here to run the ``django-app-helper`` command. ********************************* Running Django App Helper command ********************************* Try it:: django-app-helper test --cms # change to your application's actual name It'll spawn its virtual project and run your tests in it. You should see some output along these lines (there may well be some other output before it gets to this stage):: Creating test database for alias 'default'... F ====================================================================== FAIL: test_bad_maths (djangocms_maths.tests.SmokeTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "./djangocms_maths/tests.py", line 6, in test_bad_maths self.assertEqual(1 + 1, 3) AssertionError: 2 != 3 ---------------------------------------------------------------------- Ran 1 test in 0.000s FAILED (failures=1) All commands take a form similar to the one you've just run, sharing the basic command structure:: django-app-helper [options ...] where **** is the Django application name and **** is one of the available commands. Options vary for each command. ************************************ But I haven't written any tests yet! ************************************ It helps if you actually have some tests of course - if you don't, simply create a ``tests.py`` file in your application (not in this directory, but in the package directory, alongside its models and views and so on):: from django.test import TestCase class SmokeTest(TestCase): # a deliberately-failing test def test_bad_maths(self): self.assertEqual(1 + 1, 3) ********************************* The --cms option ********************************* You'll need the ``--cms`` option most of the time. It sets up the virtual project appropriately for django CMS, providing the required configuration (see :ref:`cms-option` for details). ********************************* Other commands ********************************* Try a couple of the other commands; they're mostly self-explanatory:: django-app-helper shell --cms # start a Django shell for the virtual project django-app-helper check --cms # runs the Django check command django-app-helper cms_check # runs the django CMS check command Note that the last of these doesn't require the ``--cms`` option, because of course that is implied anyway by ``cms_check``. ********************************* Integrated runner ********************************* In some contexts running commands by using the complete syntax can be clunky or unfeasible. Django App Helper contains function that allows to run the commands with a much shorter syntax:: python helper.py to run tests Or:: python helper.py server to invoke a server. See :doc:`runner` for details. ********************************* Sphinx integration ********************************* When documenting a project using Sphinx autodoc, you mostly need a proper project setup, because the imports in your application's modules will trigger Django setup code anyway. Using the :ref:`naked_runner` it's easy to let helper setup an environment for you: * setup the :ref:`naked_runner` * add the following code to sphinx ``conf.py``:: sys.path.insert(0, os.path.abspath('..')) import app_helper app_helper.setup()