Issue 25328: ValueError in smtpd.py init() is not raised (original) (raw)
Created on 2015-10-06 19:59 by barry, last changed 2022-04-11 14:58 by admin. This issue is now closed.
Messages (6)
Author: Barry A. Warsaw (barry) *
Date: 2015-10-06 19:59
In Python 3.5, SMTPChannel.init() ensures that enable_SMTPUTF8 and decode_data arguments are not both true. This even seems to be tested in test_smtpd.py. But it's clearly bogus because the exception is never raised! It just creates and throws away the exception instance.
Author: Mauro S. M. Rodrigues (maurosr) *
Date: 2015-10-08 20:44
Hi Barry, I was testing this and it seems to work, am I doing something wrong in order to reproduce it? I've used the same parameters from the unit tests
Python 3.5.0+ (3.5:1e99ba6b7c98, Oct 8 2015, 17:12:06) [GCC 4.8.4] on linux Type "help", "copyright", "credits" or "license" for more information.
import smtpd smtpd.SMTPServer(("127.0.0.1", 0), ('b',0),enable_SMTPUTF8=True,decode_data=True) Traceback (most recent call last): File "", line 1, in File "/home/maurosr/dev/cpython/Lib/smtpd.py", line 645, in init raise ValueError("The decode_data and enable_SMTPUTF8" ValueError: The decode_data and enable_SMTPUTF8 parameters cannot be set to True at the same time.
Author: Barry A. Warsaw (barry) *
Date: 2015-10-08 20:48
On Oct 08, 2015, at 08:44 PM, Mauro S. M. Rodrigues wrote:
Python 3.5.0+ (3.5:1e99ba6b7c98, Oct 8 2015, 17:12:06) [GCC 4.8.4] on linux Type "help", "copyright", "credits" or "license" for more information.
import smtpd smtpd.SMTPServer(("127.0.0.1", 0), ('b',0),enable_SMTPUTF8=True,decode_data=True) Traceback (most recent call last): File "", line 1, in File "/home/maurosr/dev/cpython/Lib/smtpd.py", line 645, in init raise ValueError("The decode_data and enable_SMTPUTF8" ValueError: The decode_data and enable_SMTPUTF8 parameters cannot be set to True at the same time.
That's testing the SMTPServer.init() which looks fine. It's the SMTPChannel.init() that's broken.
Author: Xiang Zhang (xiang.zhang) *
Date: 2015-10-09 06:23
I think this is a typo. The raise is left out.
In test_smtpd.py, it only tests the raise condition in SMTPServer but not STMPChannel.
I add the raise and a corresponding test in SMTPDChannelTest.
Author: Roundup Robot (python-dev)
Date: 2015-10-09 14:22
New changeset d471cf4a73b2 by R David Murray in branch '3.5': #25328: add missing raise keyword in decode_data+SMTPUTF8 check. https://hg.python.org/cpython/rev/d471cf4a73b2
New changeset 576128c0d068 by R David Murray in branch 'default': Merge #25328: add missing raise keyword in decode_data+SMTPUTF8 check. https://hg.python.org/cpython/rev/576128c0d068
Author: R. David Murray (r.david.murray) *
Date: 2015-10-09 14:25
Thanks, Xiang. Your analysis was correct and your patch is good.
For anyone who is curious, Barry discovered this while writing tests for a new aiosmtpd, which is based on the existing smtpd code.
History
Date
User
Action
Args
2022-04-11 14:58:22
admin
set
github: 69515
2015-10-09 14:25:36
r.david.murray
set
status: open -> closed
type: behavior
messages: +
resolution: fixed
stage: resolved
2015-10-09 14:22:58
python-dev
set
nosy: + python-dev
messages: +
2015-10-09 06:23:18
xiang.zhang
set
files: + SMTPChannel_raise_ValueError.patch
nosy: + xiang.zhang
messages: +
keywords: + patch
2015-10-08 20:48:03
barry
set
messages: +
2015-10-08 20:44:53
maurosr
set
nosy: + maurosr
messages: +
2015-10-06 19:59:27
barry
create