python: Try to be more helpful when given a string to encrypt().
* lang/python/helpers.c (_gpg_obj2gpgme_data_t): Extended error message. * lang/python/tests/t-encrypt.py: Test for "encode" in error message. -- The motivation is to help the user when encrypting fails. I claim that it is not obvious to not being able to encrypt a string directly. To nudge the user into encoding it to bytes, the error message is a bit extended. Signed-off-by: Tobias Mueller <muelli@cryptobitch.de>
This commit is contained in:
parent
fb7f4cb973
commit
05896c210f
@ -293,8 +293,10 @@ _gpg_obj2gpgme_data_t(PyObject *input, int argnum, gpgme_data_t *wrapper,
|
|||||||
return _gpg_obj2gpgme_t(data, "gpgme_data_t", argnum);
|
return _gpg_obj2gpgme_t(data, "gpgme_data_t", argnum);
|
||||||
|
|
||||||
return PyErr_Format(PyExc_TypeError,
|
return PyErr_Format(PyExc_TypeError,
|
||||||
"arg %d: expected gpg.Data, file, or an object "
|
"arg %d: expected gpg.Data, file, "
|
||||||
"implementing the buffer protocol, got %s",
|
"bytes (not string!), or an object "
|
||||||
|
"implementing the buffer protocol. Got: %s. "
|
||||||
|
"If you provided a string, try to encode() it.",
|
||||||
argnum, data->ob_type->tp_name);
|
argnum, data->ob_type->tp_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,3 +62,18 @@ with gpg.Context(armor=True) as c:
|
|||||||
assert support.sign_only.endswith(e.recipients[0].fpr)
|
assert support.sign_only.endswith(e.recipients[0].fpr)
|
||||||
else:
|
else:
|
||||||
assert False, "Expected an InvalidRecipients error, got none"
|
assert False, "Expected an InvalidRecipients error, got none"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
try:
|
||||||
|
# People might be tempted to provide strings.
|
||||||
|
# We should raise something useful.
|
||||||
|
ciphertext, _, _ = c.encrypt("Hallo Leute\n",
|
||||||
|
recipients=keys,
|
||||||
|
sign=False,
|
||||||
|
always_trust=True)
|
||||||
|
except TypeError as e:
|
||||||
|
# This test is a bit fragile, because the message
|
||||||
|
# may very well change. So if the behaviour will change
|
||||||
|
# this test can easily be deleted.
|
||||||
|
assert "encode" in str(e)
|
||||||
|
Loading…
Reference in New Issue
Block a user