From 538b950bac4d1f3baea968c5f3a5adb406218f05 Mon Sep 17 00:00:00 2001 From: Tomas Gavenciak Date: Fri, 24 Sep 2010 16:13:12 +0200 Subject: [PATCH] Moving things around, WIP batch tasktype via hooks Trying to make testutils a collection of useful functions and hooks and to make tasktypes/batch as minimalistic as possible (and to make writing new task types easy as well) --- t/moe/{ => tasktypes}/batch.py | 0 t/moe/{testcase.py => testutils.py} | 52 +++++++++++++++++++---------- t/test.py | 5 --- 3 files changed, 35 insertions(+), 22 deletions(-) rename t/moe/{ => tasktypes}/batch.py (100%) rename t/moe/{testcase.py => testutils.py} (84%) diff --git a/t/moe/batch.py b/t/moe/tasktypes/batch.py similarity index 100% rename from t/moe/batch.py rename to t/moe/tasktypes/batch.py diff --git a/t/moe/testcase.py b/t/moe/testutils.py similarity index 84% rename from t/moe/testcase.py rename to t/moe/testutils.py index 36d335b..f45caf8 100644 --- a/t/moe/testcase.py +++ b/t/moe/testutils.py @@ -7,30 +7,48 @@ import moe.eval import moe.log import shutil import traceback +import re + +# Allowed test names +testname_regexp = re.compile('\A[\w]+\Z') + +def hook_run_tests(e): + """Hook that runs the test pipeline for each test in `TESTS`. + Opens per-test log `TEST_LOG`. + `TEST` is set, checked for invalid characters and fixed in each iteration. + + .. todo :: Different log-level for per-test log? + """ + e.log.info('Running test pipeline for each test') + e.config.fix('TESTS') + tests = e['TESTS'].split() + e.log.debug('TESTS: %r', tests) + for t in tests: + if not testname_regexp.match(t): + raise MoeError("Invalid test name %r", t) + e.log.user.info('TEST %s ...' % t) + with e.config.parse("TEST='"+t+"'", level=70, source=''): + try: + e.config.fix('TEST') + e.log.open_test_log(e['TEST_LOG'], e.log.level) + e.log.info(' *** Test case %s *** ' % t) + e.debug_dump_config() + e.debug_dump_pipe(e.test_pipe) + e.test_pipe.run(e=e) + except: + e.log.test.exception() + raise + finally: + e.config.unfix('TEST') + e.log.close_test_log() -def configure_test(e, test): - e.cfgs = moe.config.MoeConfigStack(e.cfgs) - e.test_builtins = moe.config.MoeConfig(type="test-builtins") - e.test_builtins.set("TEST", test) - e.cfgs.push(e.test_builtins) +def configure_test(e, test): test_cf = os.path.join(e["PDIR"], test + ".config") if os.path.exists(test_cf): cfg = moe.config.MoeConfig(name=test_cf, type="test") e.cfgs.push(cfg) - e.cfgs.apply_overrides("TEST_" + test + "_") - ext = e["EXT"] - if ext != "": - e.cfgs.apply_overrides("EXT_" + ext + "_") - - log = moe.log.MoeLog() - log.verbosity = e.log.verbosity - log.open(os.path.join(e["TDIR"], test + ".log")) - log.say("Test case %s\n\n" % test) - e.log = log - moe.log.default = log - e.log_config(2, "for the test") e.test_stat = moe.status.MoeStatus() diff --git a/t/test.py b/t/test.py index 15470ab..cc61e99 100755 --- a/t/test.py +++ b/t/test.py @@ -3,12 +3,7 @@ import sys #sys.path.append('.') -import moe -import moe.config -import moe.log import moe.eval -import moe.pipeline -import moe.batch import os e = moe.eval.Eval() -- 2.39.2