#!/usr/bin/env python
"""
Core module of Cheetah's Unit-testing framework

TODO
================================================================================
# combo tests
# negative test cases for expected exceptions
# black-box vs clear-box testing
# do some tests that run the Template for long enough to check
# that the refresh code works
"""

import sys
import unittest

from Cheetah.Tests import Analyzer
from Cheetah.Tests import CheetahWrapper
# from Cheetah.Tests import Cheps
from Cheetah.Tests import Filters
from Cheetah.Tests import ImportHooks
from Cheetah.Tests import LoadTemplate
from Cheetah.Tests import Misc
from Cheetah.Tests import NameMapper
from Cheetah.Tests import NameMapper_pure
from Cheetah.Tests import Parser
from Cheetah.Tests import Regressions
from Cheetah.Tests import SyntaxAndOutput
from Cheetah.Tests import Template
from Cheetah.Tests import TemplateCmdLineIface
from Cheetah.Tests import Unicode

SyntaxAndOutput.install_eols()

suites = [
    unittest.findTestCases(Analyzer),
    # unittest.findTestCases(Cheps),
    unittest.findTestCases(Filters),
    unittest.findTestCases(ImportHooks),
    unittest.findTestCases(LoadTemplate),
    unittest.findTestCases(Misc),
    unittest.findTestCases(NameMapper),
    unittest.findTestCases(Parser),
    unittest.findTestCases(Regressions),
    unittest.findTestCases(SyntaxAndOutput),
    unittest.findTestCases(Template),
    unittest.findTestCases(TemplateCmdLineIface),
    unittest.findTestCases(Unicode),
    unittest.findTestCases(NameMapper_pure),
]

if not sys.platform.startswith('java'):
    suites.append(unittest.findTestCases(CheetahWrapper))

if __name__ == '__main__':
    if 'xml' in sys.argv:
        from Cheetah.Tests import xmlrunner
        runner = xmlrunner.XMLTestRunner(filename='Cheetah-Tests.xml')
    else:
        runner = unittest.TextTestRunner()

    results = runner.run(unittest.TestSuite(suites))
    if results.wasSuccessful():
        sys.exit(0)
    else:
        sys.exit(1)
