diff options
author | Fred Drake <fdrake@acm.org> | 2008-04-04 05:41:30 (GMT) |
---|---|---|
committer | Fred Drake <fdrake@acm.org> | 2008-04-04 05:41:30 (GMT) |
commit | 46c58c17f18b87f4a3d3d363f171cff1715981d1 (patch) | |
tree | 0345b6b8417d022f34863667803b07ca305250bd | |
parent | 2b860db35c5346c216672f94031ecc800dbebf02 (diff) | |
download | cpython-46c58c17f18b87f4a3d3d363f171cff1715981d1.zip cpython-46c58c17f18b87f4a3d3d363f171cff1715981d1.tar.gz cpython-46c58c17f18b87f4a3d3d363f171cff1715981d1.tar.bz2 |
- 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.
-rw-r--r-- | Lib/distutils/core.py | 3 | ||||
-rw-r--r-- | Lib/distutils/tests/test_core.py | 40 | ||||
-rw-r--r-- | Misc/NEWS | 4 |
3 files changed, 46 insertions, 1 deletions
diff --git a/Lib/distutils/core.py b/Lib/distutils/core.py index c40dd0a..640d6b5 100644 --- a/Lib/distutils/core.py +++ b/Lib/distutils/core.py @@ -210,8 +210,9 @@ def run_setup (script_name, script_args=None, stop_after="run"): _setup_stop_after = stop_after save_argv = sys.argv - g = {} + g = {'__file__': script_name} l = {} + os.chdir(os.path.dirname(script_name) or os.curdir) try: try: sys.argv[0] = script_name diff --git a/Lib/distutils/tests/test_core.py b/Lib/distutils/tests/test_core.py new file mode 100644 index 0000000..6de58d9 --- /dev/null +++ b/Lib/distutils/tests/test_core.py @@ -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") @@ -18,6 +18,10 @@ Extensions Modules 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 ----- |