diff --git a/qutebrowser/config/configtypes.py b/qutebrowser/config/configtypes.py index aaa158a02..df14e75d2 100644 --- a/qutebrowser/config/configtypes.py +++ b/qutebrowser/config/configtypes.py @@ -107,6 +107,10 @@ class ValidValues: return utils.get_repr(self, values=self.values, descriptions=self.descriptions) + def __eq__(self, other): + return (self.values == other.values and + self.descriptions == other.descriptions) + class BaseType: diff --git a/tests/unit/config/test_configtypes.py b/tests/unit/config/test_configtypes.py index 3ad579266..3a87ac999 100644 --- a/tests/unit/config/test_configtypes.py +++ b/tests/unit/config/test_configtypes.py @@ -163,6 +163,21 @@ class TestValidValues: with pytest.raises(ValueError): klass() + @pytest.mark.parametrize('args1, args2, is_equal', [ + (('foo', 'bar'), ('foo', 'bar'), True), + (('foo', 'bar'), ('foo', 'baz'), False), + ((('foo', 'foo desc'), ('bar', 'bar desc')), + (('foo', 'foo desc'), ('bar', 'bar desc')), + True), + ((('foo', 'foo desc'), ('bar', 'bar desc')), + (('foo', 'foo desc'), ('bar', 'bar desc2')), + False), + ]) + def test_equal(self, klass, args1, args2, is_equal): + obj1 = klass(*args1) + obj2 = klass(*args2) + assert (obj1 == obj2) == is_equal + class TestBaseType: @@ -224,6 +239,13 @@ class TestBaseType: basetype.valid_values = configtypes.ValidValues(*valid_values) assert basetype.complete() == completions + def test_get_name(self, basetype): + assert basetype.get_name() == 'BaseType' + + def test_get_valid_values(self, basetype): + basetype.valid_values = configtypes.ValidValues('foo') + assert basetype.get_valid_values() is basetype.valid_values + class MappingSubclass(configtypes.MappingType): @@ -409,6 +431,13 @@ class TestList: def test_transform(self, klass, val, expected): assert klass().transform(val) == expected + def test_get_name(self, klass): + assert klass().get_name() == 'ListSubclass of BaseType' + + def test_get_valid_values(self, klass): + expected = configtypes.ValidValues('foo', 'bar', 'baz') + assert klass().get_valid_values() == expected + class FlagListSubclass(configtypes.FlagList): @@ -489,6 +518,10 @@ class TestFlagList: def test_complete_no_valid_values(self, klass_valid_none): assert klass_valid_none().complete() is None + def test_get_name(self, klass): + """Make sure the name has no "of ..." in it.""" + assert klass().get_name() == 'FlagListSubclass' + class TestBool: @@ -1594,6 +1627,7 @@ class TestHeaderDict: '{"hello": "wörld"}', # non-ascii data in value '', # empty value with none_ok=False '{}', # ditto + '[invalid', # invalid json ]) def test_validate_invalid(self, klass, val): with pytest.raises(configexc.ValidationError):