summaryrefslogtreecommitdiffstats
path: root/testsuite
diff options
context:
space:
mode:
authorChris St. Pierre <chris.a.st.pierre@gmail.com>2014-10-22 11:02:51 -0500
committerChris St. Pierre <chris.a.st.pierre@gmail.com>2014-11-10 17:35:43 -0600
commit8318378b1ee2f6c0a9e5446036c7409228545e16 (patch)
tree119f85fb74fe7535089f3b13107c62811768c653 /testsuite
parent987023ba91d38a58c2fd4269bdfd0bf40648b7de (diff)
downloadbcfg2-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.py44
-rw-r--r--testsuite/common.py6
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