forked from mirrors/gecko-dev
This commit is a simple 'hg mv' and does not contain any file modifications. *** Bug 1346025 - Split vendored modules in python/moz.build to third_party/python/moz.build, r=ted *** Bug 1346025 - Update references to moved python modules, r=ted MozReview-Commit-ID: A12RnIFtXju --HG-- rename : python/PyECC/MANIFEST.in => third_party/python/PyECC/MANIFEST.in rename : python/PyECC/README.md => third_party/python/PyECC/README.md rename : python/PyECC/ecc/Key.py => third_party/python/PyECC/ecc/Key.py rename : python/PyECC/ecc/Rabbit.py => third_party/python/PyECC/ecc/Rabbit.py rename : python/PyECC/ecc/SecurityViolationException.py => third_party/python/PyECC/ecc/SecurityViolationException.py rename : python/PyECC/ecc/__init__.py => third_party/python/PyECC/ecc/__init__.py rename : python/PyECC/ecc/curves.py => third_party/python/PyECC/ecc/curves.py rename : python/PyECC/ecc/eccrypt.py => third_party/python/PyECC/ecc/eccrypt.py rename : python/PyECC/ecc/ecdsa.py => third_party/python/PyECC/ecc/ecdsa.py rename : python/PyECC/ecc/elliptic.py => third_party/python/PyECC/ecc/elliptic.py rename : python/PyECC/ecc/encoding.py => third_party/python/PyECC/ecc/encoding.py rename : python/PyECC/ecc/performance.py => third_party/python/PyECC/ecc/performance.py rename : python/PyECC/ecc/primes.py => third_party/python/PyECC/ecc/primes.py rename : python/PyECC/ecc/shacrypt.py => third_party/python/PyECC/ecc/shacrypt.py rename : python/PyECC/setup.py => third_party/python/PyECC/setup.py rename : python/blessings/LICENSE => third_party/python/blessings/LICENSE rename : python/blessings/MANIFEST.in => third_party/python/blessings/MANIFEST.in rename : python/blessings/PKG-INFO => third_party/python/blessings/PKG-INFO rename : python/blessings/README.rst => third_party/python/blessings/README.rst rename : python/blessings/blessings/__init__.py => third_party/python/blessings/blessings/__init__.py rename : python/blessings/blessings/tests.py => third_party/python/blessings/blessings/tests.py rename : python/blessings/setup.cfg => third_party/python/blessings/setup.cfg rename : python/blessings/setup.py => third_party/python/blessings/setup.py rename : python/blessings/tox.ini => third_party/python/blessings/tox.ini rename : python/compare-locales/compare_locales/__init__.py => third_party/python/compare-locales/compare_locales/__init__.py rename : python/compare-locales/compare_locales/checks.py => third_party/python/compare-locales/compare_locales/checks.py rename : python/compare-locales/compare_locales/commands.py => third_party/python/compare-locales/compare_locales/commands.py rename : python/compare-locales/compare_locales/compare.py => third_party/python/compare-locales/compare_locales/compare.py rename : python/compare-locales/compare_locales/parser.py => third_party/python/compare-locales/compare_locales/parser.py rename : python/compare-locales/compare_locales/paths.py => third_party/python/compare-locales/compare_locales/paths.py rename : python/compare-locales/compare_locales/tests/__init__.py => third_party/python/compare-locales/compare_locales/tests/__init__.py rename : python/compare-locales/compare_locales/tests/data/bug121341.properties => third_party/python/compare-locales/compare_locales/tests/data/bug121341.properties rename : python/compare-locales/compare_locales/tests/data/test.properties => third_party/python/compare-locales/compare_locales/tests/data/test.properties rename : python/compare-locales/compare_locales/tests/data/triple-license.dtd => third_party/python/compare-locales/compare_locales/tests/data/triple-license.dtd rename : python/compare-locales/compare_locales/tests/test_checks.py => third_party/python/compare-locales/compare_locales/tests/test_checks.py rename : python/compare-locales/compare_locales/tests/test_compare.py => third_party/python/compare-locales/compare_locales/tests/test_compare.py rename : python/compare-locales/compare_locales/tests/test_dtd.py => third_party/python/compare-locales/compare_locales/tests/test_dtd.py rename : python/compare-locales/compare_locales/tests/test_ini.py => third_party/python/compare-locales/compare_locales/tests/test_ini.py rename : python/compare-locales/compare_locales/tests/test_merge.py => third_party/python/compare-locales/compare_locales/tests/test_merge.py rename : python/compare-locales/compare_locales/tests/test_properties.py => third_party/python/compare-locales/compare_locales/tests/test_properties.py rename : python/compare-locales/compare_locales/tests/test_util.py => third_party/python/compare-locales/compare_locales/tests/test_util.py rename : python/compare-locales/compare_locales/tests/test_webapps.py => third_party/python/compare-locales/compare_locales/tests/test_webapps.py rename : python/compare-locales/compare_locales/util.py => third_party/python/compare-locales/compare_locales/util.py rename : python/compare-locales/compare_locales/webapps.py => third_party/python/compare-locales/compare_locales/webapps.py rename : python/configobj/PKG-INFO => third_party/python/configobj/PKG-INFO rename : python/configobj/configobj.py => third_party/python/configobj/configobj.py rename : python/configobj/setup.py => third_party/python/configobj/setup.py rename : python/configobj/validate.py => third_party/python/configobj/validate.py rename : python/dlmanager/README.rst => third_party/python/dlmanager/README.rst rename : python/dlmanager/check.py => third_party/python/dlmanager/check.py rename : python/dlmanager/dlmanager/__init__.py => third_party/python/dlmanager/dlmanager/__init__.py rename : python/dlmanager/dlmanager/fs.py => third_party/python/dlmanager/dlmanager/fs.py rename : python/dlmanager/dlmanager/manager.py => third_party/python/dlmanager/dlmanager/manager.py rename : python/dlmanager/dlmanager/persist_limit.py => third_party/python/dlmanager/dlmanager/persist_limit.py rename : python/dlmanager/doc/Makefile => third_party/python/dlmanager/doc/Makefile rename : python/dlmanager/doc/api.rst => third_party/python/dlmanager/doc/api.rst rename : python/dlmanager/doc/conf.py => third_party/python/dlmanager/doc/conf.py rename : python/dlmanager/doc/index.rst => third_party/python/dlmanager/doc/index.rst rename : python/dlmanager/doc/make.bat => third_party/python/dlmanager/doc/make.bat rename : python/dlmanager/examples/dl_progressbar.py => third_party/python/dlmanager/examples/dl_progressbar.py rename : python/dlmanager/examples/dl_tqdm.py => third_party/python/dlmanager/examples/dl_tqdm.py rename : python/dlmanager/requirements.txt => third_party/python/dlmanager/requirements.txt rename : python/dlmanager/setup.cfg => third_party/python/dlmanager/setup.cfg rename : python/dlmanager/setup.py => third_party/python/dlmanager/setup.py rename : python/dlmanager/test-requirements.txt => third_party/python/dlmanager/test-requirements.txt rename : python/dlmanager/tests/__init__.py => third_party/python/dlmanager/tests/__init__.py rename : python/dlmanager/tests/test_manager.py => third_party/python/dlmanager/tests/test_manager.py rename : python/dlmanager/tests/test_persist_limit.py => third_party/python/dlmanager/tests/test_persist_limit.py rename : python/futures/CHANGES => third_party/python/futures/CHANGES rename : python/futures/LICENSE => third_party/python/futures/LICENSE rename : python/futures/MANIFEST.in => third_party/python/futures/MANIFEST.in rename : python/futures/PKG-INFO => third_party/python/futures/PKG-INFO rename : python/futures/concurrent/__init__.py => third_party/python/futures/concurrent/__init__.py rename : python/futures/concurrent/futures/__init__.py => third_party/python/futures/concurrent/futures/__init__.py rename : python/futures/concurrent/futures/_base.py => third_party/python/futures/concurrent/futures/_base.py rename : python/futures/concurrent/futures/process.py => third_party/python/futures/concurrent/futures/process.py rename : python/futures/concurrent/futures/thread.py => third_party/python/futures/concurrent/futures/thread.py rename : python/futures/crawl.py => third_party/python/futures/crawl.py rename : python/futures/docs/Makefile => third_party/python/futures/docs/Makefile rename : python/futures/docs/conf.py => third_party/python/futures/docs/conf.py rename : python/futures/docs/index.rst => third_party/python/futures/docs/index.rst rename : python/futures/docs/make.bat => third_party/python/futures/docs/make.bat rename : python/futures/futures.egg-info/PKG-INFO => third_party/python/futures/futures.egg-info/PKG-INFO rename : python/futures/futures.egg-info/SOURCES.txt => third_party/python/futures/futures.egg-info/SOURCES.txt rename : python/futures/futures.egg-info/dependency_links.txt => third_party/python/futures/futures.egg-info/dependency_links.txt rename : python/futures/futures.egg-info/not-zip-safe => third_party/python/futures/futures.egg-info/not-zip-safe rename : python/futures/futures.egg-info/pbr.json => third_party/python/futures/futures.egg-info/pbr.json rename : python/futures/futures.egg-info/top_level.txt => third_party/python/futures/futures.egg-info/top_level.txt rename : python/futures/primes.py => third_party/python/futures/primes.py rename : python/futures/setup.cfg => third_party/python/futures/setup.cfg rename : python/futures/setup.py => third_party/python/futures/setup.py rename : python/futures/test_futures.py => third_party/python/futures/test_futures.py rename : python/futures/tox.ini => third_party/python/futures/tox.ini rename : python/gdbpp/gdbpp/__init__.py => third_party/python/gdbpp/gdbpp/__init__.py rename : python/gdbpp/gdbpp/linkedlist.py => third_party/python/gdbpp/gdbpp/linkedlist.py rename : python/gdbpp/gdbpp/owningthread.py => third_party/python/gdbpp/gdbpp/owningthread.py rename : python/gdbpp/gdbpp/smartptr.py => third_party/python/gdbpp/gdbpp/smartptr.py rename : python/gdbpp/gdbpp/string.py => third_party/python/gdbpp/gdbpp/string.py rename : python/gdbpp/gdbpp/tarray.py => third_party/python/gdbpp/gdbpp/tarray.py rename : python/gdbpp/gdbpp/thashtable.py => third_party/python/gdbpp/gdbpp/thashtable.py rename : python/jsmin/jsmin/__init__.py => third_party/python/jsmin/jsmin/__init__.py rename : python/jsmin/jsmin/test.py => third_party/python/jsmin/jsmin/test.py rename : python/jsmin/setup.cfg => third_party/python/jsmin/setup.cfg rename : python/jsmin/setup.py => third_party/python/jsmin/setup.py rename : python/lldbutils/README.txt => third_party/python/lldbutils/README.txt rename : python/lldbutils/lldbutils/__init__.py => third_party/python/lldbutils/lldbutils/__init__.py rename : python/lldbutils/lldbutils/content.py => third_party/python/lldbutils/lldbutils/content.py rename : python/lldbutils/lldbutils/general.py => third_party/python/lldbutils/lldbutils/general.py rename : python/lldbutils/lldbutils/gfx.py => third_party/python/lldbutils/lldbutils/gfx.py rename : python/lldbutils/lldbutils/layout.py => third_party/python/lldbutils/lldbutils/layout.py rename : python/lldbutils/lldbutils/utils.py => third_party/python/lldbutils/lldbutils/utils.py rename : python/mock-1.0.0/LICENSE.txt => third_party/python/mock-1.0.0/LICENSE.txt rename : python/mock-1.0.0/MANIFEST.in => third_party/python/mock-1.0.0/MANIFEST.in rename : python/mock-1.0.0/PKG-INFO => third_party/python/mock-1.0.0/PKG-INFO rename : python/mock-1.0.0/README.txt => third_party/python/mock-1.0.0/README.txt rename : python/mock-1.0.0/docs/changelog.txt => third_party/python/mock-1.0.0/docs/changelog.txt rename : python/mock-1.0.0/docs/compare.txt => third_party/python/mock-1.0.0/docs/compare.txt rename : python/mock-1.0.0/docs/conf.py => third_party/python/mock-1.0.0/docs/conf.py rename : python/mock-1.0.0/docs/examples.txt => third_party/python/mock-1.0.0/docs/examples.txt rename : python/mock-1.0.0/docs/getting-started.txt => third_party/python/mock-1.0.0/docs/getting-started.txt rename : python/mock-1.0.0/docs/helpers.txt => third_party/python/mock-1.0.0/docs/helpers.txt rename : python/mock-1.0.0/docs/index.txt => third_party/python/mock-1.0.0/docs/index.txt rename : python/mock-1.0.0/docs/magicmock.txt => third_party/python/mock-1.0.0/docs/magicmock.txt rename : python/mock-1.0.0/docs/mock.txt => third_party/python/mock-1.0.0/docs/mock.txt rename : python/mock-1.0.0/docs/patch.txt => third_party/python/mock-1.0.0/docs/patch.txt rename : python/mock-1.0.0/docs/sentinel.txt => third_party/python/mock-1.0.0/docs/sentinel.txt rename : python/mock-1.0.0/html/.doctrees/changelog.doctree => third_party/python/mock-1.0.0/html/.doctrees/changelog.doctree rename : python/mock-1.0.0/html/.doctrees/compare.doctree => third_party/python/mock-1.0.0/html/.doctrees/compare.doctree rename : python/mock-1.0.0/html/.doctrees/examples.doctree => third_party/python/mock-1.0.0/html/.doctrees/examples.doctree rename : python/mock-1.0.0/html/.doctrees/getting-started.doctree => third_party/python/mock-1.0.0/html/.doctrees/getting-started.doctree rename : python/mock-1.0.0/html/.doctrees/index.doctree => third_party/python/mock-1.0.0/html/.doctrees/index.doctree rename : python/mock-1.0.0/html/.doctrees/magicmock.doctree => third_party/python/mock-1.0.0/html/.doctrees/magicmock.doctree rename : python/mock-1.0.0/html/.doctrees/mock.doctree => third_party/python/mock-1.0.0/html/.doctrees/mock.doctree rename : python/mock-1.0.0/html/.doctrees/mocksignature.doctree => third_party/python/mock-1.0.0/html/.doctrees/mocksignature.doctree rename : python/mock-1.0.0/html/.doctrees/patch.doctree => third_party/python/mock-1.0.0/html/.doctrees/patch.doctree rename : python/mock-1.0.0/html/.doctrees/sentinel.doctree => third_party/python/mock-1.0.0/html/.doctrees/sentinel.doctree rename : python/mock-1.0.0/html/_sources/changelog.txt => third_party/python/mock-1.0.0/html/_sources/changelog.txt rename : python/mock-1.0.0/html/_sources/compare.txt => third_party/python/mock-1.0.0/html/_sources/compare.txt rename : python/mock-1.0.0/html/_sources/examples.txt => third_party/python/mock-1.0.0/html/_sources/examples.txt rename : python/mock-1.0.0/html/_sources/getting-started.txt => third_party/python/mock-1.0.0/html/_sources/getting-started.txt rename : python/mock-1.0.0/html/_sources/index.txt => third_party/python/mock-1.0.0/html/_sources/index.txt rename : python/mock-1.0.0/html/_sources/magicmock.txt => third_party/python/mock-1.0.0/html/_sources/magicmock.txt rename : python/mock-1.0.0/html/_sources/mock.txt => third_party/python/mock-1.0.0/html/_sources/mock.txt rename : python/mock-1.0.0/html/_sources/mocksignature.txt => third_party/python/mock-1.0.0/html/_sources/mocksignature.txt rename : python/mock-1.0.0/html/_sources/patch.txt => third_party/python/mock-1.0.0/html/_sources/patch.txt rename : python/mock-1.0.0/html/_sources/sentinel.txt => third_party/python/mock-1.0.0/html/_sources/sentinel.txt rename : python/mock-1.0.0/html/_static/adctheme.css => third_party/python/mock-1.0.0/html/_static/adctheme.css rename : python/mock-1.0.0/html/_static/basic.css => third_party/python/mock-1.0.0/html/_static/basic.css rename : python/mock-1.0.0/html/_static/breadcrumb_background.png => third_party/python/mock-1.0.0/html/_static/breadcrumb_background.png rename : python/mock-1.0.0/html/_static/default.css => third_party/python/mock-1.0.0/html/_static/default.css rename : python/mock-1.0.0/html/_static/doctools.js => third_party/python/mock-1.0.0/html/_static/doctools.js rename : python/mock-1.0.0/html/_static/documentation.png => third_party/python/mock-1.0.0/html/_static/documentation.png rename : python/mock-1.0.0/html/_static/file.png => third_party/python/mock-1.0.0/html/_static/file.png rename : python/mock-1.0.0/html/_static/header_sm_mid.png => third_party/python/mock-1.0.0/html/_static/header_sm_mid.png rename : python/mock-1.0.0/html/_static/jquery.js => third_party/python/mock-1.0.0/html/_static/jquery.js rename : python/mock-1.0.0/html/_static/minus.png => third_party/python/mock-1.0.0/html/_static/minus.png rename : python/mock-1.0.0/html/_static/mobile.css => third_party/python/mock-1.0.0/html/_static/mobile.css rename : python/mock-1.0.0/html/_static/plus.png => third_party/python/mock-1.0.0/html/_static/plus.png rename : python/mock-1.0.0/html/_static/pygments.css => third_party/python/mock-1.0.0/html/_static/pygments.css rename : python/mock-1.0.0/html/_static/scrn1.png => third_party/python/mock-1.0.0/html/_static/scrn1.png rename : python/mock-1.0.0/html/_static/scrn2.png => third_party/python/mock-1.0.0/html/_static/scrn2.png rename : python/mock-1.0.0/html/_static/searchfield_leftcap.png => third_party/python/mock-1.0.0/html/_static/searchfield_leftcap.png rename : python/mock-1.0.0/html/_static/searchfield_repeat.png => third_party/python/mock-1.0.0/html/_static/searchfield_repeat.png rename : python/mock-1.0.0/html/_static/searchfield_rightcap.png => third_party/python/mock-1.0.0/html/_static/searchfield_rightcap.png rename : python/mock-1.0.0/html/_static/searchtools.js => third_party/python/mock-1.0.0/html/_static/searchtools.js rename : python/mock-1.0.0/html/_static/sidebar.js => third_party/python/mock-1.0.0/html/_static/sidebar.js rename : python/mock-1.0.0/html/_static/title_background.png => third_party/python/mock-1.0.0/html/_static/title_background.png rename : python/mock-1.0.0/html/_static/toc.js => third_party/python/mock-1.0.0/html/_static/toc.js rename : python/mock-1.0.0/html/_static/triangle_closed.png => third_party/python/mock-1.0.0/html/_static/triangle_closed.png rename : python/mock-1.0.0/html/_static/triangle_left.png => third_party/python/mock-1.0.0/html/_static/triangle_left.png rename : python/mock-1.0.0/html/_static/triangle_open.png => third_party/python/mock-1.0.0/html/_static/triangle_open.png rename : python/mock-1.0.0/html/_static/underscore.js => third_party/python/mock-1.0.0/html/_static/underscore.js rename : python/mock-1.0.0/html/changelog.html => third_party/python/mock-1.0.0/html/changelog.html rename : python/mock-1.0.0/html/compare.html => third_party/python/mock-1.0.0/html/compare.html rename : python/mock-1.0.0/html/examples.html => third_party/python/mock-1.0.0/html/examples.html rename : python/mock-1.0.0/html/genindex.html => third_party/python/mock-1.0.0/html/genindex.html rename : python/mock-1.0.0/html/getting-started.html => third_party/python/mock-1.0.0/html/getting-started.html rename : python/mock-1.0.0/html/index.html => third_party/python/mock-1.0.0/html/index.html rename : python/mock-1.0.0/html/magicmock.html => third_party/python/mock-1.0.0/html/magicmock.html rename : python/mock-1.0.0/html/mock.html => third_party/python/mock-1.0.0/html/mock.html rename : python/mock-1.0.0/html/mocksignature.html => third_party/python/mock-1.0.0/html/mocksignature.html rename : python/mock-1.0.0/html/objects.inv => third_party/python/mock-1.0.0/html/objects.inv rename : python/mock-1.0.0/html/output.txt => third_party/python/mock-1.0.0/html/output.txt rename : python/mock-1.0.0/html/patch.html => third_party/python/mock-1.0.0/html/patch.html rename : python/mock-1.0.0/html/search.html => third_party/python/mock-1.0.0/html/search.html rename : python/mock-1.0.0/html/searchindex.js => third_party/python/mock-1.0.0/html/searchindex.js rename : python/mock-1.0.0/html/sentinel.html => third_party/python/mock-1.0.0/html/sentinel.html rename : python/mock-1.0.0/mock.egg-info/PKG-INFO => third_party/python/mock-1.0.0/mock.egg-info/PKG-INFO rename : python/mock-1.0.0/mock.egg-info/SOURCES.txt => third_party/python/mock-1.0.0/mock.egg-info/SOURCES.txt rename : python/mock-1.0.0/mock.egg-info/dependency_links.txt => third_party/python/mock-1.0.0/mock.egg-info/dependency_links.txt rename : python/mock-1.0.0/mock.egg-info/top_level.txt => third_party/python/mock-1.0.0/mock.egg-info/top_level.txt rename : python/mock-1.0.0/mock.py => third_party/python/mock-1.0.0/mock.py rename : python/mock-1.0.0/setup.cfg => third_party/python/mock-1.0.0/setup.cfg rename : python/mock-1.0.0/setup.py => third_party/python/mock-1.0.0/setup.py rename : python/mock-1.0.0/tests/__init__.py => third_party/python/mock-1.0.0/tests/__init__.py rename : python/mock-1.0.0/tests/_testwith.py => third_party/python/mock-1.0.0/tests/_testwith.py rename : python/mock-1.0.0/tests/support.py => third_party/python/mock-1.0.0/tests/support.py rename : python/mock-1.0.0/tests/support_with.py => third_party/python/mock-1.0.0/tests/support_with.py rename : python/mock-1.0.0/tests/testcallable.py => third_party/python/mock-1.0.0/tests/testcallable.py rename : python/mock-1.0.0/tests/testhelpers.py => third_party/python/mock-1.0.0/tests/testhelpers.py rename : python/mock-1.0.0/tests/testmagicmethods.py => third_party/python/mock-1.0.0/tests/testmagicmethods.py rename : python/mock-1.0.0/tests/testmock.py => third_party/python/mock-1.0.0/tests/testmock.py rename : python/mock-1.0.0/tests/testpatch.py => third_party/python/mock-1.0.0/tests/testpatch.py rename : python/mock-1.0.0/tests/testsentinel.py => third_party/python/mock-1.0.0/tests/testsentinel.py rename : python/mock-1.0.0/tests/testwith.py => third_party/python/mock-1.0.0/tests/testwith.py rename : python/mock-1.0.0/tox.ini => third_party/python/mock-1.0.0/tox.ini rename : python/psutil/CREDITS => third_party/python/psutil/CREDITS rename : python/psutil/HISTORY.rst => third_party/python/psutil/HISTORY.rst rename : python/psutil/INSTALL.rst => third_party/python/psutil/INSTALL.rst rename : python/psutil/LICENSE => third_party/python/psutil/LICENSE rename : python/psutil/MANIFEST.in => third_party/python/psutil/MANIFEST.in rename : python/psutil/Makefile => third_party/python/psutil/Makefile rename : python/psutil/PKG-INFO => third_party/python/psutil/PKG-INFO rename : python/psutil/README.rst => third_party/python/psutil/README.rst rename : python/psutil/TODO => third_party/python/psutil/TODO rename : python/psutil/docs/Makefile => third_party/python/psutil/docs/Makefile rename : python/psutil/docs/README => third_party/python/psutil/docs/README rename : python/psutil/docs/_static/copybutton.js => third_party/python/psutil/docs/_static/copybutton.js rename : python/psutil/docs/_static/favicon.ico => third_party/python/psutil/docs/_static/favicon.ico rename : python/psutil/docs/_static/logo.png => third_party/python/psutil/docs/_static/logo.png rename : python/psutil/docs/_static/sidebar.js => third_party/python/psutil/docs/_static/sidebar.js rename : python/psutil/docs/_template/globaltoc.html => third_party/python/psutil/docs/_template/globaltoc.html rename : python/psutil/docs/_template/indexcontent.html => third_party/python/psutil/docs/_template/indexcontent.html rename : python/psutil/docs/_template/indexsidebar.html => third_party/python/psutil/docs/_template/indexsidebar.html rename : python/psutil/docs/_template/page.html => third_party/python/psutil/docs/_template/page.html rename : python/psutil/docs/_themes/pydoctheme/static/pydoctheme.css => third_party/python/psutil/docs/_themes/pydoctheme/static/pydoctheme.css rename : python/psutil/docs/_themes/pydoctheme/theme.conf => third_party/python/psutil/docs/_themes/pydoctheme/theme.conf rename : python/psutil/docs/conf.py => third_party/python/psutil/docs/conf.py rename : python/psutil/docs/index.rst => third_party/python/psutil/docs/index.rst rename : python/psutil/docs/make.bat => third_party/python/psutil/docs/make.bat rename : python/psutil/docs/xxx => third_party/python/psutil/docs/xxx rename : python/psutil/examples/disk_usage.py => third_party/python/psutil/examples/disk_usage.py rename : python/psutil/examples/free.py => third_party/python/psutil/examples/free.py rename : python/psutil/examples/ifconfig.py => third_party/python/psutil/examples/ifconfig.py rename : python/psutil/examples/iotop.py => third_party/python/psutil/examples/iotop.py rename : python/psutil/examples/killall.py => third_party/python/psutil/examples/killall.py rename : python/psutil/examples/meminfo.py => third_party/python/psutil/examples/meminfo.py rename : python/psutil/examples/netstat.py => third_party/python/psutil/examples/netstat.py rename : python/psutil/examples/nettop.py => third_party/python/psutil/examples/nettop.py rename : python/psutil/examples/pidof.py => third_party/python/psutil/examples/pidof.py rename : python/psutil/examples/pmap.py => third_party/python/psutil/examples/pmap.py rename : python/psutil/examples/process_detail.py => third_party/python/psutil/examples/process_detail.py rename : python/psutil/examples/ps.py => third_party/python/psutil/examples/ps.py rename : python/psutil/examples/pstree.py => third_party/python/psutil/examples/pstree.py rename : python/psutil/examples/top.py => third_party/python/psutil/examples/top.py rename : python/psutil/examples/who.py => third_party/python/psutil/examples/who.py rename : python/psutil/make.bat => third_party/python/psutil/make.bat rename : python/psutil/psutil.egg-info/PKG-INFO => third_party/python/psutil/psutil.egg-info/PKG-INFO rename : python/psutil/psutil.egg-info/SOURCES.txt => third_party/python/psutil/psutil.egg-info/SOURCES.txt rename : python/psutil/psutil.egg-info/dependency_links.txt => third_party/python/psutil/psutil.egg-info/dependency_links.txt rename : python/psutil/psutil.egg-info/top_level.txt => third_party/python/psutil/psutil.egg-info/top_level.txt rename : python/psutil/psutil/__init__.py => third_party/python/psutil/psutil/__init__.py rename : python/psutil/psutil/_common.py => third_party/python/psutil/psutil/_common.py rename : python/psutil/psutil/_compat.py => third_party/python/psutil/psutil/_compat.py rename : python/psutil/psutil/_psbsd.py => third_party/python/psutil/psutil/_psbsd.py rename : python/psutil/psutil/_pslinux.py => third_party/python/psutil/psutil/_pslinux.py rename : python/psutil/psutil/_psosx.py => third_party/python/psutil/psutil/_psosx.py rename : python/psutil/psutil/_psposix.py => third_party/python/psutil/psutil/_psposix.py rename : python/psutil/psutil/_pssunos.py => third_party/python/psutil/psutil/_pssunos.py rename : python/psutil/psutil/_psutil_bsd.c => third_party/python/psutil/psutil/_psutil_bsd.c rename : python/psutil/psutil/_psutil_bsd.h => third_party/python/psutil/psutil/_psutil_bsd.h rename : python/psutil/psutil/_psutil_common.c => third_party/python/psutil/psutil/_psutil_common.c rename : python/psutil/psutil/_psutil_common.h => third_party/python/psutil/psutil/_psutil_common.h rename : python/psutil/psutil/_psutil_linux.c => third_party/python/psutil/psutil/_psutil_linux.c rename : python/psutil/psutil/_psutil_linux.h => third_party/python/psutil/psutil/_psutil_linux.h rename : python/psutil/psutil/_psutil_osx.c => third_party/python/psutil/psutil/_psutil_osx.c rename : python/psutil/psutil/_psutil_osx.h => third_party/python/psutil/psutil/_psutil_osx.h rename : python/psutil/psutil/_psutil_posix.c => third_party/python/psutil/psutil/_psutil_posix.c rename : python/psutil/psutil/_psutil_posix.h => third_party/python/psutil/psutil/_psutil_posix.h rename : python/psutil/psutil/_psutil_sunos.c => third_party/python/psutil/psutil/_psutil_sunos.c rename : python/psutil/psutil/_psutil_sunos.h => third_party/python/psutil/psutil/_psutil_sunos.h rename : python/psutil/psutil/_psutil_windows.c => third_party/python/psutil/psutil/_psutil_windows.c rename : python/psutil/psutil/_psutil_windows.h => third_party/python/psutil/psutil/_psutil_windows.h rename : python/psutil/psutil/_pswindows.py => third_party/python/psutil/psutil/_pswindows.py rename : python/psutil/psutil/arch/bsd/process_info.c => third_party/python/psutil/psutil/arch/bsd/process_info.c rename : python/psutil/psutil/arch/bsd/process_info.h => third_party/python/psutil/psutil/arch/bsd/process_info.h rename : python/psutil/psutil/arch/osx/process_info.c => third_party/python/psutil/psutil/arch/osx/process_info.c rename : python/psutil/psutil/arch/osx/process_info.h => third_party/python/psutil/psutil/arch/osx/process_info.h rename : python/psutil/psutil/arch/windows/glpi.h => third_party/python/psutil/psutil/arch/windows/glpi.h rename : python/psutil/psutil/arch/windows/inet_ntop.c => third_party/python/psutil/psutil/arch/windows/inet_ntop.c rename : python/psutil/psutil/arch/windows/inet_ntop.h => third_party/python/psutil/psutil/arch/windows/inet_ntop.h rename : python/psutil/psutil/arch/windows/ntextapi.h => third_party/python/psutil/psutil/arch/windows/ntextapi.h rename : python/psutil/psutil/arch/windows/process_handles.c => third_party/python/psutil/psutil/arch/windows/process_handles.c rename : python/psutil/psutil/arch/windows/process_handles.h => third_party/python/psutil/psutil/arch/windows/process_handles.h rename : python/psutil/psutil/arch/windows/process_info.c => third_party/python/psutil/psutil/arch/windows/process_info.c rename : python/psutil/psutil/arch/windows/process_info.h => third_party/python/psutil/psutil/arch/windows/process_info.h rename : python/psutil/psutil/arch/windows/security.c => third_party/python/psutil/psutil/arch/windows/security.c rename : python/psutil/psutil/arch/windows/security.h => third_party/python/psutil/psutil/arch/windows/security.h rename : python/psutil/setup.cfg => third_party/python/psutil/setup.cfg rename : python/psutil/setup.py => third_party/python/psutil/setup.py rename : python/psutil/test/README.rst => third_party/python/psutil/test/README.rst rename : python/psutil/test/_bsd.py => third_party/python/psutil/test/_bsd.py rename : python/psutil/test/_linux.py => third_party/python/psutil/test/_linux.py rename : python/psutil/test/_osx.py => third_party/python/psutil/test/_osx.py rename : python/psutil/test/_posix.py => third_party/python/psutil/test/_posix.py rename : python/psutil/test/_sunos.py => third_party/python/psutil/test/_sunos.py rename : python/psutil/test/_windows.py => third_party/python/psutil/test/_windows.py rename : python/psutil/test/test_memory_leaks.py => third_party/python/psutil/test/test_memory_leaks.py rename : python/psutil/test/test_psutil.py => third_party/python/psutil/test/test_psutil.py rename : python/psutil/tox.ini => third_party/python/psutil/tox.ini rename : python/py/AUTHORS => third_party/python/py/AUTHORS rename : python/py/LICENSE => third_party/python/py/LICENSE rename : python/py/MANIFEST.in => third_party/python/py/MANIFEST.in rename : python/py/PKG-INFO => third_party/python/py/PKG-INFO rename : python/py/README.txt => third_party/python/py/README.txt rename : python/py/py/__init__.py => third_party/python/py/py/__init__.py rename : python/py/py/__metainfo.py => third_party/python/py/py/__metainfo.py rename : python/py/py/_apipkg.py => third_party/python/py/py/_apipkg.py rename : python/py/py/_builtin.py => third_party/python/py/py/_builtin.py rename : python/py/py/_code/__init__.py => third_party/python/py/py/_code/__init__.py rename : python/py/py/_code/_assertionnew.py => third_party/python/py/py/_code/_assertionnew.py rename : python/py/py/_code/_assertionold.py => third_party/python/py/py/_code/_assertionold.py rename : python/py/py/_code/_py2traceback.py => third_party/python/py/py/_code/_py2traceback.py rename : python/py/py/_code/assertion.py => third_party/python/py/py/_code/assertion.py rename : python/py/py/_code/code.py => third_party/python/py/py/_code/code.py rename : python/py/py/_code/source.py => third_party/python/py/py/_code/source.py rename : python/py/py/_error.py => third_party/python/py/py/_error.py rename : python/py/py/_iniconfig.py => third_party/python/py/py/_iniconfig.py rename : python/py/py/_io/__init__.py => third_party/python/py/py/_io/__init__.py rename : python/py/py/_io/capture.py => third_party/python/py/py/_io/capture.py rename : python/py/py/_io/saferepr.py => third_party/python/py/py/_io/saferepr.py rename : python/py/py/_io/terminalwriter.py => third_party/python/py/py/_io/terminalwriter.py rename : python/py/py/_log/__init__.py => third_party/python/py/py/_log/__init__.py rename : python/py/py/_log/log.py => third_party/python/py/py/_log/log.py rename : python/py/py/_log/warning.py => third_party/python/py/py/_log/warning.py rename : python/py/py/_path/__init__.py => third_party/python/py/py/_path/__init__.py rename : python/py/py/_path/cacheutil.py => third_party/python/py/py/_path/cacheutil.py rename : python/py/py/_path/common.py => third_party/python/py/py/_path/common.py rename : python/py/py/_path/local.py => third_party/python/py/py/_path/local.py rename : python/py/py/_path/svnurl.py => third_party/python/py/py/_path/svnurl.py rename : python/py/py/_path/svnwc.py => third_party/python/py/py/_path/svnwc.py rename : python/py/py/_process/__init__.py => third_party/python/py/py/_process/__init__.py rename : python/py/py/_process/cmdexec.py => third_party/python/py/py/_process/cmdexec.py rename : python/py/py/_process/forkedfunc.py => third_party/python/py/py/_process/forkedfunc.py rename : python/py/py/_process/killproc.py => third_party/python/py/py/_process/killproc.py rename : python/py/py/_std.py => third_party/python/py/py/_std.py rename : python/py/py/_xmlgen.py => third_party/python/py/py/_xmlgen.py rename : python/py/py/test.py => third_party/python/py/py/test.py rename : python/py/setup.cfg => third_party/python/py/setup.cfg rename : python/py/setup.py => third_party/python/py/setup.py rename : python/pyasn1-modules/CHANGES => third_party/python/pyasn1-modules/CHANGES rename : python/pyasn1-modules/LICENSE => third_party/python/pyasn1-modules/LICENSE rename : python/pyasn1-modules/MANIFEST.in => third_party/python/pyasn1-modules/MANIFEST.in rename : python/pyasn1-modules/PKG-INFO => third_party/python/pyasn1-modules/PKG-INFO rename : python/pyasn1-modules/README => third_party/python/pyasn1-modules/README rename : python/pyasn1-modules/pyasn1_modules.egg-info/PKG-INFO => third_party/python/pyasn1-modules/pyasn1_modules.egg-info/PKG-INFO rename : python/pyasn1-modules/pyasn1_modules.egg-info/SOURCES.txt => third_party/python/pyasn1-modules/pyasn1_modules.egg-info/SOURCES.txt rename : python/pyasn1-modules/pyasn1_modules.egg-info/dependency_links.txt => third_party/python/pyasn1-modules/pyasn1_modules.egg-info/dependency_links.txt rename : python/pyasn1-modules/pyasn1_modules.egg-info/requires.txt => third_party/python/pyasn1-modules/pyasn1_modules.egg-info/requires.txt rename : python/pyasn1-modules/pyasn1_modules.egg-info/top_level.txt => third_party/python/pyasn1-modules/pyasn1_modules.egg-info/top_level.txt rename : python/pyasn1-modules/pyasn1_modules.egg-info/zip-safe => third_party/python/pyasn1-modules/pyasn1_modules.egg-info/zip-safe rename : python/pyasn1-modules/pyasn1_modules/__init__.py => third_party/python/pyasn1-modules/pyasn1_modules/__init__.py rename : python/pyasn1-modules/pyasn1_modules/pem.py => third_party/python/pyasn1-modules/pyasn1_modules/pem.py rename : python/pyasn1-modules/pyasn1_modules/pkcs12.py => third_party/python/pyasn1-modules/pyasn1_modules/pkcs12.py rename : python/pyasn1-modules/pyasn1_modules/rfc1155.py => third_party/python/pyasn1-modules/pyasn1_modules/rfc1155.py rename : python/pyasn1-modules/pyasn1_modules/rfc1157.py => third_party/python/pyasn1-modules/pyasn1_modules/rfc1157.py rename : python/pyasn1-modules/pyasn1_modules/rfc1901.py => third_party/python/pyasn1-modules/pyasn1_modules/rfc1901.py rename : python/pyasn1-modules/pyasn1_modules/rfc1902.py => third_party/python/pyasn1-modules/pyasn1_modules/rfc1902.py rename : python/pyasn1-modules/pyasn1_modules/rfc1905.py => third_party/python/pyasn1-modules/pyasn1_modules/rfc1905.py rename : python/pyasn1-modules/pyasn1_modules/rfc2251.py => third_party/python/pyasn1-modules/pyasn1_modules/rfc2251.py rename : python/pyasn1-modules/pyasn1_modules/rfc2314.py => third_party/python/pyasn1-modules/pyasn1_modules/rfc2314.py rename : python/pyasn1-modules/pyasn1_modules/rfc2315.py => third_party/python/pyasn1-modules/pyasn1_modules/rfc2315.py rename : python/pyasn1-modules/pyasn1_modules/rfc2437.py => third_party/python/pyasn1-modules/pyasn1_modules/rfc2437.py rename : python/pyasn1-modules/pyasn1_modules/rfc2459.py => third_party/python/pyasn1-modules/pyasn1_modules/rfc2459.py rename : python/pyasn1-modules/pyasn1_modules/rfc2511.py => third_party/python/pyasn1-modules/pyasn1_modules/rfc2511.py rename : python/pyasn1-modules/pyasn1_modules/rfc2560.py => third_party/python/pyasn1-modules/pyasn1_modules/rfc2560.py rename : python/pyasn1-modules/pyasn1_modules/rfc3412.py => third_party/python/pyasn1-modules/pyasn1_modules/rfc3412.py rename : python/pyasn1-modules/pyasn1_modules/rfc3414.py => third_party/python/pyasn1-modules/pyasn1_modules/rfc3414.py rename : python/pyasn1-modules/pyasn1_modules/rfc3447.py => third_party/python/pyasn1-modules/pyasn1_modules/rfc3447.py rename : python/pyasn1-modules/pyasn1_modules/rfc4210.py => third_party/python/pyasn1-modules/pyasn1_modules/rfc4210.py rename : python/pyasn1-modules/pyasn1_modules/rfc5208.py => third_party/python/pyasn1-modules/pyasn1_modules/rfc5208.py rename : python/pyasn1-modules/setup.cfg => third_party/python/pyasn1-modules/setup.cfg rename : python/pyasn1-modules/setup.py => third_party/python/pyasn1-modules/setup.py rename : python/pyasn1-modules/test/cmp.sh => third_party/python/pyasn1-modules/test/cmp.sh rename : python/pyasn1-modules/test/crl.sh => third_party/python/pyasn1-modules/test/crl.sh rename : python/pyasn1-modules/test/crmf.sh => third_party/python/pyasn1-modules/test/crmf.sh rename : python/pyasn1-modules/test/ocspreq.sh => third_party/python/pyasn1-modules/test/ocspreq.sh rename : python/pyasn1-modules/test/ocsprsp.sh => third_party/python/pyasn1-modules/test/ocsprsp.sh rename : python/pyasn1-modules/test/pkcs1.sh => third_party/python/pyasn1-modules/test/pkcs1.sh rename : python/pyasn1-modules/test/pkcs10.sh => third_party/python/pyasn1-modules/test/pkcs10.sh rename : python/pyasn1-modules/test/pkcs7.sh => third_party/python/pyasn1-modules/test/pkcs7.sh rename : python/pyasn1-modules/test/pkcs8.sh => third_party/python/pyasn1-modules/test/pkcs8.sh rename : python/pyasn1-modules/test/x509dump.sh => third_party/python/pyasn1-modules/test/x509dump.sh rename : python/pyasn1-modules/tools/cmpdump.py => third_party/python/pyasn1-modules/tools/cmpdump.py rename : python/pyasn1-modules/tools/crldump.py => third_party/python/pyasn1-modules/tools/crldump.py rename : python/pyasn1-modules/tools/crmfdump.py => third_party/python/pyasn1-modules/tools/crmfdump.py rename : python/pyasn1-modules/tools/ocspclient.py => third_party/python/pyasn1-modules/tools/ocspclient.py rename : python/pyasn1-modules/tools/ocspreqdump.py => third_party/python/pyasn1-modules/tools/ocspreqdump.py rename : python/pyasn1-modules/tools/ocsprspdump.py => third_party/python/pyasn1-modules/tools/ocsprspdump.py rename : python/pyasn1-modules/tools/ocspserver.py => third_party/python/pyasn1-modules/tools/ocspserver.py rename : python/pyasn1-modules/tools/pkcs10dump.py => third_party/python/pyasn1-modules/tools/pkcs10dump.py rename : python/pyasn1-modules/tools/pkcs1dump.py => third_party/python/pyasn1-modules/tools/pkcs1dump.py rename : python/pyasn1-modules/tools/pkcs7dump.py => third_party/python/pyasn1-modules/tools/pkcs7dump.py rename : python/pyasn1-modules/tools/pkcs8dump.py => third_party/python/pyasn1-modules/tools/pkcs8dump.py rename : python/pyasn1-modules/tools/snmpget.py => third_party/python/pyasn1-modules/tools/snmpget.py rename : python/pyasn1-modules/tools/x509dump.py => third_party/python/pyasn1-modules/tools/x509dump.py rename : python/pyasn1/CHANGES => third_party/python/pyasn1/CHANGES rename : python/pyasn1/LICENSE => third_party/python/pyasn1/LICENSE rename : python/pyasn1/MANIFEST.in => third_party/python/pyasn1/MANIFEST.in rename : python/pyasn1/PKG-INFO => third_party/python/pyasn1/PKG-INFO rename : python/pyasn1/README => third_party/python/pyasn1/README rename : python/pyasn1/THANKS => third_party/python/pyasn1/THANKS rename : python/pyasn1/TODO => third_party/python/pyasn1/TODO rename : python/pyasn1/doc/codecs.html => third_party/python/pyasn1/doc/codecs.html rename : python/pyasn1/doc/constraints.html => third_party/python/pyasn1/doc/constraints.html rename : python/pyasn1/doc/constructed.html => third_party/python/pyasn1/doc/constructed.html rename : python/pyasn1/doc/intro.html => third_party/python/pyasn1/doc/intro.html rename : python/pyasn1/doc/pyasn1-tutorial.html => third_party/python/pyasn1/doc/pyasn1-tutorial.html rename : python/pyasn1/doc/scalar.html => third_party/python/pyasn1/doc/scalar.html rename : python/pyasn1/doc/tagging.html => third_party/python/pyasn1/doc/tagging.html rename : python/pyasn1/pyasn1.egg-info/PKG-INFO => third_party/python/pyasn1/pyasn1.egg-info/PKG-INFO rename : python/pyasn1/pyasn1.egg-info/SOURCES.txt => third_party/python/pyasn1/pyasn1.egg-info/SOURCES.txt rename : python/pyasn1/pyasn1.egg-info/dependency_links.txt => third_party/python/pyasn1/pyasn1.egg-info/dependency_links.txt rename : python/pyasn1/pyasn1.egg-info/top_level.txt => third_party/python/pyasn1/pyasn1.egg-info/top_level.txt rename : python/pyasn1/pyasn1.egg-info/zip-safe => third_party/python/pyasn1/pyasn1.egg-info/zip-safe rename : python/pyasn1/pyasn1/__init__.py => third_party/python/pyasn1/pyasn1/__init__.py rename : python/pyasn1/pyasn1/codec/__init__.py => third_party/python/pyasn1/pyasn1/codec/__init__.py rename : python/pyasn1/pyasn1/codec/ber/__init__.py => third_party/python/pyasn1/pyasn1/codec/ber/__init__.py rename : python/pyasn1/pyasn1/codec/ber/decoder.py => third_party/python/pyasn1/pyasn1/codec/ber/decoder.py rename : python/pyasn1/pyasn1/codec/ber/encoder.py => third_party/python/pyasn1/pyasn1/codec/ber/encoder.py rename : python/pyasn1/pyasn1/codec/ber/eoo.py => third_party/python/pyasn1/pyasn1/codec/ber/eoo.py rename : python/pyasn1/pyasn1/codec/cer/__init__.py => third_party/python/pyasn1/pyasn1/codec/cer/__init__.py rename : python/pyasn1/pyasn1/codec/cer/decoder.py => third_party/python/pyasn1/pyasn1/codec/cer/decoder.py rename : python/pyasn1/pyasn1/codec/cer/encoder.py => third_party/python/pyasn1/pyasn1/codec/cer/encoder.py rename : python/pyasn1/pyasn1/codec/der/__init__.py => third_party/python/pyasn1/pyasn1/codec/der/__init__.py rename : python/pyasn1/pyasn1/codec/der/decoder.py => third_party/python/pyasn1/pyasn1/codec/der/decoder.py rename : python/pyasn1/pyasn1/codec/der/encoder.py => third_party/python/pyasn1/pyasn1/codec/der/encoder.py rename : python/pyasn1/pyasn1/compat/__init__.py => third_party/python/pyasn1/pyasn1/compat/__init__.py rename : python/pyasn1/pyasn1/compat/octets.py => third_party/python/pyasn1/pyasn1/compat/octets.py rename : python/pyasn1/pyasn1/debug.py => third_party/python/pyasn1/pyasn1/debug.py rename : python/pyasn1/pyasn1/error.py => third_party/python/pyasn1/pyasn1/error.py rename : python/pyasn1/pyasn1/type/__init__.py => third_party/python/pyasn1/pyasn1/type/__init__.py rename : python/pyasn1/pyasn1/type/base.py => third_party/python/pyasn1/pyasn1/type/base.py rename : python/pyasn1/pyasn1/type/char.py => third_party/python/pyasn1/pyasn1/type/char.py rename : python/pyasn1/pyasn1/type/constraint.py => third_party/python/pyasn1/pyasn1/type/constraint.py rename : python/pyasn1/pyasn1/type/error.py => third_party/python/pyasn1/pyasn1/type/error.py rename : python/pyasn1/pyasn1/type/namedtype.py => third_party/python/pyasn1/pyasn1/type/namedtype.py rename : python/pyasn1/pyasn1/type/namedval.py => third_party/python/pyasn1/pyasn1/type/namedval.py rename : python/pyasn1/pyasn1/type/tag.py => third_party/python/pyasn1/pyasn1/type/tag.py rename : python/pyasn1/pyasn1/type/tagmap.py => third_party/python/pyasn1/pyasn1/type/tagmap.py rename : python/pyasn1/pyasn1/type/univ.py => third_party/python/pyasn1/pyasn1/type/univ.py rename : python/pyasn1/pyasn1/type/useful.py => third_party/python/pyasn1/pyasn1/type/useful.py rename : python/pyasn1/setup.cfg => third_party/python/pyasn1/setup.cfg rename : python/pyasn1/setup.py => third_party/python/pyasn1/setup.py rename : python/pyasn1/test/__init__.py => third_party/python/pyasn1/test/__init__.py rename : python/pyasn1/test/codec/__init__.py => third_party/python/pyasn1/test/codec/__init__.py rename : python/pyasn1/test/codec/ber/__init__.py => third_party/python/pyasn1/test/codec/ber/__init__.py rename : python/pyasn1/test/codec/ber/suite.py => third_party/python/pyasn1/test/codec/ber/suite.py rename : python/pyasn1/test/codec/ber/test_decoder.py => third_party/python/pyasn1/test/codec/ber/test_decoder.py rename : python/pyasn1/test/codec/ber/test_encoder.py => third_party/python/pyasn1/test/codec/ber/test_encoder.py rename : python/pyasn1/test/codec/cer/__init__.py => third_party/python/pyasn1/test/codec/cer/__init__.py rename : python/pyasn1/test/codec/cer/suite.py => third_party/python/pyasn1/test/codec/cer/suite.py rename : python/pyasn1/test/codec/cer/test_decoder.py => third_party/python/pyasn1/test/codec/cer/test_decoder.py rename : python/pyasn1/test/codec/cer/test_encoder.py => third_party/python/pyasn1/test/codec/cer/test_encoder.py rename : python/pyasn1/test/codec/der/__init__.py => third_party/python/pyasn1/test/codec/der/__init__.py rename : python/pyasn1/test/codec/der/suite.py => third_party/python/pyasn1/test/codec/der/suite.py rename : python/pyasn1/test/codec/der/test_decoder.py => third_party/python/pyasn1/test/codec/der/test_decoder.py rename : python/pyasn1/test/codec/der/test_encoder.py => third_party/python/pyasn1/test/codec/der/test_encoder.py rename : python/pyasn1/test/codec/suite.py => third_party/python/pyasn1/test/codec/suite.py rename : python/pyasn1/test/suite.py => third_party/python/pyasn1/test/suite.py rename : python/pyasn1/test/type/__init__.py => third_party/python/pyasn1/test/type/__init__.py rename : python/pyasn1/test/type/suite.py => third_party/python/pyasn1/test/type/suite.py rename : python/pyasn1/test/type/test_constraint.py => third_party/python/pyasn1/test/type/test_constraint.py rename : python/pyasn1/test/type/test_namedtype.py => third_party/python/pyasn1/test/type/test_namedtype.py rename : python/pyasn1/test/type/test_tag.py => third_party/python/pyasn1/test/type/test_tag.py rename : python/pyasn1/test/type/test_univ.py => third_party/python/pyasn1/test/type/test_univ.py rename : python/pylru/pylru.py => third_party/python/pylru/pylru.py rename : python/pylru/test.py => third_party/python/pylru/test.py rename : python/pystache/.gitignore => third_party/python/pystache/.gitignore rename : python/pystache/.gitmodules => third_party/python/pystache/.gitmodules rename : python/pystache/.travis.yml => third_party/python/pystache/.travis.yml rename : python/pystache/HISTORY.md => third_party/python/pystache/HISTORY.md rename : python/pystache/LICENSE => third_party/python/pystache/LICENSE rename : python/pystache/MANIFEST.in => third_party/python/pystache/MANIFEST.in rename : python/pystache/README.md => third_party/python/pystache/README.md rename : python/pystache/TODO.md => third_party/python/pystache/TODO.md rename : python/pystache/gh/images/logo_phillips.png => third_party/python/pystache/gh/images/logo_phillips.png rename : python/pystache/pystache/__init__.py => third_party/python/pystache/pystache/__init__.py rename : python/pystache/pystache/commands/__init__.py => third_party/python/pystache/pystache/commands/__init__.py rename : python/pystache/pystache/commands/render.py => third_party/python/pystache/pystache/commands/render.py rename : python/pystache/pystache/commands/test.py => third_party/python/pystache/pystache/commands/test.py rename : python/pystache/pystache/common.py => third_party/python/pystache/pystache/common.py rename : python/pystache/pystache/context.py => third_party/python/pystache/pystache/context.py rename : python/pystache/pystache/defaults.py => third_party/python/pystache/pystache/defaults.py rename : python/pystache/pystache/init.py => third_party/python/pystache/pystache/init.py rename : python/pystache/pystache/loader.py => third_party/python/pystache/pystache/loader.py rename : python/pystache/pystache/locator.py => third_party/python/pystache/pystache/locator.py rename : python/pystache/pystache/parsed.py => third_party/python/pystache/pystache/parsed.py rename : python/pystache/pystache/parser.py => third_party/python/pystache/pystache/parser.py rename : python/pystache/pystache/renderengine.py => third_party/python/pystache/pystache/renderengine.py rename : python/pystache/pystache/renderer.py => third_party/python/pystache/pystache/renderer.py rename : python/pystache/pystache/specloader.py => third_party/python/pystache/pystache/specloader.py rename : python/pystache/pystache/template_spec.py => third_party/python/pystache/pystache/template_spec.py rename : python/pystache/setup.py => third_party/python/pystache/setup.py rename : python/pystache/setup_description.rst => third_party/python/pystache/setup_description.rst rename : python/pystache/test_pystache.py => third_party/python/pystache/test_pystache.py rename : python/pystache/tox.ini => third_party/python/pystache/tox.ini rename : python/pytest/.coveragerc => third_party/python/pytest/.coveragerc rename : python/pytest/AUTHORS => third_party/python/pytest/AUTHORS rename : python/pytest/LICENSE => third_party/python/pytest/LICENSE rename : python/pytest/MANIFEST.in => third_party/python/pytest/MANIFEST.in rename : python/pytest/PKG-INFO => third_party/python/pytest/PKG-INFO rename : python/pytest/README.rst => third_party/python/pytest/README.rst rename : python/pytest/_pytest/__init__.py => third_party/python/pytest/_pytest/__init__.py rename : python/pytest/_pytest/_argcomplete.py => third_party/python/pytest/_pytest/_argcomplete.py rename : python/pytest/_pytest/_code/__init__.py => third_party/python/pytest/_pytest/_code/__init__.py rename : python/pytest/_pytest/_code/_py2traceback.py => third_party/python/pytest/_pytest/_code/_py2traceback.py rename : python/pytest/_pytest/_code/code.py => third_party/python/pytest/_pytest/_code/code.py rename : python/pytest/_pytest/_code/source.py => third_party/python/pytest/_pytest/_code/source.py rename : python/pytest/_pytest/_pluggy.py => third_party/python/pytest/_pytest/_pluggy.py rename : python/pytest/_pytest/assertion/__init__.py => third_party/python/pytest/_pytest/assertion/__init__.py rename : python/pytest/_pytest/assertion/reinterpret.py => third_party/python/pytest/_pytest/assertion/reinterpret.py rename : python/pytest/_pytest/assertion/rewrite.py => third_party/python/pytest/_pytest/assertion/rewrite.py rename : python/pytest/_pytest/assertion/util.py => third_party/python/pytest/_pytest/assertion/util.py rename : python/pytest/_pytest/cacheprovider.py => third_party/python/pytest/_pytest/cacheprovider.py rename : python/pytest/_pytest/capture.py => third_party/python/pytest/_pytest/capture.py rename : python/pytest/_pytest/config.py => third_party/python/pytest/_pytest/config.py rename : python/pytest/_pytest/doctest.py => third_party/python/pytest/_pytest/doctest.py rename : python/pytest/_pytest/genscript.py => third_party/python/pytest/_pytest/genscript.py rename : python/pytest/_pytest/helpconfig.py => third_party/python/pytest/_pytest/helpconfig.py rename : python/pytest/_pytest/hookspec.py => third_party/python/pytest/_pytest/hookspec.py rename : python/pytest/_pytest/junitxml.py => third_party/python/pytest/_pytest/junitxml.py rename : python/pytest/_pytest/main.py => third_party/python/pytest/_pytest/main.py rename : python/pytest/_pytest/mark.py => third_party/python/pytest/_pytest/mark.py rename : python/pytest/_pytest/monkeypatch.py => third_party/python/pytest/_pytest/monkeypatch.py rename : python/pytest/_pytest/nose.py => third_party/python/pytest/_pytest/nose.py rename : python/pytest/_pytest/pastebin.py => third_party/python/pytest/_pytest/pastebin.py rename : python/pytest/_pytest/pdb.py => third_party/python/pytest/_pytest/pdb.py rename : python/pytest/_pytest/pytester.py => third_party/python/pytest/_pytest/pytester.py rename : python/pytest/_pytest/python.py => third_party/python/pytest/_pytest/python.py rename : python/pytest/_pytest/recwarn.py => third_party/python/pytest/_pytest/recwarn.py rename : python/pytest/_pytest/resultlog.py => third_party/python/pytest/_pytest/resultlog.py rename : python/pytest/_pytest/runner.py => third_party/python/pytest/_pytest/runner.py rename : python/pytest/_pytest/skipping.py => third_party/python/pytest/_pytest/skipping.py rename : python/pytest/_pytest/standalonetemplate.py => third_party/python/pytest/_pytest/standalonetemplate.py rename : python/pytest/_pytest/terminal.py => third_party/python/pytest/_pytest/terminal.py rename : python/pytest/_pytest/tmpdir.py => third_party/python/pytest/_pytest/tmpdir.py rename : python/pytest/_pytest/unittest.py => third_party/python/pytest/_pytest/unittest.py rename : python/pytest/_pytest/vendored_packages/README.md => third_party/python/pytest/_pytest/vendored_packages/README.md rename : python/pytest/_pytest/vendored_packages/__init__.py => third_party/python/pytest/_pytest/vendored_packages/__init__.py rename : python/pytest/_pytest/vendored_packages/pluggy-0.3.1.dist-info/DESCRIPTION.rst => third_party/python/pytest/_pytest/vendored_packages/pluggy-0.3.1.dist-info/DESCRIPTION.rst rename : python/pytest/_pytest/vendored_packages/pluggy-0.3.1.dist-info/METADATA => third_party/python/pytest/_pytest/vendored_packages/pluggy-0.3.1.dist-info/METADATA rename : python/pytest/_pytest/vendored_packages/pluggy-0.3.1.dist-info/RECORD => third_party/python/pytest/_pytest/vendored_packages/pluggy-0.3.1.dist-info/RECORD rename : python/pytest/_pytest/vendored_packages/pluggy-0.3.1.dist-info/WHEEL => third_party/python/pytest/_pytest/vendored_packages/pluggy-0.3.1.dist-info/WHEEL rename : python/pytest/_pytest/vendored_packages/pluggy-0.3.1.dist-info/metadata.json => third_party/python/pytest/_pytest/vendored_packages/pluggy-0.3.1.dist-info/metadata.json rename : python/pytest/_pytest/vendored_packages/pluggy-0.3.1.dist-info/pbr.json => third_party/python/pytest/_pytest/vendored_packages/pluggy-0.3.1.dist-info/pbr.json rename : python/pytest/_pytest/vendored_packages/pluggy-0.3.1.dist-info/top_level.txt => third_party/python/pytest/_pytest/vendored_packages/pluggy-0.3.1.dist-info/top_level.txt rename : python/pytest/_pytest/vendored_packages/pluggy.py => third_party/python/pytest/_pytest/vendored_packages/pluggy.py rename : python/pytest/pytest.py => third_party/python/pytest/pytest.py rename : python/pytest/setup.cfg => third_party/python/pytest/setup.cfg rename : python/pytest/setup.py => third_party/python/pytest/setup.py rename : python/pytoml/PKG-INFO => third_party/python/pytoml/PKG-INFO rename : python/pytoml/pytoml/__init__.py => third_party/python/pytoml/pytoml/__init__.py rename : python/pytoml/pytoml/core.py => third_party/python/pytoml/pytoml/core.py rename : python/pytoml/pytoml/parser.py => third_party/python/pytoml/pytoml/parser.py rename : python/pytoml/pytoml/writer.py => third_party/python/pytoml/pytoml/writer.py rename : python/pytoml/setup.cfg => third_party/python/pytoml/setup.cfg rename : python/pytoml/setup.py => third_party/python/pytoml/setup.py rename : python/pytoml/test/test.py => third_party/python/pytoml/test/test.py rename : python/pyyaml/CHANGES => third_party/python/pyyaml/CHANGES rename : python/pyyaml/LICENSE => third_party/python/pyyaml/LICENSE rename : python/pyyaml/PKG-INFO => third_party/python/pyyaml/PKG-INFO rename : python/pyyaml/README => third_party/python/pyyaml/README rename : python/pyyaml/examples/pygments-lexer/example.yaml => third_party/python/pyyaml/examples/pygments-lexer/example.yaml rename : python/pyyaml/examples/pygments-lexer/yaml.py => third_party/python/pyyaml/examples/pygments-lexer/yaml.py rename : python/pyyaml/examples/yaml-highlight/yaml_hl.cfg => third_party/python/pyyaml/examples/yaml-highlight/yaml_hl.cfg rename : python/pyyaml/examples/yaml-highlight/yaml_hl.py => third_party/python/pyyaml/examples/yaml-highlight/yaml_hl.py rename : python/pyyaml/ext/_yaml.c => third_party/python/pyyaml/ext/_yaml.c rename : python/pyyaml/ext/_yaml.h => third_party/python/pyyaml/ext/_yaml.h rename : python/pyyaml/ext/_yaml.pxd => third_party/python/pyyaml/ext/_yaml.pxd rename : python/pyyaml/ext/_yaml.pyx => third_party/python/pyyaml/ext/_yaml.pyx rename : python/pyyaml/lib/yaml/__init__.py => third_party/python/pyyaml/lib/yaml/__init__.py rename : python/pyyaml/lib/yaml/composer.py => third_party/python/pyyaml/lib/yaml/composer.py rename : python/pyyaml/lib/yaml/constructor.py => third_party/python/pyyaml/lib/yaml/constructor.py rename : python/pyyaml/lib/yaml/cyaml.py => third_party/python/pyyaml/lib/yaml/cyaml.py rename : python/pyyaml/lib/yaml/dumper.py => third_party/python/pyyaml/lib/yaml/dumper.py rename : python/pyyaml/lib/yaml/emitter.py => third_party/python/pyyaml/lib/yaml/emitter.py rename : python/pyyaml/lib/yaml/error.py => third_party/python/pyyaml/lib/yaml/error.py rename : python/pyyaml/lib/yaml/events.py => third_party/python/pyyaml/lib/yaml/events.py rename : python/pyyaml/lib/yaml/loader.py => third_party/python/pyyaml/lib/yaml/loader.py rename : python/pyyaml/lib/yaml/nodes.py => third_party/python/pyyaml/lib/yaml/nodes.py rename : python/pyyaml/lib/yaml/parser.py => third_party/python/pyyaml/lib/yaml/parser.py rename : python/pyyaml/lib/yaml/reader.py => third_party/python/pyyaml/lib/yaml/reader.py rename : python/pyyaml/lib/yaml/representer.py => third_party/python/pyyaml/lib/yaml/representer.py rename : python/pyyaml/lib/yaml/resolver.py => third_party/python/pyyaml/lib/yaml/resolver.py rename : python/pyyaml/lib/yaml/scanner.py => third_party/python/pyyaml/lib/yaml/scanner.py rename : python/pyyaml/lib/yaml/serializer.py => third_party/python/pyyaml/lib/yaml/serializer.py rename : python/pyyaml/lib/yaml/tokens.py => third_party/python/pyyaml/lib/yaml/tokens.py rename : python/pyyaml/lib3/yaml/__init__.py => third_party/python/pyyaml/lib3/yaml/__init__.py rename : python/pyyaml/lib3/yaml/composer.py => third_party/python/pyyaml/lib3/yaml/composer.py rename : python/pyyaml/lib3/yaml/constructor.py => third_party/python/pyyaml/lib3/yaml/constructor.py rename : python/pyyaml/lib3/yaml/cyaml.py => third_party/python/pyyaml/lib3/yaml/cyaml.py rename : python/pyyaml/lib3/yaml/dumper.py => third_party/python/pyyaml/lib3/yaml/dumper.py rename : python/pyyaml/lib3/yaml/emitter.py => third_party/python/pyyaml/lib3/yaml/emitter.py rename : python/pyyaml/lib3/yaml/error.py => third_party/python/pyyaml/lib3/yaml/error.py rename : python/pyyaml/lib3/yaml/events.py => third_party/python/pyyaml/lib3/yaml/events.py rename : python/pyyaml/lib3/yaml/loader.py => third_party/python/pyyaml/lib3/yaml/loader.py rename : python/pyyaml/lib3/yaml/nodes.py => third_party/python/pyyaml/lib3/yaml/nodes.py rename : python/pyyaml/lib3/yaml/parser.py => third_party/python/pyyaml/lib3/yaml/parser.py rename : python/pyyaml/lib3/yaml/reader.py => third_party/python/pyyaml/lib3/yaml/reader.py rename : python/pyyaml/lib3/yaml/representer.py => third_party/python/pyyaml/lib3/yaml/representer.py rename : python/pyyaml/lib3/yaml/resolver.py => third_party/python/pyyaml/lib3/yaml/resolver.py rename : python/pyyaml/lib3/yaml/scanner.py => third_party/python/pyyaml/lib3/yaml/scanner.py rename : python/pyyaml/lib3/yaml/serializer.py => third_party/python/pyyaml/lib3/yaml/serializer.py rename : python/pyyaml/lib3/yaml/tokens.py => third_party/python/pyyaml/lib3/yaml/tokens.py rename : python/pyyaml/setup.cfg => third_party/python/pyyaml/setup.cfg rename : python/pyyaml/setup.py => third_party/python/pyyaml/setup.py rename : python/redo/PKG-INFO => third_party/python/redo/PKG-INFO rename : python/redo/README => third_party/python/redo/README rename : python/redo/redo.egg-info/PKG-INFO => third_party/python/redo/redo.egg-info/PKG-INFO rename : python/redo/redo.egg-info/SOURCES.txt => third_party/python/redo/redo.egg-info/SOURCES.txt rename : python/redo/redo.egg-info/dependency_links.txt => third_party/python/redo/redo.egg-info/dependency_links.txt rename : python/redo/redo.egg-info/entry_points.txt => third_party/python/redo/redo.egg-info/entry_points.txt rename : python/redo/redo.egg-info/top_level.txt => third_party/python/redo/redo.egg-info/top_level.txt rename : python/redo/redo/__init__.py => third_party/python/redo/redo/__init__.py rename : python/redo/redo/cmd.py => third_party/python/redo/redo/cmd.py rename : python/redo/setup.cfg => third_party/python/redo/setup.cfg rename : python/redo/setup.py => third_party/python/redo/setup.py rename : python/requests/HISTORY.rst => third_party/python/requests/HISTORY.rst rename : python/requests/LICENSE => third_party/python/requests/LICENSE rename : python/requests/MANIFEST.in => third_party/python/requests/MANIFEST.in rename : python/requests/NOTICE => third_party/python/requests/NOTICE rename : python/requests/PKG-INFO => third_party/python/requests/PKG-INFO rename : python/requests/README.rst => third_party/python/requests/README.rst rename : python/requests/requests.egg-info/PKG-INFO => third_party/python/requests/requests.egg-info/PKG-INFO rename : python/requests/requests.egg-info/SOURCES.txt => third_party/python/requests/requests.egg-info/SOURCES.txt rename : python/requests/requests.egg-info/dependency_links.txt => third_party/python/requests/requests.egg-info/dependency_links.txt rename : python/requests/requests.egg-info/not-zip-safe => third_party/python/requests/requests.egg-info/not-zip-safe rename : python/requests/requests.egg-info/requires.txt => third_party/python/requests/requests.egg-info/requires.txt rename : python/requests/requests.egg-info/top_level.txt => third_party/python/requests/requests.egg-info/top_level.txt rename : python/requests/requests/__init__.py => third_party/python/requests/requests/__init__.py rename : python/requests/requests/adapters.py => third_party/python/requests/requests/adapters.py rename : python/requests/requests/api.py => third_party/python/requests/requests/api.py rename : python/requests/requests/auth.py => third_party/python/requests/requests/auth.py rename : python/requests/requests/cacert.pem => third_party/python/requests/requests/cacert.pem rename : python/requests/requests/certs.py => third_party/python/requests/requests/certs.py rename : python/requests/requests/compat.py => third_party/python/requests/requests/compat.py rename : python/requests/requests/cookies.py => third_party/python/requests/requests/cookies.py rename : python/requests/requests/exceptions.py => third_party/python/requests/requests/exceptions.py rename : python/requests/requests/hooks.py => third_party/python/requests/requests/hooks.py rename : python/requests/requests/models.py => third_party/python/requests/requests/models.py rename : python/requests/requests/packages/__init__.py => third_party/python/requests/requests/packages/__init__.py rename : python/requests/requests/packages/chardet/__init__.py => third_party/python/requests/requests/packages/chardet/__init__.py rename : python/requests/requests/packages/chardet/big5freq.py => third_party/python/requests/requests/packages/chardet/big5freq.py rename : python/requests/requests/packages/chardet/big5prober.py => third_party/python/requests/requests/packages/chardet/big5prober.py rename : python/requests/requests/packages/chardet/chardetect.py => third_party/python/requests/requests/packages/chardet/chardetect.py rename : python/requests/requests/packages/chardet/chardistribution.py => third_party/python/requests/requests/packages/chardet/chardistribution.py rename : python/requests/requests/packages/chardet/charsetgroupprober.py => third_party/python/requests/requests/packages/chardet/charsetgroupprober.py rename : python/requests/requests/packages/chardet/charsetprober.py => third_party/python/requests/requests/packages/chardet/charsetprober.py rename : python/requests/requests/packages/chardet/codingstatemachine.py => third_party/python/requests/requests/packages/chardet/codingstatemachine.py rename : python/requests/requests/packages/chardet/compat.py => third_party/python/requests/requests/packages/chardet/compat.py rename : python/requests/requests/packages/chardet/constants.py => third_party/python/requests/requests/packages/chardet/constants.py rename : python/requests/requests/packages/chardet/cp949prober.py => third_party/python/requests/requests/packages/chardet/cp949prober.py rename : python/requests/requests/packages/chardet/escprober.py => third_party/python/requests/requests/packages/chardet/escprober.py rename : python/requests/requests/packages/chardet/escsm.py => third_party/python/requests/requests/packages/chardet/escsm.py rename : python/requests/requests/packages/chardet/eucjpprober.py => third_party/python/requests/requests/packages/chardet/eucjpprober.py rename : python/requests/requests/packages/chardet/euckrfreq.py => third_party/python/requests/requests/packages/chardet/euckrfreq.py rename : python/requests/requests/packages/chardet/euckrprober.py => third_party/python/requests/requests/packages/chardet/euckrprober.py rename : python/requests/requests/packages/chardet/euctwfreq.py => third_party/python/requests/requests/packages/chardet/euctwfreq.py rename : python/requests/requests/packages/chardet/euctwprober.py => third_party/python/requests/requests/packages/chardet/euctwprober.py rename : python/requests/requests/packages/chardet/gb2312freq.py => third_party/python/requests/requests/packages/chardet/gb2312freq.py rename : python/requests/requests/packages/chardet/gb2312prober.py => third_party/python/requests/requests/packages/chardet/gb2312prober.py rename : python/requests/requests/packages/chardet/hebrewprober.py => third_party/python/requests/requests/packages/chardet/hebrewprober.py rename : python/requests/requests/packages/chardet/jisfreq.py => third_party/python/requests/requests/packages/chardet/jisfreq.py rename : python/requests/requests/packages/chardet/jpcntx.py => third_party/python/requests/requests/packages/chardet/jpcntx.py rename : python/requests/requests/packages/chardet/langbulgarianmodel.py => third_party/python/requests/requests/packages/chardet/langbulgarianmodel.py rename : python/requests/requests/packages/chardet/langcyrillicmodel.py => third_party/python/requests/requests/packages/chardet/langcyrillicmodel.py rename : python/requests/requests/packages/chardet/langgreekmodel.py => third_party/python/requests/requests/packages/chardet/langgreekmodel.py rename : python/requests/requests/packages/chardet/langhebrewmodel.py => third_party/python/requests/requests/packages/chardet/langhebrewmodel.py rename : python/requests/requests/packages/chardet/langhungarianmodel.py => third_party/python/requests/requests/packages/chardet/langhungarianmodel.py rename : python/requests/requests/packages/chardet/langthaimodel.py => third_party/python/requests/requests/packages/chardet/langthaimodel.py rename : python/requests/requests/packages/chardet/latin1prober.py => third_party/python/requests/requests/packages/chardet/latin1prober.py rename : python/requests/requests/packages/chardet/mbcharsetprober.py => third_party/python/requests/requests/packages/chardet/mbcharsetprober.py rename : python/requests/requests/packages/chardet/mbcsgroupprober.py => third_party/python/requests/requests/packages/chardet/mbcsgroupprober.py rename : python/requests/requests/packages/chardet/mbcssm.py => third_party/python/requests/requests/packages/chardet/mbcssm.py rename : python/requests/requests/packages/chardet/sbcharsetprober.py => third_party/python/requests/requests/packages/chardet/sbcharsetprober.py rename : python/requests/requests/packages/chardet/sbcsgroupprober.py => third_party/python/requests/requests/packages/chardet/sbcsgroupprober.py rename : python/requests/requests/packages/chardet/sjisprober.py => third_party/python/requests/requests/packages/chardet/sjisprober.py rename : python/requests/requests/packages/chardet/universaldetector.py => third_party/python/requests/requests/packages/chardet/universaldetector.py rename : python/requests/requests/packages/chardet/utf8prober.py => third_party/python/requests/requests/packages/chardet/utf8prober.py rename : python/requests/requests/packages/urllib3/__init__.py => third_party/python/requests/requests/packages/urllib3/__init__.py rename : python/requests/requests/packages/urllib3/_collections.py => third_party/python/requests/requests/packages/urllib3/_collections.py rename : python/requests/requests/packages/urllib3/connection.py => third_party/python/requests/requests/packages/urllib3/connection.py rename : python/requests/requests/packages/urllib3/connectionpool.py => third_party/python/requests/requests/packages/urllib3/connectionpool.py rename : python/requests/requests/packages/urllib3/contrib/__init__.py => third_party/python/requests/requests/packages/urllib3/contrib/__init__.py rename : python/requests/requests/packages/urllib3/contrib/appengine.py => third_party/python/requests/requests/packages/urllib3/contrib/appengine.py rename : python/requests/requests/packages/urllib3/contrib/ntlmpool.py => third_party/python/requests/requests/packages/urllib3/contrib/ntlmpool.py rename : python/requests/requests/packages/urllib3/contrib/pyopenssl.py => third_party/python/requests/requests/packages/urllib3/contrib/pyopenssl.py rename : python/requests/requests/packages/urllib3/exceptions.py => third_party/python/requests/requests/packages/urllib3/exceptions.py rename : python/requests/requests/packages/urllib3/fields.py => third_party/python/requests/requests/packages/urllib3/fields.py rename : python/requests/requests/packages/urllib3/filepost.py => third_party/python/requests/requests/packages/urllib3/filepost.py rename : python/requests/requests/packages/urllib3/packages/__init__.py => third_party/python/requests/requests/packages/urllib3/packages/__init__.py rename : python/requests/requests/packages/urllib3/packages/ordered_dict.py => third_party/python/requests/requests/packages/urllib3/packages/ordered_dict.py rename : python/requests/requests/packages/urllib3/packages/six.py => third_party/python/requests/requests/packages/urllib3/packages/six.py rename : python/requests/requests/packages/urllib3/packages/ssl_match_hostname/__init__.py => third_party/python/requests/requests/packages/urllib3/packages/ssl_match_hostname/__init__.py rename : python/requests/requests/packages/urllib3/packages/ssl_match_hostname/_implementation.py => third_party/python/requests/requests/packages/urllib3/packages/ssl_match_hostname/_implementation.py rename : python/requests/requests/packages/urllib3/poolmanager.py => third_party/python/requests/requests/packages/urllib3/poolmanager.py rename : python/requests/requests/packages/urllib3/request.py => third_party/python/requests/requests/packages/urllib3/request.py rename : python/requests/requests/packages/urllib3/response.py => third_party/python/requests/requests/packages/urllib3/response.py rename : python/requests/requests/packages/urllib3/util/__init__.py => third_party/python/requests/requests/packages/urllib3/util/__init__.py rename : python/requests/requests/packages/urllib3/util/connection.py => third_party/python/requests/requests/packages/urllib3/util/connection.py rename : python/requests/requests/packages/urllib3/util/request.py => third_party/python/requests/requests/packages/urllib3/util/request.py rename : python/requests/requests/packages/urllib3/util/response.py => third_party/python/requests/requests/packages/urllib3/util/response.py rename : python/requests/requests/packages/urllib3/util/retry.py => third_party/python/requests/requests/packages/urllib3/util/retry.py rename : python/requests/requests/packages/urllib3/util/ssl_.py => third_party/python/requests/requests/packages/urllib3/util/ssl_.py rename : python/requests/requests/packages/urllib3/util/timeout.py => third_party/python/requests/requests/packages/urllib3/util/timeout.py rename : python/requests/requests/packages/urllib3/util/url.py => third_party/python/requests/requests/packages/urllib3/util/url.py rename : python/requests/requests/sessions.py => third_party/python/requests/requests/sessions.py rename : python/requests/requests/status_codes.py => third_party/python/requests/requests/status_codes.py rename : python/requests/requests/structures.py => third_party/python/requests/requests/structures.py rename : python/requests/requests/utils.py => third_party/python/requests/requests/utils.py rename : python/requests/requirements.txt => third_party/python/requests/requirements.txt rename : python/requests/setup.cfg => third_party/python/requests/setup.cfg rename : python/requests/setup.py => third_party/python/requests/setup.py rename : python/requests/test_requests.py => third_party/python/requests/test_requests.py rename : python/rsa/LICENSE => third_party/python/rsa/LICENSE rename : python/rsa/MANIFEST.in => third_party/python/rsa/MANIFEST.in rename : python/rsa/PKG-INFO => third_party/python/rsa/PKG-INFO rename : python/rsa/README.rst => third_party/python/rsa/README.rst rename : python/rsa/create_timing_table.py => third_party/python/rsa/create_timing_table.py rename : python/rsa/playstuff.py => third_party/python/rsa/playstuff.py rename : python/rsa/rsa.egg-info/PKG-INFO => third_party/python/rsa/rsa.egg-info/PKG-INFO rename : python/rsa/rsa.egg-info/SOURCES.txt => third_party/python/rsa/rsa.egg-info/SOURCES.txt rename : python/rsa/rsa.egg-info/dependency_links.txt => third_party/python/rsa/rsa.egg-info/dependency_links.txt rename : python/rsa/rsa.egg-info/entry_points.txt => third_party/python/rsa/rsa.egg-info/entry_points.txt rename : python/rsa/rsa.egg-info/requires.txt => third_party/python/rsa/rsa.egg-info/requires.txt rename : python/rsa/rsa.egg-info/top_level.txt => third_party/python/rsa/rsa.egg-info/top_level.txt rename : python/rsa/rsa/__init__.py => third_party/python/rsa/rsa/__init__.py rename : python/rsa/rsa/_compat.py => third_party/python/rsa/rsa/_compat.py rename : python/rsa/rsa/_version133.py => third_party/python/rsa/rsa/_version133.py rename : python/rsa/rsa/_version200.py => third_party/python/rsa/rsa/_version200.py rename : python/rsa/rsa/asn1.py => third_party/python/rsa/rsa/asn1.py rename : python/rsa/rsa/bigfile.py => third_party/python/rsa/rsa/bigfile.py rename : python/rsa/rsa/cli.py => third_party/python/rsa/rsa/cli.py rename : python/rsa/rsa/common.py => third_party/python/rsa/rsa/common.py rename : python/rsa/rsa/core.py => third_party/python/rsa/rsa/core.py rename : python/rsa/rsa/key.py => third_party/python/rsa/rsa/key.py rename : python/rsa/rsa/parallel.py => third_party/python/rsa/rsa/parallel.py rename : python/rsa/rsa/pem.py => third_party/python/rsa/rsa/pem.py rename : python/rsa/rsa/pkcs1.py => third_party/python/rsa/rsa/pkcs1.py rename : python/rsa/rsa/prime.py => third_party/python/rsa/rsa/prime.py rename : python/rsa/rsa/randnum.py => third_party/python/rsa/rsa/randnum.py rename : python/rsa/rsa/transform.py => third_party/python/rsa/rsa/transform.py rename : python/rsa/rsa/util.py => third_party/python/rsa/rsa/util.py rename : python/rsa/rsa/varblock.py => third_party/python/rsa/rsa/varblock.py rename : python/rsa/run_tests.py => third_party/python/rsa/run_tests.py rename : python/rsa/setup.cfg => third_party/python/rsa/setup.cfg rename : python/rsa/setup.py => third_party/python/rsa/setup.py rename : python/rsa/tests/__init__.py => third_party/python/rsa/tests/__init__.py rename : python/rsa/tests/constants.py => third_party/python/rsa/tests/constants.py rename : python/rsa/tests/py2kconstants.py => third_party/python/rsa/tests/py2kconstants.py rename : python/rsa/tests/py3kconstants.py => third_party/python/rsa/tests/py3kconstants.py rename : python/rsa/tests/test_bigfile.py => third_party/python/rsa/tests/test_bigfile.py rename : python/rsa/tests/test_common.py => third_party/python/rsa/tests/test_common.py rename : python/rsa/tests/test_compat.py => third_party/python/rsa/tests/test_compat.py rename : python/rsa/tests/test_integers.py => third_party/python/rsa/tests/test_integers.py rename : python/rsa/tests/test_load_save_keys.py => third_party/python/rsa/tests/test_load_save_keys.py rename : python/rsa/tests/test_pem.py => third_party/python/rsa/tests/test_pem.py rename : python/rsa/tests/test_pkcs1.py => third_party/python/rsa/tests/test_pkcs1.py rename : python/rsa/tests/test_strings.py => third_party/python/rsa/tests/test_strings.py rename : python/rsa/tests/test_transform.py => third_party/python/rsa/tests/test_transform.py rename : python/rsa/tests/test_varblock.py => third_party/python/rsa/tests/test_varblock.py rename : python/slugid/.gitignore => third_party/python/slugid/.gitignore rename : python/slugid/.travis.yml => third_party/python/slugid/.travis.yml rename : python/slugid/LICENSE => third_party/python/slugid/LICENSE rename : python/slugid/README.rst => third_party/python/slugid/README.rst rename : python/slugid/requirements.txt => third_party/python/slugid/requirements.txt rename : python/slugid/setup.py => third_party/python/slugid/setup.py rename : python/slugid/slugid/__init__.py => third_party/python/slugid/slugid/__init__.py rename : python/slugid/slugid/slugid.py => third_party/python/slugid/slugid/slugid.py rename : python/slugid/test.py => third_party/python/slugid/test.py rename : python/slugid/tox.ini => third_party/python/slugid/tox.ini rename : python/virtualenv/AUTHORS.txt => third_party/python/virtualenv/AUTHORS.txt rename : python/virtualenv/LICENSE.txt => third_party/python/virtualenv/LICENSE.txt rename : python/virtualenv/MANIFEST.in => third_party/python/virtualenv/MANIFEST.in rename : python/virtualenv/PKG-INFO => third_party/python/virtualenv/PKG-INFO rename : python/virtualenv/README.rst => third_party/python/virtualenv/README.rst rename : python/virtualenv/bin/rebuild-script.py => third_party/python/virtualenv/bin/rebuild-script.py rename : python/virtualenv/docs/Makefile => third_party/python/virtualenv/docs/Makefile rename : python/virtualenv/docs/changes.rst => third_party/python/virtualenv/docs/changes.rst rename : python/virtualenv/docs/conf.py => third_party/python/virtualenv/docs/conf.py rename : python/virtualenv/docs/development.rst => third_party/python/virtualenv/docs/development.rst rename : python/virtualenv/docs/index.rst => third_party/python/virtualenv/docs/index.rst rename : python/virtualenv/docs/installation.rst => third_party/python/virtualenv/docs/installation.rst rename : python/virtualenv/docs/make.bat => third_party/python/virtualenv/docs/make.bat rename : python/virtualenv/docs/reference.rst => third_party/python/virtualenv/docs/reference.rst rename : python/virtualenv/docs/userguide.rst => third_party/python/virtualenv/docs/userguide.rst rename : python/virtualenv/scripts/virtualenv => third_party/python/virtualenv/scripts/virtualenv rename : python/virtualenv/setup.cfg => third_party/python/virtualenv/setup.cfg rename : python/virtualenv/setup.py => third_party/python/virtualenv/setup.py rename : python/virtualenv/site.py => third_party/python/virtualenv/site.py rename : python/virtualenv/tests/__init__.py => third_party/python/virtualenv/tests/__init__.py rename : python/virtualenv/tests/test_activate.sh => third_party/python/virtualenv/tests/test_activate.sh rename : python/virtualenv/tests/test_activate_output.expected => third_party/python/virtualenv/tests/test_activate_output.expected rename : python/virtualenv/tests/test_cmdline.py => third_party/python/virtualenv/tests/test_cmdline.py rename : python/virtualenv/tests/test_virtualenv.py => third_party/python/virtualenv/tests/test_virtualenv.py rename : python/virtualenv/virtualenv.py => third_party/python/virtualenv/virtualenv.py rename : python/virtualenv/virtualenv_embedded/activate.bat => third_party/python/virtualenv/virtualenv_embedded/activate.bat rename : python/virtualenv/virtualenv_embedded/activate.csh => third_party/python/virtualenv/virtualenv_embedded/activate.csh rename : python/virtualenv/virtualenv_embedded/activate.fish => third_party/python/virtualenv/virtualenv_embedded/activate.fish rename : python/virtualenv/virtualenv_embedded/activate.ps1 => third_party/python/virtualenv/virtualenv_embedded/activate.ps1 rename : python/virtualenv/virtualenv_embedded/activate.sh => third_party/python/virtualenv/virtualenv_embedded/activate.sh rename : python/virtualenv/virtualenv_embedded/activate_this.py => third_party/python/virtualenv/virtualenv_embedded/activate_this.py rename : python/virtualenv/virtualenv_embedded/deactivate.bat => third_party/python/virtualenv/virtualenv_embedded/deactivate.bat rename : python/virtualenv/virtualenv_embedded/distutils-init.py => third_party/python/virtualenv/virtualenv_embedded/distutils-init.py rename : python/virtualenv/virtualenv_embedded/distutils.cfg => third_party/python/virtualenv/virtualenv_embedded/distutils.cfg rename : python/virtualenv/virtualenv_embedded/python-config => third_party/python/virtualenv/virtualenv_embedded/python-config rename : python/virtualenv/virtualenv_embedded/site.py => third_party/python/virtualenv/virtualenv_embedded/site.py rename : python/virtualenv/virtualenv_support/__init__.py => third_party/python/virtualenv/virtualenv_support/__init__.py rename : python/virtualenv/virtualenv_support/argparse-1.4.0-py2.py3-none-any.whl => third_party/python/virtualenv/virtualenv_support/argparse-1.4.0-py2.py3-none-any.whl rename : python/virtualenv/virtualenv_support/pip-8.1.2-py2.py3-none-any.whl => third_party/python/virtualenv/virtualenv_support/pip-8.1.2-py2.py3-none-any.whl rename : python/virtualenv/virtualenv_support/setuptools-25.2.0-py2.py3-none-any.whl => third_party/python/virtualenv/virtualenv_support/setuptools-25.2.0-py2.py3-none-any.whl rename : python/virtualenv/virtualenv_support/wheel-0.29.0-py2.py3-none-any.whl => third_party/python/virtualenv/virtualenv_support/wheel-0.29.0-py2.py3-none-any.whl rename : python/voluptuous/COPYING => third_party/python/voluptuous/COPYING rename : python/voluptuous/MANIFEST.in => third_party/python/voluptuous/MANIFEST.in rename : python/voluptuous/PKG-INFO => third_party/python/voluptuous/PKG-INFO rename : python/voluptuous/README.md => third_party/python/voluptuous/README.md rename : python/voluptuous/README.rst => third_party/python/voluptuous/README.rst rename : python/voluptuous/setup.cfg => third_party/python/voluptuous/setup.cfg rename : python/voluptuous/setup.py => third_party/python/voluptuous/setup.py rename : python/voluptuous/tests.md => third_party/python/voluptuous/tests.md rename : python/voluptuous/voluptuous.py => third_party/python/voluptuous/voluptuous.py rename : python/which/LICENSE.txt => third_party/python/which/LICENSE.txt rename : python/which/MANIFEST.in => third_party/python/which/MANIFEST.in rename : python/which/Makefile.win => third_party/python/which/Makefile.win rename : python/which/PKG-INFO => third_party/python/which/PKG-INFO rename : python/which/README.txt => third_party/python/which/README.txt rename : python/which/TODO.txt => third_party/python/which/TODO.txt rename : python/which/build.py => third_party/python/which/build.py rename : python/which/launcher.cpp => third_party/python/which/launcher.cpp rename : python/which/logo.jpg => third_party/python/which/logo.jpg rename : python/which/setup.py => third_party/python/which/setup.py rename : python/which/test/test_which.py => third_party/python/which/test/test_which.py rename : python/which/test/testsupport.py => third_party/python/which/test/testsupport.py rename : python/which/which.py => third_party/python/which/which.py extra : rebase_source : fc38848c444c36b0d38a0c33aa5be74d5037d57d
1790 lines
52 KiB
Python
1790 lines
52 KiB
Python
# Copyright (C) 2007-2012 Michael Foord & the mock team
|
|
# E-mail: fuzzyman AT voidspace DOT org DOT uk
|
|
# http://www.voidspace.org.uk/python/mock/
|
|
|
|
import os
|
|
import sys
|
|
|
|
from tests import support
|
|
from tests.support import unittest2, inPy3k, SomeClass, is_instance, callable
|
|
|
|
from mock import (
|
|
NonCallableMock, CallableMixin, patch, sentinel,
|
|
MagicMock, Mock, NonCallableMagicMock, patch, _patch,
|
|
DEFAULT, call, _get_target
|
|
)
|
|
|
|
builtin_string = '__builtin__'
|
|
if inPy3k:
|
|
builtin_string = 'builtins'
|
|
unicode = str
|
|
|
|
PTModule = sys.modules[__name__]
|
|
MODNAME = '%s.PTModule' % __name__
|
|
|
|
|
|
def _get_proxy(obj, get_only=True):
|
|
class Proxy(object):
|
|
def __getattr__(self, name):
|
|
return getattr(obj, name)
|
|
if not get_only:
|
|
def __setattr__(self, name, value):
|
|
setattr(obj, name, value)
|
|
def __delattr__(self, name):
|
|
delattr(obj, name)
|
|
Proxy.__setattr__ = __setattr__
|
|
Proxy.__delattr__ = __delattr__
|
|
return Proxy()
|
|
|
|
|
|
# for use in the test
|
|
something = sentinel.Something
|
|
something_else = sentinel.SomethingElse
|
|
|
|
|
|
class Foo(object):
|
|
def __init__(self, a):
|
|
pass
|
|
def f(self, a):
|
|
pass
|
|
def g(self):
|
|
pass
|
|
foo = 'bar'
|
|
|
|
class Bar(object):
|
|
def a(self):
|
|
pass
|
|
|
|
foo_name = '%s.Foo' % __name__
|
|
|
|
|
|
def function(a, b=Foo):
|
|
pass
|
|
|
|
|
|
class Container(object):
|
|
def __init__(self):
|
|
self.values = {}
|
|
|
|
def __getitem__(self, name):
|
|
return self.values[name]
|
|
|
|
def __setitem__(self, name, value):
|
|
self.values[name] = value
|
|
|
|
def __delitem__(self, name):
|
|
del self.values[name]
|
|
|
|
def __iter__(self):
|
|
return iter(self.values)
|
|
|
|
|
|
|
|
class PatchTest(unittest2.TestCase):
|
|
|
|
def assertNotCallable(self, obj, magic=True):
|
|
MockClass = NonCallableMagicMock
|
|
if not magic:
|
|
MockClass = NonCallableMock
|
|
|
|
self.assertRaises(TypeError, obj)
|
|
self.assertTrue(is_instance(obj, MockClass))
|
|
self.assertFalse(is_instance(obj, CallableMixin))
|
|
|
|
|
|
def test_single_patchobject(self):
|
|
class Something(object):
|
|
attribute = sentinel.Original
|
|
|
|
@patch.object(Something, 'attribute', sentinel.Patched)
|
|
def test():
|
|
self.assertEqual(Something.attribute, sentinel.Patched, "unpatched")
|
|
|
|
test()
|
|
self.assertEqual(Something.attribute, sentinel.Original,
|
|
"patch not restored")
|
|
|
|
|
|
def test_patchobject_with_none(self):
|
|
class Something(object):
|
|
attribute = sentinel.Original
|
|
|
|
@patch.object(Something, 'attribute', None)
|
|
def test():
|
|
self.assertIsNone(Something.attribute, "unpatched")
|
|
|
|
test()
|
|
self.assertEqual(Something.attribute, sentinel.Original,
|
|
"patch not restored")
|
|
|
|
|
|
def test_multiple_patchobject(self):
|
|
class Something(object):
|
|
attribute = sentinel.Original
|
|
next_attribute = sentinel.Original2
|
|
|
|
@patch.object(Something, 'attribute', sentinel.Patched)
|
|
@patch.object(Something, 'next_attribute', sentinel.Patched2)
|
|
def test():
|
|
self.assertEqual(Something.attribute, sentinel.Patched,
|
|
"unpatched")
|
|
self.assertEqual(Something.next_attribute, sentinel.Patched2,
|
|
"unpatched")
|
|
|
|
test()
|
|
self.assertEqual(Something.attribute, sentinel.Original,
|
|
"patch not restored")
|
|
self.assertEqual(Something.next_attribute, sentinel.Original2,
|
|
"patch not restored")
|
|
|
|
|
|
def test_object_lookup_is_quite_lazy(self):
|
|
global something
|
|
original = something
|
|
@patch('%s.something' % __name__, sentinel.Something2)
|
|
def test():
|
|
pass
|
|
|
|
try:
|
|
something = sentinel.replacement_value
|
|
test()
|
|
self.assertEqual(something, sentinel.replacement_value)
|
|
finally:
|
|
something = original
|
|
|
|
|
|
def test_patch(self):
|
|
@patch('%s.something' % __name__, sentinel.Something2)
|
|
def test():
|
|
self.assertEqual(PTModule.something, sentinel.Something2,
|
|
"unpatched")
|
|
|
|
test()
|
|
self.assertEqual(PTModule.something, sentinel.Something,
|
|
"patch not restored")
|
|
|
|
@patch('%s.something' % __name__, sentinel.Something2)
|
|
@patch('%s.something_else' % __name__, sentinel.SomethingElse)
|
|
def test():
|
|
self.assertEqual(PTModule.something, sentinel.Something2,
|
|
"unpatched")
|
|
self.assertEqual(PTModule.something_else, sentinel.SomethingElse,
|
|
"unpatched")
|
|
|
|
self.assertEqual(PTModule.something, sentinel.Something,
|
|
"patch not restored")
|
|
self.assertEqual(PTModule.something_else, sentinel.SomethingElse,
|
|
"patch not restored")
|
|
|
|
# Test the patching and restoring works a second time
|
|
test()
|
|
|
|
self.assertEqual(PTModule.something, sentinel.Something,
|
|
"patch not restored")
|
|
self.assertEqual(PTModule.something_else, sentinel.SomethingElse,
|
|
"patch not restored")
|
|
|
|
mock = Mock()
|
|
mock.return_value = sentinel.Handle
|
|
@patch('%s.open' % builtin_string, mock)
|
|
def test():
|
|
self.assertEqual(open('filename', 'r'), sentinel.Handle,
|
|
"open not patched")
|
|
test()
|
|
test()
|
|
|
|
self.assertNotEqual(open, mock, "patch not restored")
|
|
|
|
|
|
def test_patch_class_attribute(self):
|
|
@patch('%s.SomeClass.class_attribute' % __name__,
|
|
sentinel.ClassAttribute)
|
|
def test():
|
|
self.assertEqual(PTModule.SomeClass.class_attribute,
|
|
sentinel.ClassAttribute, "unpatched")
|
|
test()
|
|
|
|
self.assertIsNone(PTModule.SomeClass.class_attribute,
|
|
"patch not restored")
|
|
|
|
|
|
def test_patchobject_with_default_mock(self):
|
|
class Test(object):
|
|
something = sentinel.Original
|
|
something2 = sentinel.Original2
|
|
|
|
@patch.object(Test, 'something')
|
|
def test(mock):
|
|
self.assertEqual(mock, Test.something,
|
|
"Mock not passed into test function")
|
|
self.assertIsInstance(mock, MagicMock,
|
|
"patch with two arguments did not create a mock")
|
|
|
|
test()
|
|
|
|
@patch.object(Test, 'something')
|
|
@patch.object(Test, 'something2')
|
|
def test(this1, this2, mock1, mock2):
|
|
self.assertEqual(this1, sentinel.this1,
|
|
"Patched function didn't receive initial argument")
|
|
self.assertEqual(this2, sentinel.this2,
|
|
"Patched function didn't receive second argument")
|
|
self.assertEqual(mock1, Test.something2,
|
|
"Mock not passed into test function")
|
|
self.assertEqual(mock2, Test.something,
|
|
"Second Mock not passed into test function")
|
|
self.assertIsInstance(mock2, MagicMock,
|
|
"patch with two arguments did not create a mock")
|
|
self.assertIsInstance(mock2, MagicMock,
|
|
"patch with two arguments did not create a mock")
|
|
|
|
# A hack to test that new mocks are passed the second time
|
|
self.assertNotEqual(outerMock1, mock1, "unexpected value for mock1")
|
|
self.assertNotEqual(outerMock2, mock2, "unexpected value for mock1")
|
|
return mock1, mock2
|
|
|
|
outerMock1 = outerMock2 = None
|
|
outerMock1, outerMock2 = test(sentinel.this1, sentinel.this2)
|
|
|
|
# Test that executing a second time creates new mocks
|
|
test(sentinel.this1, sentinel.this2)
|
|
|
|
|
|
def test_patch_with_spec(self):
|
|
@patch('%s.SomeClass' % __name__, spec=SomeClass)
|
|
def test(MockSomeClass):
|
|
self.assertEqual(SomeClass, MockSomeClass)
|
|
self.assertTrue(is_instance(SomeClass.wibble, MagicMock))
|
|
self.assertRaises(AttributeError, lambda: SomeClass.not_wibble)
|
|
|
|
test()
|
|
|
|
|
|
def test_patchobject_with_spec(self):
|
|
@patch.object(SomeClass, 'class_attribute', spec=SomeClass)
|
|
def test(MockAttribute):
|
|
self.assertEqual(SomeClass.class_attribute, MockAttribute)
|
|
self.assertTrue(is_instance(SomeClass.class_attribute.wibble,
|
|
MagicMock))
|
|
self.assertRaises(AttributeError,
|
|
lambda: SomeClass.class_attribute.not_wibble)
|
|
|
|
test()
|
|
|
|
|
|
def test_patch_with_spec_as_list(self):
|
|
@patch('%s.SomeClass' % __name__, spec=['wibble'])
|
|
def test(MockSomeClass):
|
|
self.assertEqual(SomeClass, MockSomeClass)
|
|
self.assertTrue(is_instance(SomeClass.wibble, MagicMock))
|
|
self.assertRaises(AttributeError, lambda: SomeClass.not_wibble)
|
|
|
|
test()
|
|
|
|
|
|
def test_patchobject_with_spec_as_list(self):
|
|
@patch.object(SomeClass, 'class_attribute', spec=['wibble'])
|
|
def test(MockAttribute):
|
|
self.assertEqual(SomeClass.class_attribute, MockAttribute)
|
|
self.assertTrue(is_instance(SomeClass.class_attribute.wibble,
|
|
MagicMock))
|
|
self.assertRaises(AttributeError,
|
|
lambda: SomeClass.class_attribute.not_wibble)
|
|
|
|
test()
|
|
|
|
|
|
def test_nested_patch_with_spec_as_list(self):
|
|
# regression test for nested decorators
|
|
@patch('%s.open' % builtin_string)
|
|
@patch('%s.SomeClass' % __name__, spec=['wibble'])
|
|
def test(MockSomeClass, MockOpen):
|
|
self.assertEqual(SomeClass, MockSomeClass)
|
|
self.assertTrue(is_instance(SomeClass.wibble, MagicMock))
|
|
self.assertRaises(AttributeError, lambda: SomeClass.not_wibble)
|
|
test()
|
|
|
|
|
|
def test_patch_with_spec_as_boolean(self):
|
|
@patch('%s.SomeClass' % __name__, spec=True)
|
|
def test(MockSomeClass):
|
|
self.assertEqual(SomeClass, MockSomeClass)
|
|
# Should not raise attribute error
|
|
MockSomeClass.wibble
|
|
|
|
self.assertRaises(AttributeError, lambda: MockSomeClass.not_wibble)
|
|
|
|
test()
|
|
|
|
|
|
def test_patch_object_with_spec_as_boolean(self):
|
|
@patch.object(PTModule, 'SomeClass', spec=True)
|
|
def test(MockSomeClass):
|
|
self.assertEqual(SomeClass, MockSomeClass)
|
|
# Should not raise attribute error
|
|
MockSomeClass.wibble
|
|
|
|
self.assertRaises(AttributeError, lambda: MockSomeClass.not_wibble)
|
|
|
|
test()
|
|
|
|
|
|
def test_patch_class_acts_with_spec_is_inherited(self):
|
|
@patch('%s.SomeClass' % __name__, spec=True)
|
|
def test(MockSomeClass):
|
|
self.assertTrue(is_instance(MockSomeClass, MagicMock))
|
|
instance = MockSomeClass()
|
|
self.assertNotCallable(instance)
|
|
# Should not raise attribute error
|
|
instance.wibble
|
|
|
|
self.assertRaises(AttributeError, lambda: instance.not_wibble)
|
|
|
|
test()
|
|
|
|
|
|
def test_patch_with_create_mocks_non_existent_attributes(self):
|
|
@patch('%s.frooble' % builtin_string, sentinel.Frooble, create=True)
|
|
def test():
|
|
self.assertEqual(frooble, sentinel.Frooble)
|
|
|
|
test()
|
|
self.assertRaises(NameError, lambda: frooble)
|
|
|
|
|
|
def test_patchobject_with_create_mocks_non_existent_attributes(self):
|
|
@patch.object(SomeClass, 'frooble', sentinel.Frooble, create=True)
|
|
def test():
|
|
self.assertEqual(SomeClass.frooble, sentinel.Frooble)
|
|
|
|
test()
|
|
self.assertFalse(hasattr(SomeClass, 'frooble'))
|
|
|
|
|
|
def test_patch_wont_create_by_default(self):
|
|
try:
|
|
@patch('%s.frooble' % builtin_string, sentinel.Frooble)
|
|
def test():
|
|
self.assertEqual(frooble, sentinel.Frooble)
|
|
|
|
test()
|
|
except AttributeError:
|
|
pass
|
|
else:
|
|
self.fail('Patching non existent attributes should fail')
|
|
|
|
self.assertRaises(NameError, lambda: frooble)
|
|
|
|
|
|
def test_patchobject_wont_create_by_default(self):
|
|
try:
|
|
@patch.object(SomeClass, 'frooble', sentinel.Frooble)
|
|
def test():
|
|
self.fail('Patching non existent attributes should fail')
|
|
|
|
test()
|
|
except AttributeError:
|
|
pass
|
|
else:
|
|
self.fail('Patching non existent attributes should fail')
|
|
self.assertFalse(hasattr(SomeClass, 'frooble'))
|
|
|
|
|
|
def test_patch_with_static_methods(self):
|
|
class Foo(object):
|
|
@staticmethod
|
|
def woot():
|
|
return sentinel.Static
|
|
|
|
@patch.object(Foo, 'woot', staticmethod(lambda: sentinel.Patched))
|
|
def anonymous():
|
|
self.assertEqual(Foo.woot(), sentinel.Patched)
|
|
anonymous()
|
|
|
|
self.assertEqual(Foo.woot(), sentinel.Static)
|
|
|
|
|
|
def test_patch_local(self):
|
|
foo = sentinel.Foo
|
|
@patch.object(sentinel, 'Foo', 'Foo')
|
|
def anonymous():
|
|
self.assertEqual(sentinel.Foo, 'Foo')
|
|
anonymous()
|
|
|
|
self.assertEqual(sentinel.Foo, foo)
|
|
|
|
|
|
def test_patch_slots(self):
|
|
class Foo(object):
|
|
__slots__ = ('Foo',)
|
|
|
|
foo = Foo()
|
|
foo.Foo = sentinel.Foo
|
|
|
|
@patch.object(foo, 'Foo', 'Foo')
|
|
def anonymous():
|
|
self.assertEqual(foo.Foo, 'Foo')
|
|
anonymous()
|
|
|
|
self.assertEqual(foo.Foo, sentinel.Foo)
|
|
|
|
|
|
def test_patchobject_class_decorator(self):
|
|
class Something(object):
|
|
attribute = sentinel.Original
|
|
|
|
class Foo(object):
|
|
def test_method(other_self):
|
|
self.assertEqual(Something.attribute, sentinel.Patched,
|
|
"unpatched")
|
|
def not_test_method(other_self):
|
|
self.assertEqual(Something.attribute, sentinel.Original,
|
|
"non-test method patched")
|
|
|
|
Foo = patch.object(Something, 'attribute', sentinel.Patched)(Foo)
|
|
|
|
f = Foo()
|
|
f.test_method()
|
|
f.not_test_method()
|
|
|
|
self.assertEqual(Something.attribute, sentinel.Original,
|
|
"patch not restored")
|
|
|
|
|
|
def test_patch_class_decorator(self):
|
|
class Something(object):
|
|
attribute = sentinel.Original
|
|
|
|
class Foo(object):
|
|
def test_method(other_self, mock_something):
|
|
self.assertEqual(PTModule.something, mock_something,
|
|
"unpatched")
|
|
def not_test_method(other_self):
|
|
self.assertEqual(PTModule.something, sentinel.Something,
|
|
"non-test method patched")
|
|
Foo = patch('%s.something' % __name__)(Foo)
|
|
|
|
f = Foo()
|
|
f.test_method()
|
|
f.not_test_method()
|
|
|
|
self.assertEqual(Something.attribute, sentinel.Original,
|
|
"patch not restored")
|
|
self.assertEqual(PTModule.something, sentinel.Something,
|
|
"patch not restored")
|
|
|
|
|
|
def test_patchobject_twice(self):
|
|
class Something(object):
|
|
attribute = sentinel.Original
|
|
next_attribute = sentinel.Original2
|
|
|
|
@patch.object(Something, 'attribute', sentinel.Patched)
|
|
@patch.object(Something, 'attribute', sentinel.Patched)
|
|
def test():
|
|
self.assertEqual(Something.attribute, sentinel.Patched, "unpatched")
|
|
|
|
test()
|
|
|
|
self.assertEqual(Something.attribute, sentinel.Original,
|
|
"patch not restored")
|
|
|
|
|
|
def test_patch_dict(self):
|
|
foo = {'initial': object(), 'other': 'something'}
|
|
original = foo.copy()
|
|
|
|
@patch.dict(foo)
|
|
def test():
|
|
foo['a'] = 3
|
|
del foo['initial']
|
|
foo['other'] = 'something else'
|
|
|
|
test()
|
|
|
|
self.assertEqual(foo, original)
|
|
|
|
@patch.dict(foo, {'a': 'b'})
|
|
def test():
|
|
self.assertEqual(len(foo), 3)
|
|
self.assertEqual(foo['a'], 'b')
|
|
|
|
test()
|
|
|
|
self.assertEqual(foo, original)
|
|
|
|
@patch.dict(foo, [('a', 'b')])
|
|
def test():
|
|
self.assertEqual(len(foo), 3)
|
|
self.assertEqual(foo['a'], 'b')
|
|
|
|
test()
|
|
|
|
self.assertEqual(foo, original)
|
|
|
|
|
|
def test_patch_dict_with_container_object(self):
|
|
foo = Container()
|
|
foo['initial'] = object()
|
|
foo['other'] = 'something'
|
|
|
|
original = foo.values.copy()
|
|
|
|
@patch.dict(foo)
|
|
def test():
|
|
foo['a'] = 3
|
|
del foo['initial']
|
|
foo['other'] = 'something else'
|
|
|
|
test()
|
|
|
|
self.assertEqual(foo.values, original)
|
|
|
|
@patch.dict(foo, {'a': 'b'})
|
|
def test():
|
|
self.assertEqual(len(foo.values), 3)
|
|
self.assertEqual(foo['a'], 'b')
|
|
|
|
test()
|
|
|
|
self.assertEqual(foo.values, original)
|
|
|
|
|
|
def test_patch_dict_with_clear(self):
|
|
foo = {'initial': object(), 'other': 'something'}
|
|
original = foo.copy()
|
|
|
|
@patch.dict(foo, clear=True)
|
|
def test():
|
|
self.assertEqual(foo, {})
|
|
foo['a'] = 3
|
|
foo['other'] = 'something else'
|
|
|
|
test()
|
|
|
|
self.assertEqual(foo, original)
|
|
|
|
@patch.dict(foo, {'a': 'b'}, clear=True)
|
|
def test():
|
|
self.assertEqual(foo, {'a': 'b'})
|
|
|
|
test()
|
|
|
|
self.assertEqual(foo, original)
|
|
|
|
@patch.dict(foo, [('a', 'b')], clear=True)
|
|
def test():
|
|
self.assertEqual(foo, {'a': 'b'})
|
|
|
|
test()
|
|
|
|
self.assertEqual(foo, original)
|
|
|
|
|
|
def test_patch_dict_with_container_object_and_clear(self):
|
|
foo = Container()
|
|
foo['initial'] = object()
|
|
foo['other'] = 'something'
|
|
|
|
original = foo.values.copy()
|
|
|
|
@patch.dict(foo, clear=True)
|
|
def test():
|
|
self.assertEqual(foo.values, {})
|
|
foo['a'] = 3
|
|
foo['other'] = 'something else'
|
|
|
|
test()
|
|
|
|
self.assertEqual(foo.values, original)
|
|
|
|
@patch.dict(foo, {'a': 'b'}, clear=True)
|
|
def test():
|
|
self.assertEqual(foo.values, {'a': 'b'})
|
|
|
|
test()
|
|
|
|
self.assertEqual(foo.values, original)
|
|
|
|
|
|
def test_name_preserved(self):
|
|
foo = {}
|
|
|
|
@patch('%s.SomeClass' % __name__, object())
|
|
@patch('%s.SomeClass' % __name__, object(), autospec=True)
|
|
@patch.object(SomeClass, object())
|
|
@patch.dict(foo)
|
|
def some_name():
|
|
pass
|
|
|
|
self.assertEqual(some_name.__name__, 'some_name')
|
|
|
|
|
|
def test_patch_with_exception(self):
|
|
foo = {}
|
|
|
|
@patch.dict(foo, {'a': 'b'})
|
|
def test():
|
|
raise NameError('Konrad')
|
|
try:
|
|
test()
|
|
except NameError:
|
|
pass
|
|
else:
|
|
self.fail('NameError not raised by test')
|
|
|
|
self.assertEqual(foo, {})
|
|
|
|
|
|
def test_patch_dict_with_string(self):
|
|
@patch.dict('os.environ', {'konrad_delong': 'some value'})
|
|
def test():
|
|
self.assertIn('konrad_delong', os.environ)
|
|
|
|
test()
|
|
|
|
|
|
@unittest2.expectedFailure
|
|
def test_patch_descriptor(self):
|
|
# would be some effort to fix this - we could special case the
|
|
# builtin descriptors: classmethod, property, staticmethod
|
|
class Nothing(object):
|
|
foo = None
|
|
|
|
class Something(object):
|
|
foo = {}
|
|
|
|
@patch.object(Nothing, 'foo', 2)
|
|
@classmethod
|
|
def klass(cls):
|
|
self.assertIs(cls, Something)
|
|
|
|
@patch.object(Nothing, 'foo', 2)
|
|
@staticmethod
|
|
def static(arg):
|
|
return arg
|
|
|
|
@patch.dict(foo)
|
|
@classmethod
|
|
def klass_dict(cls):
|
|
self.assertIs(cls, Something)
|
|
|
|
@patch.dict(foo)
|
|
@staticmethod
|
|
def static_dict(arg):
|
|
return arg
|
|
|
|
# these will raise exceptions if patching descriptors is broken
|
|
self.assertEqual(Something.static('f00'), 'f00')
|
|
Something.klass()
|
|
self.assertEqual(Something.static_dict('f00'), 'f00')
|
|
Something.klass_dict()
|
|
|
|
something = Something()
|
|
self.assertEqual(something.static('f00'), 'f00')
|
|
something.klass()
|
|
self.assertEqual(something.static_dict('f00'), 'f00')
|
|
something.klass_dict()
|
|
|
|
|
|
def test_patch_spec_set(self):
|
|
@patch('%s.SomeClass' % __name__, spec_set=SomeClass)
|
|
def test(MockClass):
|
|
MockClass.z = 'foo'
|
|
|
|
self.assertRaises(AttributeError, test)
|
|
|
|
@patch.object(support, 'SomeClass', spec_set=SomeClass)
|
|
def test(MockClass):
|
|
MockClass.z = 'foo'
|
|
|
|
self.assertRaises(AttributeError, test)
|
|
@patch('%s.SomeClass' % __name__, spec_set=True)
|
|
def test(MockClass):
|
|
MockClass.z = 'foo'
|
|
|
|
self.assertRaises(AttributeError, test)
|
|
|
|
@patch.object(support, 'SomeClass', spec_set=True)
|
|
def test(MockClass):
|
|
MockClass.z = 'foo'
|
|
|
|
self.assertRaises(AttributeError, test)
|
|
|
|
|
|
def test_spec_set_inherit(self):
|
|
@patch('%s.SomeClass' % __name__, spec_set=True)
|
|
def test(MockClass):
|
|
instance = MockClass()
|
|
instance.z = 'foo'
|
|
|
|
self.assertRaises(AttributeError, test)
|
|
|
|
|
|
def test_patch_start_stop(self):
|
|
original = something
|
|
patcher = patch('%s.something' % __name__)
|
|
self.assertIs(something, original)
|
|
mock = patcher.start()
|
|
try:
|
|
self.assertIsNot(mock, original)
|
|
self.assertIs(something, mock)
|
|
finally:
|
|
patcher.stop()
|
|
self.assertIs(something, original)
|
|
|
|
|
|
def test_stop_without_start(self):
|
|
patcher = patch(foo_name, 'bar', 3)
|
|
|
|
# calling stop without start used to produce a very obscure error
|
|
self.assertRaises(RuntimeError, patcher.stop)
|
|
|
|
|
|
def test_patchobject_start_stop(self):
|
|
original = something
|
|
patcher = patch.object(PTModule, 'something', 'foo')
|
|
self.assertIs(something, original)
|
|
replaced = patcher.start()
|
|
try:
|
|
self.assertEqual(replaced, 'foo')
|
|
self.assertIs(something, replaced)
|
|
finally:
|
|
patcher.stop()
|
|
self.assertIs(something, original)
|
|
|
|
|
|
def test_patch_dict_start_stop(self):
|
|
d = {'foo': 'bar'}
|
|
original = d.copy()
|
|
patcher = patch.dict(d, [('spam', 'eggs')], clear=True)
|
|
self.assertEqual(d, original)
|
|
|
|
patcher.start()
|
|
try:
|
|
self.assertEqual(d, {'spam': 'eggs'})
|
|
finally:
|
|
patcher.stop()
|
|
self.assertEqual(d, original)
|
|
|
|
|
|
def test_patch_dict_class_decorator(self):
|
|
this = self
|
|
d = {'spam': 'eggs'}
|
|
original = d.copy()
|
|
|
|
class Test(object):
|
|
def test_first(self):
|
|
this.assertEqual(d, {'foo': 'bar'})
|
|
def test_second(self):
|
|
this.assertEqual(d, {'foo': 'bar'})
|
|
|
|
Test = patch.dict(d, {'foo': 'bar'}, clear=True)(Test)
|
|
self.assertEqual(d, original)
|
|
|
|
test = Test()
|
|
|
|
test.test_first()
|
|
self.assertEqual(d, original)
|
|
|
|
test.test_second()
|
|
self.assertEqual(d, original)
|
|
|
|
test = Test()
|
|
|
|
test.test_first()
|
|
self.assertEqual(d, original)
|
|
|
|
test.test_second()
|
|
self.assertEqual(d, original)
|
|
|
|
|
|
def test_get_only_proxy(self):
|
|
class Something(object):
|
|
foo = 'foo'
|
|
class SomethingElse:
|
|
foo = 'foo'
|
|
|
|
for thing in Something, SomethingElse, Something(), SomethingElse:
|
|
proxy = _get_proxy(thing)
|
|
|
|
@patch.object(proxy, 'foo', 'bar')
|
|
def test():
|
|
self.assertEqual(proxy.foo, 'bar')
|
|
test()
|
|
self.assertEqual(proxy.foo, 'foo')
|
|
self.assertEqual(thing.foo, 'foo')
|
|
self.assertNotIn('foo', proxy.__dict__)
|
|
|
|
|
|
def test_get_set_delete_proxy(self):
|
|
class Something(object):
|
|
foo = 'foo'
|
|
class SomethingElse:
|
|
foo = 'foo'
|
|
|
|
for thing in Something, SomethingElse, Something(), SomethingElse:
|
|
proxy = _get_proxy(Something, get_only=False)
|
|
|
|
@patch.object(proxy, 'foo', 'bar')
|
|
def test():
|
|
self.assertEqual(proxy.foo, 'bar')
|
|
test()
|
|
self.assertEqual(proxy.foo, 'foo')
|
|
self.assertEqual(thing.foo, 'foo')
|
|
self.assertNotIn('foo', proxy.__dict__)
|
|
|
|
|
|
def test_patch_keyword_args(self):
|
|
kwargs = {'side_effect': KeyError, 'foo.bar.return_value': 33,
|
|
'foo': MagicMock()}
|
|
|
|
patcher = patch(foo_name, **kwargs)
|
|
mock = patcher.start()
|
|
patcher.stop()
|
|
|
|
self.assertRaises(KeyError, mock)
|
|
self.assertEqual(mock.foo.bar(), 33)
|
|
self.assertIsInstance(mock.foo, MagicMock)
|
|
|
|
|
|
def test_patch_object_keyword_args(self):
|
|
kwargs = {'side_effect': KeyError, 'foo.bar.return_value': 33,
|
|
'foo': MagicMock()}
|
|
|
|
patcher = patch.object(Foo, 'f', **kwargs)
|
|
mock = patcher.start()
|
|
patcher.stop()
|
|
|
|
self.assertRaises(KeyError, mock)
|
|
self.assertEqual(mock.foo.bar(), 33)
|
|
self.assertIsInstance(mock.foo, MagicMock)
|
|
|
|
|
|
def test_patch_dict_keyword_args(self):
|
|
original = {'foo': 'bar'}
|
|
copy = original.copy()
|
|
|
|
patcher = patch.dict(original, foo=3, bar=4, baz=5)
|
|
patcher.start()
|
|
|
|
try:
|
|
self.assertEqual(original, dict(foo=3, bar=4, baz=5))
|
|
finally:
|
|
patcher.stop()
|
|
|
|
self.assertEqual(original, copy)
|
|
|
|
|
|
def test_autospec(self):
|
|
class Boo(object):
|
|
def __init__(self, a):
|
|
pass
|
|
def f(self, a):
|
|
pass
|
|
def g(self):
|
|
pass
|
|
foo = 'bar'
|
|
|
|
class Bar(object):
|
|
def a(self):
|
|
pass
|
|
|
|
def _test(mock):
|
|
mock(1)
|
|
mock.assert_called_with(1)
|
|
self.assertRaises(TypeError, mock)
|
|
|
|
def _test2(mock):
|
|
mock.f(1)
|
|
mock.f.assert_called_with(1)
|
|
self.assertRaises(TypeError, mock.f)
|
|
|
|
mock.g()
|
|
mock.g.assert_called_with()
|
|
self.assertRaises(TypeError, mock.g, 1)
|
|
|
|
self.assertRaises(AttributeError, getattr, mock, 'h')
|
|
|
|
mock.foo.lower()
|
|
mock.foo.lower.assert_called_with()
|
|
self.assertRaises(AttributeError, getattr, mock.foo, 'bar')
|
|
|
|
mock.Bar()
|
|
mock.Bar.assert_called_with()
|
|
|
|
mock.Bar.a()
|
|
mock.Bar.a.assert_called_with()
|
|
self.assertRaises(TypeError, mock.Bar.a, 1)
|
|
|
|
mock.Bar().a()
|
|
mock.Bar().a.assert_called_with()
|
|
self.assertRaises(TypeError, mock.Bar().a, 1)
|
|
|
|
self.assertRaises(AttributeError, getattr, mock.Bar, 'b')
|
|
self.assertRaises(AttributeError, getattr, mock.Bar(), 'b')
|
|
|
|
def function(mock):
|
|
_test(mock)
|
|
_test2(mock)
|
|
_test2(mock(1))
|
|
self.assertIs(mock, Foo)
|
|
return mock
|
|
|
|
test = patch(foo_name, autospec=True)(function)
|
|
|
|
mock = test()
|
|
self.assertIsNot(Foo, mock)
|
|
# test patching a second time works
|
|
test()
|
|
|
|
module = sys.modules[__name__]
|
|
test = patch.object(module, 'Foo', autospec=True)(function)
|
|
|
|
mock = test()
|
|
self.assertIsNot(Foo, mock)
|
|
# test patching a second time works
|
|
test()
|
|
|
|
|
|
def test_autospec_function(self):
|
|
@patch('%s.function' % __name__, autospec=True)
|
|
def test(mock):
|
|
function(1)
|
|
function.assert_called_with(1)
|
|
function(2, 3)
|
|
function.assert_called_with(2, 3)
|
|
|
|
self.assertRaises(TypeError, function)
|
|
self.assertRaises(AttributeError, getattr, function, 'foo')
|
|
|
|
test()
|
|
|
|
|
|
def test_autospec_keywords(self):
|
|
@patch('%s.function' % __name__, autospec=True,
|
|
return_value=3)
|
|
def test(mock_function):
|
|
#self.assertEqual(function.abc, 'foo')
|
|
return function(1, 2)
|
|
|
|
result = test()
|
|
self.assertEqual(result, 3)
|
|
|
|
|
|
def test_autospec_with_new(self):
|
|
patcher = patch('%s.function' % __name__, new=3, autospec=True)
|
|
self.assertRaises(TypeError, patcher.start)
|
|
|
|
module = sys.modules[__name__]
|
|
patcher = patch.object(module, 'function', new=3, autospec=True)
|
|
self.assertRaises(TypeError, patcher.start)
|
|
|
|
|
|
def test_autospec_with_object(self):
|
|
class Bar(Foo):
|
|
extra = []
|
|
|
|
patcher = patch(foo_name, autospec=Bar)
|
|
mock = patcher.start()
|
|
try:
|
|
self.assertIsInstance(mock, Bar)
|
|
self.assertIsInstance(mock.extra, list)
|
|
finally:
|
|
patcher.stop()
|
|
|
|
|
|
def test_autospec_inherits(self):
|
|
FooClass = Foo
|
|
patcher = patch(foo_name, autospec=True)
|
|
mock = patcher.start()
|
|
try:
|
|
self.assertIsInstance(mock, FooClass)
|
|
self.assertIsInstance(mock(3), FooClass)
|
|
finally:
|
|
patcher.stop()
|
|
|
|
|
|
def test_autospec_name(self):
|
|
patcher = patch(foo_name, autospec=True)
|
|
mock = patcher.start()
|
|
|
|
try:
|
|
self.assertIn(" name='Foo'", repr(mock))
|
|
self.assertIn(" name='Foo.f'", repr(mock.f))
|
|
self.assertIn(" name='Foo()'", repr(mock(None)))
|
|
self.assertIn(" name='Foo().f'", repr(mock(None).f))
|
|
finally:
|
|
patcher.stop()
|
|
|
|
|
|
def test_tracebacks(self):
|
|
@patch.object(Foo, 'f', object())
|
|
def test():
|
|
raise AssertionError
|
|
try:
|
|
test()
|
|
except:
|
|
err = sys.exc_info()
|
|
|
|
result = unittest2.TextTestResult(None, None, 0)
|
|
traceback = result._exc_info_to_string(err, self)
|
|
self.assertIn('raise AssertionError', traceback)
|
|
|
|
|
|
def test_new_callable_patch(self):
|
|
patcher = patch(foo_name, new_callable=NonCallableMagicMock)
|
|
|
|
m1 = patcher.start()
|
|
patcher.stop()
|
|
m2 = patcher.start()
|
|
patcher.stop()
|
|
|
|
self.assertIsNot(m1, m2)
|
|
for mock in m1, m2:
|
|
self.assertNotCallable(m1)
|
|
|
|
|
|
def test_new_callable_patch_object(self):
|
|
patcher = patch.object(Foo, 'f', new_callable=NonCallableMagicMock)
|
|
|
|
m1 = patcher.start()
|
|
patcher.stop()
|
|
m2 = patcher.start()
|
|
patcher.stop()
|
|
|
|
self.assertIsNot(m1, m2)
|
|
for mock in m1, m2:
|
|
self.assertNotCallable(m1)
|
|
|
|
|
|
def test_new_callable_keyword_arguments(self):
|
|
class Bar(object):
|
|
kwargs = None
|
|
def __init__(self, **kwargs):
|
|
Bar.kwargs = kwargs
|
|
|
|
patcher = patch(foo_name, new_callable=Bar, arg1=1, arg2=2)
|
|
m = patcher.start()
|
|
try:
|
|
self.assertIs(type(m), Bar)
|
|
self.assertEqual(Bar.kwargs, dict(arg1=1, arg2=2))
|
|
finally:
|
|
patcher.stop()
|
|
|
|
|
|
def test_new_callable_spec(self):
|
|
class Bar(object):
|
|
kwargs = None
|
|
def __init__(self, **kwargs):
|
|
Bar.kwargs = kwargs
|
|
|
|
patcher = patch(foo_name, new_callable=Bar, spec=Bar)
|
|
patcher.start()
|
|
try:
|
|
self.assertEqual(Bar.kwargs, dict(spec=Bar))
|
|
finally:
|
|
patcher.stop()
|
|
|
|
patcher = patch(foo_name, new_callable=Bar, spec_set=Bar)
|
|
patcher.start()
|
|
try:
|
|
self.assertEqual(Bar.kwargs, dict(spec_set=Bar))
|
|
finally:
|
|
patcher.stop()
|
|
|
|
|
|
def test_new_callable_create(self):
|
|
non_existent_attr = '%s.weeeee' % foo_name
|
|
p = patch(non_existent_attr, new_callable=NonCallableMock)
|
|
self.assertRaises(AttributeError, p.start)
|
|
|
|
p = patch(non_existent_attr, new_callable=NonCallableMock,
|
|
create=True)
|
|
m = p.start()
|
|
try:
|
|
self.assertNotCallable(m, magic=False)
|
|
finally:
|
|
p.stop()
|
|
|
|
|
|
def test_new_callable_incompatible_with_new(self):
|
|
self.assertRaises(
|
|
ValueError, patch, foo_name, new=object(), new_callable=MagicMock
|
|
)
|
|
self.assertRaises(
|
|
ValueError, patch.object, Foo, 'f', new=object(),
|
|
new_callable=MagicMock
|
|
)
|
|
|
|
|
|
def test_new_callable_incompatible_with_autospec(self):
|
|
self.assertRaises(
|
|
ValueError, patch, foo_name, new_callable=MagicMock,
|
|
autospec=True
|
|
)
|
|
self.assertRaises(
|
|
ValueError, patch.object, Foo, 'f', new_callable=MagicMock,
|
|
autospec=True
|
|
)
|
|
|
|
|
|
def test_new_callable_inherit_for_mocks(self):
|
|
class MockSub(Mock):
|
|
pass
|
|
|
|
MockClasses = (
|
|
NonCallableMock, NonCallableMagicMock, MagicMock, Mock, MockSub
|
|
)
|
|
for Klass in MockClasses:
|
|
for arg in 'spec', 'spec_set':
|
|
kwargs = {arg: True}
|
|
p = patch(foo_name, new_callable=Klass, **kwargs)
|
|
m = p.start()
|
|
try:
|
|
instance = m.return_value
|
|
self.assertRaises(AttributeError, getattr, instance, 'x')
|
|
finally:
|
|
p.stop()
|
|
|
|
|
|
def test_new_callable_inherit_non_mock(self):
|
|
class NotAMock(object):
|
|
def __init__(self, spec):
|
|
self.spec = spec
|
|
|
|
p = patch(foo_name, new_callable=NotAMock, spec=True)
|
|
m = p.start()
|
|
try:
|
|
self.assertTrue(is_instance(m, NotAMock))
|
|
self.assertRaises(AttributeError, getattr, m, 'return_value')
|
|
finally:
|
|
p.stop()
|
|
|
|
self.assertEqual(m.spec, Foo)
|
|
|
|
|
|
def test_new_callable_class_decorating(self):
|
|
test = self
|
|
original = Foo
|
|
class SomeTest(object):
|
|
|
|
def _test(self, mock_foo):
|
|
test.assertIsNot(Foo, original)
|
|
test.assertIs(Foo, mock_foo)
|
|
test.assertIsInstance(Foo, SomeClass)
|
|
|
|
def test_two(self, mock_foo):
|
|
self._test(mock_foo)
|
|
def test_one(self, mock_foo):
|
|
self._test(mock_foo)
|
|
|
|
SomeTest = patch(foo_name, new_callable=SomeClass)(SomeTest)
|
|
SomeTest().test_one()
|
|
SomeTest().test_two()
|
|
self.assertIs(Foo, original)
|
|
|
|
|
|
def test_patch_multiple(self):
|
|
original_foo = Foo
|
|
original_f = Foo.f
|
|
original_g = Foo.g
|
|
|
|
patcher1 = patch.multiple(foo_name, f=1, g=2)
|
|
patcher2 = patch.multiple(Foo, f=1, g=2)
|
|
|
|
for patcher in patcher1, patcher2:
|
|
patcher.start()
|
|
try:
|
|
self.assertIs(Foo, original_foo)
|
|
self.assertEqual(Foo.f, 1)
|
|
self.assertEqual(Foo.g, 2)
|
|
finally:
|
|
patcher.stop()
|
|
|
|
self.assertIs(Foo, original_foo)
|
|
self.assertEqual(Foo.f, original_f)
|
|
self.assertEqual(Foo.g, original_g)
|
|
|
|
|
|
@patch.multiple(foo_name, f=3, g=4)
|
|
def test():
|
|
self.assertIs(Foo, original_foo)
|
|
self.assertEqual(Foo.f, 3)
|
|
self.assertEqual(Foo.g, 4)
|
|
|
|
test()
|
|
|
|
|
|
def test_patch_multiple_no_kwargs(self):
|
|
self.assertRaises(ValueError, patch.multiple, foo_name)
|
|
self.assertRaises(ValueError, patch.multiple, Foo)
|
|
|
|
|
|
def test_patch_multiple_create_mocks(self):
|
|
original_foo = Foo
|
|
original_f = Foo.f
|
|
original_g = Foo.g
|
|
|
|
@patch.multiple(foo_name, f=DEFAULT, g=3, foo=DEFAULT)
|
|
def test(f, foo):
|
|
self.assertIs(Foo, original_foo)
|
|
self.assertIs(Foo.f, f)
|
|
self.assertEqual(Foo.g, 3)
|
|
self.assertIs(Foo.foo, foo)
|
|
self.assertTrue(is_instance(f, MagicMock))
|
|
self.assertTrue(is_instance(foo, MagicMock))
|
|
|
|
test()
|
|
self.assertEqual(Foo.f, original_f)
|
|
self.assertEqual(Foo.g, original_g)
|
|
|
|
|
|
def test_patch_multiple_create_mocks_different_order(self):
|
|
# bug revealed by Jython!
|
|
original_f = Foo.f
|
|
original_g = Foo.g
|
|
|
|
patcher = patch.object(Foo, 'f', 3)
|
|
patcher.attribute_name = 'f'
|
|
|
|
other = patch.object(Foo, 'g', DEFAULT)
|
|
other.attribute_name = 'g'
|
|
patcher.additional_patchers = [other]
|
|
|
|
@patcher
|
|
def test(g):
|
|
self.assertIs(Foo.g, g)
|
|
self.assertEqual(Foo.f, 3)
|
|
|
|
test()
|
|
self.assertEqual(Foo.f, original_f)
|
|
self.assertEqual(Foo.g, original_g)
|
|
|
|
|
|
def test_patch_multiple_stacked_decorators(self):
|
|
original_foo = Foo
|
|
original_f = Foo.f
|
|
original_g = Foo.g
|
|
|
|
@patch.multiple(foo_name, f=DEFAULT)
|
|
@patch.multiple(foo_name, foo=DEFAULT)
|
|
@patch(foo_name + '.g')
|
|
def test1(g, **kwargs):
|
|
_test(g, **kwargs)
|
|
|
|
@patch.multiple(foo_name, f=DEFAULT)
|
|
@patch(foo_name + '.g')
|
|
@patch.multiple(foo_name, foo=DEFAULT)
|
|
def test2(g, **kwargs):
|
|
_test(g, **kwargs)
|
|
|
|
@patch(foo_name + '.g')
|
|
@patch.multiple(foo_name, f=DEFAULT)
|
|
@patch.multiple(foo_name, foo=DEFAULT)
|
|
def test3(g, **kwargs):
|
|
_test(g, **kwargs)
|
|
|
|
def _test(g, **kwargs):
|
|
f = kwargs.pop('f')
|
|
foo = kwargs.pop('foo')
|
|
self.assertFalse(kwargs)
|
|
|
|
self.assertIs(Foo, original_foo)
|
|
self.assertIs(Foo.f, f)
|
|
self.assertIs(Foo.g, g)
|
|
self.assertIs(Foo.foo, foo)
|
|
self.assertTrue(is_instance(f, MagicMock))
|
|
self.assertTrue(is_instance(g, MagicMock))
|
|
self.assertTrue(is_instance(foo, MagicMock))
|
|
|
|
test1()
|
|
test2()
|
|
test3()
|
|
self.assertEqual(Foo.f, original_f)
|
|
self.assertEqual(Foo.g, original_g)
|
|
|
|
|
|
def test_patch_multiple_create_mocks_patcher(self):
|
|
original_foo = Foo
|
|
original_f = Foo.f
|
|
original_g = Foo.g
|
|
|
|
patcher = patch.multiple(foo_name, f=DEFAULT, g=3, foo=DEFAULT)
|
|
|
|
result = patcher.start()
|
|
try:
|
|
f = result['f']
|
|
foo = result['foo']
|
|
self.assertEqual(set(result), set(['f', 'foo']))
|
|
|
|
self.assertIs(Foo, original_foo)
|
|
self.assertIs(Foo.f, f)
|
|
self.assertIs(Foo.foo, foo)
|
|
self.assertTrue(is_instance(f, MagicMock))
|
|
self.assertTrue(is_instance(foo, MagicMock))
|
|
finally:
|
|
patcher.stop()
|
|
|
|
self.assertEqual(Foo.f, original_f)
|
|
self.assertEqual(Foo.g, original_g)
|
|
|
|
|
|
def test_patch_multiple_decorating_class(self):
|
|
test = self
|
|
original_foo = Foo
|
|
original_f = Foo.f
|
|
original_g = Foo.g
|
|
|
|
class SomeTest(object):
|
|
|
|
def _test(self, f, foo):
|
|
test.assertIs(Foo, original_foo)
|
|
test.assertIs(Foo.f, f)
|
|
test.assertEqual(Foo.g, 3)
|
|
test.assertIs(Foo.foo, foo)
|
|
test.assertTrue(is_instance(f, MagicMock))
|
|
test.assertTrue(is_instance(foo, MagicMock))
|
|
|
|
def test_two(self, f, foo):
|
|
self._test(f, foo)
|
|
def test_one(self, f, foo):
|
|
self._test(f, foo)
|
|
|
|
SomeTest = patch.multiple(
|
|
foo_name, f=DEFAULT, g=3, foo=DEFAULT
|
|
)(SomeTest)
|
|
|
|
thing = SomeTest()
|
|
thing.test_one()
|
|
thing.test_two()
|
|
|
|
self.assertEqual(Foo.f, original_f)
|
|
self.assertEqual(Foo.g, original_g)
|
|
|
|
|
|
def test_patch_multiple_create(self):
|
|
patcher = patch.multiple(Foo, blam='blam')
|
|
self.assertRaises(AttributeError, patcher.start)
|
|
|
|
patcher = patch.multiple(Foo, blam='blam', create=True)
|
|
patcher.start()
|
|
try:
|
|
self.assertEqual(Foo.blam, 'blam')
|
|
finally:
|
|
patcher.stop()
|
|
|
|
self.assertFalse(hasattr(Foo, 'blam'))
|
|
|
|
|
|
def test_patch_multiple_spec_set(self):
|
|
# if spec_set works then we can assume that spec and autospec also
|
|
# work as the underlying machinery is the same
|
|
patcher = patch.multiple(Foo, foo=DEFAULT, spec_set=['a', 'b'])
|
|
result = patcher.start()
|
|
try:
|
|
self.assertEqual(Foo.foo, result['foo'])
|
|
Foo.foo.a(1)
|
|
Foo.foo.b(2)
|
|
Foo.foo.a.assert_called_with(1)
|
|
Foo.foo.b.assert_called_with(2)
|
|
self.assertRaises(AttributeError, setattr, Foo.foo, 'c', None)
|
|
finally:
|
|
patcher.stop()
|
|
|
|
|
|
def test_patch_multiple_new_callable(self):
|
|
class Thing(object):
|
|
pass
|
|
|
|
patcher = patch.multiple(
|
|
Foo, f=DEFAULT, g=DEFAULT, new_callable=Thing
|
|
)
|
|
result = patcher.start()
|
|
try:
|
|
self.assertIs(Foo.f, result['f'])
|
|
self.assertIs(Foo.g, result['g'])
|
|
self.assertIsInstance(Foo.f, Thing)
|
|
self.assertIsInstance(Foo.g, Thing)
|
|
self.assertIsNot(Foo.f, Foo.g)
|
|
finally:
|
|
patcher.stop()
|
|
|
|
|
|
def test_nested_patch_failure(self):
|
|
original_f = Foo.f
|
|
original_g = Foo.g
|
|
|
|
@patch.object(Foo, 'g', 1)
|
|
@patch.object(Foo, 'missing', 1)
|
|
@patch.object(Foo, 'f', 1)
|
|
def thing1():
|
|
pass
|
|
|
|
@patch.object(Foo, 'missing', 1)
|
|
@patch.object(Foo, 'g', 1)
|
|
@patch.object(Foo, 'f', 1)
|
|
def thing2():
|
|
pass
|
|
|
|
@patch.object(Foo, 'g', 1)
|
|
@patch.object(Foo, 'f', 1)
|
|
@patch.object(Foo, 'missing', 1)
|
|
def thing3():
|
|
pass
|
|
|
|
for func in thing1, thing2, thing3:
|
|
self.assertRaises(AttributeError, func)
|
|
self.assertEqual(Foo.f, original_f)
|
|
self.assertEqual(Foo.g, original_g)
|
|
|
|
|
|
def test_new_callable_failure(self):
|
|
original_f = Foo.f
|
|
original_g = Foo.g
|
|
original_foo = Foo.foo
|
|
|
|
def crasher():
|
|
raise NameError('crasher')
|
|
|
|
@patch.object(Foo, 'g', 1)
|
|
@patch.object(Foo, 'foo', new_callable=crasher)
|
|
@patch.object(Foo, 'f', 1)
|
|
def thing1():
|
|
pass
|
|
|
|
@patch.object(Foo, 'foo', new_callable=crasher)
|
|
@patch.object(Foo, 'g', 1)
|
|
@patch.object(Foo, 'f', 1)
|
|
def thing2():
|
|
pass
|
|
|
|
@patch.object(Foo, 'g', 1)
|
|
@patch.object(Foo, 'f', 1)
|
|
@patch.object(Foo, 'foo', new_callable=crasher)
|
|
def thing3():
|
|
pass
|
|
|
|
for func in thing1, thing2, thing3:
|
|
self.assertRaises(NameError, func)
|
|
self.assertEqual(Foo.f, original_f)
|
|
self.assertEqual(Foo.g, original_g)
|
|
self.assertEqual(Foo.foo, original_foo)
|
|
|
|
|
|
def test_patch_multiple_failure(self):
|
|
original_f = Foo.f
|
|
original_g = Foo.g
|
|
|
|
patcher = patch.object(Foo, 'f', 1)
|
|
patcher.attribute_name = 'f'
|
|
|
|
good = patch.object(Foo, 'g', 1)
|
|
good.attribute_name = 'g'
|
|
|
|
bad = patch.object(Foo, 'missing', 1)
|
|
bad.attribute_name = 'missing'
|
|
|
|
for additionals in [good, bad], [bad, good]:
|
|
patcher.additional_patchers = additionals
|
|
|
|
@patcher
|
|
def func():
|
|
pass
|
|
|
|
self.assertRaises(AttributeError, func)
|
|
self.assertEqual(Foo.f, original_f)
|
|
self.assertEqual(Foo.g, original_g)
|
|
|
|
|
|
def test_patch_multiple_new_callable_failure(self):
|
|
original_f = Foo.f
|
|
original_g = Foo.g
|
|
original_foo = Foo.foo
|
|
|
|
def crasher():
|
|
raise NameError('crasher')
|
|
|
|
patcher = patch.object(Foo, 'f', 1)
|
|
patcher.attribute_name = 'f'
|
|
|
|
good = patch.object(Foo, 'g', 1)
|
|
good.attribute_name = 'g'
|
|
|
|
bad = patch.object(Foo, 'foo', new_callable=crasher)
|
|
bad.attribute_name = 'foo'
|
|
|
|
for additionals in [good, bad], [bad, good]:
|
|
patcher.additional_patchers = additionals
|
|
|
|
@patcher
|
|
def func():
|
|
pass
|
|
|
|
self.assertRaises(NameError, func)
|
|
self.assertEqual(Foo.f, original_f)
|
|
self.assertEqual(Foo.g, original_g)
|
|
self.assertEqual(Foo.foo, original_foo)
|
|
|
|
|
|
def test_patch_multiple_string_subclasses(self):
|
|
for base in (str, unicode):
|
|
Foo = type('Foo', (base,), {'fish': 'tasty'})
|
|
foo = Foo()
|
|
@patch.multiple(foo, fish='nearly gone')
|
|
def test():
|
|
self.assertEqual(foo.fish, 'nearly gone')
|
|
|
|
test()
|
|
self.assertEqual(foo.fish, 'tasty')
|
|
|
|
|
|
@patch('mock.patch.TEST_PREFIX', 'foo')
|
|
def test_patch_test_prefix(self):
|
|
class Foo(object):
|
|
thing = 'original'
|
|
|
|
def foo_one(self):
|
|
return self.thing
|
|
def foo_two(self):
|
|
return self.thing
|
|
def test_one(self):
|
|
return self.thing
|
|
def test_two(self):
|
|
return self.thing
|
|
|
|
Foo = patch.object(Foo, 'thing', 'changed')(Foo)
|
|
|
|
foo = Foo()
|
|
self.assertEqual(foo.foo_one(), 'changed')
|
|
self.assertEqual(foo.foo_two(), 'changed')
|
|
self.assertEqual(foo.test_one(), 'original')
|
|
self.assertEqual(foo.test_two(), 'original')
|
|
|
|
|
|
@patch('mock.patch.TEST_PREFIX', 'bar')
|
|
def test_patch_dict_test_prefix(self):
|
|
class Foo(object):
|
|
def bar_one(self):
|
|
return dict(the_dict)
|
|
def bar_two(self):
|
|
return dict(the_dict)
|
|
def test_one(self):
|
|
return dict(the_dict)
|
|
def test_two(self):
|
|
return dict(the_dict)
|
|
|
|
the_dict = {'key': 'original'}
|
|
Foo = patch.dict(the_dict, key='changed')(Foo)
|
|
|
|
foo =Foo()
|
|
self.assertEqual(foo.bar_one(), {'key': 'changed'})
|
|
self.assertEqual(foo.bar_two(), {'key': 'changed'})
|
|
self.assertEqual(foo.test_one(), {'key': 'original'})
|
|
self.assertEqual(foo.test_two(), {'key': 'original'})
|
|
|
|
|
|
def test_patch_with_spec_mock_repr(self):
|
|
for arg in ('spec', 'autospec', 'spec_set'):
|
|
p = patch('%s.SomeClass' % __name__, **{arg: True})
|
|
m = p.start()
|
|
try:
|
|
self.assertIn(" name='SomeClass'", repr(m))
|
|
self.assertIn(" name='SomeClass.class_attribute'",
|
|
repr(m.class_attribute))
|
|
self.assertIn(" name='SomeClass()'", repr(m()))
|
|
self.assertIn(" name='SomeClass().class_attribute'",
|
|
repr(m().class_attribute))
|
|
finally:
|
|
p.stop()
|
|
|
|
|
|
def test_patch_nested_autospec_repr(self):
|
|
p = patch('tests.support', autospec=True)
|
|
m = p.start()
|
|
try:
|
|
self.assertIn(" name='support.SomeClass.wibble()'",
|
|
repr(m.SomeClass.wibble()))
|
|
self.assertIn(" name='support.SomeClass().wibble()'",
|
|
repr(m.SomeClass().wibble()))
|
|
finally:
|
|
p.stop()
|
|
|
|
|
|
def test_mock_calls_with_patch(self):
|
|
for arg in ('spec', 'autospec', 'spec_set'):
|
|
p = patch('%s.SomeClass' % __name__, **{arg: True})
|
|
m = p.start()
|
|
try:
|
|
m.wibble()
|
|
|
|
kalls = [call.wibble()]
|
|
self.assertEqual(m.mock_calls, kalls)
|
|
self.assertEqual(m.method_calls, kalls)
|
|
self.assertEqual(m.wibble.mock_calls, [call()])
|
|
|
|
result = m()
|
|
kalls.append(call())
|
|
self.assertEqual(m.mock_calls, kalls)
|
|
|
|
result.wibble()
|
|
kalls.append(call().wibble())
|
|
self.assertEqual(m.mock_calls, kalls)
|
|
|
|
self.assertEqual(result.mock_calls, [call.wibble()])
|
|
self.assertEqual(result.wibble.mock_calls, [call()])
|
|
self.assertEqual(result.method_calls, [call.wibble()])
|
|
finally:
|
|
p.stop()
|
|
|
|
|
|
def test_patch_imports_lazily(self):
|
|
sys.modules.pop('squizz', None)
|
|
|
|
p1 = patch('squizz.squozz')
|
|
self.assertRaises(ImportError, p1.start)
|
|
|
|
squizz = Mock()
|
|
squizz.squozz = 6
|
|
sys.modules['squizz'] = squizz
|
|
p1 = patch('squizz.squozz')
|
|
squizz.squozz = 3
|
|
p1.start()
|
|
p1.stop()
|
|
self.assertEqual(squizz.squozz, 3)
|
|
|
|
|
|
def test_patch_propogrates_exc_on_exit(self):
|
|
class holder:
|
|
exc_info = None, None, None
|
|
|
|
class custom_patch(_patch):
|
|
def __exit__(self, etype=None, val=None, tb=None):
|
|
_patch.__exit__(self, etype, val, tb)
|
|
holder.exc_info = etype, val, tb
|
|
stop = __exit__
|
|
|
|
def with_custom_patch(target):
|
|
getter, attribute = _get_target(target)
|
|
return custom_patch(
|
|
getter, attribute, DEFAULT, None, False, None,
|
|
None, None, {}
|
|
)
|
|
|
|
@with_custom_patch('squizz.squozz')
|
|
def test(mock):
|
|
raise RuntimeError
|
|
|
|
self.assertRaises(RuntimeError, test)
|
|
self.assertIs(holder.exc_info[0], RuntimeError)
|
|
self.assertIsNotNone(holder.exc_info[1],
|
|
'exception value not propgated')
|
|
self.assertIsNotNone(holder.exc_info[2],
|
|
'exception traceback not propgated')
|
|
|
|
|
|
def test_create_and_specs(self):
|
|
for kwarg in ('spec', 'spec_set', 'autospec'):
|
|
p = patch('%s.doesnotexist' % __name__, create=True,
|
|
**{kwarg: True})
|
|
self.assertRaises(TypeError, p.start)
|
|
self.assertRaises(NameError, lambda: doesnotexist)
|
|
|
|
# check that spec with create is innocuous if the original exists
|
|
p = patch(MODNAME, create=True, **{kwarg: True})
|
|
p.start()
|
|
p.stop()
|
|
|
|
|
|
def test_multiple_specs(self):
|
|
original = PTModule
|
|
for kwarg in ('spec', 'spec_set'):
|
|
p = patch(MODNAME, autospec=0, **{kwarg: 0})
|
|
self.assertRaises(TypeError, p.start)
|
|
self.assertIs(PTModule, original)
|
|
|
|
for kwarg in ('spec', 'autospec'):
|
|
p = patch(MODNAME, spec_set=0, **{kwarg: 0})
|
|
self.assertRaises(TypeError, p.start)
|
|
self.assertIs(PTModule, original)
|
|
|
|
for kwarg in ('spec_set', 'autospec'):
|
|
p = patch(MODNAME, spec=0, **{kwarg: 0})
|
|
self.assertRaises(TypeError, p.start)
|
|
self.assertIs(PTModule, original)
|
|
|
|
|
|
def test_specs_false_instead_of_none(self):
|
|
p = patch(MODNAME, spec=False, spec_set=False, autospec=False)
|
|
mock = p.start()
|
|
try:
|
|
# no spec should have been set, so attribute access should not fail
|
|
mock.does_not_exist
|
|
mock.does_not_exist = 3
|
|
finally:
|
|
p.stop()
|
|
|
|
|
|
def test_falsey_spec(self):
|
|
for kwarg in ('spec', 'autospec', 'spec_set'):
|
|
p = patch(MODNAME, **{kwarg: 0})
|
|
m = p.start()
|
|
try:
|
|
self.assertRaises(AttributeError, getattr, m, 'doesnotexit')
|
|
finally:
|
|
p.stop()
|
|
|
|
|
|
def test_spec_set_true(self):
|
|
for kwarg in ('spec', 'autospec'):
|
|
p = patch(MODNAME, spec_set=True, **{kwarg: True})
|
|
m = p.start()
|
|
try:
|
|
self.assertRaises(AttributeError, setattr, m,
|
|
'doesnotexist', 'something')
|
|
self.assertRaises(AttributeError, getattr, m, 'doesnotexist')
|
|
finally:
|
|
p.stop()
|
|
|
|
|
|
def test_callable_spec_as_list(self):
|
|
spec = ('__call__',)
|
|
p = patch(MODNAME, spec=spec)
|
|
m = p.start()
|
|
try:
|
|
self.assertTrue(callable(m))
|
|
finally:
|
|
p.stop()
|
|
|
|
|
|
def test_not_callable_spec_as_list(self):
|
|
spec = ('foo', 'bar')
|
|
p = patch(MODNAME, spec=spec)
|
|
m = p.start()
|
|
try:
|
|
self.assertFalse(callable(m))
|
|
finally:
|
|
p.stop()
|
|
|
|
|
|
def test_patch_stopall(self):
|
|
unlink = os.unlink
|
|
chdir = os.chdir
|
|
path = os.path
|
|
patch('os.unlink', something).start()
|
|
patch('os.chdir', something_else).start()
|
|
|
|
@patch('os.path')
|
|
def patched(mock_path):
|
|
patch.stopall()
|
|
self.assertIs(os.path, mock_path)
|
|
self.assertIs(os.unlink, unlink)
|
|
self.assertIs(os.chdir, chdir)
|
|
|
|
patched()
|
|
self.assertIs(os.path, path)
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest2.main()
|