X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;ds=inline;f=t%2Fmoe%2Fconfig_test.py;h=f1c836d33c204021ce1dfd32dff3ff38f80e9979;hb=f1197017785dc3b28835cad97de45db673304eb3;hp=c19645a375e2d106eafe36d787a2f17b4b69c815;hpb=8899c2c556642997331657cbf69176f56c93ee44;p=moe.git diff --git a/t/moe/config_test.py b/t/moe/config_test.py index c19645a..f1c836d 100644 --- a/t/moe/config_test.py +++ b/t/moe/config_test.py @@ -12,11 +12,7 @@ class TestConfig(unittest.TestCase): s.t = cf.ConfigTree() def parse(s, string, level=0, fname='test'): - cp = ConfigParser(string, s.t, fname, level) - ops = cp.parse() - cp.p_WS() - assert cp.eof() - return ops + return s.t.parse(string, source=fname, level=level) def var(s, varname, create=True): return s.t.lookup(varname, create=create) @@ -82,6 +78,34 @@ class TestParser(TestConfig): s.assertRaises(ConfigSyntaxError, s.parse, "if ('{a}'=='{b}' ornot ''!='') {}") s.assertRaises(ConfigSyntaxError, s.parse, "if 'a'<>'b' {}") + def test_parse_remove(s): + def raise_UserWarning(): + with s.parse("b='F'", level=99): + assert s.val('b') == 'F' + raise UserWarning + d0 = s.parse('a="000"') + d1 = s.parse("a='A'; b='B'; c='C'", level=10) + d2 = s.parse('c="{a}{a}"; b="XX" ', level=20) + d3 = s.parse('b+=c ', level=30) + assert s.val('b') == "XXAA" + s.t.remove(d2) + assert s.val('b') == "BC" + s.assertRaises(ValueError, s.t.remove, [('d', d1[0][1])]) + s.assertRaises(ValueError, s.t.remove, [('b', d1[0][1])]) + # Try exception in "with parse():" + s.assertRaises(UserWarning, raise_UserWarning) + assert s.val('b') == "BC" + # partially remove d1 + s.t.remove([('c', d1[2][1])]) + # try to remove rest - 'a' and 'b' should get removed + s.assertRaises(ValueError, s.t.remove, d1) + assert s.val('a') == "000" + # cleanup + s.t.remove(d3) + s.t.remove(d0) + for v in 'abcd': + assert len(s.var(v).operations) == 0 + class TestConfigEval(TestConfig):