diff options
Diffstat (limited to 'Lib/packaging/tests/test_run.py')
-rw-r--r-- | Lib/packaging/tests/test_run.py | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/Lib/packaging/tests/test_run.py b/Lib/packaging/tests/test_run.py new file mode 100644 index 0000000..cb576b7 --- /dev/null +++ b/Lib/packaging/tests/test_run.py @@ -0,0 +1,85 @@ +"""Tests for packaging.run.""" + +import os +import sys +import shutil +from tempfile import mkstemp +from io import StringIO + +from packaging import install +from packaging.tests import unittest, support, TESTFN +from packaging.run import main + +# 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 CoreTestCase(support.TempdirManager, support.LoggingCatcher, + unittest.TestCase): + + 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 + + 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_suite(): + return unittest.makeSuite(CoreTestCase) + +if __name__ == "__main__": + unittest.main(defaultTest="test_suite") |