import lit
import site
site.addsitedir(os.path.dirname(__file__))
import format

config.name = 'custom-result-category'
config.suffixes = ['.txt']
config.test_format = format.MyFormat()
config.test_source_root = None
config.test_exec_root = None
