summaryrefslogtreecommitdiffstats
path: root/Python/Dependencies/future-0.18.2/tests/test_future/test_standard_library.py
diff options
context:
space:
mode:
Diffstat (limited to 'Python/Dependencies/future-0.18.2/tests/test_future/test_standard_library.py')
-rw-r--r--Python/Dependencies/future-0.18.2/tests/test_future/test_standard_library.py624
1 files changed, 0 insertions, 624 deletions
diff --git a/Python/Dependencies/future-0.18.2/tests/test_future/test_standard_library.py b/Python/Dependencies/future-0.18.2/tests/test_future/test_standard_library.py
deleted file mode 100644
index 3ac5d2d..0000000
--- a/Python/Dependencies/future-0.18.2/tests/test_future/test_standard_library.py
+++ /dev/null
@@ -1,624 +0,0 @@
-"""
-Tests for the future.standard_library module
-"""
-
-from __future__ import absolute_import, print_function
-from future import standard_library
-from future import utils
-from future.tests.base import unittest, CodeHandler, expectedFailurePY2
-
-import sys
-import tempfile
-import os
-import copy
-import textwrap
-from subprocess import CalledProcessError
-
-
-class TestStandardLibraryReorganization(CodeHandler):
-
- def setUp(self):
- self.interpreter = sys.executable
- standard_library.install_aliases()
- super(TestStandardLibraryReorganization, self).setUp()
-
- def tearDown(self):
- # standard_library.remove_hooks()
- pass
-
- def test_can_import_several(self):
- """
- This test failed in v0.12-pre if e.g.
- future/standard_library/email/header.py contained:
-
- from future import standard_library
- standard_library.remove_hooks()
- """
-
- import future.moves.urllib.parse as urllib_parse
- import future.moves.urllib.request as urllib_request
-
- import http.server
- for m in [urllib_parse, urllib_request, http.server]:
- self.assertTrue(m is not None)
-
- def test_is_py2_stdlib_module(self):
- """
- Tests whether the internal is_py2_stdlib_module function (called by the
- sys.modules scrubbing functions) is reliable.
- """
- externalmodules = [standard_library, utils]
- self.assertTrue(not any([standard_library.is_py2_stdlib_module(module)
- for module in externalmodules]))
-
- py2modules = [sys, tempfile, copy, textwrap]
- if utils.PY2:
- # Debugging:
- for module in py2modules:
- if hasattr(module, '__file__'):
- print(module.__file__, file=sys.stderr)
- self.assertTrue(all([standard_library.is_py2_stdlib_module(module)
- for module in py2modules]))
- else:
- self.assertTrue(
- not any ([standard_library.is_py2_stdlib_module(module)
- for module in py2modules]))
-
- # @unittest.skip("No longer relevant")
- # def test_all_modules_identical(self):
- # """
- # Tests whether all of the old imports in RENAMES are accessible
- # under their new names.
- # """
- # for (oldname, newname) in standard_library.RENAMES.items():
- # if newname == 'winreg' and sys.platform not in ['win32', 'win64']:
- # continue
- # if newname in standard_library.REPLACED_MODULES:
- # # Skip this check for e.g. the stdlib's ``test`` module,
- # # which we have replaced completely.
- # continue
- # oldmod = __import__(oldname)
- # newmod = __import__(newname)
- # if '.' not in oldname:
- # self.assertEqual(oldmod, newmod)
-
- @expectedFailurePY2
- def test_suspend_hooks(self):
- """
- Code like the try/except block here appears in Pyflakes v0.6.1. This
- method tests whether suspend_hooks() works as advertised.
- """
- example_PY2_check = False
- with standard_library.suspend_hooks():
- # An example of fragile import code that we don't want to break:
- try:
- import builtins
- except ImportError:
- example_PY2_check = True
- if utils.PY2:
- self.assertTrue(example_PY2_check)
- else:
- self.assertFalse(example_PY2_check)
- # The import should succeed again now:
- import builtins
-
- @expectedFailurePY2
- def test_disable_hooks(self):
- """
- Tests the old (deprecated) names. These deprecated aliases should be
- removed by version 1.0
- """
- example_PY2_check = False
-
- standard_library.enable_hooks() # deprecated name
- old_meta_path = copy.copy(sys.meta_path)
-
- standard_library.disable_hooks()
- standard_library.scrub_future_sys_modules()
- if utils.PY2:
- self.assertTrue(len(old_meta_path) == len(sys.meta_path) + 1)
- else:
- self.assertTrue(len(old_meta_path) == len(sys.meta_path))
-
- # An example of fragile import code that we don't want to break:
- try:
- import builtins
- except ImportError:
- example_PY2_check = True
- if utils.PY2:
- self.assertTrue(example_PY2_check)
- else:
- self.assertFalse(example_PY2_check)
-
- standard_library.install_hooks()
-
- # Imports should succeed again now:
- import builtins
- import html
- if utils.PY2:
- self.assertTrue(standard_library.detect_hooks())
- self.assertTrue(len(old_meta_path) == len(sys.meta_path))
-
- @expectedFailurePY2
- def test_remove_hooks2(self):
- """
- As above, but with the new names
- """
- example_PY2_check = False
-
- standard_library.install_hooks()
- old_meta_path = copy.copy(sys.meta_path)
-
- standard_library.remove_hooks()
- standard_library.scrub_future_sys_modules()
- if utils.PY2:
- self.assertTrue(len(old_meta_path) == len(sys.meta_path) + 1)
- else:
- self.assertTrue(len(old_meta_path) == len(sys.meta_path))
-
- # An example of fragile import code that we don't want to break:
- try:
- import builtins
- except ImportError:
- example_PY2_check = True
- if utils.PY2:
- self.assertTrue(example_PY2_check)
- else:
- self.assertFalse(example_PY2_check)
- standard_library.install_hooks()
- # The import should succeed again now:
- import builtins
- self.assertTrue(len(old_meta_path) == len(sys.meta_path))
-
- def test_detect_hooks(self):
- """
- Tests whether the future.standard_library.detect_hooks is doing
- its job.
- """
- standard_library.install_hooks()
- if utils.PY2:
- self.assertTrue(standard_library.detect_hooks())
-
- meta_path = copy.copy(sys.meta_path)
-
- standard_library.remove_hooks()
- if utils.PY2:
- self.assertEqual(len(meta_path), len(sys.meta_path) + 1)
- self.assertFalse(standard_library.detect_hooks())
-
- @unittest.skipIf(utils.PY3, 'not testing for old urllib on Py3')
- def test_old_urllib_import(self):
- """
- Tests whether an imported module can import the old urllib package.
- Importing future.standard_library in a script should be possible and
- not disrupt any uses of the old Py2 standard library names in modules
- imported by that script.
- """
- code1 = '''
- from future import standard_library
- with standard_library.suspend_hooks():
- import module_importing_old_urllib
- '''
- self._write_test_script(code1, 'runme.py')
- code2 = '''
- import urllib
- assert 'urlopen' in dir(urllib)
- print('Import succeeded!')
- '''
- self._write_test_script(code2, 'module_importing_old_urllib.py')
- output = self._run_test_script('runme.py')
- print(output)
- self.assertTrue(True)
-
- def test_sys_intern(self):
- """
- Py2's builtin intern() has been moved to the sys module. Tests
- whether sys.intern is available.
- """
- from sys import intern
- if utils.PY3:
- self.assertEqual(intern('hello'), 'hello')
- else:
- # intern() requires byte-strings on Py2:
- self.assertEqual(intern(b'hello'), b'hello')
-
- def test_sys_maxsize(self):
- """
- Tests whether sys.maxsize is available.
- """
- from sys import maxsize
- self.assertTrue(maxsize > 0)
-
- def test_itertools_filterfalse(self):
- """
- Tests whether itertools.filterfalse is available.
- """
- from itertools import filterfalse
- not_div_by_3 = filterfalse(lambda x: x % 3 == 0, range(8))
- self.assertEqual(list(not_div_by_3), [1, 2, 4, 5, 7])
-
- def test_itertools_zip_longest(self):
- """
- Tests whether itertools.zip_longest is available.
- """
- from itertools import zip_longest
- a = (1, 2)
- b = [2, 4, 6]
- self.assertEqual(list(zip_longest(a, b)),
- [(1, 2), (2, 4), (None, 6)])
-
- def test_ChainMap(self):
- """
- Tests whether collections.ChainMap is available.
- """
- from collections import ChainMap
- cm = ChainMap()
-
- @unittest.expectedFailure
- @unittest.skipIf(utils.PY3, 'generic import tests are for Py2 only')
- def test_import_failure_from_module(self):
- """
- Tests whether e.g. "import socketserver" succeeds in a module
- imported by another module that has used and removed the stdlib hooks.
- We want this to fail; the stdlib hooks should not bleed to imported
- modules too without their explicitly invoking them.
- """
- code1 = '''
- from future import standard_library
- standard_library.install_hooks()
- standard_library.remove_hooks()
- import importme2
- '''
- code2 = '''
- import socketserver
- print('Uh oh. importme2 should have raised an ImportError.')
- '''
- self._write_test_script(code1, 'importme1.py')
- self._write_test_script(code2, 'importme2.py')
- with self.assertRaises(CalledProcessError):
- output = self._run_test_script('importme1.py')
-
- # Disabled since v0.16.0:
- # def test_configparser(self):
- # import configparser
-
- def test_copyreg(self):
- import copyreg
-
- def test_pickle(self):
- import pickle
-
- def test_profile(self):
- import profile
-
- def test_stringio(self):
- from io import StringIO
- s = StringIO(u'test')
- for method in ['tell', 'read', 'seek', 'close', 'flush']:
- self.assertTrue(hasattr(s, method))
-
- def test_bytesio(self):
- from io import BytesIO
- s = BytesIO(b'test')
- for method in ['tell', 'read', 'seek', 'close', 'flush', 'getvalue']:
- self.assertTrue(hasattr(s, method))
-
- def test_queue(self):
- import queue
- q = queue.Queue()
- q.put('thing')
- self.assertFalse(q.empty())
-
- def test_reprlib(self):
- import reprlib
- self.assertTrue(True)
-
- def test_socketserver(self):
- import socketserver
- self.assertTrue(True)
-
- @unittest.skip("Not testing tkinter import (it may be installed separately from Python)")
- def test_tkinter(self):
- import tkinter
- self.assertTrue(True)
-
- def test_builtins(self):
- import builtins
- self.assertTrue(hasattr(builtins, 'tuple'))
-
- @unittest.skip("ssl redirect support on pypi isn't working as expected for now ...")
- def test_urllib_request_ssl_redirect(self):
- """
- This site redirects to https://...
- It therefore requires ssl support.
- """
- import future.moves.urllib.request as urllib_request
- from pprint import pprint
- URL = 'http://pypi.python.org/pypi/{0}/json'
- package = 'future'
- r = urllib_request.urlopen(URL.format(package))
- # pprint(r.read().decode('utf-8'))
- self.assertTrue(True)
-
- def test_moves_urllib_request_http(self):
- """
- This site (python-future.org) uses plain http (as of 2014-09-23).
- """
- import future.moves.urllib.request as urllib_request
- from pprint import pprint
- URL = 'http://python-future.org'
- r = urllib_request.urlopen(URL)
- data = r.read()
- self.assertTrue(b'</html>' in data)
-
- def test_urllib_request_http(self):
- """
- This site (python-future.org) uses plain http (as of 2014-09-23).
- """
- import urllib.request as urllib_request
- from pprint import pprint
- URL = 'http://python-future.org'
- r = urllib_request.urlopen(URL)
- data = r.read()
- self.assertTrue(b'</html>' in data)
-
- def test_html_import(self):
- import html
- import html.entities
- import html.parser
- self.assertTrue(True)
-
- def test_http_client_import(self):
- import http.client
- self.assertTrue(True)
-
- def test_other_http_imports(self):
- import http
- import http.server
- import http.cookies
- import http.cookiejar
- self.assertTrue(True)
-
- def test_urllib_imports_moves(self):
- import future.moves.urllib
- import future.moves.urllib.parse
- import future.moves.urllib.request
- import future.moves.urllib.robotparser
- import future.moves.urllib.error
- import future.moves.urllib.response
- self.assertTrue(True)
-
- def test_urllib_imports_install_aliases(self):
- with standard_library.suspend_hooks():
- standard_library.install_aliases()
- import urllib
- import urllib.parse
- import urllib.request
- import urllib.robotparser
- import urllib.error
- import urllib.response
- self.assertTrue(True)
-
- def test_urllib_imports_cm(self):
- with standard_library.hooks():
- import urllib
- import urllib.parse
- import urllib.request
- import urllib.robotparser
- import urllib.error
- import urllib.response
- self.assertTrue(True)
-
- def test_urllib_imports_install_hooks(self):
- standard_library.remove_hooks()
- standard_library.install_hooks()
- import urllib
- import urllib.parse
- import urllib.request
- import urllib.robotparser
- import urllib.error
- import urllib.response
- self.assertTrue(True)
-
- def test_underscore_prefixed_modules(self):
- import _thread
- import _dummy_thread
- import _markupbase
- self.assertTrue(True)
-
- def test_reduce(self):
- """
- reduce has been moved to the functools module
- """
- import functools
- self.assertEqual(functools.reduce(lambda x, y: x+y, range(1, 6)), 15)
-
- def test_collections_userstuff(self):
- """
- UserDict, UserList, and UserString have been moved to the
- collections module.
- """
- from collections import UserDict
- from collections import UserList
- from collections import UserString
- self.assertTrue(True)
-
- def test_reload(self):
- """
- reload has been moved to the imp module
- """
- import imp
- imp.reload(imp)
- self.assertTrue(True)
-
- def test_install_aliases(self):
- """
- Does the install_aliases() interface monkey-patch urllib etc. successfully?
- """
- from future.standard_library import remove_hooks, install_aliases
- remove_hooks()
- install_aliases()
-
- from collections import Counter, OrderedDict # backported to Py2.6
- from collections import UserDict, UserList, UserString
-
- # Requires Python dbm support:
- # import dbm
- # import dbm.dumb
- # import dbm.gnu
- # import dbm.ndbm
-
- from itertools import filterfalse, zip_longest
-
- from subprocess import check_output # backported to Py2.6
- from subprocess import getoutput, getstatusoutput
-
- from sys import intern
-
- # test_support may not be available (e.g. on Anaconda Py2.6):
- # import test.support
-
- import urllib.error
- import urllib.parse
- import urllib.request
- import urllib.response
- import urllib.robotparser
-
- self.assertTrue('urlopen' in dir(urllib.request))
-
-
-class TestFutureMoves(CodeHandler):
- def test_future_moves_urllib_request(self):
- from future.moves.urllib import request as urllib_request
- functions = ['getproxies',
- 'pathname2url',
- 'proxy_bypass',
- 'quote',
- 'request_host',
- 'splitattr',
- 'splithost',
- 'splitpasswd',
- 'splitport',
- 'splitquery',
- 'splittag',
- 'splittype',
- 'splituser',
- 'splitvalue',
- 'thishost',
- 'to_bytes',
- 'unquote',
- # 'unquote_to_bytes', # Is there an equivalent in the Py2 stdlib?
- 'unwrap',
- 'url2pathname',
- 'urlcleanup',
- 'urljoin',
- 'urlopen',
- 'urlparse',
- 'urlretrieve',
- 'urlsplit',
- 'urlunparse']
- self.assertTrue(all(fn in dir(urllib_request) for fn in functions))
-
- def test_future_moves(self):
- """
- Ensure everything is available from the future.moves interface that we
- claim and expect. (Issue #104).
- """
- from future.moves.collections import Counter, OrderedDict # backported to Py2.6
- from future.moves.collections import UserDict, UserList, UserString
-
- from future.moves import configparser
- from future.moves import copyreg
-
- from future.moves.itertools import filterfalse, zip_longest
-
- from future.moves import html
- import future.moves.html.entities
- import future.moves.html.parser
-
- from future.moves import http
- import future.moves.http.client
- import future.moves.http.cookies
- import future.moves.http.cookiejar
- import future.moves.http.server
-
- from future.moves import queue
-
- from future.moves import socketserver
-
- from future.moves.subprocess import check_output # even on Py2.6
- from future.moves.subprocess import getoutput, getstatusoutput
-
- from future.moves.sys import intern
-
- from future.moves import urllib
- import future.moves.urllib.error
- import future.moves.urllib.parse
- import future.moves.urllib.request
- import future.moves.urllib.response
- import future.moves.urllib.robotparser
-
- try:
- # Is _winreg available on Py2? If so, ensure future.moves._winreg is available too:
- import _winreg
- except ImportError:
- pass
- else:
- from future.moves import winreg
-
- from future.moves import xmlrpc
- import future.moves.xmlrpc.client
- import future.moves.xmlrpc.server
-
- from future.moves import _dummy_thread
- from future.moves import _markupbase
- from future.moves import _thread
-
- def test_future_moves_dbm(self):
- """
- Do the dbm imports work?
- """
- from future.moves import dbm
- dbm.ndbm
- from future.moves.dbm import dumb
- try:
- # Is gdbm available on Py2? If so, ensure dbm.gnu is available too:
- import gdbm
- except ImportError:
- pass
- else:
- from future.moves.dbm import gnu
- from future.moves.dbm import ndbm
-
-
-# Running the following tkinter test causes the following bizzare test failure:
-#
-# ======================================================================
-# FAIL: test_open_default_encoding (future.tests.test_builtins.BuiltinTest)
-# ----------------------------------------------------------------------
-# Traceback (most recent call last):
-# File "/home/user/Install/BleedingEdge/python-future/future/tests/test_builtins.py", line 1219, in test_open_default_encoding
-# self.assertEqual(fp.encoding, current_locale_encoding)
-# AssertionError: 'ANSI_X3.4-1968' != 'ISO-8859-1'
-#
-# ----------------------------------------------------------------------
-#
-# def test_future_moves_tkinter(self):
-# """
-# Do the tkinter imports work?
-# """
-# from future.moves import tkinter
-# from future.moves.tkinter import dialog
-# from future.moves.tkinter import filedialog
-# from future.moves.tkinter import scrolledtext
-# from future.moves.tkinter import simpledialog
-# from future.moves.tkinter import tix
-# from future.moves.tkinter import constants
-# from future.moves.tkinter import dnd
-# from future.moves.tkinter import colorchooser
-# from future.moves.tkinter import commondialog
-# from future.moves.tkinter import font
-# from future.moves.tkinter import messagebox
-
-if __name__ == '__main__':
- unittest.main()