mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-05-22 21:32:31 +00:00
Improve Python tree-shaking
This commit is contained in:
parent
5bb2275788
commit
4f41f2184d
169 changed files with 4182 additions and 2411 deletions
10
third_party/python/Lib/test/support/__init__.py
vendored
10
third_party/python/Lib/test/support/__init__.py
vendored
|
@ -471,8 +471,8 @@ def _is_gui_available():
|
|||
if sys.platform.startswith('win'):
|
||||
# if Python is running as a service (such as the buildbot service),
|
||||
# gui interaction may be disallowed
|
||||
import ctypes
|
||||
import ctypes.wintypes
|
||||
# import ctypes
|
||||
# import ctypes.wintypes
|
||||
UOI_FLAGS = 1
|
||||
WSF_VISIBLE = 0x0001
|
||||
class USEROBJECTFLAGS(ctypes.Structure):
|
||||
|
@ -501,8 +501,8 @@ def _is_gui_available():
|
|||
# process not running under the same user id as the current console
|
||||
# user. To avoid that, raise an exception if the window manager
|
||||
# connection is not available.
|
||||
from ctypes import cdll, c_int, pointer, Structure
|
||||
from ctypes.util import find_library
|
||||
# from ctypes import cdll, c_int, pointer, Structure
|
||||
# from ctypes.util import find_library
|
||||
|
||||
app_services = cdll.LoadLibrary(find_library("ApplicationServices"))
|
||||
|
||||
|
@ -2707,7 +2707,7 @@ def missing_compiler_executable(cmd_names=[]):
|
|||
missing.
|
||||
|
||||
"""
|
||||
from distutils import ccompiler, sysconfig, spawn
|
||||
# from distutils import ccompiler, sysconfig, spawn
|
||||
compiler = ccompiler.new_compiler()
|
||||
sysconfig.customize_compiler(compiler)
|
||||
for name in compiler.executables:
|
||||
|
|
22
third_party/python/Lib/test/test_compile.py
vendored
22
third_party/python/Lib/test/test_compile.py
vendored
|
@ -415,18 +415,18 @@ if 1:
|
|||
s %= ', '.join('a%d:%d' % (i,i) for i in range(255))
|
||||
compile(s, '?', 'exec')
|
||||
|
||||
def test_mangling(self):
|
||||
class A:
|
||||
def f():
|
||||
__mangled = 1
|
||||
__not_mangled__ = 2
|
||||
import __mangled_mod
|
||||
import __package__.module
|
||||
# def test_mangling(self):
|
||||
# class A:
|
||||
# def f():
|
||||
# __mangled = 1
|
||||
# __not_mangled__ = 2
|
||||
# import __mangled_mod
|
||||
# import __package__.module
|
||||
|
||||
self.assertIn("_A__mangled", A.f.__code__.co_varnames)
|
||||
self.assertIn("__not_mangled__", A.f.__code__.co_varnames)
|
||||
self.assertIn("_A__mangled_mod", A.f.__code__.co_varnames)
|
||||
self.assertIn("__package__", A.f.__code__.co_varnames)
|
||||
# self.assertIn("_A__mangled", A.f.__code__.co_varnames)
|
||||
# self.assertIn("__not_mangled__", A.f.__code__.co_varnames)
|
||||
# self.assertIn("_A__mangled_mod", A.f.__code__.co_varnames)
|
||||
# self.assertIn("__package__", A.f.__code__.co_varnames)
|
||||
|
||||
def test_compile_ast(self):
|
||||
fname = __file__
|
||||
|
|
|
@ -5,7 +5,8 @@ import email
|
|||
from email.message import Message
|
||||
from email._policybase import compat32
|
||||
from test.support import load_package_tests
|
||||
from test.test_email import __file__ as landmark
|
||||
|
||||
landmark = __file__
|
||||
|
||||
# Load all tests in package
|
||||
def load_tests(*args):
|
||||
|
|
|
@ -42,6 +42,7 @@ from email import quoprimime
|
|||
|
||||
from test.support import unlink, start_threads
|
||||
from test.test_email import openfile, TestEmailBase
|
||||
from encodings import iso2022_jp
|
||||
|
||||
# These imports are documented to work, but we are testing them using a
|
||||
# different path, so we import them here just to make sure they are importable.
|
||||
|
|
310
third_party/python/Lib/test/test_ensurepip.py
vendored
310
third_party/python/Lib/test/test_ensurepip.py
vendored
|
@ -1,310 +0,0 @@
|
|||
import unittest
|
||||
import unittest.mock
|
||||
import test.support
|
||||
import os
|
||||
import os.path
|
||||
import contextlib
|
||||
import sys
|
||||
|
||||
import ensurepip
|
||||
import ensurepip._uninstall
|
||||
|
||||
|
||||
class TestEnsurePipVersion(unittest.TestCase):
|
||||
|
||||
def test_returns_version(self):
|
||||
self.assertEqual(ensurepip._PIP_VERSION, ensurepip.version())
|
||||
|
||||
class EnsurepipMixin:
|
||||
|
||||
def setUp(self):
|
||||
run_pip_patch = unittest.mock.patch("ensurepip._run_pip")
|
||||
self.run_pip = run_pip_patch.start()
|
||||
self.run_pip.return_value = 0
|
||||
self.addCleanup(run_pip_patch.stop)
|
||||
|
||||
# Avoid side effects on the actual os module
|
||||
real_devnull = os.devnull
|
||||
os_patch = unittest.mock.patch("ensurepip.os")
|
||||
patched_os = os_patch.start()
|
||||
self.addCleanup(os_patch.stop)
|
||||
patched_os.devnull = real_devnull
|
||||
patched_os.path = os.path
|
||||
self.os_environ = patched_os.environ = os.environ.copy()
|
||||
|
||||
|
||||
class TestBootstrap(EnsurepipMixin, unittest.TestCase):
|
||||
|
||||
def test_basic_bootstrapping(self):
|
||||
ensurepip.bootstrap()
|
||||
|
||||
self.run_pip.assert_called_once_with(
|
||||
[
|
||||
"install", "--no-index", "--find-links",
|
||||
unittest.mock.ANY, "setuptools", "pip",
|
||||
],
|
||||
unittest.mock.ANY,
|
||||
)
|
||||
|
||||
additional_paths = self.run_pip.call_args[0][1]
|
||||
self.assertEqual(len(additional_paths), 2)
|
||||
|
||||
def test_bootstrapping_with_root(self):
|
||||
ensurepip.bootstrap(root="/foo/bar/")
|
||||
|
||||
self.run_pip.assert_called_once_with(
|
||||
[
|
||||
"install", "--no-index", "--find-links",
|
||||
unittest.mock.ANY, "--root", "/foo/bar/",
|
||||
"setuptools", "pip",
|
||||
],
|
||||
unittest.mock.ANY,
|
||||
)
|
||||
|
||||
def test_bootstrapping_with_user(self):
|
||||
ensurepip.bootstrap(user=True)
|
||||
|
||||
self.run_pip.assert_called_once_with(
|
||||
[
|
||||
"install", "--no-index", "--find-links",
|
||||
unittest.mock.ANY, "--user", "setuptools", "pip",
|
||||
],
|
||||
unittest.mock.ANY,
|
||||
)
|
||||
|
||||
def test_bootstrapping_with_upgrade(self):
|
||||
ensurepip.bootstrap(upgrade=True)
|
||||
|
||||
self.run_pip.assert_called_once_with(
|
||||
[
|
||||
"install", "--no-index", "--find-links",
|
||||
unittest.mock.ANY, "--upgrade", "setuptools", "pip",
|
||||
],
|
||||
unittest.mock.ANY,
|
||||
)
|
||||
|
||||
def test_bootstrapping_with_verbosity_1(self):
|
||||
ensurepip.bootstrap(verbosity=1)
|
||||
|
||||
self.run_pip.assert_called_once_with(
|
||||
[
|
||||
"install", "--no-index", "--find-links",
|
||||
unittest.mock.ANY, "-v", "setuptools", "pip",
|
||||
],
|
||||
unittest.mock.ANY,
|
||||
)
|
||||
|
||||
def test_bootstrapping_with_verbosity_2(self):
|
||||
ensurepip.bootstrap(verbosity=2)
|
||||
|
||||
self.run_pip.assert_called_once_with(
|
||||
[
|
||||
"install", "--no-index", "--find-links",
|
||||
unittest.mock.ANY, "-vv", "setuptools", "pip",
|
||||
],
|
||||
unittest.mock.ANY,
|
||||
)
|
||||
|
||||
def test_bootstrapping_with_verbosity_3(self):
|
||||
ensurepip.bootstrap(verbosity=3)
|
||||
|
||||
self.run_pip.assert_called_once_with(
|
||||
[
|
||||
"install", "--no-index", "--find-links",
|
||||
unittest.mock.ANY, "-vvv", "setuptools", "pip",
|
||||
],
|
||||
unittest.mock.ANY,
|
||||
)
|
||||
|
||||
def test_bootstrapping_with_regular_install(self):
|
||||
ensurepip.bootstrap()
|
||||
self.assertEqual(self.os_environ["ENSUREPIP_OPTIONS"], "install")
|
||||
|
||||
def test_bootstrapping_with_alt_install(self):
|
||||
ensurepip.bootstrap(altinstall=True)
|
||||
self.assertEqual(self.os_environ["ENSUREPIP_OPTIONS"], "altinstall")
|
||||
|
||||
def test_bootstrapping_with_default_pip(self):
|
||||
ensurepip.bootstrap(default_pip=True)
|
||||
self.assertNotIn("ENSUREPIP_OPTIONS", self.os_environ)
|
||||
|
||||
def test_altinstall_default_pip_conflict(self):
|
||||
with self.assertRaises(ValueError):
|
||||
ensurepip.bootstrap(altinstall=True, default_pip=True)
|
||||
self.assertFalse(self.run_pip.called)
|
||||
|
||||
def test_pip_environment_variables_removed(self):
|
||||
# ensurepip deliberately ignores all pip environment variables
|
||||
# See http://bugs.python.org/issue19734 for details
|
||||
self.os_environ["PIP_THIS_SHOULD_GO_AWAY"] = "test fodder"
|
||||
ensurepip.bootstrap()
|
||||
self.assertNotIn("PIP_THIS_SHOULD_GO_AWAY", self.os_environ)
|
||||
|
||||
def test_pip_config_file_disabled(self):
|
||||
# ensurepip deliberately ignores the pip config file
|
||||
# See http://bugs.python.org/issue20053 for details
|
||||
ensurepip.bootstrap()
|
||||
self.assertEqual(self.os_environ["PIP_CONFIG_FILE"], os.devnull)
|
||||
|
||||
@contextlib.contextmanager
|
||||
def fake_pip(version=ensurepip._PIP_VERSION):
|
||||
if version is None:
|
||||
pip = None
|
||||
else:
|
||||
class FakePip():
|
||||
__version__ = version
|
||||
pip = FakePip()
|
||||
sentinel = object()
|
||||
orig_pip = sys.modules.get("pip", sentinel)
|
||||
sys.modules["pip"] = pip
|
||||
try:
|
||||
yield pip
|
||||
finally:
|
||||
if orig_pip is sentinel:
|
||||
del sys.modules["pip"]
|
||||
else:
|
||||
sys.modules["pip"] = orig_pip
|
||||
|
||||
class TestUninstall(EnsurepipMixin, unittest.TestCase):
|
||||
|
||||
def test_uninstall_skipped_when_not_installed(self):
|
||||
with fake_pip(None):
|
||||
ensurepip._uninstall_helper()
|
||||
self.assertFalse(self.run_pip.called)
|
||||
|
||||
def test_uninstall_skipped_with_warning_for_wrong_version(self):
|
||||
with fake_pip("not a valid version"):
|
||||
with test.support.captured_stderr() as stderr:
|
||||
ensurepip._uninstall_helper()
|
||||
warning = stderr.getvalue().strip()
|
||||
self.assertIn("only uninstall a matching version", warning)
|
||||
self.assertFalse(self.run_pip.called)
|
||||
|
||||
|
||||
def test_uninstall(self):
|
||||
with fake_pip():
|
||||
ensurepip._uninstall_helper()
|
||||
|
||||
self.run_pip.assert_called_once_with(
|
||||
[
|
||||
"uninstall", "-y", "--disable-pip-version-check", "pip",
|
||||
"setuptools",
|
||||
]
|
||||
)
|
||||
|
||||
def test_uninstall_with_verbosity_1(self):
|
||||
with fake_pip():
|
||||
ensurepip._uninstall_helper(verbosity=1)
|
||||
|
||||
self.run_pip.assert_called_once_with(
|
||||
[
|
||||
"uninstall", "-y", "--disable-pip-version-check", "-v", "pip",
|
||||
"setuptools",
|
||||
]
|
||||
)
|
||||
|
||||
def test_uninstall_with_verbosity_2(self):
|
||||
with fake_pip():
|
||||
ensurepip._uninstall_helper(verbosity=2)
|
||||
|
||||
self.run_pip.assert_called_once_with(
|
||||
[
|
||||
"uninstall", "-y", "--disable-pip-version-check", "-vv", "pip",
|
||||
"setuptools",
|
||||
]
|
||||
)
|
||||
|
||||
def test_uninstall_with_verbosity_3(self):
|
||||
with fake_pip():
|
||||
ensurepip._uninstall_helper(verbosity=3)
|
||||
|
||||
self.run_pip.assert_called_once_with(
|
||||
[
|
||||
"uninstall", "-y", "--disable-pip-version-check", "-vvv",
|
||||
"pip", "setuptools",
|
||||
]
|
||||
)
|
||||
|
||||
def test_pip_environment_variables_removed(self):
|
||||
# ensurepip deliberately ignores all pip environment variables
|
||||
# See http://bugs.python.org/issue19734 for details
|
||||
self.os_environ["PIP_THIS_SHOULD_GO_AWAY"] = "test fodder"
|
||||
with fake_pip():
|
||||
ensurepip._uninstall_helper()
|
||||
self.assertNotIn("PIP_THIS_SHOULD_GO_AWAY", self.os_environ)
|
||||
|
||||
def test_pip_config_file_disabled(self):
|
||||
# ensurepip deliberately ignores the pip config file
|
||||
# See http://bugs.python.org/issue20053 for details
|
||||
with fake_pip():
|
||||
ensurepip._uninstall_helper()
|
||||
self.assertEqual(self.os_environ["PIP_CONFIG_FILE"], os.devnull)
|
||||
|
||||
|
||||
# Basic testing of the main functions and their argument parsing
|
||||
|
||||
EXPECTED_VERSION_OUTPUT = "pip " + ensurepip._PIP_VERSION
|
||||
|
||||
class TestBootstrappingMainFunction(EnsurepipMixin, unittest.TestCase):
|
||||
|
||||
def test_bootstrap_version(self):
|
||||
with test.support.captured_stdout() as stdout:
|
||||
with self.assertRaises(SystemExit):
|
||||
ensurepip._main(["--version"])
|
||||
result = stdout.getvalue().strip()
|
||||
self.assertEqual(result, EXPECTED_VERSION_OUTPUT)
|
||||
self.assertFalse(self.run_pip.called)
|
||||
|
||||
def test_basic_bootstrapping(self):
|
||||
exit_code = ensurepip._main([])
|
||||
|
||||
self.run_pip.assert_called_once_with(
|
||||
[
|
||||
"install", "--no-index", "--find-links",
|
||||
unittest.mock.ANY, "setuptools", "pip",
|
||||
],
|
||||
unittest.mock.ANY,
|
||||
)
|
||||
|
||||
additional_paths = self.run_pip.call_args[0][1]
|
||||
self.assertEqual(len(additional_paths), 2)
|
||||
self.assertEqual(exit_code, 0)
|
||||
|
||||
def test_bootstrapping_error_code(self):
|
||||
self.run_pip.return_value = 2
|
||||
exit_code = ensurepip._main([])
|
||||
self.assertEqual(exit_code, 2)
|
||||
|
||||
|
||||
class TestUninstallationMainFunction(EnsurepipMixin, unittest.TestCase):
|
||||
|
||||
def test_uninstall_version(self):
|
||||
with test.support.captured_stdout() as stdout:
|
||||
with self.assertRaises(SystemExit):
|
||||
ensurepip._uninstall._main(["--version"])
|
||||
result = stdout.getvalue().strip()
|
||||
self.assertEqual(result, EXPECTED_VERSION_OUTPUT)
|
||||
self.assertFalse(self.run_pip.called)
|
||||
|
||||
def test_basic_uninstall(self):
|
||||
with fake_pip():
|
||||
exit_code = ensurepip._uninstall._main([])
|
||||
|
||||
self.run_pip.assert_called_once_with(
|
||||
[
|
||||
"uninstall", "-y", "--disable-pip-version-check", "pip",
|
||||
"setuptools",
|
||||
]
|
||||
)
|
||||
|
||||
self.assertEqual(exit_code, 0)
|
||||
|
||||
def test_uninstall_error_code(self):
|
||||
with fake_pip():
|
||||
self.run_pip.return_value = 2
|
||||
exit_code = ensurepip._uninstall._main([])
|
||||
self.assertEqual(exit_code, 2)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
64
third_party/python/Lib/test/test_future.py
vendored
64
third_party/python/Lib/test/test_future.py
vendored
|
@ -33,45 +33,45 @@ class FutureTest(unittest.TestCase):
|
|||
with support.CleanImport('test_future3'):
|
||||
from test import test_future3
|
||||
|
||||
def test_badfuture3(self):
|
||||
with self.assertRaises(SyntaxError) as cm:
|
||||
from test import badsyntax_future3
|
||||
self.check_syntax_error(cm.exception, "badsyntax_future3", 3)
|
||||
# def test_badfuture3(self):
|
||||
# with self.assertRaises(SyntaxError) as cm:
|
||||
# from test import badsyntax_future3
|
||||
# self.check_syntax_error(cm.exception, "badsyntax_future3", 3)
|
||||
|
||||
def test_badfuture4(self):
|
||||
with self.assertRaises(SyntaxError) as cm:
|
||||
from test import badsyntax_future4
|
||||
self.check_syntax_error(cm.exception, "badsyntax_future4", 3)
|
||||
# def test_badfuture4(self):
|
||||
# with self.assertRaises(SyntaxError) as cm:
|
||||
# from test import badsyntax_future4
|
||||
# self.check_syntax_error(cm.exception, "badsyntax_future4", 3)
|
||||
|
||||
def test_badfuture5(self):
|
||||
with self.assertRaises(SyntaxError) as cm:
|
||||
from test import badsyntax_future5
|
||||
self.check_syntax_error(cm.exception, "badsyntax_future5", 4)
|
||||
# def test_badfuture5(self):
|
||||
# with self.assertRaises(SyntaxError) as cm:
|
||||
# from test import badsyntax_future5
|
||||
# self.check_syntax_error(cm.exception, "badsyntax_future5", 4)
|
||||
|
||||
def test_badfuture6(self):
|
||||
with self.assertRaises(SyntaxError) as cm:
|
||||
from test import badsyntax_future6
|
||||
self.check_syntax_error(cm.exception, "badsyntax_future6", 3)
|
||||
# def test_badfuture6(self):
|
||||
# with self.assertRaises(SyntaxError) as cm:
|
||||
# from test import badsyntax_future6
|
||||
# self.check_syntax_error(cm.exception, "badsyntax_future6", 3)
|
||||
|
||||
def test_badfuture7(self):
|
||||
with self.assertRaises(SyntaxError) as cm:
|
||||
from test import badsyntax_future7
|
||||
self.check_syntax_error(cm.exception, "badsyntax_future7", 3, 53)
|
||||
# def test_badfuture7(self):
|
||||
# with self.assertRaises(SyntaxError) as cm:
|
||||
# from test import badsyntax_future7
|
||||
# self.check_syntax_error(cm.exception, "badsyntax_future7", 3, 53)
|
||||
|
||||
def test_badfuture8(self):
|
||||
with self.assertRaises(SyntaxError) as cm:
|
||||
from test import badsyntax_future8
|
||||
self.check_syntax_error(cm.exception, "badsyntax_future8", 3)
|
||||
# def test_badfuture8(self):
|
||||
# with self.assertRaises(SyntaxError) as cm:
|
||||
# from test import badsyntax_future8
|
||||
# self.check_syntax_error(cm.exception, "badsyntax_future8", 3)
|
||||
|
||||
def test_badfuture9(self):
|
||||
with self.assertRaises(SyntaxError) as cm:
|
||||
from test import badsyntax_future9
|
||||
self.check_syntax_error(cm.exception, "badsyntax_future9", 3, 0)
|
||||
# def test_badfuture9(self):
|
||||
# with self.assertRaises(SyntaxError) as cm:
|
||||
# from test import badsyntax_future9
|
||||
# self.check_syntax_error(cm.exception, "badsyntax_future9", 3, 0)
|
||||
|
||||
def test_badfuture10(self):
|
||||
with self.assertRaises(SyntaxError) as cm:
|
||||
from test import badsyntax_future10
|
||||
self.check_syntax_error(cm.exception, "badsyntax_future10", 3, 0)
|
||||
# def test_badfuture10(self):
|
||||
# with self.assertRaises(SyntaxError) as cm:
|
||||
# from test import badsyntax_future10
|
||||
# self.check_syntax_error(cm.exception, "badsyntax_future10", 3, 0)
|
||||
|
||||
def test_parserhack(self):
|
||||
# test that the parser.c::future_hack function works as expected
|
||||
|
|
16
third_party/python/Lib/test/test_httplib.py
vendored
16
third_party/python/Lib/test/test_httplib.py
vendored
|
@ -1623,7 +1623,7 @@ class HTTPSTest(TestCase):
|
|||
self.skipTest('ssl support required')
|
||||
|
||||
def make_server(self, certfile):
|
||||
from test.ssl_servers import make_https_server
|
||||
# from test.ssl_servers import make_https_server
|
||||
return make_https_server(self, certfile=certfile)
|
||||
|
||||
def test_attributes(self):
|
||||
|
@ -1633,7 +1633,7 @@ class HTTPSTest(TestCase):
|
|||
|
||||
def test_networked(self):
|
||||
# Default settings: requires a valid cert from a trusted CA
|
||||
import ssl
|
||||
# import ssl
|
||||
support.requires('network')
|
||||
with support.transient_internet('self-signed.pythontest.net'):
|
||||
h = client.HTTPSConnection('self-signed.pythontest.net', 443)
|
||||
|
@ -1643,7 +1643,7 @@ class HTTPSTest(TestCase):
|
|||
|
||||
def test_networked_noverification(self):
|
||||
# Switch off cert verification
|
||||
import ssl
|
||||
# import ssl
|
||||
support.requires('network')
|
||||
with support.transient_internet('self-signed.pythontest.net'):
|
||||
context = ssl._create_unverified_context()
|
||||
|
@ -1670,7 +1670,7 @@ class HTTPSTest(TestCase):
|
|||
|
||||
def test_networked_good_cert(self):
|
||||
# We feed the server's cert as a validating cert
|
||||
import ssl
|
||||
# import ssl
|
||||
support.requires('network')
|
||||
with support.transient_internet('self-signed.pythontest.net'):
|
||||
context = ssl.SSLContext(ssl.PROTOCOL_TLS)
|
||||
|
@ -1686,7 +1686,7 @@ class HTTPSTest(TestCase):
|
|||
|
||||
def test_networked_bad_cert(self):
|
||||
# We feed a "CA" cert that is unrelated to the server's cert
|
||||
import ssl
|
||||
# import ssl
|
||||
support.requires('network')
|
||||
with support.transient_internet('self-signed.pythontest.net'):
|
||||
context = ssl.SSLContext(ssl.PROTOCOL_TLS)
|
||||
|
@ -1699,7 +1699,7 @@ class HTTPSTest(TestCase):
|
|||
|
||||
def test_local_unknown_cert(self):
|
||||
# The custom cert isn't known to the default trust bundle
|
||||
import ssl
|
||||
# import ssl
|
||||
server = self.make_server(CERT_localhost)
|
||||
h = client.HTTPSConnection('localhost', server.port)
|
||||
with self.assertRaises(ssl.SSLError) as exc_info:
|
||||
|
@ -1708,7 +1708,7 @@ class HTTPSTest(TestCase):
|
|||
|
||||
def test_local_good_hostname(self):
|
||||
# The (valid) cert validates the HTTP hostname
|
||||
import ssl
|
||||
# import ssl
|
||||
server = self.make_server(CERT_localhost)
|
||||
context = ssl.SSLContext(ssl.PROTOCOL_TLS)
|
||||
context.verify_mode = ssl.CERT_REQUIRED
|
||||
|
@ -1722,7 +1722,7 @@ class HTTPSTest(TestCase):
|
|||
|
||||
def test_local_bad_hostname(self):
|
||||
# The (valid) cert doesn't validate the HTTP hostname
|
||||
import ssl
|
||||
# import ssl
|
||||
server = self.make_server(CERT_fakehostname)
|
||||
context = ssl.SSLContext(ssl.PROTOCOL_TLS)
|
||||
context.verify_mode = ssl.CERT_REQUIRED
|
||||
|
|
|
@ -7,6 +7,7 @@ from test import support
|
|||
from test.support import TESTFN
|
||||
import unittest, io, codecs, sys
|
||||
import _multibytecodec
|
||||
from encodings import iso2022_jp
|
||||
|
||||
ALL_CJKENCODINGS = [
|
||||
# _codecs_cn
|
||||
|
|
357
third_party/python/Lib/test/test_os.py
vendored
357
third_party/python/Lib/test/test_os.py
vendored
|
@ -637,7 +637,7 @@ class UtimeTests(unittest.TestCase):
|
|||
def get_file_system(self, path):
|
||||
if sys.platform == 'win32':
|
||||
root = os.path.splitdrive(os.path.abspath(path))[0] + '\\'
|
||||
import ctypes
|
||||
# import ctypes
|
||||
kernel32 = ctypes.windll.kernel32
|
||||
buf = ctypes.create_unicode_buffer("", 100)
|
||||
ok = kernel32.GetVolumeInformationW(root, None, 0,
|
||||
|
@ -1915,361 +1915,6 @@ class Pep383Tests(unittest.TestCase):
|
|||
for fn in self.unicodefn:
|
||||
os.stat(os.path.join(self.dir, fn))
|
||||
|
||||
@unittest.skipUnless(sys.platform == "win32", "Win32 specific tests")
|
||||
class Win32KillTests(unittest.TestCase):
|
||||
def _kill(self, sig):
|
||||
# Start sys.executable as a subprocess and communicate from the
|
||||
# subprocess to the parent that the interpreter is ready. When it
|
||||
# becomes ready, send *sig* via os.kill to the subprocess and check
|
||||
# that the return code is equal to *sig*.
|
||||
import ctypes
|
||||
from ctypes import wintypes
|
||||
import msvcrt
|
||||
|
||||
# Since we can't access the contents of the process' stdout until the
|
||||
# process has exited, use PeekNamedPipe to see what's inside stdout
|
||||
# without waiting. This is done so we can tell that the interpreter
|
||||
# is started and running at a point where it could handle a signal.
|
||||
PeekNamedPipe = ctypes.windll.kernel32.PeekNamedPipe
|
||||
PeekNamedPipe.restype = wintypes.BOOL
|
||||
PeekNamedPipe.argtypes = (wintypes.HANDLE, # Pipe handle
|
||||
ctypes.POINTER(ctypes.c_char), # stdout buf
|
||||
wintypes.DWORD, # Buffer size
|
||||
ctypes.POINTER(wintypes.DWORD), # bytes read
|
||||
ctypes.POINTER(wintypes.DWORD), # bytes avail
|
||||
ctypes.POINTER(wintypes.DWORD)) # bytes left
|
||||
msg = "running"
|
||||
proc = subprocess.Popen([sys.executable, "-c",
|
||||
"import sys;"
|
||||
"sys.stdout.write('{}');"
|
||||
"sys.stdout.flush();"
|
||||
"input()".format(msg)],
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE,
|
||||
stdin=subprocess.PIPE)
|
||||
self.addCleanup(proc.stdout.close)
|
||||
self.addCleanup(proc.stderr.close)
|
||||
self.addCleanup(proc.stdin.close)
|
||||
|
||||
count, max = 0, 100
|
||||
while count < max and proc.poll() is None:
|
||||
# Create a string buffer to store the result of stdout from the pipe
|
||||
buf = ctypes.create_string_buffer(len(msg))
|
||||
# Obtain the text currently in proc.stdout
|
||||
# Bytes read/avail/left are left as NULL and unused
|
||||
rslt = PeekNamedPipe(msvcrt.get_osfhandle(proc.stdout.fileno()),
|
||||
buf, ctypes.sizeof(buf), None, None, None)
|
||||
self.assertNotEqual(rslt, 0, "PeekNamedPipe failed")
|
||||
if buf.value:
|
||||
self.assertEqual(msg, buf.value.decode())
|
||||
break
|
||||
time.sleep(0.1)
|
||||
count += 1
|
||||
else:
|
||||
self.fail("Did not receive communication from the subprocess")
|
||||
|
||||
os.kill(proc.pid, sig)
|
||||
self.assertEqual(proc.wait(), sig)
|
||||
|
||||
def test_kill_sigterm(self):
|
||||
# SIGTERM doesn't mean anything special, but make sure it works
|
||||
self._kill(signal.SIGTERM)
|
||||
|
||||
def test_kill_int(self):
|
||||
# os.kill on Windows can take an int which gets set as the exit code
|
||||
self._kill(100)
|
||||
|
||||
def _kill_with_event(self, event, name):
|
||||
tagname = "test_os_%s" % uuid.uuid1()
|
||||
m = mmap.mmap(-1, 1, tagname)
|
||||
m[0] = 0
|
||||
# Run a script which has console control handling enabled.
|
||||
proc = subprocess.Popen([sys.executable,
|
||||
os.path.join(os.path.dirname(__file__),
|
||||
"win_console_handler.py"), tagname],
|
||||
creationflags=subprocess.CREATE_NEW_PROCESS_GROUP)
|
||||
# Let the interpreter startup before we send signals. See #3137.
|
||||
count, max = 0, 100
|
||||
while count < max and proc.poll() is None:
|
||||
if m[0] == 1:
|
||||
break
|
||||
time.sleep(0.1)
|
||||
count += 1
|
||||
else:
|
||||
# Forcefully kill the process if we weren't able to signal it.
|
||||
os.kill(proc.pid, signal.SIGINT)
|
||||
self.fail("Subprocess didn't finish initialization")
|
||||
os.kill(proc.pid, event)
|
||||
# proc.send_signal(event) could also be done here.
|
||||
# Allow time for the signal to be passed and the process to exit.
|
||||
time.sleep(0.5)
|
||||
if not proc.poll():
|
||||
# Forcefully kill the process if we weren't able to signal it.
|
||||
os.kill(proc.pid, signal.SIGINT)
|
||||
self.fail("subprocess did not stop on {}".format(name))
|
||||
|
||||
@unittest.skip("subprocesses aren't inheriting Ctrl+C property")
|
||||
def test_CTRL_C_EVENT(self):
|
||||
from ctypes import wintypes
|
||||
import ctypes
|
||||
|
||||
# Make a NULL value by creating a pointer with no argument.
|
||||
NULL = ctypes.POINTER(ctypes.c_int)()
|
||||
SetConsoleCtrlHandler = ctypes.windll.kernel32.SetConsoleCtrlHandler
|
||||
SetConsoleCtrlHandler.argtypes = (ctypes.POINTER(ctypes.c_int),
|
||||
wintypes.BOOL)
|
||||
SetConsoleCtrlHandler.restype = wintypes.BOOL
|
||||
|
||||
# Calling this with NULL and FALSE causes the calling process to
|
||||
# handle Ctrl+C, rather than ignore it. This property is inherited
|
||||
# by subprocesses.
|
||||
SetConsoleCtrlHandler(NULL, 0)
|
||||
|
||||
self._kill_with_event(signal.CTRL_C_EVENT, "CTRL_C_EVENT")
|
||||
|
||||
def test_CTRL_BREAK_EVENT(self):
|
||||
self._kill_with_event(signal.CTRL_BREAK_EVENT, "CTRL_BREAK_EVENT")
|
||||
|
||||
|
||||
@unittest.skipUnless(sys.platform == "win32", "Win32 specific tests")
|
||||
class Win32ListdirTests(unittest.TestCase):
|
||||
"""Test listdir on Windows."""
|
||||
|
||||
def setUp(self):
|
||||
self.created_paths = []
|
||||
for i in range(2):
|
||||
dir_name = 'SUB%d' % i
|
||||
dir_path = os.path.join(support.TESTFN, dir_name)
|
||||
file_name = 'FILE%d' % i
|
||||
file_path = os.path.join(support.TESTFN, file_name)
|
||||
os.makedirs(dir_path)
|
||||
with open(file_path, 'w') as f:
|
||||
f.write("I'm %s and proud of it. Blame test_os.\n" % file_path)
|
||||
self.created_paths.extend([dir_name, file_name])
|
||||
self.created_paths.sort()
|
||||
|
||||
def tearDown(self):
|
||||
shutil.rmtree(support.TESTFN)
|
||||
|
||||
def test_listdir_no_extended_path(self):
|
||||
"""Test when the path is not an "extended" path."""
|
||||
# unicode
|
||||
self.assertEqual(
|
||||
sorted(os.listdir(support.TESTFN)),
|
||||
self.created_paths)
|
||||
|
||||
# bytes
|
||||
self.assertEqual(
|
||||
sorted(os.listdir(os.fsencode(support.TESTFN))),
|
||||
[os.fsencode(path) for path in self.created_paths])
|
||||
|
||||
def test_listdir_extended_path(self):
|
||||
"""Test when the path starts with '\\\\?\\'."""
|
||||
# See: http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx#maxpath
|
||||
# unicode
|
||||
path = '\\\\?\\' + os.path.abspath(support.TESTFN)
|
||||
self.assertEqual(
|
||||
sorted(os.listdir(path)),
|
||||
self.created_paths)
|
||||
|
||||
# bytes
|
||||
path = b'\\\\?\\' + os.fsencode(os.path.abspath(support.TESTFN))
|
||||
self.assertEqual(
|
||||
sorted(os.listdir(path)),
|
||||
[os.fsencode(path) for path in self.created_paths])
|
||||
|
||||
|
||||
@unittest.skipUnless(sys.platform == "win32", "Win32 specific tests")
|
||||
@support.skip_unless_symlink
|
||||
class Win32SymlinkTests(unittest.TestCase):
|
||||
filelink = 'filelinktest'
|
||||
filelink_target = os.path.abspath(__file__)
|
||||
dirlink = 'dirlinktest'
|
||||
dirlink_target = os.path.dirname(filelink_target)
|
||||
missing_link = 'missing link'
|
||||
|
||||
def setUp(self):
|
||||
assert os.path.exists(self.dirlink_target)
|
||||
assert os.path.exists(self.filelink_target)
|
||||
assert not os.path.exists(self.dirlink)
|
||||
assert not os.path.exists(self.filelink)
|
||||
assert not os.path.exists(self.missing_link)
|
||||
|
||||
def tearDown(self):
|
||||
if os.path.exists(self.filelink):
|
||||
os.remove(self.filelink)
|
||||
if os.path.exists(self.dirlink):
|
||||
os.rmdir(self.dirlink)
|
||||
if os.path.lexists(self.missing_link):
|
||||
os.remove(self.missing_link)
|
||||
|
||||
def test_directory_link(self):
|
||||
os.symlink(self.dirlink_target, self.dirlink)
|
||||
self.assertTrue(os.path.exists(self.dirlink))
|
||||
self.assertTrue(os.path.isdir(self.dirlink))
|
||||
self.assertTrue(os.path.islink(self.dirlink))
|
||||
self.check_stat(self.dirlink, self.dirlink_target)
|
||||
|
||||
def test_file_link(self):
|
||||
os.symlink(self.filelink_target, self.filelink)
|
||||
self.assertTrue(os.path.exists(self.filelink))
|
||||
self.assertTrue(os.path.isfile(self.filelink))
|
||||
self.assertTrue(os.path.islink(self.filelink))
|
||||
self.check_stat(self.filelink, self.filelink_target)
|
||||
|
||||
def _create_missing_dir_link(self):
|
||||
'Create a "directory" link to a non-existent target'
|
||||
linkname = self.missing_link
|
||||
if os.path.lexists(linkname):
|
||||
os.remove(linkname)
|
||||
target = r'c:\\target does not exist.29r3c740'
|
||||
assert not os.path.exists(target)
|
||||
target_is_dir = True
|
||||
os.symlink(target, linkname, target_is_dir)
|
||||
|
||||
def test_remove_directory_link_to_missing_target(self):
|
||||
self._create_missing_dir_link()
|
||||
# For compatibility with Unix, os.remove will check the
|
||||
# directory status and call RemoveDirectory if the symlink
|
||||
# was created with target_is_dir==True.
|
||||
os.remove(self.missing_link)
|
||||
|
||||
@unittest.skip("currently fails; consider for improvement")
|
||||
def test_isdir_on_directory_link_to_missing_target(self):
|
||||
self._create_missing_dir_link()
|
||||
# consider having isdir return true for directory links
|
||||
self.assertTrue(os.path.isdir(self.missing_link))
|
||||
|
||||
@unittest.skip("currently fails; consider for improvement")
|
||||
def test_rmdir_on_directory_link_to_missing_target(self):
|
||||
self._create_missing_dir_link()
|
||||
# consider allowing rmdir to remove directory links
|
||||
os.rmdir(self.missing_link)
|
||||
|
||||
def check_stat(self, link, target):
|
||||
self.assertEqual(os.stat(link), os.stat(target))
|
||||
self.assertNotEqual(os.lstat(link), os.stat(link))
|
||||
|
||||
bytes_link = os.fsencode(link)
|
||||
self.assertEqual(os.stat(bytes_link), os.stat(target))
|
||||
self.assertNotEqual(os.lstat(bytes_link), os.stat(bytes_link))
|
||||
|
||||
def test_12084(self):
|
||||
level1 = os.path.abspath(support.TESTFN)
|
||||
level2 = os.path.join(level1, "level2")
|
||||
level3 = os.path.join(level2, "level3")
|
||||
self.addCleanup(support.rmtree, level1)
|
||||
|
||||
os.mkdir(level1)
|
||||
os.mkdir(level2)
|
||||
os.mkdir(level3)
|
||||
|
||||
file1 = os.path.abspath(os.path.join(level1, "file1"))
|
||||
create_file(file1)
|
||||
|
||||
orig_dir = os.getcwd()
|
||||
try:
|
||||
os.chdir(level2)
|
||||
link = os.path.join(level2, "link")
|
||||
os.symlink(os.path.relpath(file1), "link")
|
||||
self.assertIn("link", os.listdir(os.getcwd()))
|
||||
|
||||
# Check os.stat calls from the same dir as the link
|
||||
self.assertEqual(os.stat(file1), os.stat("link"))
|
||||
|
||||
# Check os.stat calls from a dir below the link
|
||||
os.chdir(level1)
|
||||
self.assertEqual(os.stat(file1),
|
||||
os.stat(os.path.relpath(link)))
|
||||
|
||||
# Check os.stat calls from a dir above the link
|
||||
os.chdir(level3)
|
||||
self.assertEqual(os.stat(file1),
|
||||
os.stat(os.path.relpath(link)))
|
||||
finally:
|
||||
os.chdir(orig_dir)
|
||||
|
||||
@unittest.skipUnless(os.path.lexists(r'C:\Users\All Users')
|
||||
and os.path.exists(r'C:\ProgramData'),
|
||||
'Test directories not found')
|
||||
def test_29248(self):
|
||||
# os.symlink() calls CreateSymbolicLink, which creates
|
||||
# the reparse data buffer with the print name stored
|
||||
# first, so the offset is always 0. CreateSymbolicLink
|
||||
# stores the "PrintName" DOS path (e.g. "C:\") first,
|
||||
# with an offset of 0, followed by the "SubstituteName"
|
||||
# NT path (e.g. "\??\C:\"). The "All Users" link, on
|
||||
# the other hand, seems to have been created manually
|
||||
# with an inverted order.
|
||||
target = os.readlink(r'C:\Users\All Users')
|
||||
self.assertTrue(os.path.samefile(target, r'C:\ProgramData'))
|
||||
|
||||
def test_buffer_overflow(self):
|
||||
# Older versions would have a buffer overflow when detecting
|
||||
# whether a link source was a directory. This test ensures we
|
||||
# no longer crash, but does not otherwise validate the behavior
|
||||
segment = 'X' * 27
|
||||
path = os.path.join(*[segment] * 10)
|
||||
test_cases = [
|
||||
# overflow with absolute src
|
||||
('\\' + path, segment),
|
||||
# overflow dest with relative src
|
||||
(segment, path),
|
||||
# overflow when joining src
|
||||
(path[:180], path[:180]),
|
||||
]
|
||||
for src, dest in test_cases:
|
||||
try:
|
||||
os.symlink(src, dest)
|
||||
except FileNotFoundError:
|
||||
pass
|
||||
else:
|
||||
try:
|
||||
os.remove(dest)
|
||||
except OSError:
|
||||
pass
|
||||
# Also test with bytes, since that is a separate code path.
|
||||
try:
|
||||
os.symlink(os.fsencode(src), os.fsencode(dest))
|
||||
except FileNotFoundError:
|
||||
pass
|
||||
else:
|
||||
try:
|
||||
os.remove(dest)
|
||||
except OSError:
|
||||
pass
|
||||
|
||||
|
||||
@unittest.skipUnless(sys.platform == "win32", "Win32 specific tests")
|
||||
class Win32JunctionTests(unittest.TestCase):
|
||||
junction = 'junctiontest'
|
||||
junction_target = os.path.dirname(os.path.abspath(__file__))
|
||||
|
||||
def setUp(self):
|
||||
assert os.path.exists(self.junction_target)
|
||||
assert not os.path.exists(self.junction)
|
||||
|
||||
def tearDown(self):
|
||||
if os.path.exists(self.junction):
|
||||
# os.rmdir delegates to Windows' RemoveDirectoryW,
|
||||
# which removes junction points safely.
|
||||
os.rmdir(self.junction)
|
||||
|
||||
def test_create_junction(self):
|
||||
_winapi.CreateJunction(self.junction_target, self.junction)
|
||||
self.assertTrue(os.path.exists(self.junction))
|
||||
self.assertTrue(os.path.isdir(self.junction))
|
||||
|
||||
# Junctions are not recognized as links.
|
||||
self.assertFalse(os.path.islink(self.junction))
|
||||
|
||||
def test_unlink_removes_junction(self):
|
||||
_winapi.CreateJunction(self.junction_target, self.junction)
|
||||
self.assertTrue(os.path.exists(self.junction))
|
||||
|
||||
os.unlink(self.junction)
|
||||
self.assertFalse(os.path.exists(self.junction))
|
||||
|
||||
|
||||
@support.skip_unless_symlink
|
||||
class NonLocalSymlinkTests(unittest.TestCase):
|
||||
|
|
42
third_party/python/Lib/test/test_pydoc.py
vendored
42
third_party/python/Lib/test/test_pydoc.py
vendored
|
@ -831,28 +831,28 @@ class PydocImportTest(PydocBaseTest):
|
|||
finally:
|
||||
os.chmod(pkgdir, current_mode)
|
||||
|
||||
def test_url_search_package_error(self):
|
||||
# URL handler search should cope with packages that raise exceptions
|
||||
pkgdir = os.path.join(TESTFN, "test_error_package")
|
||||
os.mkdir(pkgdir)
|
||||
init = os.path.join(pkgdir, "__init__.py")
|
||||
with open(init, "wt", encoding="ascii") as f:
|
||||
f.write("""raise ValueError("ouch")\n""")
|
||||
with self.restrict_walk_packages(path=[TESTFN]):
|
||||
# Package has to be importable for the error to have any effect
|
||||
saved_paths = tuple(sys.path)
|
||||
sys.path.insert(0, TESTFN)
|
||||
try:
|
||||
with self.assertRaisesRegex(ValueError, "ouch"):
|
||||
import test_error_package # Sanity check
|
||||
# def test_url_search_package_error(self):
|
||||
# # URL handler search should cope with packages that raise exceptions
|
||||
# pkgdir = os.path.join(TESTFN, "test_error_package")
|
||||
# os.mkdir(pkgdir)
|
||||
# init = os.path.join(pkgdir, "__init__.py")
|
||||
# with open(init, "wt", encoding="ascii") as f:
|
||||
# f.write("""raise ValueError("ouch")\n""")
|
||||
# with self.restrict_walk_packages(path=[TESTFN]):
|
||||
# # Package has to be importable for the error to have any effect
|
||||
# saved_paths = tuple(sys.path)
|
||||
# sys.path.insert(0, TESTFN)
|
||||
# try:
|
||||
# with self.assertRaisesRegex(ValueError, "ouch"):
|
||||
# import test_error_package # Sanity check
|
||||
|
||||
text = self.call_url_handler("search?key=test_error_package",
|
||||
"Pydoc: Search Results")
|
||||
found = ('<a href="test_error_package.html">'
|
||||
'test_error_package</a>')
|
||||
self.assertIn(found, text)
|
||||
finally:
|
||||
sys.path[:] = saved_paths
|
||||
# text = self.call_url_handler("search?key=test_error_package",
|
||||
# "Pydoc: Search Results")
|
||||
# found = ('<a href="test_error_package.html">'
|
||||
# 'test_error_package</a>')
|
||||
# self.assertIn(found, text)
|
||||
# finally:
|
||||
# sys.path[:] = saved_paths
|
||||
|
||||
@unittest.skip('causes undesirable side-effects (#20128)')
|
||||
def test_modules(self):
|
||||
|
|
128
third_party/python/Lib/test/test_reprlib.py
vendored
128
third_party/python/Lib/test/test_reprlib.py
vendored
|
@ -273,75 +273,75 @@ class LongReprTest(unittest.TestCase):
|
|||
elif os.name == 'nt' and verbose:
|
||||
print("cached_path_len =", cached_path_len)
|
||||
|
||||
def test_module(self):
|
||||
self.maxDiff = None
|
||||
self._check_path_limitations(self.pkgname)
|
||||
create_empty_file(os.path.join(self.subpkgname, self.pkgname + '.py'))
|
||||
importlib.invalidate_caches()
|
||||
from areallylongpackageandmodulenametotestreprtruncation.areallylongpackageandmodulenametotestreprtruncation import areallylongpackageandmodulenametotestreprtruncation
|
||||
module = areallylongpackageandmodulenametotestreprtruncation
|
||||
self.assertEqual(repr(module), "<module %r from %r>" % (module.__name__, module.__file__))
|
||||
self.assertEqual(repr(sys), "<module 'sys' (built-in)>")
|
||||
# def test_module(self):
|
||||
# self.maxDiff = None
|
||||
# self._check_path_limitations(self.pkgname)
|
||||
# create_empty_file(os.path.join(self.subpkgname, self.pkgname + '.py'))
|
||||
# importlib.invalidate_caches()
|
||||
# from areallylongpackageandmodulenametotestreprtruncation.areallylongpackageandmodulenametotestreprtruncation import areallylongpackageandmodulenametotestreprtruncation
|
||||
# module = areallylongpackageandmodulenametotestreprtruncation
|
||||
# self.assertEqual(repr(module), "<module %r from %r>" % (module.__name__, module.__file__))
|
||||
# self.assertEqual(repr(sys), "<module 'sys' (built-in)>")
|
||||
|
||||
def test_type(self):
|
||||
self._check_path_limitations('foo')
|
||||
eq = self.assertEqual
|
||||
write_file(os.path.join(self.subpkgname, 'foo.py'), '''\
|
||||
class foo(object):
|
||||
pass
|
||||
''')
|
||||
importlib.invalidate_caches()
|
||||
from areallylongpackageandmodulenametotestreprtruncation.areallylongpackageandmodulenametotestreprtruncation import foo
|
||||
eq(repr(foo.foo),
|
||||
"<class '%s.foo'>" % foo.__name__)
|
||||
# def test_type(self):
|
||||
# self._check_path_limitations('foo')
|
||||
# eq = self.assertEqual
|
||||
# write_file(os.path.join(self.subpkgname, 'foo.py'), '''\
|
||||
# class foo(object):
|
||||
# pass
|
||||
# ''')
|
||||
# importlib.invalidate_caches()
|
||||
# from areallylongpackageandmodulenametotestreprtruncation.areallylongpackageandmodulenametotestreprtruncation import foo
|
||||
# eq(repr(foo.foo),
|
||||
# "<class '%s.foo'>" % foo.__name__)
|
||||
|
||||
@unittest.skip('need a suitable object')
|
||||
def test_object(self):
|
||||
# XXX Test the repr of a type with a really long tp_name but with no
|
||||
# tp_repr. WIBNI we had ::Inline? :)
|
||||
pass
|
||||
# @unittest.skip('need a suitable object')
|
||||
# def test_object(self):
|
||||
# # XXX Test the repr of a type with a really long tp_name but with no
|
||||
# # tp_repr. WIBNI we had ::Inline? :)
|
||||
# pass
|
||||
|
||||
def test_class(self):
|
||||
self._check_path_limitations('bar')
|
||||
write_file(os.path.join(self.subpkgname, 'bar.py'), '''\
|
||||
class bar:
|
||||
pass
|
||||
''')
|
||||
importlib.invalidate_caches()
|
||||
from areallylongpackageandmodulenametotestreprtruncation.areallylongpackageandmodulenametotestreprtruncation import bar
|
||||
# Module name may be prefixed with "test.", depending on how run.
|
||||
self.assertEqual(repr(bar.bar), "<class '%s.bar'>" % bar.__name__)
|
||||
# def test_class(self):
|
||||
# self._check_path_limitations('bar')
|
||||
# write_file(os.path.join(self.subpkgname, 'bar.py'), '''\
|
||||
# class bar:
|
||||
# pass
|
||||
# ''')
|
||||
# importlib.invalidate_caches()
|
||||
# from areallylongpackageandmodulenametotestreprtruncation.areallylongpackageandmodulenametotestreprtruncation import bar
|
||||
# # Module name may be prefixed with "test.", depending on how run.
|
||||
# self.assertEqual(repr(bar.bar), "<class '%s.bar'>" % bar.__name__)
|
||||
|
||||
def test_instance(self):
|
||||
self._check_path_limitations('baz')
|
||||
write_file(os.path.join(self.subpkgname, 'baz.py'), '''\
|
||||
class baz:
|
||||
pass
|
||||
''')
|
||||
importlib.invalidate_caches()
|
||||
from areallylongpackageandmodulenametotestreprtruncation.areallylongpackageandmodulenametotestreprtruncation import baz
|
||||
ibaz = baz.baz()
|
||||
self.assertTrue(repr(ibaz).startswith(
|
||||
"<%s.baz object at 0x" % baz.__name__))
|
||||
# def test_instance(self):
|
||||
# self._check_path_limitations('baz')
|
||||
# write_file(os.path.join(self.subpkgname, 'baz.py'), '''\
|
||||
# class baz:
|
||||
# pass
|
||||
# ''')
|
||||
# importlib.invalidate_caches()
|
||||
# from areallylongpackageandmodulenametotestreprtruncation.areallylongpackageandmodulenametotestreprtruncation import baz
|
||||
# ibaz = baz.baz()
|
||||
# self.assertTrue(repr(ibaz).startswith(
|
||||
# "<%s.baz object at 0x" % baz.__name__))
|
||||
|
||||
def test_method(self):
|
||||
self._check_path_limitations('qux')
|
||||
eq = self.assertEqual
|
||||
write_file(os.path.join(self.subpkgname, 'qux.py'), '''\
|
||||
class aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa:
|
||||
def amethod(self): pass
|
||||
''')
|
||||
importlib.invalidate_caches()
|
||||
from areallylongpackageandmodulenametotestreprtruncation.areallylongpackageandmodulenametotestreprtruncation import qux
|
||||
# Unbound methods first
|
||||
r = repr(qux.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.amethod)
|
||||
self.assertTrue(r.startswith('<function aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.amethod'), r)
|
||||
# Bound method next
|
||||
iqux = qux.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()
|
||||
r = repr(iqux.amethod)
|
||||
self.assertTrue(r.startswith(
|
||||
'<bound method aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.amethod of <%s.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa object at 0x' \
|
||||
% (qux.__name__,) ), r)
|
||||
# def test_method(self):
|
||||
# self._check_path_limitations('qux')
|
||||
# eq = self.assertEqual
|
||||
# write_file(os.path.join(self.subpkgname, 'qux.py'), '''\
|
||||
# class aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa:
|
||||
# def amethod(self): pass
|
||||
# ''')
|
||||
# importlib.invalidate_caches()
|
||||
# from areallylongpackageandmodulenametotestreprtruncation.areallylongpackageandmodulenametotestreprtruncation import qux
|
||||
# # Unbound methods first
|
||||
# r = repr(qux.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.amethod)
|
||||
# self.assertTrue(r.startswith('<function aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.amethod'), r)
|
||||
# # Bound method next
|
||||
# iqux = qux.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()
|
||||
# r = repr(iqux.amethod)
|
||||
# self.assertTrue(r.startswith(
|
||||
# '<bound method aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.amethod of <%s.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa object at 0x' \
|
||||
# % (qux.__name__,) ), r)
|
||||
|
||||
@unittest.skip('needs a built-in function with a really long name')
|
||||
def test_builtin_function(self):
|
||||
|
|
26
third_party/python/Lib/test/test_typing.py
vendored
26
third_party/python/Lib/test/test_typing.py
vendored
|
@ -2544,13 +2544,13 @@ class IOTests(BaseTestCase):
|
|||
a = stuff.__annotations__['a']
|
||||
self.assertEqual(a.__parameters__, ())
|
||||
|
||||
def test_io_submodule(self):
|
||||
from typing.io import IO, TextIO, BinaryIO, __all__, __name__
|
||||
self.assertIs(IO, typing.IO)
|
||||
self.assertIs(TextIO, typing.TextIO)
|
||||
self.assertIs(BinaryIO, typing.BinaryIO)
|
||||
self.assertEqual(set(__all__), set(['IO', 'TextIO', 'BinaryIO']))
|
||||
self.assertEqual(__name__, 'typing.io')
|
||||
# def test_io_submodule(self):
|
||||
# from typing.io import IO, TextIO, BinaryIO, __all__, __name__
|
||||
# self.assertIs(IO, typing.IO)
|
||||
# self.assertIs(TextIO, typing.TextIO)
|
||||
# self.assertIs(BinaryIO, typing.BinaryIO)
|
||||
# self.assertEqual(set(__all__), set(['IO', 'TextIO', 'BinaryIO']))
|
||||
# self.assertEqual(__name__, 'typing.io')
|
||||
|
||||
|
||||
class RETests(BaseTestCase):
|
||||
|
@ -2603,12 +2603,12 @@ class RETests(BaseTestCase):
|
|||
self.assertEqual(repr(Match[str]), 'Match[str]')
|
||||
self.assertEqual(repr(Match[bytes]), 'Match[bytes]')
|
||||
|
||||
def test_re_submodule(self):
|
||||
from typing.re import Match, Pattern, __all__, __name__
|
||||
self.assertIs(Match, typing.Match)
|
||||
self.assertIs(Pattern, typing.Pattern)
|
||||
self.assertEqual(set(__all__), set(['Match', 'Pattern']))
|
||||
self.assertEqual(__name__, 'typing.re')
|
||||
# def test_re_submodule(self):
|
||||
# from typing.re import Match, Pattern, __all__, __name__
|
||||
# self.assertIs(Match, typing.Match)
|
||||
# self.assertIs(Pattern, typing.Pattern)
|
||||
# self.assertEqual(set(__all__), set(['Match', 'Pattern']))
|
||||
# self.assertEqual(__name__, 'typing.re')
|
||||
|
||||
def test_cannot_subclass(self):
|
||||
with self.assertRaises(TypeError) as ex:
|
||||
|
|
13
third_party/python/Lib/test/test_unicode.py
vendored
13
third_party/python/Lib/test/test_unicode.py
vendored
|
@ -15,6 +15,7 @@ import sys
|
|||
import unittest
|
||||
import warnings
|
||||
from test import support, string_tests
|
||||
from encodings import utf_7, utf_16_le, utf_16_be, latin_1, unicode_internal, raw_unicode_escape
|
||||
|
||||
# Error handling (bad decoder return)
|
||||
def search_function(encoding):
|
||||
|
@ -2443,10 +2444,10 @@ class CAPITest(unittest.TestCase):
|
|||
# Test PyUnicode_FromFormat()
|
||||
def test_from_format(self):
|
||||
support.import_module('ctypes')
|
||||
from ctypes import (
|
||||
pythonapi, py_object, sizeof,
|
||||
c_int, c_long, c_longlong, c_ssize_t,
|
||||
c_uint, c_ulong, c_ulonglong, c_size_t, c_void_p)
|
||||
# from ctypes import (
|
||||
# pythonapi, py_object, sizeof,
|
||||
# c_int, c_long, c_longlong, c_ssize_t,
|
||||
# c_uint, c_ulong, c_ulonglong, c_size_t, c_void_p)
|
||||
name = "PyUnicode_FromFormat"
|
||||
_PyUnicode_FromFormat = getattr(pythonapi, name)
|
||||
_PyUnicode_FromFormat.restype = py_object
|
||||
|
@ -2678,7 +2679,7 @@ class CAPITest(unittest.TestCase):
|
|||
def test_aswidechar(self):
|
||||
from _testcapi import unicode_aswidechar
|
||||
support.import_module('ctypes')
|
||||
from ctypes import c_wchar, sizeof
|
||||
# from ctypes import c_wchar, sizeof
|
||||
|
||||
wchar, size = unicode_aswidechar('abcdef', 2)
|
||||
self.assertEqual(size, 2)
|
||||
|
@ -2716,7 +2717,7 @@ class CAPITest(unittest.TestCase):
|
|||
def test_aswidecharstring(self):
|
||||
from _testcapi import unicode_aswidecharstring
|
||||
support.import_module('ctypes')
|
||||
from ctypes import c_wchar, sizeof
|
||||
# from ctypes import c_wchar, sizeof
|
||||
|
||||
wchar, size = unicode_aswidecharstring('abc')
|
||||
self.assertEqual(size, 3)
|
||||
|
|
|
@ -493,7 +493,7 @@ class TestUrlopen(unittest.TestCase):
|
|||
def start_https_server(self, responses=None, **kwargs):
|
||||
if not hasattr(urllib.request, 'HTTPSHandler'):
|
||||
self.skipTest('ssl support required')
|
||||
from test.ssl_servers import make_https_server
|
||||
# from test.ssl_servers import make_https_server
|
||||
if responses is None:
|
||||
responses = [(200, [], b"we care a bit")]
|
||||
handler = GetRequestHandler(responses)
|
||||
|
|
0
third_party/python/Lib/test/test_warnings/data/__init__.py
vendored
Normal file
0
third_party/python/Lib/test/test_warnings/data/__init__.py
vendored
Normal file
1
third_party/python/Lib/test/test_xmlrpc.py
vendored
1
third_party/python/Lib/test/test_xmlrpc.py
vendored
|
@ -14,6 +14,7 @@ import re
|
|||
import io
|
||||
import contextlib
|
||||
from test import support
|
||||
from encodings import iso8559_15
|
||||
|
||||
try:
|
||||
import gzip
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue