Software Design - A Blueprint
*****************************

Layered Subcomponents for Reuse
===============================

The provided features for blackbox testst of subprocess calls are based standard Python packages with 
the additional components.
The internal architecture is hereby designed as a layered stack, where the subcomponents
components could be reused for other projects.
::

                                                      Application Layer
     
                                     .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
                                          |         |       |         |
                                          V         V       V         V

                                                              +-------------------+
    'unittest.TestCase'                                       |  TestExecutable   |
    integration                                               +-------------------+
                                                                        |
                                                       +--------------------------+
    Unittest management and                            |      SubprocessUnit      |
    state decision engine                              +--------------------------+
                                                                     |             
    Subprocess execution                       +----------------------------------+
    controller and data                        |           SystemCalls            |
    collector                                  +----------------------------------+
                                                  |                |       
                                        +------------------+       |
    Seamless debugger                   |    PyDevRDC    |       |
    integration for PyDev               +------------------+       |
    collector                                     |                |
                                                  V                V
                                     .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .

                                                      External Components
    


Components and Interfaces:

* `epyunit <epyunit_cli.html>`_  : Command line and batch interface.

* `unittest.subprocess <spunittest.html>`_ : Provide unit tests for sub-processes as blackbox system calls, contains 'TestExecutable'.

* `SubprocUnit <subprocessunit.html>`_ : Provide unit tests for sub-processes as blackbox system calls, contains 'SubprocessUnit'.

* `SystemCalls <systemcalls.html>`_ : Python class, wraps start of subprocesses by system calls, contains 'SystemCalls'.

* `PyDev remote debugging <pydeverdbg.html>`_  : Python class, automation of subprocess debugging by PyDev, contains PyDevRDC.


PyUnit Integration
==================

The overall integration with the support packages, PyUnit, and PyDev is as  follows. 
::

                                  +----------------------------------------+
    Python Units                  |                  ePyUnit               |   a minimalistic inerface for arbitrary executables 
                                  +----------------------------------------+   for unit tests and integrated remote debugging
                                        |    |    |             |
                                        |    |    |             V               generates and manages multiple sys.path
                                        |    |    V   +--------------------+    provides search for branches
    Advanced filesystem                 |    V        |  PyFilesysObjects  |    provides search by combined regexpr+glob+literals
     search                             V             +--------------------+    provides extended normpath, replaces
                                                                |                 'os.path.normpath',
                                                                |               cross-platform escape+unescape, integrates  
                                                                |                  with 're' and 'glob' expressions 
                                                                |                         
                                                                |                         
                                                 +-------------------------+    locates actual sources, modules, and calls
    Python file RTTI                             |       PySourceInfo      |    identifies actual search paths
                                                 +-------------------------+            
                                                          |
                                 . . . . . . . . . . . . . . . . . . . .
                                                          |
                                          +---------------+----------------+
    Unit Tests                            |              PyUnit            |    provides the Unit Library for CLI and GUI
                                          +----+----------------+----------+
                                               |                |
                                               V                |
                                  +------------------+          V
    IDE                           |  Eclipse+PyDev   |                          provides the framework for the GUI
                                  +------------------+



PyDev Subprocess Debugging for Eclipse
======================================

The provided features are based standard Python packages with 
the following additional components.
::

                                       +-------------------------------------+
    Subprocess debugging               |        ePyUnit                      |            auto localization and load of the 
                                       +-------------------------------------+               PyDev stub 'pydevd.py'
                                        |    |    |             |                         exec-wrapper for PyUnit
                                        |    |    |             V
                                        |    |    V   +----------------------+
    Advanced filesystem search          |    V        |   PyFilesysObjects   |            search for Eclipse and PyDev release,
                                        V             +----------------------+               'pydevd.py'
                                                                |                         
                                                +----------------------------+
    Python file RTTI                            |          PySourceInfo      |            identifies actual search path
                                                +----------------------------+            
                                                             |
                                 . . . . . . . . . . . . . . . . . . . . . . .
                                                             |
                                            +----------------+---------------+
    Unit Tests                              |              PyDev             |           provides the Integration into Eclipse
                                            +----------------+---------------+              and 'pdb'
                                                             |
                                       +---------------------+---------------+     
    IDE                                |      Eclipse        |       pdb     |           provides the framework for Python debug
                                       +---------------------+---------------+               and GUI



References
==========

* Eclipse - `<https://www.eclipse.org/>`_ 

* PyDev - `<http://www.pydev.org/>`_ 

* PyUnit - `<http://pyunit.sourceforge.net/>`_ 

* ePyUnit - `<https://pypi.python.org/pypi/epyunit>`_ 

* PyFileSysObjects - `<https://pypi.python.org/pypi/pyfilesysobjects>`_ 

* PySourceInfo - `<https://pypi.python.org/pypi/pysourceinfo>`_