2011-05-19 19:07:25 +08:00
|
|
|
"""Tests for packaging.run."""
|
|
|
|
|
|
|
|
import os
|
|
|
|
import sys
|
|
|
|
import shutil
|
2011-05-31 18:09:34 +08:00
|
|
|
from tempfile import mkstemp
|
|
|
|
from io import StringIO
|
2011-05-19 19:07:25 +08:00
|
|
|
|
2011-05-31 18:09:34 +08:00
|
|
|
from packaging import install
|
2011-05-19 19:07:25 +08:00
|
|
|
from packaging.tests import unittest, support, TESTFN
|
2011-05-31 18:09:34 +08:00
|
|
|
from packaging.run import main
|
2011-05-19 19:07:25 +08:00
|
|
|
|
|
|
|
# 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()
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
2011-05-31 18:09:34 +08:00
|
|
|
class CoreTestCase(support.TempdirManager, support.LoggingCatcher,
|
|
|
|
unittest.TestCase):
|
2011-05-19 19:07:25 +08:00
|
|
|
|
|
|
|
def setUp(self):
|
|
|
|
super(CoreTestCase, self).setUp()
|
|
|
|
self.old_stdout = sys.stdout
|
|
|
|
self.cleanup_testfn()
|
|
|
|
self.old_argv = sys.argv, sys.argv[:]
|
|
|
|
|
|
|
|
def tearDown(self):
|
|
|
|
sys.stdout = self.old_stdout
|
|
|
|
self.cleanup_testfn()
|
|
|
|
sys.argv = self.old_argv[0]
|
|
|
|
sys.argv[:] = self.old_argv[1]
|
|
|
|
super(CoreTestCase, self).tearDown()
|
|
|
|
|
|
|
|
def cleanup_testfn(self):
|
|
|
|
path = TESTFN
|
|
|
|
if os.path.isfile(path):
|
|
|
|
os.remove(path)
|
|
|
|
elif os.path.isdir(path):
|
|
|
|
shutil.rmtree(path)
|
|
|
|
|
|
|
|
def write_setup(self, text, path=TESTFN):
|
|
|
|
with open(path, "w") as fp:
|
|
|
|
fp.write(text)
|
|
|
|
return path
|
|
|
|
|
|
|
|
# TODO restore the tests removed six months ago and port them to pysetup
|
|
|
|
|
2011-05-31 18:09:34 +08:00
|
|
|
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
|
|
|
|
|
2011-05-19 19:07:25 +08:00
|
|
|
|
|
|
|
def test_suite():
|
|
|
|
return unittest.makeSuite(CoreTestCase)
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
unittest.main(defaultTest="test_suite")
|