diff options
author | Chris St. Pierre <chris.a.st.pierre@gmail.com> | 2014-10-22 11:02:51 -0500 |
---|---|---|
committer | Chris St. Pierre <chris.a.st.pierre@gmail.com> | 2014-11-10 17:35:43 -0600 |
commit | 8318378b1ee2f6c0a9e5446036c7409228545e16 (patch) | |
tree | 119f85fb74fe7535089f3b13107c62811768c653 /testsuite | |
parent | 987023ba91d38a58c2fd4269bdfd0bf40648b7de (diff) | |
download | bcfg2-8318378b1ee2f6c0a9e5446036c7409228545e16.tar.gz bcfg2-8318378b1ee2f6c0a9e5446036c7409228545e16.tar.bz2 bcfg2-8318378b1ee2f6c0a9e5446036c7409228545e16.zip |
testsuite: better debug capturing for options tests
Diffstat (limited to 'testsuite')
-rw-r--r-- | testsuite/Testsrc/Testlib/TestOptions/TestSubcommands.py | 44 | ||||
-rw-r--r-- | testsuite/common.py | 6 |
2 files changed, 27 insertions, 23 deletions
diff --git a/testsuite/Testsrc/Testlib/TestOptions/TestSubcommands.py b/testsuite/Testsrc/Testlib/TestOptions/TestSubcommands.py index 35da909cb..65b4c19c0 100644 --- a/testsuite/Testsrc/Testlib/TestOptions/TestSubcommands.py +++ b/testsuite/Testsrc/Testlib/TestOptions/TestSubcommands.py @@ -86,15 +86,21 @@ class TestSubcommands(OptionTestCase): self.assertEqual(self.one().usage().strip(), "localone [--test-one TEST_ONE]") - @make_config() - def test_help(self, config_file): - """sane help message from subcommand registry.""" - self.parser.parse(["-C", config_file, "help"]) + def _get_subcommand_output(self, args): + self.parser.parse(args) old_stdout = sys.stdout sys.stdout = StringIO() - self.assertIn(self.registry.runcommand(), [0, None]) - help_message = sys.stdout.getvalue().splitlines() + rv = self.registry.runcommand() + output = [l for l in sys.stdout.getvalue().splitlines() + if not l.startswith("DEBUG: ")] sys.stdout = old_stdout + return (rv, output) + + @make_config() + def test_help(self, config_file): + """sane help message from subcommand registry.""" + rv, output = self._get_subcommand_output(["-C", config_file, "help"]) + self.assertIn(rv, [0, None]) # the help message will look like: # @@ -106,7 +112,7 @@ class TestSubcommands(OptionTestCase): "help": self.registry.help.usage(), "localone": self.one().usage(), "localtwo": self.two().usage()} - for line in help_message: + for line in output: command = line.split()[0] commands.append(command) if command not in command_help: @@ -118,24 +124,16 @@ class TestSubcommands(OptionTestCase): @make_config() def test_subcommand_help(self, config_file): """get help message on a single command.""" - self.parser.parse(["-C", config_file, "help", "localone"]) - old_stdout = sys.stdout - sys.stdout = StringIO() - self.assertIn(self.registry.runcommand(), [0, None]) - help_message = sys.stdout.getvalue().splitlines() - sys.stdout = old_stdout - - self.assertEqual(help_message[0].strip(), + rv, output = self._get_subcommand_output( + ["-C", config_file, "help", "localone"]) + self.assertIn(rv, [0, None]) + self.assertEqual(output[0].strip(), "usage: %s" % self.one().usage().strip()) @make_config() def test_nonexistent_subcommand_help(self, config_file): """get help message on a nonexistent command.""" - self.parser.parse(["-C", config_file, "help", "blargle"]) - old_stdout = sys.stdout - sys.stdout = StringIO() - self.assertNotEqual(self.registry.runcommand(), 0) - help_message = sys.stdout.getvalue().splitlines() - sys.stdout = old_stdout - - self.assertIn("No such command", help_message[0]) + rv, output = self._get_subcommand_output( + ["-C", config_file, "help", "blargle"]) + self.assertNotEqual(rv, 0) + self.assertIn("No such command", output[0]) diff --git a/testsuite/common.py b/testsuite/common.py index 49579d7ef..a86e9c5d9 100644 --- a/testsuite/common.py +++ b/testsuite/common.py @@ -38,7 +38,13 @@ def set_setup_default(option, value=None): if not hasattr(Bcfg2.Options.setup, option): setattr(Bcfg2.Options.setup, option, value) +# these two variables do slightly different things for unit tests; the +# former skips config file reading, while the latter sends option +# debug logging to stdout so it can be captured. These are separate +# because we want to enable config file reading in order to test +# option parsing. Bcfg2.Options.Parser.unit_test = True +Bcfg2.Options.Options.unit_test = True try: import django.conf |