diff options
-rw-r--r-- | tests/close_socket_cb_test.py | 6 | ||||
-rw-r--r-- | tests/memory_mgmt_test.py | 7 | ||||
-rw-r--r-- | tests/open_socket_cb_test.py | 1 | ||||
-rw-r--r-- | tests/setup_test.py | 22 | ||||
-rw-r--r-- | tests/unset_range_test.py | 2 | ||||
-rw-r--r-- | tests/util.py | 15 | ||||
-rw-r--r-- | tests/write_abort_test.py | 2 | ||||
-rw-r--r-- | tests/write_cb_bogus_test.py | 2 |
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() |