summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/packaging/tests/support.py9
-rw-r--r--Lib/packaging/tests/test_install.py5
-rw-r--r--Lib/packaging/tests/test_pypi_dist.py5
-rw-r--r--Lib/packaging/tests/test_pypi_simple.py24
-rw-r--r--Misc/NEWS3
5 files changed, 39 insertions, 7 deletions
diff --git a/Lib/packaging/tests/support.py b/Lib/packaging/tests/support.py
index 6d60b9e..66b5583 100644
--- a/Lib/packaging/tests/support.py
+++ b/Lib/packaging/tests/support.py
@@ -253,6 +253,15 @@ def create_distribution(configfiles=()):
return d
+def fake_dec(*args, **kw):
+ """Fake decorator"""
+ def _wrap(func):
+ def __wrap(*args, **kw):
+ return func(*args, **kw)
+ return __wrap
+ return _wrap
+
+
try:
from test.support import skip_unless_symlink
except ImportError:
diff --git a/Lib/packaging/tests/test_install.py b/Lib/packaging/tests/test_install.py
index 01c3dcf..c0924bf 100644
--- a/Lib/packaging/tests/test_install.py
+++ b/Lib/packaging/tests/test_install.py
@@ -6,13 +6,14 @@ from packaging import install
from packaging.pypi.xmlrpc import Client
from packaging.metadata import Metadata
-from packaging.tests.support import LoggingCatcher, TempdirManager, unittest
+from packaging.tests.support import (LoggingCatcher, TempdirManager, unittest,
+ fake_dec)
try:
import threading
from packaging.tests.pypi_server import use_xmlrpc_server
except ImportError:
threading = None
- use_xmlrpc_server = None
+ use_xmlrpc_server = fake_dec
class InstalledDist:
diff --git a/Lib/packaging/tests/test_pypi_dist.py b/Lib/packaging/tests/test_pypi_dist.py
index b7f4e98..0c88c9b 100644
--- a/Lib/packaging/tests/test_pypi_dist.py
+++ b/Lib/packaging/tests/test_pypi_dist.py
@@ -7,12 +7,13 @@ from packaging.pypi.dist import (ReleaseInfo, ReleasesList, DistInfo,
from packaging.pypi.errors import HashDoesNotMatch, UnsupportedHashName
from packaging.tests import unittest
-from packaging.tests.support import TempdirManager, requires_zlib
+from packaging.tests.support import TempdirManager, requires_zlib, fake_dec
try:
import threading
from packaging.tests.pypi_server import use_pypi_server
except ImportError:
- threading = use_pypi_server = None
+ threading = None
+ use_pypi_server = fake_dec
def Dist(*args, **kwargs):
diff --git a/Lib/packaging/tests/test_pypi_simple.py b/Lib/packaging/tests/test_pypi_simple.py
index d50e3f4..bd50d01 100644
--- a/Lib/packaging/tests/test_pypi_simple.py
+++ b/Lib/packaging/tests/test_pypi_simple.py
@@ -10,9 +10,19 @@ import urllib.request
from packaging.pypi.simple import Crawler
from packaging.tests import unittest
-from packaging.tests.support import TempdirManager, LoggingCatcher
-from packaging.tests.pypi_server import (use_pypi_server, PyPIServer,
- PYPI_DEFAULT_STATIC_PATH)
+from packaging.tests.support import (TempdirManager, LoggingCatcher,
+ fake_dec)
+
+try:
+ import _thread
+ from packaging.tests.pypi_server import (use_pypi_server, PyPIServer,
+ PYPI_DEFAULT_STATIC_PATH)
+except ImportError:
+ _thread = None
+ use_pypi_server = fake_dec
+ PYPI_DEFAULT_STATIC_PATH = os.path.join(
+ os.path.dirname(os.path.abspath(__file__)), 'pypiserver')
+
class SimpleCrawlerTestCase(TempdirManager,
@@ -28,6 +38,7 @@ class SimpleCrawlerTestCase(TempdirManager,
return Crawler(server.full_address + base_url, *args,
**kwargs)
+ @unittest.skipIf(_thread is None, 'needs threads')
@use_pypi_server()
def test_bad_urls(self, server):
crawler = Crawler()
@@ -84,6 +95,7 @@ class SimpleCrawlerTestCase(TempdirManager,
'http://www.famfamfam.com/">')
crawler._process_url(url, page)
+ @unittest.skipIf(_thread is None, 'needs threads')
@use_pypi_server("test_found_links")
def test_found_links(self, server):
# Browse the index, asking for a specified release version
@@ -139,6 +151,7 @@ class SimpleCrawlerTestCase(TempdirManager,
self.assertTrue(
crawler._is_browsable("http://pypi.example.org/a/path"))
+ @unittest.skipIf(_thread is None, 'needs threads')
@use_pypi_server("with_externals")
def test_follow_externals(self, server):
# Include external pages
@@ -149,6 +162,7 @@ class SimpleCrawlerTestCase(TempdirManager,
self.assertIn(server.full_address + "/external/external.html",
crawler._processed_urls)
+ @unittest.skipIf(_thread is None, 'needs threads')
@use_pypi_server("with_real_externals")
def test_restrict_hosts(self, server):
# Only use a list of allowed hosts is possible
@@ -159,6 +173,7 @@ class SimpleCrawlerTestCase(TempdirManager,
self.assertNotIn(server.full_address + "/external/external.html",
crawler._processed_urls)
+ @unittest.skipIf(_thread is None, 'needs threads')
@use_pypi_server(static_filesystem_paths=["with_externals"],
static_uri_paths=["simple", "external"])
def test_links_priority(self, server):
@@ -192,6 +207,7 @@ class SimpleCrawlerTestCase(TempdirManager,
releases[0].dists['sdist'].url['hashval'])
self.assertEqual('md5', releases[0].dists['sdist'].url['hashname'])
+ @unittest.skipIf(_thread is None, 'needs threads')
@use_pypi_server(static_filesystem_paths=["with_norel_links"],
static_uri_paths=["simple", "external"])
def test_not_scan_all_links(self, server):
@@ -217,6 +233,7 @@ class SimpleCrawlerTestCase(TempdirManager,
self.assertIn("%s/foobar-2.0.tar.gz" % server.full_address,
crawler._processed_urls) # linked from external homepage (rel)
+ @unittest.skipIf(_thread is None, 'needs threads')
def test_uses_mirrors(self):
# When the main repository seems down, try using the given mirrors"""
server = PyPIServer("foo_bar_baz")
@@ -314,6 +331,7 @@ class SimpleCrawlerTestCase(TempdirManager,
self.assertIn('http://example.org/some/simpleurl', found_links)
self.assertIn('http://example.org/some/download', found_links)
+ @unittest.skipIf(_thread is None, 'needs threads')
@use_pypi_server("project_list")
def test_search_projects(self, server):
# we can search the index for some projects, on their names
diff --git a/Misc/NEWS b/Misc/NEWS
index 60209bf..b1d26dd 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -161,6 +161,9 @@ Core and Builtins
Library
-------
+- Issue #12180: Fixed a few remaining errors in test_packaging when no
+ threading.
+
- Issue #12175: RawIOBase.readall() now returns None if read() returns None.
- Issue #12175: FileIO.readall() now raises a ValueError instead of an IOError