diff options
author | Jason R. Coombs <jaraco@jaraco.com> | 2015-01-03 02:39:32 -0500 |
---|---|---|
committer | Jason R. Coombs <jaraco@jaraco.com> | 2015-01-03 02:39:32 -0500 |
commit | b1ae370e37f5d03f825c139dbb44fd035cf765e9 (patch) | |
tree | 2724613ba59916c69ff0b077521d053af2d77bfd | |
parent | fcaf08aefcb830fe38e9de9357fa334ac2c6b04f (diff) | |
parent | 79f674c737a72015447c9eac76c344f766c685bb (diff) | |
download | python-setuptools-bitbucket-b1ae370e37f5d03f825c139dbb44fd035cf765e9.tar.gz |
Merge with master
-rw-r--r-- | linkify.py | 2 | ||||
-rw-r--r-- | pkg_resources/__init__.py | 2 | ||||
-rw-r--r-- | pkg_resources/tests/__init__.py | 0 | ||||
-rw-r--r-- | pkg_resources/tests/test_pkg_resources.py (renamed from tests/test_pkg_resources.py) | 0 | ||||
-rw-r--r-- | pkg_resources/tests/test_resources.py (renamed from setuptools/tests/test_resources.py) | 75 | ||||
-rw-r--r-- | setuptools/tests/test_easy_install.py | 70 |
6 files changed, 76 insertions, 73 deletions
@@ -26,7 +26,7 @@ issue_urls = dict( old_setuptools='http://bugs.python.org/setuptools/issue{old_setuptools}', jython='http://bugs.jython.org/issue{jython}', python='http://bugs.python.org/issue{python}', - interop='https://github.com/pypa/interoperability/issues/{interop}', + interop='https://github.com/pypa/interoperability-peps/issues/{interop}', ) diff --git a/pkg_resources/__init__.py b/pkg_resources/__init__.py index ac3807d8..f004315a 100644 --- a/pkg_resources/__init__.py +++ b/pkg_resources/__init__.py @@ -52,6 +52,8 @@ if PY3: else: string_types = str, eval('unicode') +iteritems = (lambda i: i.items()) if PY3 else lambda i: i.iteritems() + # capture these to bypass sandboxing from os import utime try: diff --git a/pkg_resources/tests/__init__.py b/pkg_resources/tests/__init__.py new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/pkg_resources/tests/__init__.py diff --git a/tests/test_pkg_resources.py b/pkg_resources/tests/test_pkg_resources.py index 564d7cec..564d7cec 100644 --- a/tests/test_pkg_resources.py +++ b/pkg_resources/tests/test_pkg_resources.py diff --git a/setuptools/tests/test_resources.py b/pkg_resources/tests/test_resources.py index 465c9343..4d0c7e9f 100644 --- a/setuptools/tests/test_resources.py +++ b/pkg_resources/tests/test_resources.py @@ -1,7 +1,3 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- -# NOTE: the shebang and encoding lines are for TestScriptHeader do not remove - import os import sys import tempfile @@ -16,8 +12,6 @@ from pkg_resources import (parse_requirements, VersionConflict, parse_version, packaging = pkg_resources.packaging -from setuptools.command.easy_install import (get_script_header, is_sh, - nt_quote_arg) import six @@ -214,13 +208,13 @@ class TestEntryPoints: def assertfields(self, ep): assert ep.name == "foo" - assert ep.module_name == "setuptools.tests.test_resources" + assert ep.module_name == "pkg_resources.tests.test_resources" assert ep.attrs == ("TestEntryPoints",) assert ep.extras == ("x",) assert ep.load() is TestEntryPoints assert ( str(ep) == - "foo = setuptools.tests.test_resources:TestEntryPoints [x]" + "foo = pkg_resources.tests.test_resources:TestEntryPoints [x]" ) def setup_method(self, method): @@ -229,13 +223,13 @@ class TestEntryPoints: def testBasics(self): ep = EntryPoint( - "foo", "setuptools.tests.test_resources", ["TestEntryPoints"], + "foo", "pkg_resources.tests.test_resources", ["TestEntryPoints"], ["x"], self.dist ) self.assertfields(ep) def testParse(self): - s = "foo = setuptools.tests.test_resources:TestEntryPoints [x]" + s = "foo = pkg_resources.tests.test_resources:TestEntryPoints [x]" ep = EntryPoint.parse(s, self.dist) self.assertfields(ep) @@ -561,67 +555,6 @@ class TestParsing: ) -class TestScriptHeader: - non_ascii_exe = '/Users/José/bin/python' - exe_with_spaces = r'C:\Program Files\Python33\python.exe' - - def test_get_script_header(self): - if not sys.platform.startswith('java') or not is_sh(sys.executable): - # This test is for non-Jython platforms - expected = '#!%s\n' % nt_quote_arg(os.path.normpath(sys.executable)) - assert get_script_header('#!/usr/local/bin/python') == expected - expected = '#!%s -x\n' % nt_quote_arg(os.path.normpath(sys.executable)) - assert get_script_header('#!/usr/bin/python -x') == expected - candidate = get_script_header('#!/usr/bin/python', - executable=self.non_ascii_exe) - assert candidate == '#!%s -x\n' % self.non_ascii_exe - candidate = get_script_header('#!/usr/bin/python', - executable=self.exe_with_spaces) - assert candidate == '#!"%s"\n' % self.exe_with_spaces - - def test_get_script_header_jython_workaround(self): - # This test doesn't work with Python 3 in some locales - if six.PY3 and os.environ.get("LC_CTYPE") in (None, "C", "POSIX"): - return - - class java: - class lang: - class System: - @staticmethod - def getProperty(property): - return "" - sys.modules["java"] = java - - platform = sys.platform - sys.platform = 'java1.5.0_13' - stdout, stderr = sys.stdout, sys.stderr - try: - # A mock sys.executable that uses a shebang line (this file) - exe = os.path.normpath(os.path.splitext(__file__)[0] + '.py') - assert ( - get_script_header('#!/usr/local/bin/python', executable=exe) - == - '#!/usr/bin/env %s\n' % exe - ) - - # Ensure we generate what is basically a broken shebang line - # when there's options, with a warning emitted - sys.stdout = sys.stderr = six.StringIO() - candidate = get_script_header('#!/usr/bin/python -x', - executable=exe) - assert candidate == '#!%s -x\n' % exe - assert 'Unable to adapt shebang line' in sys.stdout.getvalue() - sys.stdout = sys.stderr = six.StringIO() - candidate = get_script_header('#!/usr/bin/python', - executable=self.non_ascii_exe) - assert candidate == '#!%s -x\n' % self.non_ascii_exe - assert 'Unable to adapt shebang line' in sys.stdout.getvalue() - finally: - del sys.modules["java"] - sys.platform = platform - sys.stdout, sys.stderr = stdout, stderr - - class TestNamespaces: def setup_method(self, method): diff --git a/setuptools/tests/test_easy_install.py b/setuptools/tests/test_easy_install.py index 5e83831d..bc025970 100644 --- a/setuptools/tests/test_easy_install.py +++ b/setuptools/tests/test_easy_install.py @@ -1,3 +1,7 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# NOTE: the shebang and encoding lines are for TestScriptHeader do not remove + """Easy install Tests """ from __future__ import absolute_import @@ -13,6 +17,7 @@ import logging import itertools import io +import six from six.moves import urllib import pytest import mock @@ -20,7 +25,9 @@ import mock from setuptools import sandbox from setuptools.sandbox import run_setup, SandboxViolation from setuptools.command.easy_install import ( - easy_install, fix_jython_executable, get_script_args, nt_quote_arg) + easy_install, fix_jython_executable, get_script_args, nt_quote_arg, + get_script_header, is_sh, +) from setuptools.command.easy_install import PthDistributions from setuptools.command import easy_install as easy_install_pkg from setuptools.dist import Distribution @@ -410,3 +417,64 @@ def make_trivial_sdist(dist_path, setup_py): setup_py_file.size = len(setup_py_bytes.getvalue()) with tarfile_open(dist_path, 'w:gz') as dist: dist.addfile(setup_py_file, fileobj=setup_py_bytes) + + +class TestScriptHeader: + non_ascii_exe = '/Users/José/bin/python' + exe_with_spaces = r'C:\Program Files\Python33\python.exe' + + def test_get_script_header(self): + if not sys.platform.startswith('java') or not is_sh(sys.executable): + # This test is for non-Jython platforms + expected = '#!%s\n' % nt_quote_arg(os.path.normpath(sys.executable)) + assert get_script_header('#!/usr/local/bin/python') == expected + expected = '#!%s -x\n' % nt_quote_arg(os.path.normpath(sys.executable)) + assert get_script_header('#!/usr/bin/python -x') == expected + candidate = get_script_header('#!/usr/bin/python', + executable=self.non_ascii_exe) + assert candidate == '#!%s -x\n' % self.non_ascii_exe + candidate = get_script_header('#!/usr/bin/python', + executable=self.exe_with_spaces) + assert candidate == '#!"%s"\n' % self.exe_with_spaces + + def test_get_script_header_jython_workaround(self): + # This test doesn't work with Python 3 in some locales + if six.PY3 and os.environ.get("LC_CTYPE") in (None, "C", "POSIX"): + return + + class java: + class lang: + class System: + @staticmethod + def getProperty(property): + return "" + sys.modules["java"] = java + + platform = sys.platform + sys.platform = 'java1.5.0_13' + stdout, stderr = sys.stdout, sys.stderr + try: + # A mock sys.executable that uses a shebang line (this file) + exe = os.path.normpath(os.path.splitext(__file__)[0] + '.py') + assert ( + get_script_header('#!/usr/local/bin/python', executable=exe) + == + '#!/usr/bin/env %s\n' % exe + ) + + # Ensure we generate what is basically a broken shebang line + # when there's options, with a warning emitted + sys.stdout = sys.stderr = six.StringIO() + candidate = get_script_header('#!/usr/bin/python -x', + executable=exe) + assert candidate == '#!%s -x\n' % exe + assert 'Unable to adapt shebang line' in sys.stdout.getvalue() + sys.stdout = sys.stderr = six.StringIO() + candidate = get_script_header('#!/usr/bin/python', + executable=self.non_ascii_exe) + assert candidate == '#!%s -x\n' % self.non_ascii_exe + assert 'Unable to adapt shebang line' in sys.stdout.getvalue() + finally: + del sys.modules["java"] + sys.platform = platform + sys.stdout, sys.stderr = stdout, stderr |