diff options
author | tarek <none@none> | 2009-10-27 09:44:07 +0100 |
---|---|---|
committer | tarek <none@none> | 2009-10-27 09:44:07 +0100 |
commit | 6ef67c96970c10cc7cb5d4c4093abc40817fa2ba (patch) | |
tree | 752132891e589e019e51cf0bf8dc69794f90e836 | |
parent | 9d29ae853126d08c8779e7e158905ae263d6f52a (diff) | |
download | external_python_setuptools-6ef67c96970c10cc7cb5d4c4093abc40817fa2ba.tar.gz external_python_setuptools-6ef67c96970c10cc7cb5d4c4093abc40817fa2ba.tar.bz2 external_python_setuptools-6ef67c96970c10cc7cb5d4c4093abc40817fa2ba.zip |
Generated scripts now wraps their call in a __main__ section. Fixes #11
--HG--
branch : distribute
extra : rebase_source : d69b879d01ca2690826cdf9b7541e541ae8e0f5a
-rw-r--r-- | CHANGES.txt | 6 | ||||
-rwxr-xr-x | setuptools/command/easy_install.py | 10 | ||||
-rw-r--r-- | setuptools/tests/test_easy_install.py | 36 |
3 files changed, 45 insertions, 7 deletions
diff --git a/CHANGES.txt b/CHANGES.txt index f74ea93b..935d4db8 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -6,6 +6,8 @@ CHANGES 0.6.7 ----- +* Issue 11: Generated scripts now wrap their call to the script entry point + in the standard "if name == 'main'" * Added the 'DONT_PATCH_SETUPTOOLS' environment variable, so virtualenv can drive an installation that doesn't patch a global setuptools. * Reviewed unladen-swallow specific change from @@ -38,7 +40,7 @@ CHANGES * Issue 65: cli.exe and gui.exe are now generated at build time, depending on the platform in use. -* Issue 67: Fixed doc typo (PEP 381/382) +* Issue 67: Fixed doc typo (PEP 381/382) * Distribute no longer shadows setuptools if we require a 0.7-series setuptools. And an error is raised when installing a 0.7 setuptools with @@ -122,7 +124,7 @@ setuptools This closes http://bitbucket.org/tarek/distribute/issue/16 and http://bitbucket.org/tarek/distribute/issue/18. -* zip_ok is now False by default. This closes +* zip_ok is now False by default. This closes http://bugs.python.org/setuptools/issue33. * Fixed invalid URL error catching. http://bugs.python.org/setuptools/issue20. diff --git a/setuptools/command/easy_install.py b/setuptools/command/easy_install.py index 195139c7..c83e4283 100755 --- a/setuptools/command/easy_install.py +++ b/setuptools/command/easy_install.py @@ -1591,16 +1591,18 @@ def get_script_args(dist, executable=sys_executable, wininst=False): spec = str(dist.as_requirement()) header = get_script_header("", executable, wininst) for group in 'console_scripts', 'gui_scripts': - for name,ep in dist.get_entry_map(group).items(): + for name, ep in dist.get_entry_map(group).items(): script_text = ( "# EASY-INSTALL-ENTRY-SCRIPT: %(spec)r,%(group)r,%(name)r\n" "__requires__ = %(spec)r\n" "import sys\n" "from pkg_resources import load_entry_point\n" "\n" - "sys.exit(\n" - " load_entry_point(%(spec)r, %(group)r, %(name)r)()\n" - ")\n" + "if __name__ == '__main__':" + "\n" + " sys.exit(\n" + " load_entry_point(%(spec)r, %(group)r, %(name)r)()\n" + " )\n" ) % locals() if sys.platform=='win32' or wininst: # On Windows/wininst, add a .py extension and an .exe launcher diff --git a/setuptools/tests/test_easy_install.py b/setuptools/tests/test_easy_install.py index 583c072b..6ce20e42 100644 --- a/setuptools/tests/test_easy_install.py +++ b/setuptools/tests/test_easy_install.py @@ -1,9 +1,32 @@ """Easy install Tests """ +import sys import os, shutil, tempfile, unittest -from setuptools.command.easy_install import easy_install +from setuptools.command.easy_install import easy_install, get_script_args from setuptools.dist import Distribution +class FakeDist(object): + def get_entry_map(self, group): + if group != 'console_scripts': + return {} + return {'name': 'ep'} + + def as_requirement(self): + return 'spec' + +WANTED = """\ +#!%s +# EASY-INSTALL-ENTRY-SCRIPT: 'spec','console_scripts','name' +__requires__ = 'spec' +import sys +from pkg_resources import load_entry_point + +if __name__ == '__main__': + sys.exit( + load_entry_point('spec', 'console_scripts', 'name')() + ) +""" % sys.executable + class TestEasyInstallTest(unittest.TestCase): def test_install_site_py(self): @@ -18,3 +41,14 @@ class TestEasyInstallTest(unittest.TestCase): finally: shutil.rmtree(cmd.install_dir) + def test_get_script_args(self): + dist = FakeDist() + + old_platform = sys.platform + try: + name, script = get_script_args(dist).next() + finally: + sys.platform = old_platform + + self.assertEquals(script, WANTED) + |