Use the real argparser instance for qtutils tests.

This commit is contained in:
Florian Bruhin 2015-02-22 12:10:42 +01:00
parent 617cd8977b
commit cabe5bf2a3

View File

@ -20,9 +20,9 @@
"""Tests for qutebrowser.utils.qtutils."""
import sys
import argparse
import unittest
from qutebrowser import qutebrowser
from qutebrowser.utils import qtutils
@ -82,53 +82,40 @@ class CheckOverflowTests(unittest.TestCase):
self.assertEqual(newval, replacement)
def argparser_exit(status=0, message=None): # pylint: disable=unused-argument
"""Function to monkeypatch .exit() of the argparser so it doesn't exit."""
raise Exception
class GetQtArgsTests(unittest.TestCase):
"""Tests for get_args."""
def setUp(self):
self.parser = argparse.ArgumentParser()
def _namespace(self, cmdline, flags=None, args=None):
"""Get an argparse namespace object based on arguments given.
Args:
cmdline: The given commandline.
flags: A list of strings (argument names) for flags without an
argument.
args: A list of arguemnt names for flags with an argument.
"""
if flags is not None:
for e in flags:
self.parser.add_argument(e, action='store_true')
if args is not None:
for e in args:
self.parser.add_argument(e, nargs=1)
return self.parser.parse_args(cmdline)
self.parser = qutebrowser.get_argparser()
self.parser.exit = argparser_exit
def test_no_qt_args(self):
"""Test commandline with no Qt arguments given."""
ns = self._namespace(['--foo'], flags=['--foo'])
self.assertEqual(qtutils.get_args(ns), [sys.argv[0]])
args = self.parser.parse_args(['--debug'])
self.assertEqual(qtutils.get_args(args), [sys.argv[0]])
def test_qt_flag(self):
"""Test commandline with a Qt flag."""
ns = self._namespace(['--foo', '--qt-reverse', '--bar'],
flags=['--foo', '--qt-reverse', '--bar'])
self.assertEqual(qtutils.get_args(ns), [sys.argv[0], '-reverse'])
args = self.parser.parse_args(['--debug', '--qt-reverse', '--nocolor'])
self.assertEqual(qtutils.get_args(args), [sys.argv[0], '-reverse'])
def test_qt_arg(self):
"""Test commandline with a Qt argument."""
ns = self._namespace(['--qt-stylesheet', 'foobar'],
args=['--qt-stylesheet'])
self.assertEqual(qtutils.get_args(ns), [sys.argv[0], '-stylesheet',
'foobar'])
args = self.parser.parse_args(['--qt-stylesheet', 'foobar'])
self.assertEqual(qtutils.get_args(args), [sys.argv[0], '-stylesheet',
'foobar'])
def test_qt_both(self):
"""Test commandline with a Qt argument and flag."""
ns = self._namespace(['--qt-stylesheet', 'foobar', '--qt-reverse'],
flags=['--qt-reverse'], args=['--qt-stylesheet'])
qt_args = qtutils.get_args(ns)
args = self.parser.parse_args(['--qt-stylesheet', 'foobar',
'--qt-reverse'])
qt_args = qtutils.get_args(args)
self.assertEqual(qt_args[0], sys.argv[0])
self.assertIn('-reverse', qt_args)
self.assertIn('-stylesheet', qt_args)