mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
Switch %r specifiers to '%s' in Public errors
This switch drops the preceding 'u' from strings within Public error messages. This patch also addresses the related unfriendly 'u' from re-raising errors from netaddr.IPAddress by passing a bytestring through the function. Also switched ValidationError to TypeError in validate_scalar per jcholast@redhat.com. Ticket: https://fedorahosted.org/freeipa/ticket/3121 Ticket: https://fedorahosted.org/freeipa/ticket/2588
This commit is contained in:
@@ -39,7 +39,7 @@ NULLS = (None, '', u'', tuple(), [])
|
||||
NAME_REGEX = r'^[a-z][_a-z0-9]*[a-z0-9]$|^[a-z]$'
|
||||
|
||||
# Format for ValueError raised when name does not match above regex:
|
||||
NAME_ERROR = 'name must match %r; got %r'
|
||||
NAME_ERROR = "name must match '%s'; got '%s'"
|
||||
|
||||
# Standard format for TypeError message:
|
||||
TYPE_ERROR = '%s: need a %r; got %r (a %r)'
|
||||
|
||||
@@ -166,7 +166,7 @@ class PluginSubclassError(PrivateError):
|
||||
|
||||
"""
|
||||
|
||||
format = '%(plugin)r not subclass of any base in %(bases)r'
|
||||
format = '%(plugin)r not subclass of any base in %(bases)r'
|
||||
|
||||
|
||||
class PluginDuplicateError(PrivateError):
|
||||
@@ -311,7 +311,7 @@ class VersionError(PublicError):
|
||||
"""
|
||||
|
||||
errno = 901
|
||||
format = _('%(cver)s client incompatible with %(sver)s server at %(server)r')
|
||||
format = _("%(cver)s client incompatible with %(sver)s server at '%(server)s'")
|
||||
|
||||
|
||||
class UnknownError(PublicError):
|
||||
@@ -367,7 +367,7 @@ class ServerInternalError(PublicError):
|
||||
"""
|
||||
|
||||
errno = 904
|
||||
format = _('an internal error has occurred on server at %(server)r')
|
||||
format = _("an internal error has occurred on server at '%(server)s'")
|
||||
|
||||
|
||||
class CommandError(PublicError):
|
||||
@@ -383,7 +383,7 @@ class CommandError(PublicError):
|
||||
"""
|
||||
|
||||
errno = 905
|
||||
format = _('unknown command %(name)r')
|
||||
format = _("unknown command '%(name)s'")
|
||||
|
||||
|
||||
class ServerCommandError(PublicError):
|
||||
@@ -400,7 +400,7 @@ class ServerCommandError(PublicError):
|
||||
"""
|
||||
|
||||
errno = 906
|
||||
format = _('error on server %(server)r: %(error)s')
|
||||
format = _("error on server '%(server)s': %(error)s")
|
||||
|
||||
|
||||
class NetworkError(PublicError):
|
||||
@@ -416,7 +416,7 @@ class NetworkError(PublicError):
|
||||
"""
|
||||
|
||||
errno = 907
|
||||
format = _('cannot connect to %(uri)r: %(error)s')
|
||||
format = _("cannot connect to '%(uri)s': %(error)s")
|
||||
|
||||
|
||||
class ServerNetworkError(PublicError):
|
||||
@@ -425,7 +425,7 @@ class ServerNetworkError(PublicError):
|
||||
"""
|
||||
|
||||
errno = 908
|
||||
format = _('error on server %(server)r: %(error)s')
|
||||
format = _("error on server '%(server)s': %(error)s")
|
||||
|
||||
|
||||
class JSONError(PublicError):
|
||||
@@ -526,7 +526,7 @@ class ServiceError(KerberosError):
|
||||
"""
|
||||
|
||||
errno = 1102
|
||||
format = _('Service %(service)r not found in Kerberos database')
|
||||
format = _("Service '%(service)s' not found in Kerberos database")
|
||||
|
||||
|
||||
class NoCCacheError(KerberosError):
|
||||
@@ -688,7 +688,7 @@ class ZeroArgumentError(InvocationError):
|
||||
"""
|
||||
|
||||
errno = 3003
|
||||
format = _('command %(name)r takes no arguments')
|
||||
format = _("command '%(name)s' takes no arguments")
|
||||
|
||||
|
||||
class MaxArgumentError(InvocationError):
|
||||
@@ -708,8 +708,8 @@ class MaxArgumentError(InvocationError):
|
||||
def __init__(self, message=None, **kw):
|
||||
if message is None:
|
||||
format = ungettext(
|
||||
'command %(name)r takes at most %(count)d argument',
|
||||
'command %(name)r takes at most %(count)d arguments',
|
||||
"command '%(name)s' takes at most %(count)d argument",
|
||||
"command '%(name)s' takes at most %(count)d arguments",
|
||||
kw['count']
|
||||
)
|
||||
else:
|
||||
@@ -738,7 +738,7 @@ class OverlapError(InvocationError):
|
||||
"""
|
||||
|
||||
errno = 3006
|
||||
format = _('overlapping arguments and options: %(names)r')
|
||||
format = _("overlapping arguments and options: %(names)s")
|
||||
|
||||
|
||||
class RequirementError(InvocationError):
|
||||
@@ -754,7 +754,7 @@ class RequirementError(InvocationError):
|
||||
"""
|
||||
|
||||
errno = 3007
|
||||
format = _('%(name)r is required')
|
||||
format = _("'%(name)s' is required")
|
||||
|
||||
|
||||
class ConversionError(InvocationError):
|
||||
@@ -770,7 +770,7 @@ class ConversionError(InvocationError):
|
||||
"""
|
||||
|
||||
errno = 3008
|
||||
format = _('invalid %(name)r: %(error)s')
|
||||
format = _("invalid '%(name)s': %(error)s")
|
||||
|
||||
|
||||
class ValidationError(InvocationError):
|
||||
@@ -786,7 +786,7 @@ class ValidationError(InvocationError):
|
||||
"""
|
||||
|
||||
errno = 3009
|
||||
format = _('invalid %(name)r: %(error)s')
|
||||
format = _("invalid '%(name)s': %(error)s")
|
||||
|
||||
|
||||
class NoSuchNamespaceError(InvocationError):
|
||||
@@ -802,7 +802,7 @@ class NoSuchNamespaceError(InvocationError):
|
||||
"""
|
||||
|
||||
errno = 3010
|
||||
format = _('api has no such namespace: %(name)r')
|
||||
format = _("api has no such namespace: '%(name)s'")
|
||||
|
||||
|
||||
class PasswordMismatch(InvocationError):
|
||||
@@ -978,7 +978,7 @@ class MalformedUserPrincipal(ExecutionError):
|
||||
"""
|
||||
|
||||
errno = 4008
|
||||
format = _('Principal is not of the form user@REALM: %(principal)r')
|
||||
format = _("Principal is not of the form user@REALM: '%(principal)s'")
|
||||
|
||||
class AlreadyActive(ExecutionError):
|
||||
"""
|
||||
@@ -1357,7 +1357,7 @@ class HelpError(BuiltinError):
|
||||
"""
|
||||
|
||||
errno = 4101
|
||||
format = _('no command nor help topic %(topic)r')
|
||||
format = _("no command nor help topic '%(topic)s'")
|
||||
|
||||
|
||||
class LDAPError(ExecutionError):
|
||||
|
||||
@@ -879,10 +879,8 @@ class Param(ReadOnly):
|
||||
|
||||
def _validate_scalar(self, value, index=None):
|
||||
if type(value) is not self.type:
|
||||
raise ValidationError(name=self.name,
|
||||
error='need a %r; got %r (a %r)' % (
|
||||
self.type, value, type(value)
|
||||
)
|
||||
raise TypeError(
|
||||
TYPE_ERROR % (self.name, self.type, value, type(value))
|
||||
)
|
||||
if index is not None and type(index) is not int:
|
||||
raise TypeError(
|
||||
@@ -1167,11 +1165,9 @@ class Int(Number):
|
||||
the exception that it allows both int and long types. The
|
||||
min/max rules handle size enforcement.
|
||||
"""
|
||||
if type(value) not in (int, long):
|
||||
raise ValidationError(name=self.name,
|
||||
error='need a %r; got %r (a %r)' % (
|
||||
self.type, value, type(value)
|
||||
)
|
||||
if type(value) not in (int, long):
|
||||
raise TypeError(
|
||||
TYPE_ERROR % (self.name, self.type, value, type(value))
|
||||
)
|
||||
if index is not None and type(index) is not int:
|
||||
raise TypeError(
|
||||
@@ -1553,7 +1549,7 @@ class IA5Str(Str):
|
||||
if ord(value[i]) > 127:
|
||||
raise ConversionError(name=self.get_param_name(),
|
||||
index=index,
|
||||
error=_('The character \'%(char)r\' is not allowed.') %
|
||||
error=_('The character %(char)r is not allowed.') %
|
||||
dict(char=value[i],)
|
||||
)
|
||||
return super(IA5Str, self)._convert_scalar(value, index)
|
||||
|
||||
@@ -267,7 +267,7 @@ def _create_zone_serial():
|
||||
|
||||
def _reverse_zone_name(netstr):
|
||||
try:
|
||||
netaddr.IPAddress(netstr)
|
||||
netaddr.IPAddress(str(netstr))
|
||||
except (netaddr.AddrFormatError, ValueError):
|
||||
pass
|
||||
else:
|
||||
@@ -285,7 +285,7 @@ def _reverse_zone_name(netstr):
|
||||
|
||||
def _validate_ipaddr(ugettext, ipaddr, ip_version=None):
|
||||
try:
|
||||
ip = netaddr.IPAddress(ipaddr, flags=netaddr.INET_PTON)
|
||||
ip = netaddr.IPAddress(str(ipaddr), flags=netaddr.INET_PTON)
|
||||
|
||||
if ip_version is not None:
|
||||
if ip.version != ip_version:
|
||||
@@ -454,7 +454,7 @@ def add_forward_record(zone, name, str_address):
|
||||
pass # the entry already exists and matches
|
||||
|
||||
def get_reverse_zone(ipaddr, prefixlen=None):
|
||||
ip = netaddr.IPAddress(ipaddr)
|
||||
ip = netaddr.IPAddress(str(ipaddr))
|
||||
revdns = unicode(ip.reverse_dns)
|
||||
|
||||
if prefixlen is None:
|
||||
|
||||
@@ -526,7 +526,7 @@ def zone_is_reverse(zone_name):
|
||||
return False
|
||||
|
||||
def get_reverse_zone_default(ip_address):
|
||||
ip = netaddr.IPAddress(ip_address)
|
||||
ip = netaddr.IPAddress(str(ip_address))
|
||||
items = ip.reverse_dns.split('.')
|
||||
|
||||
if ip.version == 4:
|
||||
|
||||
@@ -103,7 +103,7 @@ class CheckedIPAddress(netaddr.IPAddress):
|
||||
else:
|
||||
try:
|
||||
try:
|
||||
addr = netaddr.IPAddress(addr, flags=self.netaddr_ip_flags)
|
||||
addr = netaddr.IPAddress(str(addr), flags=self.netaddr_ip_flags)
|
||||
except netaddr.AddrFormatError:
|
||||
# netaddr.IPAddress doesn't handle zone indices in textual
|
||||
# IPv6 addresses. Try removing zone index and parse the
|
||||
@@ -113,11 +113,11 @@ class CheckedIPAddress(netaddr.IPAddress):
|
||||
addr, sep, foo = addr.partition('%')
|
||||
if sep != '%':
|
||||
raise
|
||||
addr = netaddr.IPAddress(addr, flags=self.netaddr_ip_flags)
|
||||
addr = netaddr.IPAddress(str(addr), flags=self.netaddr_ip_flags)
|
||||
if addr.version != 6:
|
||||
raise
|
||||
except ValueError:
|
||||
net = netaddr.IPNetwork(addr, flags=self.netaddr_ip_flags)
|
||||
net = netaddr.IPNetwork(str(addr), flags=self.netaddr_ip_flags)
|
||||
if not parse_netmask:
|
||||
raise ValueError("netmask and prefix length not allowed here")
|
||||
addr = net.ip
|
||||
|
||||
@@ -469,11 +469,11 @@ class test_Param(ClassChecker):
|
||||
assert str(e) == 'value: empty tuple must be converted to None'
|
||||
|
||||
# Test with wrong (scalar) type:
|
||||
e = raises(ValidationError, o.validate, (None, None, 42, None), 'cli')
|
||||
assert str(e) == 'invalid %s' % (TYPE_ERROR % ('\'my_param\'', NoneType, 42, int))
|
||||
e = raises(TypeError, o.validate, (None, None, 42, None), 'cli')
|
||||
assert str(e) == TYPE_ERROR % ('my_param', NoneType, 42, int)
|
||||
o = self.cls('my_param')
|
||||
e = raises(ValidationError, o.validate, 'Hello', 'cli')
|
||||
assert str(e) == 'invalid %s' % (TYPE_ERROR % ('\'my_param\'', NoneType, 'Hello', str))
|
||||
e = raises(TypeError, o.validate, 'Hello', 'cli')
|
||||
assert str(e) == TYPE_ERROR % ('my_param', NoneType, 'Hello', str)
|
||||
|
||||
class Example(self.cls):
|
||||
type = int
|
||||
@@ -535,10 +535,10 @@ class test_Param(ClassChecker):
|
||||
o = MyParam('my_param', okay)
|
||||
|
||||
# Test that TypeError is appropriately raised:
|
||||
e = raises(ValidationError, o._validate_scalar, 0)
|
||||
assert str(e) == 'invalid %s' % (TYPE_ERROR % ('\'my_param\'', bool, 0, int))
|
||||
e = raises(ValidationError, o._validate_scalar, 'Hi', index=4)
|
||||
assert str(e) == 'invalid %s' % (TYPE_ERROR % ('\'my_param\'', bool, 'Hi', str))
|
||||
e = raises(TypeError, o._validate_scalar, 0)
|
||||
assert str(e) == TYPE_ERROR % ('my_param', bool, 0, int)
|
||||
e = raises(TypeError, o._validate_scalar, 'Hi', index=4)
|
||||
assert str(e) == TYPE_ERROR % ('my_param', bool, 'Hi', str)
|
||||
e = raises(TypeError, o._validate_scalar, True, index=3.0)
|
||||
assert str(e) == TYPE_ERROR % ('index', int, 3.0, float)
|
||||
|
||||
@@ -1574,4 +1574,4 @@ class test_IA5Str(ClassChecker):
|
||||
e = raises(errors.ConversionError, mthd, value)
|
||||
assert e.name == 'my_str'
|
||||
assert e.index is None
|
||||
assert_equal(e.error, "The character \''\\xc3'\' is not allowed.")
|
||||
assert_equal(e.error, "The character '\\xc3' is not allowed.")
|
||||
|
||||
@@ -1095,7 +1095,7 @@ class test_dns(Declarative):
|
||||
desc='Try to add invalid allow-query to zone %r' % dnszone1,
|
||||
command=('dnszone_mod', [dnszone1], {'idnsallowquery': u'foo'}),
|
||||
expected=errors.ValidationError(name='allow_query',
|
||||
error=u"failed to detect a valid IP address from u'foo'"),
|
||||
error=u"failed to detect a valid IP address from 'foo'"),
|
||||
),
|
||||
|
||||
dict(
|
||||
@@ -1128,7 +1128,7 @@ class test_dns(Declarative):
|
||||
desc='Try to add invalid allow-transfer to zone %r' % dnszone1,
|
||||
command=('dnszone_mod', [dnszone1], {'idnsallowtransfer': u'10.'}),
|
||||
expected=errors.ValidationError(name='allow_transfer',
|
||||
error=u"failed to detect a valid IP address from u'10.'"),
|
||||
error=u"failed to detect a valid IP address from '10.'"),
|
||||
),
|
||||
|
||||
dict(
|
||||
|
||||
Reference in New Issue
Block a user