def setUp(self): self.command = Conf() self.command.parser = FakeParser() self.args = FakeArgs()
class TestConf(unittest.TestCase): """Test the conf subcommand.""" layer = ConfigLayer def setUp(self): self.command = Conf() self.command.parser = FakeParser() self.args = FakeArgs() def test_cannot_access_nonexistent_section(self): self.args.section = 'thissectiondoesnotexist' self.args.key = None with self.assertRaises(SystemExit): self.command.process(self.args) self.assertEqual(self.command.parser.message, 'No such section: thissectiondoesnotexist') def test_cannot_access_nonexistent_key(self): self.args.section = "mailman" self.args.key = 'thiskeydoesnotexist' with self.assertRaises(SystemExit): self.command.process(self.args) self.assertEqual(self.command.parser.message, 'Section mailman: No such key: thiskeydoesnotexist') def test_output_to_explicit_stdout(self): self.args.output = '-' self.args.section = 'shell' self.args.key = 'use_ipython' with mock.patch('sys.stdout') as mock_object: self.command.process(self.args) mock_object.write.assert_has_calls( [mock.call('no'), mock.call('\n')]) def test_output_to_file(self): self.args.section = 'shell' self.args.key = 'use_ipython' fd, filename = tempfile.mkstemp() try: self.args.output = filename self.command.process(self.args) with open(filename, 'r') as fp: contents = fp.read() finally: os.remove(filename) self.assertEqual(contents, 'no\n') def test_sort_by_section(self): self.args.output = '-' self.args.sort = True output = StringIO() with mock.patch('sys.stdout', output): self.command.process(self.args) last_line = '' for line in output.getvalue().splitlines(): if not line.startswith('['): # This is a continuation line. --sort doesn't sort these. continue self.assertTrue(line > last_line, '{} !> {}'.format(line, last_line)) last_line = line