- Issue #2385: distutils.core.run_script() makes __file__ available, so the

controlled environment will more closely mirror the typical script
  environment.  This supports setup.py scripts that refer to data files.
This commit is contained in:
Fred Drake 2008-04-04 05:41:30 +00:00
parent 2b860db35c
commit 46c58c17f1
3 changed files with 46 additions and 1 deletions

View File

@ -210,8 +210,9 @@ def run_setup (script_name, script_args=None, stop_after="run"):
_setup_stop_after = stop_after _setup_stop_after = stop_after
save_argv = sys.argv save_argv = sys.argv
g = {} g = {'__file__': script_name}
l = {} l = {}
os.chdir(os.path.dirname(script_name) or os.curdir)
try: try:
try: try:
sys.argv[0] = script_name sys.argv[0] = script_name

View File

@ -0,0 +1,40 @@
"""Tests for distutils.core."""
import StringIO
import distutils.core
import os
import test.test_support
import unittest
# setup script that uses __file__
setup_using___file__ = """\
__file__
from distutils.core import setup
setup()
"""
class CoreTestCase(unittest.TestCase):
def tearDown(self):
os.remove(test.test_support.TESTFN)
def write_setup(self, text):
return fn
def test_run_setup_provides_file(self):
# Make sure the script can use __file__; if that's missing, the test
# setup.py script will raise NameError.
fn = test.test_support.TESTFN
open(fn, "w").write(setup_using___file__)
distutils.core.run_setup(fn)
def test_suite():
return unittest.makeSuite(CoreTestCase)
if __name__ == "__main__":
unittest.main(defaultTest="test_suite")

View File

@ -18,6 +18,10 @@ Extensions Modules
Library Library
------- -------
- Issue #2385: distutils.core.run_script() makes __file__ available, so the
controlled environment will more closely mirror the typical script
environment. This supports setup.py scripts that refer to data files.
Tests Tests
----- -----