summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOleg Pudeyev <oleg@bsdpower.com>2018-06-01 08:53:28 -0400
committerOleg Pudeyev <oleg@bsdpower.com>2018-06-01 08:58:53 -0400
commit436f135580521a42f4614ffaa88cb6d47f02fac1 (patch)
tree66d491bc73a8125f624f0f82916eb2408eaad676
parentce1bde81ff053ef8bc4567e78b0757ecd4d4aabb (diff)
downloadpycurl-436f135580521a42f4614ffaa88cb6d47f02fac1.tar.gz
Windows compatibility for test suite
-rw-r--r--tests/close_socket_cb_test.py6
-rw-r--r--tests/memory_mgmt_test.py7
-rw-r--r--tests/open_socket_cb_test.py1
-rw-r--r--tests/setup_test.py22
-rw-r--r--tests/unset_range_test.py2
-rw-r--r--tests/util.py15
-rw-r--r--tests/write_abort_test.py2
-rw-r--r--tests/write_cb_bogus_test.py2
8 files changed, 50 insertions, 7 deletions
diff --git a/tests/close_socket_cb_test.py b/tests/close_socket_cb_test.py
index f0a5f91..f779acb 100644
--- a/tests/close_socket_cb_test.py
+++ b/tests/close_socket_cb_test.py
@@ -2,6 +2,7 @@
# -*- coding: utf-8 -*-
# vi:ts=4:et
+import socket
import os
import unittest
import pycurl
@@ -26,7 +27,10 @@ class CloseSocketCbTest(unittest.TestCase):
def closesocketfunction(curlfd):
called['called'] = True
- os.close(curlfd)
+ # Unix only
+ #os.close(curlfd)
+ # Unix & Windows
+ socket.fromfd(curlfd, socket.AF_INET, socket.SOCK_STREAM).close()
return 0
self.curl.setopt(pycurl.CLOSESOCKETFUNCTION, closesocketfunction)
diff --git a/tests/memory_mgmt_test.py b/tests/memory_mgmt_test.py
index ad60c31..e92dfbd 100644
--- a/tests/memory_mgmt_test.py
+++ b/tests/memory_mgmt_test.py
@@ -215,12 +215,17 @@ class MemoryMgmtTest(unittest.TestCase):
#print("Tracked objects:", len(gc.get_objects()))
def test_refcounting_bug_in_reset(self):
+ if sys.platform == 'win32':
+ iters = 10000
+ else:
+ iters = 100000
+
try:
range_generator = xrange
except NameError:
range_generator = range
# Ensure that the refcounting error in "reset" is fixed:
- for i in range_generator(100000):
+ for i in range_generator(iters):
c = util.DefaultCurl()
c.reset()
c.close()
diff --git a/tests/open_socket_cb_test.py b/tests/open_socket_cb_test.py
index 39b3f50..403ce15 100644
--- a/tests/open_socket_cb_test.py
+++ b/tests/open_socket_cb_test.py
@@ -91,6 +91,7 @@ class OpenSocketCbTest(unittest.TestCase):
assert type(socket_open_address[3]) == int
@util.min_libcurl(7, 40, 0)
+ @util.only_unix
def test_socket_open_unix(self):
self.curl.setopt(pycurl.OPENSOCKETFUNCTION, socket_open_unix)
self.curl.setopt(self.curl.URL, 'http://localhost:8380/success')
diff --git a/tests/setup_test.py b/tests/setup_test.py
index 34320b5..0817d81 100644
--- a/tests/setup_test.py
+++ b/tests/setup_test.py
@@ -2,6 +2,7 @@
# -*- coding: utf-8 -*-
# vi:ts=4:et
+from . import util
import setup as pycurl_setup
import unittest
import os, os.path, sys
@@ -60,17 +61,21 @@ def min_python_version(*spec):
return decorator
class SetupTest(unittest.TestCase):
+
+ @util.only_unix
def test_sanity_check(self):
config = pycurl_setup.ExtensionConfiguration()
# we should link against libcurl, one would expect
assert 'curl' in config.libraries
+ @util.only_unix
@using_curl_config('curl-config-empty')
def test_no_ssl(self):
config = pycurl_setup.ExtensionConfiguration()
# do not expect anything to do with ssl
assert 'crypto' not in config.libraries
+ @util.only_unix
@using_curl_config('curl-config-libs-and-static-libs')
def test_does_not_use_static_libs(self):
config = pycurl_setup.ExtensionConfiguration()
@@ -79,42 +84,49 @@ class SetupTest(unittest.TestCase):
assert 'flurby' in config.libraries
assert 'kzzert' not in config.libraries
+ @util.only_unix
@using_curl_config('curl-config-ssl-in-libs')
def test_ssl_in_libs(self):
config = pycurl_setup.ExtensionConfiguration()
# should link against openssl
assert 'crypto' in config.libraries
+ @util.only_unix
@using_curl_config('curl-config-ssl-in-static-libs')
def test_ssl_in_static_libs(self):
config = pycurl_setup.ExtensionConfiguration()
# should link against openssl
assert 'crypto' in config.libraries
+ @util.only_unix
@using_curl_config('curl-config-empty')
def test_no_ssl_define(self):
config = pycurl_setup.ExtensionConfiguration()
# ssl define should be off
assert 'HAVE_CURL_SSL' not in config.define_symbols
+ @util.only_unix
@using_curl_config('curl-config-ssl-in-libs')
def test_ssl_in_libs_sets_ssl_define(self):
config = pycurl_setup.ExtensionConfiguration()
# ssl define should be on
assert 'HAVE_CURL_SSL' in config.define_symbols
+ @util.only_unix
@using_curl_config('curl-config-ssl-in-static-libs')
def test_ssl_in_static_libs_sets_ssl_define(self):
config = pycurl_setup.ExtensionConfiguration()
# ssl define should be on
assert 'HAVE_CURL_SSL' in config.define_symbols
+ @util.only_unix
@using_curl_config('curl-config-ssl-in-libs')
def test_ssl_feature_sets_ssl_define(self):
config = pycurl_setup.ExtensionConfiguration()
# ssl define should be on
assert 'HAVE_CURL_SSL' in config.define_symbols
+ @util.only_unix
@using_curl_config('curl-config-ssl-feature-only')
def test_ssl_feature_only(self):
try:
@@ -127,6 +139,7 @@ specify the SSL backend manually.''', str(e))
else:
self.fail('Should have raised')
+ @util.only_unix
@using_curl_config('curl-config-ssl-feature-only')
def test_libcurl_ssl_openssl(self):
config = pycurl_setup.ExtensionConfiguration(['',
@@ -139,6 +152,7 @@ specify the SSL backend manually.''', str(e))
assert 'HAVE_CURL_GNUTLS' not in config.define_symbols
assert 'HAVE_CURL_NSS' not in config.define_symbols
+ @util.only_unix
@using_curl_config('curl-config-ssl-feature-only')
def test_libcurl_ssl_gnutls(self):
config = pycurl_setup.ExtensionConfiguration(['',
@@ -151,6 +165,7 @@ specify the SSL backend manually.''', str(e))
assert 'HAVE_CURL_OPENSSL' not in config.define_symbols
assert 'HAVE_CURL_NSS' not in config.define_symbols
+ @util.only_unix
@using_curl_config('curl-config-ssl-feature-only')
def test_libcurl_ssl_nss(self):
config = pycurl_setup.ExtensionConfiguration(['',
@@ -163,6 +178,7 @@ specify the SSL backend manually.''', str(e))
assert 'HAVE_CURL_OPENSSL' not in config.define_symbols
assert 'HAVE_CURL_GNUTLS' not in config.define_symbols
+ @util.only_unix
@using_curl_config('curl-config-empty')
def test_libcurl_ssl_unrecognized(self):
config = pycurl_setup.ExtensionConfiguration(['',
@@ -172,6 +188,7 @@ specify the SSL backend manually.''', str(e))
assert 'HAVE_CURL_GNUTLS' not in config.define_symbols
assert 'HAVE_CURL_NSS' not in config.define_symbols
+ @util.only_unix
@using_curl_config('curl-config-ssl-feature-only')
def test_with_ssl_library(self):
config = pycurl_setup.ExtensionConfiguration(['',
@@ -183,6 +200,7 @@ specify the SSL backend manually.''', str(e))
assert 'HAVE_CURL_GNUTLS' not in config.define_symbols
assert 'HAVE_CURL_NSS' not in config.define_symbols
+ @util.only_unix
@using_curl_config('curl-config-ssl-feature-only')
def test_with_openssl_library(self):
config = pycurl_setup.ExtensionConfiguration(['',
@@ -194,6 +212,7 @@ specify the SSL backend manually.''', str(e))
assert 'HAVE_CURL_GNUTLS' not in config.define_symbols
assert 'HAVE_CURL_NSS' not in config.define_symbols
+ @util.only_unix
@using_curl_config('curl-config-ssl-feature-only')
def test_with_gnutls_library(self):
config = pycurl_setup.ExtensionConfiguration(['',
@@ -205,6 +224,7 @@ specify the SSL backend manually.''', str(e))
assert 'HAVE_CURL_OPENSSL' not in config.define_symbols
assert 'HAVE_CURL_NSS' not in config.define_symbols
+ @util.only_unix
@using_curl_config('curl-config-ssl-feature-only')
def test_with_nss_library(self):
config = pycurl_setup.ExtensionConfiguration(['',
@@ -216,6 +236,7 @@ specify the SSL backend manually.''', str(e))
assert 'HAVE_CURL_OPENSSL' not in config.define_symbols
assert 'HAVE_CURL_GNUTLS' not in config.define_symbols
+ @util.only_unix
@using_curl_config('curl-config-empty')
def test_no_ssl_feature_with_libcurl_dll(self):
config = pycurl_setup.ExtensionConfiguration(['',
@@ -225,6 +246,7 @@ specify the SSL backend manually.''', str(e))
assert 'HAVE_CURL_OPENSSL' not in config.define_symbols
assert 'crypto' not in config.libraries
+ @util.only_unix
@using_curl_config('curl-config-empty')
def test_no_ssl_feature_with_ssl(self):
old_stderr = sys.stderr
diff --git a/tests/unset_range_test.py b/tests/unset_range_test.py
index f64e43a..4c1ed2a 100644
--- a/tests/unset_range_test.py
+++ b/tests/unset_range_test.py
@@ -21,7 +21,7 @@ class UnsetRangeTest(unittest.TestCase):
# download bytes 0-9 of the script itself through the file:// protocol
self.read = 0
- self.curl.setopt(pycurl.URL, 'file://' + os.path.abspath(sys.argv[0]))
+ self.curl.setopt(pycurl.URL, 'file://' + os.path.abspath(__file__).replace('\\', '/'))
self.curl.setopt(pycurl.WRITEFUNCTION, write_cb)
self.curl.setopt(pycurl.RANGE, '0-9')
self.curl.perform()
diff --git a/tests/util.py b/tests/util.py
index 3f39891..1a44e83 100644
--- a/tests/util.py
+++ b/tests/util.py
@@ -181,6 +181,18 @@ def only_ipv6(fn):
return decorated
+def only_unix(fn):
+ import nose.plugins.skip
+
+ @functools.wraps(fn)
+ def decorated(*args, **kwargs):
+ if sys.platform == 'win32':
+ raise nose.plugins.skip.SkipTest('Unix only')
+
+ return fn(*args, **kwargs)
+
+ return decorated
+
def guard_unknown_libcurl_option(fn):
'''Converts curl error 48, CURLE_UNKNOWN_OPTION, into a SkipTest
exception. This is meant to be used with tests exercising libcurl
@@ -274,6 +286,5 @@ def with_real_write_file(fn):
@functools.wraps(fn)
def wrapper(*args):
with tempfile.NamedTemporaryFile() as f:
- with open(f.name, 'w+b') as real_f:
- return fn(*(list(args) + [real_f]))
+ return fn(*(list(args) + [f.file]))
return wrapper
diff --git a/tests/write_abort_test.py b/tests/write_abort_test.py
index 4867ade..f125fcb 100644
--- a/tests/write_abort_test.py
+++ b/tests/write_abort_test.py
@@ -27,7 +27,7 @@ class WriteAbortTest(unittest.TestCase):
pass
# download the script itself through the file:// protocol into write_cb
- self.curl.setopt(pycurl.URL, 'file://' + os.path.abspath(sys.argv[0]))
+ self.curl.setopt(pycurl.URL, 'file://' + os.path.abspath(__file__).replace('\\', '/'))
self.curl.setopt(pycurl.WRITEFUNCTION, write_cb)
try:
self.curl.perform()
diff --git a/tests/write_cb_bogus_test.py b/tests/write_cb_bogus_test.py
index d113bc4..2972588 100644
--- a/tests/write_cb_bogus_test.py
+++ b/tests/write_cb_bogus_test.py
@@ -28,7 +28,7 @@ class WriteAbortTest(unittest.TestCase):
def check(self, write_cb):
# download the script itself through the file:// protocol into write_cb
- self.curl.setopt(pycurl.URL, 'file://' + os.path.abspath(sys.argv[0]))
+ self.curl.setopt(pycurl.URL, 'file://' + os.path.abspath(__file__).replace('\\', '/'))
self.curl.setopt(pycurl.WRITEFUNCTION, write_cb)
try:
self.curl.perform()