Python: Consolidate stdlib http client tests

Move the stdlib tests from test/{2,3}/library-tests/ into /test/library-tests/,
and deal with version by using sys.version_info (results should be the same for
both versions).

six tests were moved from /library-tests/web/client/stdlib => /library-tests/web/client/six
This commit is contained in:
Rasmus Wriedt Larsen
2020-02-25 16:30:44 +01:00
parent be187bcc0a
commit b213db03fd
11 changed files with 33 additions and 82 deletions

View File

@@ -1,10 +0,0 @@
| test.py:6:5:6:32 | ControlFlowNode for Attribute() | test.py:5:27:5:39 | ControlFlowNode for Str | GET |
| test.py:6:5:6:32 | ControlFlowNode for Attribute() | test.py:6:25:6:31 | ControlFlowNode for Str | GET |
| test.py:15:5:15:33 | ControlFlowNode for Attribute() | test.py:10:28:10:40 | ControlFlowNode for Str | POST |
| test.py:15:5:15:33 | ControlFlowNode for Attribute() | test.py:15:26:15:32 | ControlFlowNode for Str | POST |
| test.py:20:5:20:33 | ControlFlowNode for Attribute() | test.py:19:27:19:39 | ControlFlowNode for Str | <NO METHOD> |
| test.py:20:5:20:33 | ControlFlowNode for Attribute() | test.py:20:26:20:32 | ControlFlowNode for Str | <NO METHOD> |
| test.py:30:5:30:32 | ControlFlowNode for Attribute() | test.py:28:27:28:30 | ControlFlowNode for fake | GET |
| test.py:30:5:30:32 | ControlFlowNode for Attribute() | test.py:30:25:30:31 | ControlFlowNode for Str | GET |
| test.py:37:5:37:29 | ControlFlowNode for req_meth() | test.py:35:27:35:39 | ControlFlowNode for Str | HEAD |
| test.py:37:5:37:29 | ControlFlowNode for req_meth() | test.py:37:22:37:28 | ControlFlowNode for Str | HEAD |

View File

@@ -1,37 +0,0 @@
from httplib import HTTPConnection, HTTPSConnection
def basic():
conn = HTTPConnection('example.com')
conn.request('GET', '/path')
def indirect_caller():
conn = HTTPSConnection('example.com')
indirect_callee(conn)
def indirect_callee(conn):
conn.request('POST', '/path')
def method_not_known(method):
conn = HTTPConnection('example.com')
conn.request(method, '/path')
def sneaky_setting_host():
# We don't handle that the host is overwritten directly.
# A contrived example; you're not supposed to do this, but you certainly can.
fake = 'fakehost.com'
real = 'realhost.com'
conn = HTTPConnection(fake)
conn.host = real
conn.request('GET', '/path')
def tricky_not_attribute_node():
# A contrived example; you're not supposed to do this, but you certainly can.
conn = HTTPConnection('example.com')
req_meth = conn.request
req_meth('HEAD', '/path')

View File

@@ -1,10 +0,0 @@
| test.py:6:5:6:32 | ControlFlowNode for Attribute() | test.py:5:27:5:39 | ControlFlowNode for Str | GET |
| test.py:6:5:6:32 | ControlFlowNode for Attribute() | test.py:6:25:6:31 | ControlFlowNode for Str | GET |
| test.py:15:5:15:33 | ControlFlowNode for Attribute() | test.py:10:28:10:40 | ControlFlowNode for Str | POST |
| test.py:15:5:15:33 | ControlFlowNode for Attribute() | test.py:15:26:15:32 | ControlFlowNode for Str | POST |
| test.py:20:5:20:33 | ControlFlowNode for Attribute() | test.py:19:27:19:39 | ControlFlowNode for Str | <NO METHOD> |
| test.py:20:5:20:33 | ControlFlowNode for Attribute() | test.py:20:26:20:32 | ControlFlowNode for Str | <NO METHOD> |
| test.py:30:5:30:32 | ControlFlowNode for Attribute() | test.py:28:27:28:30 | ControlFlowNode for fake | GET |
| test.py:30:5:30:32 | ControlFlowNode for Attribute() | test.py:30:25:30:31 | ControlFlowNode for Str | GET |
| test.py:37:5:37:29 | ControlFlowNode for req_meth() | test.py:35:27:35:39 | ControlFlowNode for Str | HEAD |
| test.py:37:5:37:29 | ControlFlowNode for req_meth() | test.py:37:22:37:28 | ControlFlowNode for Str | HEAD |

View File

@@ -1,11 +0,0 @@
import python
import semmle.python.web.Http
import semmle.python.web.ClientHttpRequest
from Client::HttpRequest req, string method
where
if exists(req.getMethodUpper())
then method = req.getMethodUpper()
else method = "<NO METHOD>"
select req, req.getAUrlPart(), method

View File

