summaryrefslogtreecommitdiffstats
path: root/Lib/packaging/tests/test_run.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/packaging/tests/test_run.py')
-rw-r--r--Lib/packaging/tests/test_run.py85
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")