mirror of
https://github.com/python/cpython.git
synced 2026-05-15 00:48:35 -04:00
fad46e19b4
Running with regrtest does not show spurious output or unrestored sys.std* objects; sometimes running with make test is different, I’ll watch the buildbots. In addition, update the create module to use logging.
76 lines
2.0 KiB
Python
76 lines
2.0 KiB
Python
"""Tests for packaging.run."""
|
|
|
|
import os
|
|
import sys
|
|
from io import StringIO
|
|
|
|
from packaging import install
|
|
from packaging.tests import unittest, support
|
|
from packaging.run import main
|
|
|
|
from test.script_helper import assert_python_ok
|
|
|
|
# setup script that uses __file__
|
|
setup_using___file__ = """\
|
|
__file__
|
|
|
|
from packaging.run import setup
|
|
setup()
|
|
"""
|
|
|
|
setup_prints_cwd = """\
|
|
import os
|
|
print os.getcwd()
|
|
|
|
from packaging.run import setup
|
|
setup()
|
|
"""
|
|
|
|
|
|
class RunTestCase(support.TempdirManager,
|
|
support.LoggingCatcher,
|
|
unittest.TestCase):
|
|
|
|
def setUp(self):
|
|
super(RunTestCase, self).setUp()
|
|
self.old_argv = sys.argv, sys.argv[:]
|
|
|
|
def tearDown(self):
|
|
sys.argv = self.old_argv[0]
|
|
sys.argv[:] = self.old_argv[1]
|
|
super(RunTestCase, self).tearDown()
|
|
|
|
# TODO restore the tests removed six months ago and port them to pysetup
|
|
|
|
def test_install(self):
|
|
# making sure install returns 0 or 1 exit codes
|
|
project = os.path.join(os.path.dirname(__file__), 'package.tgz')
|
|
install_path = self.mkdtemp()
|
|
old_get_path = install.get_path
|
|
install.get_path = lambda path: install_path
|
|
old_mod = os.stat(install_path).st_mode
|
|
os.chmod(install_path, 0)
|
|
old_stderr = sys.stderr
|
|
sys.stderr = StringIO()
|
|
try:
|
|
self.assertFalse(install.install(project))
|
|
self.assertEqual(main(['install', 'blabla']), 1)
|
|
finally:
|
|
sys.stderr = old_stderr
|
|
os.chmod(install_path, old_mod)
|
|
install.get_path = old_get_path
|
|
|
|
def test_show_help(self):
|
|
# smoke test, just makes sure some help is displayed
|
|
status, out, err = assert_python_ok('-m', 'packaging.run', '--help')
|
|
self.assertEqual(status, 0)
|
|
self.assertGreater(out, b'')
|
|
self.assertEqual(err, b'')
|
|
|
|
|
|
def test_suite():
|
|
return unittest.makeSuite(RunTestCase)
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main(defaultTest="test_suite")
|