#!/usr/bin/env python
#
# Run all dm tests.
#
# NB: Set environment the variables to same as a working KForge:
#       PYTHONPATH
#       DJANGO_SETTINGS_MODULE
#       DOMAINMODELHOME (=KFORGEHOME)

import os
import sys
import re
import unittest
from optparse import OptionParser

os.environ['DJANGO_SETTINGS_MODULE'] = 'dm.django.settings.main'

from dm.testunit import ApplicationTestSuite
ApplicationTestSuite.buildApplication()

if __name__ == "__main__":
    usage  = 'usage: %prog [options] [module_name]'
    usage += '\n\tmodule_name specifies the module to test. '
    usage += 'If none supplied then run all tests.'
    parser = OptionParser(usage)
    parser.add_option('-v', '--verbose',
        action='store_true', dest='verbose', default=False,
        help='Be verbose in printing status messages')
    parser.add_option('-l', '--level',
        action='store', type='int', dest='level', default=1,
        help='Verbosity level of test runner')
    
    (options, args) = parser.parse_args()
    # by default always 1 argument (name of file itself)
    suiteToRun = None
    moduleName = ''
    if len(args) == 0:
        moduleName = 'dm.test'
    elif len(args) == 1:
        moduleName = args[0]
    else:
        print 'ERROR: you have supplied too many arguments\n'
        parser.print_help()
        sys.exit(0)

    testModuleName = moduleName
    testModule = __import__(testModuleName,'','','*')
    testSuite = testModule.suite()
        
    testRunner = unittest.TextTestRunner(verbosity=options.level)
    testRunner.run(testSuite)

