#!/usr/bin/env python3

import os
import sys
import unittest


dirname, basename = os.path.split(sys.argv[0])
cwd = os.getcwd()

if os.path.basename(cwd) == 'bin':
    os.chdir(os.path.dirname(cwd))
elif os.path.basename(os.path.dirname(cwd)) == 'bin':
    os.chdir(os.path.dirname(cwd))

unittest.testMethodPrefix = 'test_'


verbosity = 2

args = sys.argv[1:]
while args and args[0] == '-v':
    verbosity += 1
    args = args[1:]

runner = unittest.TextTestRunner(descriptions=verbosity>2,  verbosity=verbosity)
loader = unittest.TestLoader()
full_suite = loader.discover('.')

def tests_in(suite):
    for test in suite:
        if isinstance(test, unittest.TestSuite):
            yield from tests_in(test)
        else:
            yield test

suite = unittest.TestSuite()

wanted = sys.argv[1:]

for test in tests_in(full_suite):
    ident = str(test).split()[0].replace(unittest.testMethodPrefix, '').strip()
    if not wanted or ident in wanted:
        suite.addTest(test)

#suite.debug()
result = runner.run(suite)

