mirror of https://github.com/python/cpython
- 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:
parent
2b860db35c
commit
46c58c17f1
|
@ -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
|
||||
|
|
|
@ -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")
|
Loading…
Reference in New Issue