Mercurial > p > roundup > code
diff test/test_admin.py @ 7252:9c067ed4568b
add pragma command to roundup-admin
Added basic pragma command. Can assign settings, list settings.
Most settings are not yet implemented.
Only the pragma command respects unhidden pragma settings at this
point. Also added tests, doc updates for roundup-admin.
CHANGES.txt not updated because currently only pragma references the
unhidden settings.
Also fixed a couple of long lines.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Wed, 12 Apr 2023 20:49:21 -0400 |
| parents | 1a3d4703c7d6 |
| children | af870e295b46 |
line wrap: on
line diff
--- a/test/test_admin.py Wed Apr 12 11:20:14 2023 -0400 +++ b/test/test_admin.py Wed Apr 12 20:49:21 2023 -0400 @@ -803,6 +803,173 @@ print(err.getvalue().strip()) self.assertEqual(out, "issue1:issue2") + def testPragma(self): + """Uses interactive mode since pragmas only apply when using multiple + commands. + """ + if self.backend not in ['anydbm']: + self.skipTest("For speed only run test with anydbm.") + + orig_input = AdminTool.my_input + + for i in ["oN", "1", "yeS", "True"]: + inputs = iter(["pragma verbose=%s" % i, "pragma list", "quit"]) + AdminTool.my_input = lambda _self, _prompt: next(inputs) + + self.install_init() + self.admin=AdminTool() + sys.argv=['main', '-i', self.dirname] + + with captured_output() as (out, err): + ret = self.admin.main() + + out = out.getvalue().strip().split('\n') + + print(ret) + self.assertTrue(ret == 0) + expected = ' verbose=True' + self.assertIn(expected, out) + self.assertIn('descriptions...', out[-1]) + + # ----- + for i in ["oFf", "0", "NO", "FalSe"]: + inputs = iter(["pragma verbose=true", "pragma verbose=%s" % i, + "pragma list", "quit"]) + AdminTool.my_input = lambda _self, _prompt: next(inputs) + + self.install_init() + self.admin=AdminTool() + sys.argv=['main', '-i', self.dirname] + + with captured_output() as (out, err): + ret = self.admin.main() + + out = out.getvalue().strip().split('\n') + + print(ret) + self.assertTrue(ret == 0) + expected = ' verbose=False' + self.assertIn(expected, out) + + # ----- test syntax errors + inputs = iter(["pragma", "pragma arg", + "pragma foo=3","quit"]) + AdminTool.my_input = lambda _self, _prompt: next(inputs) + + self.install_init() + self.admin=AdminTool() + sys.argv=['main', '-i', self.dirname] + + with captured_output() as (out, err): + ret = self.admin.main() + + out = out.getvalue().strip().split('\n') + + print(ret) + self.assertTrue(ret == 0) + expected = 'Error: Not enough arguments supplied' + self.assertIn(expected, out) + expected = 'Error: Argument must be setting=value, was given: arg.' + self.assertIn(expected, out) + expected = 'Error: Unknown setting foo.' + self.assertIn(expected, out) + + # ----- + inputs = iter(["pragma verbose=foo", "quit"]) + AdminTool.my_input = lambda _self, _prompt: next(inputs) + + self.install_init() + self.admin=AdminTool() + sys.argv=['main', '-i', self.dirname] + + with captured_output() as (out, err): + ret = self.admin.main() + + out = out.getvalue().strip().split('\n') + + print(ret) + self.assertTrue(ret == 0) + expected = 'Error: Incorrect value for boolean setting verbose: foo.' + self.assertIn(expected, out) + + # ----- + inputs = iter(["pragma verbose=on", "pragma _inttest=5", + "pragma list", "quit"]) + AdminTool.my_input = lambda _self, _prompt: next(inputs) + + self.install_init() + self.admin=AdminTool() + sys.argv=['main', '-i', self.dirname] + + with captured_output() as (out, err): + ret = self.admin.main() + + out = out.getvalue().strip().split('\n') + + print(ret) + self.assertTrue(ret == 0) + expected = ' _inttest=5' + self.assertIn(expected, out) + self.assertIn('descriptions...', out[-1]) + + + # ----- + inputs = iter(["pragma verbose=on", "pragma _inttest=fred", + "pragma list", "quit"]) + AdminTool.my_input = lambda _self, _prompt: next(inputs) + + self.install_init() + self.admin=AdminTool() + sys.argv=['main', '-i', self.dirname] + + with captured_output() as (out, err): + ret = self.admin.main() + + out = out.getvalue().strip().split('\n') + + print(ret) + self.assertTrue(ret == 0) + expected = 'Error: Incorrect value for integer setting _inttest: fred.' + self.assertIn(expected, out) + self.assertIn('descriptions...', out[-1]) + + # ----- + inputs = iter(["pragma indexer_backend=whoosh", "pragma list", + "quit"]) + AdminTool.my_input = lambda _self, _prompt: next(inputs) + + self.install_init() + self.admin=AdminTool() + sys.argv=['main', '-i', self.dirname] + + with captured_output() as (out, err): + ret = self.admin.main() + + out = out.getvalue().strip().split('\n') + + print(ret) + expected = ' indexer_backend=whoosh' + self.assertIn(expected, out) + + # ----- + inputs = iter(["pragma _floattest=4.5", "quit"]) + AdminTool.my_input = lambda _self, _prompt: next(inputs) + + self.install_init() + self.admin=AdminTool() + sys.argv=['main', '-i', self.dirname] + + with captured_output() as (out, err): + ret = self.admin.main() + + out = out.getvalue().strip().split('\n') + + print(ret) + expected = 'Error: Internal error: pragma can not handle values of type: float' + self.assertIn(expected, out) + + # ----- + AdminTool.my_input = orig_input def disabletestHelpInitopts(self):
