mirror of https://github.com/python/cpython
STINNER Victor (haypo)'s patch for bug 3988, Byte warning mode and b'' != ''
Also, his patch to runtests.sh to pass the -bb option (issue 4125).
This commit is contained in:
parent
e94a37f3a1
commit
9e9dcd6d42
|
@ -9,6 +9,7 @@ import os
|
|||
import re
|
||||
import sys
|
||||
import copy
|
||||
import operator
|
||||
import pickle
|
||||
import tempfile
|
||||
import unittest
|
||||
|
@ -863,6 +864,17 @@ class AssortedBytesTest(unittest.TestCase):
|
|||
b = bytearray()
|
||||
self.failIf(b.replace(b'', b'') is b)
|
||||
|
||||
def test_compare(self):
|
||||
if sys.flags.bytes_warning:
|
||||
warnings.simplefilter('error', BytesWarning)
|
||||
self.assertRaises(BytesWarning, operator.eq, b'', '')
|
||||
self.assertRaises(BytesWarning, operator.ne, b'', '')
|
||||
self.assertRaises(BytesWarning, operator.eq, bytearray(b''), '')
|
||||
self.assertRaises(BytesWarning, operator.ne, bytearray(b''), '')
|
||||
else:
|
||||
# raise test.support.TestSkipped("BytesWarning is needed for this test: use -bb option")
|
||||
pass
|
||||
|
||||
# Optimizations:
|
||||
# __iter__? (optimization)
|
||||
# __reversed__? (optimization)
|
||||
|
|
|
@ -939,7 +939,7 @@ bytes_richcompare(PyObject *self, PyObject *other, int op)
|
|||
error, even if the comparison is for equality. */
|
||||
if (PyObject_IsInstance(self, (PyObject*)&PyUnicode_Type) ||
|
||||
PyObject_IsInstance(other, (PyObject*)&PyUnicode_Type)) {
|
||||
if (Py_BytesWarningFlag && op == Py_EQ) {
|
||||
if (Py_BytesWarningFlag && (op == Py_EQ || op == Py_NE)) {
|
||||
if (PyErr_WarnEx(PyExc_BytesWarning,
|
||||
"Comparison between bytearray and string", 1))
|
||||
return NULL;
|
||||
|
|
|
@ -818,7 +818,7 @@ string_richcompare(PyBytesObject *a, PyBytesObject *b, int op)
|
|||
|
||||
/* Make sure both arguments are strings. */
|
||||
if (!(PyBytes_Check(a) && PyBytes_Check(b))) {
|
||||
if (Py_BytesWarningFlag && (op == Py_EQ) &&
|
||||
if (Py_BytesWarningFlag && (op == Py_EQ || op == Py_NE) &&
|
||||
(PyObject_IsInstance((PyObject*)a,
|
||||
(PyObject*)&PyUnicode_Type) ||
|
||||
PyObject_IsInstance((PyObject*)b,
|
||||
|
|
Loading…
Reference in New Issue