@@ -0,0 +1,10 @@
| test.py:7:5:7:32 | ControlFlowNode for Attribute() | test.py:6:27:6:39 | ControlFlowNode for Str | GET |
| test.py:7:5:7:32 | ControlFlowNode for Attribute() | test.py:7:25:7:31 | ControlFlowNode for Str | GET |
| test.py:16:5:16:33 | ControlFlowNode for Attribute() | test.py:11:28:11:40 | ControlFlowNode for Str | POST |
| test.py:16:5:16:33 | ControlFlowNode for Attribute() | test.py:16:26:16:32 | ControlFlowNode for Str | POST |
| test.py:21:5:21:33 | ControlFlowNode for Attribute() | test.py:20:27:20:39 | ControlFlowNode for Str | <NO METHOD> |
| test.py:21:5:21:33 | ControlFlowNode for Attribute() | test.py:21:26:21:32 | ControlFlowNode for Str | <NO METHOD> |
| test.py:31:5:31:32 | ControlFlowNode for Attribute() | test.py:29:27:29:30 | ControlFlowNode for fake | GET |
| test.py:31:5:31:32 | ControlFlowNode for Attribute() | test.py:31:25:31:31 | ControlFlowNode for Str | GET |
| test.py:38:5:38:29 | ControlFlowNode for req_meth() | test.py:36:27:36:39 | ControlFlowNode for Str | HEAD |
| test.py:38:5:38:29 | ControlFlowNode for req_meth() | test.py:38:22:38:28 | ControlFlowNode for Str | HEAD |

View File

@@ -0,0 +1,2 @@
semmle-extractor-options: --max-import-depth=2
optimize: true

View File

@@ -1,4 +1,5 @@
from http.client import HTTPConnection, HTTPSConnection
from six.moves.http_client import HTTPConnection, HTTPSConnection
from six.moves.urllib.parse import urlsplit
def basic():

View File

@@ -1,10 +1,10 @@
| test.py:7:5:7:32 | ControlFlowNode for Attribute() | test.py:6:27:6:39 | ControlFlowNode for Str | GET |
| test.py:7:5:7:32 | ControlFlowNode for Attribute() | test.py:7:25:7:31 | ControlFlowNode for Str | GET |
| test.py:16:5:16:33 | ControlFlowNode for Attribute() | test.py:11:28:11:40 | ControlFlowNode for Str | POST |
| test.py:16:5:16:33 | ControlFlowNode for Attribute() | test.py:16:26:16:32 | ControlFlowNode for Str | POST |
| test.py:21:5:21:33 | ControlFlowNode for Attribute() | test.py:20:27:20:39 | ControlFlowNode for Str | <NO METHOD> |
| test.py:21:5:21:33 | ControlFlowNode for Attribute() | test.py:21:26:21:32 | ControlFlowNode for Str | <NO METHOD> |
| test.py:31:5:31:32 | ControlFlowNode for Attribute() | test.py:29:27:29:30 | ControlFlowNode for fake | GET |
| test.py:31:5:31:32 | ControlFlowNode for Attribute() | test.py:31:25:31:31 | ControlFlowNode for Str | GET |
| test.py:38:5:38:29 | ControlFlowNode for req_meth() | test.py:36:27:36:39 | ControlFlowNode for Str | HEAD |
| test.py:38:5:38:29 | ControlFlowNode for req_meth() | test.py:38:22:38:28 | ControlFlowNode for Str | HEAD |
| test.py:13:5:13:32 | ControlFlowNode for Attribute() | test.py:12:27:12:39 | ControlFlowNode for Str | GET |
| test.py:13:5:13:32 | ControlFlowNode for Attribute() | test.py:13:25:13:31 | ControlFlowNode for Str | GET |
| test.py:22:5:22:33 | ControlFlowNode for Attribute() | test.py:17:28:17:40 | ControlFlowNode for Str | POST |
| test.py:22:5:22:33 | ControlFlowNode for Attribute() | test.py:22:26:22:32 | ControlFlowNode for Str | POST |
| test.py:27:5:27:33 | ControlFlowNode for Attribute() | test.py:26:27:26:39 | ControlFlowNode for Str | <NO METHOD> |
| test.py:27:5:27:33 | ControlFlowNode for Attribute() | test.py:27:26:27:32 | ControlFlowNode for Str | <NO METHOD> |
| test.py:37:5:37:32 | ControlFlowNode for Attribute() | test.py:35:27:35:30 | ControlFlowNode for fake | GET |
| test.py:37:5:37:32 | ControlFlowNode for Attribute() | test.py:37:25:37:31 | ControlFlowNode for Str | GET |
| test.py:44:5:44:29 | ControlFlowNode for req_meth() | test.py:42:27:42:39 | ControlFlowNode for Str | HEAD |
| test.py:44:5:44:29 | ControlFlowNode for req_meth() | test.py:44:22:44:28 | ControlFlowNode for Str | HEAD |

View File

@@ -1 +1 @@
semmle-extractor-options: --max-import-depth=2
semmle-extractor-options: --max-import-depth=1

View File

@@ -1,5 +1,11 @@
from six.moves.http_client import HTTPConnection, HTTPSConnection
from six.moves.urllib.parse import urlsplit
import sys
PY2 = sys.version_info[0] == 2
PY3 = sys.version_info[0] == 3
if PY2:
from httplib import HTTPConnection, HTTPSConnection
if PY3:
from http.client import HTTPConnection, HTTPSConnection
def basic():