#!/usr/bin/python3

"""
@copyright
(c) Copyright ESO 2017,2018
All Rights Reserved
ESO (eso.org) is an Intergovermental Organization, and therefore special conditions apply.
@brief Python bindings test program.
Use the following environment to invoke:
   1. set prefix: PREFIX=INSTALL_ROOT
   2. use command line: 
    PYTHONPATH=$PYTHONPATH:$PREFIX/lib/python3.5/site-packages \
    LD_LIBRARY_PATH=$PREFIX/lib64:/opt/rti_connext_dds-5.3.0/lib/x64Linux3gcc4.8.2:/opt/gtest/lib \
    LD_PRELOAD=/lib64/libboost_system.so ./PyMalTest <test...>

    When invoked without arguments, all tests are executed. To invoke with 
    specific tests specify test module name on command line:
    .... ./PyMalBindingTest A20PyMal

    Available tests are in: $PREFIX/lib/python3.5/site-packages/PyMalTest module
"""

import unittest
import importlib
import os
import sys
import PyMalBindingTest

if __name__ == '__main__': # pragma: no cover
    verbosity = 2
    moduleName = 'PyMalBindingTest'
    if len(sys.argv) == 2 and sys.argv[1] in ('-h', '--help'):
        print(__doc__)
        print('      Avalialble tests:\n      =============\n')
        submodules = sorted([x.replace('.py','') for x in os.listdir(PyMalBindingTest.PyMalTestPath)
         if not x.startswith('__')])
        for submodule in submodules:
            print ('      %s' % submodule)
        sys.exit(0)
    if len(sys.argv)> 1:
        for submoduleName in sys.argv[1:]:
            test = 'PyMalBindingTest.%s' % (submoduleName,)
            loader = unittest.TestLoader()
            suite = loader.loadTestsFromName(test)
            unittest.TextTestRunner(verbosity=verbosity).run(suite)
    else:
        unittest.main(PyMalBindingTest, verbosity=verbosity)

