Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
e1ceb50c
Commit
e1ceb50c
authored
Jan 12, 2013
by
Antoine Pitrou
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Issue #16923: Fix ResourceWarnings in test_ssl.
parent
457a2292
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
37 additions
and
33 deletions
+37
-33
Lib/test/test_ssl.py
Lib/test/test_ssl.py
+35
-33
Misc/NEWS
Misc/NEWS
+2
-0
No files found.
Lib/test/test_ssl.py
View file @
e1ceb50c
...
...
@@ -208,20 +208,21 @@ class BasicSocketTests(unittest.TestCase):
s
=
socket
.
socket
(
socket
.
AF_INET
)
ss
=
ssl
.
wrap_socket
(
s
)
wr
=
weakref
.
ref
(
ss
)
del
ss
self
.
assertEqual
(
wr
(),
None
)
with
support
.
check_warnings
((
""
,
ResourceWarning
)):
del
ss
self
.
assertEqual
(
wr
(),
None
)
def
test_wrapped_unconnected
(
self
):
# Methods on an unconnected SSLSocket propagate the original
# socket.error raise by the underlying socket object.
s
=
socket
.
socket
(
socket
.
AF_INET
)
ss
=
ssl
.
wrap_socket
(
s
)
self
.
assertRaises
(
socket
.
error
,
ss
.
recv
,
1
)
self
.
assertRaises
(
socket
.
error
,
ss
.
recv_into
,
bytearray
(
b'x'
))
self
.
assertRaises
(
socket
.
error
,
ss
.
recvfrom
,
1
)
self
.
assertRaises
(
socket
.
error
,
ss
.
recvfrom_into
,
bytearray
(
b'x'
),
1
)
self
.
assertRaises
(
socket
.
error
,
ss
.
send
,
b'x'
)
self
.
assertRaises
(
socket
.
error
,
ss
.
sendto
,
b'x'
,
(
'0.0.0.0'
,
0
))
with
ssl
.
wrap_socket
(
s
)
as
ss
:
self
.
assertRaises
(
socket
.
error
,
ss
.
recv
,
1
)
self
.
assertRaises
(
socket
.
error
,
ss
.
recv_into
,
bytearray
(
b'x'
))
self
.
assertRaises
(
socket
.
error
,
ss
.
recvfrom
,
1
)
self
.
assertRaises
(
socket
.
error
,
ss
.
recvfrom_into
,
bytearray
(
b'x'
),
1
)
self
.
assertRaises
(
socket
.
error
,
ss
.
send
,
b'x'
)
self
.
assertRaises
(
socket
.
error
,
ss
.
sendto
,
b'x'
,
(
'0.0.0.0'
,
0
))
def
test_timeout
(
self
):
# Issue #8524: when creating an SSL socket, the timeout of the
...
...
@@ -229,8 +230,8 @@ class BasicSocketTests(unittest.TestCase):
for
timeout
in
(
None
,
0.0
,
5.0
):
s
=
socket
.
socket
(
socket
.
AF_INET
)
s
.
settimeout
(
timeout
)
ss
=
ssl
.
wrap_socket
(
s
)
self
.
assertEqual
(
timeout
,
ss
.
gettimeout
())
with
ssl
.
wrap_socket
(
s
)
as
ss
:
self
.
assertEqual
(
timeout
,
ss
.
gettimeout
())
def
test_errors
(
self
):
sock
=
socket
.
socket
()
...
...
@@ -243,9 +244,9 @@ class BasicSocketTests(unittest.TestCase):
self
.
assertRaisesRegex
(
ValueError
,
"certfile must be specified for server-side operations"
,
ssl
.
wrap_socket
,
sock
,
server_side
=
True
,
certfile
=
""
)
s
=
ssl
.
wrap_socket
(
sock
,
server_side
=
True
,
certfile
=
CERTFILE
)
self
.
assertRaisesRegex
(
ValueError
,
"can't connect in server-side mode"
,
s
.
connect
,
(
HOST
,
8080
))
with
ssl
.
wrap_socket
(
sock
,
server_side
=
True
,
certfile
=
CERTFILE
)
as
s
:
self
.
assertRaisesRegex
(
ValueError
,
"can't connect in server-side mode"
,
s
.
connect
,
(
HOST
,
8080
))
with
self
.
assertRaises
(
IOError
)
as
cm
:
with
socket
.
socket
()
as
sock
:
ssl
.
wrap_socket
(
sock
,
certfile
=
WRONGCERT
)
...
...
@@ -358,21 +359,21 @@ class BasicSocketTests(unittest.TestCase):
def
test_unknown_channel_binding
(
self
):
# should raise ValueError for unknown type
s
=
socket
.
socket
(
socket
.
AF_INET
)
ss
=
ssl
.
wrap_socket
(
s
)
with
self
.
assertRaises
(
ValueError
):
ss
.
get_channel_binding
(
"unknown-type"
)
with
ssl
.
wrap_socket
(
s
)
as
ss
:
with
self
.
assertRaises
(
ValueError
):
ss
.
get_channel_binding
(
"unknown-type"
)
@
unittest
.
skipUnless
(
"tls-unique"
in
ssl
.
CHANNEL_BINDING_TYPES
,
"'tls-unique' channel binding not available"
)
def
test_tls_unique_channel_binding
(
self
):
# unconnected should return None for known type
s
=
socket
.
socket
(
socket
.
AF_INET
)
ss
=
ssl
.
wrap_socket
(
s
)
self
.
assertIsNone
(
ss
.
get_channel_binding
(
"tls-unique"
))
with
ssl
.
wrap_socket
(
s
)
as
ss
:
self
.
assertIsNone
(
ss
.
get_channel_binding
(
"tls-unique"
))
# the same for server-side
s
=
socket
.
socket
(
socket
.
AF_INET
)
ss
=
ssl
.
wrap_socket
(
s
,
server_side
=
True
,
certfile
=
CERTFILE
)
self
.
assertIsNone
(
ss
.
get_channel_binding
(
"tls-unique"
))
with
ssl
.
wrap_socket
(
s
,
server_side
=
True
,
certfile
=
CERTFILE
)
as
ss
:
self
.
assertIsNone
(
ss
.
get_channel_binding
(
"tls-unique"
))
def
test_dealloc_warn
(
self
):
ss
=
ssl
.
wrap_socket
(
socket
.
socket
(
socket
.
AF_INET
))
...
...
@@ -623,10 +624,10 @@ class SSLErrorTests(unittest.TestCase):
with
socket
.
socket
()
as
s
:
s
.
bind
((
"127.0.0.1"
,
0
))
s
.
listen
(
5
)
with
socket
.
socket
()
as
c
:
c
.
connect
(
s
.
getsockname
())
c
.
setblocking
(
False
)
c
=
ctx
.
wrap_socket
(
c
,
False
,
do_handshake_on_connect
=
False
)
c
=
socket
.
socket
()
c
.
connect
(
s
.
getsockname
())
c
.
setblocking
(
False
)
with
ctx
.
wrap_socket
(
c
,
False
,
do_handshake_on_connect
=
False
)
as
c
:
with
self
.
assertRaises
(
ssl
.
SSLWantReadError
)
as
cm
:
c
.
do_handshake
()
s
=
str
(
cm
.
exception
)
...
...
@@ -867,12 +868,12 @@ class NetworkedTests(unittest.TestCase):
def
test_ciphers
(
self
):
remote
=
(
"svn.python.org"
,
443
)
with
support
.
transient_internet
(
remote
[
0
]):
s
=
ssl
.
wrap_socket
(
socket
.
socket
(
socket
.
AF_INET
),
cert_reqs
=
ssl
.
CERT_NONE
,
ciphers
=
"ALL"
)
s
.
connect
(
remote
)
s
=
ssl
.
wrap_socket
(
socket
.
socket
(
socket
.
AF_INET
),
cert_reqs
=
ssl
.
CERT_NONE
,
ciphers
=
"DEFAULT"
)
s
.
connect
(
remote
)
with
ssl
.
wrap_socket
(
socket
.
socket
(
socket
.
AF_INET
),
cert_reqs
=
ssl
.
CERT_NONE
,
ciphers
=
"ALL"
)
as
s
:
s
.
connect
(
remote
)
with
ssl
.
wrap_socket
(
socket
.
socket
(
socket
.
AF_INET
),
cert_reqs
=
ssl
.
CERT_NONE
,
ciphers
=
"DEFAULT"
)
as
s
:
s
.
connect
(
remote
)
# Error checking can happen at instantiation or when connecting
with
self
.
assertRaisesRegex
(
ssl
.
SSLError
,
"No cipher can be selected"
):
with
socket
.
socket
(
socket
.
AF_INET
)
as
sock
:
...
...
@@ -1847,6 +1848,8 @@ else:
client_addr
=
client
.
getsockname
()
client
.
close
()
t
.
join
()
remote
.
close
()
server
.
close
()
# Sanity checks.
self
.
assertIsInstance
(
remote
,
ssl
.
SSLSocket
)
self
.
assertEqual
(
peer
,
client_addr
)
...
...
@@ -1861,8 +1864,7 @@ else:
with
ThreadedEchoServer
(
CERTFILE
,
ssl_version
=
ssl
.
PROTOCOL_SSLv23
,
chatty
=
False
)
as
server
:
with
socket
.
socket
()
as
sock
:
s
=
context
.
wrap_socket
(
sock
)
with
context
.
wrap_socket
(
socket
.
socket
())
as
s
:
with
self
.
assertRaises
((
OSError
,
ssl
.
SSLError
)):
s
.
connect
((
HOST
,
server
.
port
))
self
.
assertIn
(
"no shared cipher"
,
str
(
server
.
conn_errors
[
0
]))
...
...
Misc/NEWS
View file @
e1ceb50c
...
...
@@ -434,6 +434,8 @@ Library
Tests
-----
- Issue #16923: Fix ResourceWarnings in test_ssl.
- Issue #15539: Added regression tests for Tools/scripts/pindent.py.
- Issue #16925: test_configparser now works with unittest test discovery.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment