import sys
from unittest import TestLoader, TestSuite, TestResult, TextTestRunner

from HTMLTestRunner import HTMLTestRunner

from integration.partial.test_advisory import TestAdvisory
from integration.partial.test_deposition import TestDeposition
from integration.partial.test_env_suit import TestEnvSuit
from integration.partial.test_survey import TestSurvey


def build_test_runner() -> TestSuite:
    tests: TestSuite = TestSuite()
    tests.addTests(TestLoader().loadTestsFromTestCase(TestDeposition))
    tests.addTests(TestLoader().loadTestsFromTestCase(TestEnvSuit))
    tests.addTests(TestLoader().loadTestsFromTestCase(TestSurvey))
    tests.addTests(TestLoader().loadTestsFromTestCase(TestAdvisory))
    return tests


if __name__ == '__main__':
    _output_dir = sys.argv.pop()
    _tests = build_test_runner()
    _runner = HTMLTestRunner(output=_output_dir)
    _result: TestResult = _runner.run(_tests)
    if not _result.wasSuccessful():
        sys.exit(1)