diff options
Diffstat (limited to 'Lib/packaging/tests/test_run.py')
-rw-r--r-- | Lib/packaging/tests/test_run.py | 92 |
1 files changed, 92 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..14e7b07 --- /dev/null +++ b/Lib/packaging/tests/test_run.py @@ -0,0 +1,92 @@ +"""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_list_commands(self): + status, out, err = assert_python_ok('-m', 'packaging.run', 'run', + '--list-commands') + # check that something is displayed + self.assertEqual(status, 0) + self.assertGreater(out, b'') + self.assertEqual(err, b'') + + # make sure the manual grouping of commands is respected + check_position = out.find(b' check: ') + build_position = out.find(b' build: ') + self.assertTrue(check_position, out) # "out" printed as debugging aid + self.assertTrue(build_position, out) + self.assertLess(check_position, build_position, out) + + # TODO test that custom commands don't break --list-commands + + +def test_suite(): + return unittest.makeSuite(RunTestCase) + +if __name__ == "__main__": + unittest.main(defaultTest="test_suite") |