2008-04-04 02:41:30 -03:00
|
|
|
"""Tests for distutils.core."""
|
|
|
|
|
|
|
|
import StringIO
|
|
|
|
import distutils.core
|
|
|
|
import os
|
2008-04-04 08:31:14 -03:00
|
|
|
import shutil
|
|
|
|
import sys
|
2008-04-04 02:41:30 -03:00
|
|
|
import test.test_support
|
Merged revisions 86236,86240,86332,86340,87271,87273,87447 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k
To comply with the 2.x doc style, the methods in trace.rst use brackets around
optional arguments. The rest is a mostly straight merge, modulo support changed
to test_support and use of the old super call style in test_tuple.
........
r86236 | eric.araujo | 2010-11-06 03:44:43 +0100 (sam., 06 nov. 2010) | 2 lines
Make sure each test can be run standalone (./python Lib/distutils/tests/x.py)
........
r86240 | eric.araujo | 2010-11-06 05:11:59 +0100 (sam., 06 nov. 2010) | 2 lines
Prevent ResourceWarnings in test_gettext
........
r86332 | eric.araujo | 2010-11-08 19:15:17 +0100 (lun., 08 nov. 2010) | 4 lines
Add missing NEWS entry for a fix committed by Senthil.
All recent modifications to distutils should now be covered in NEWS.
........
r86340 | eric.araujo | 2010-11-08 22:48:23 +0100 (lun., 08 nov. 2010) | 2 lines
This was actually fixed for the previous alpha.
........
r87271 | eric.araujo | 2010-12-15 20:09:58 +0100 (mer., 15 déc. 2010) | 2 lines
Improve trace documentation (#9264). Patch by Eli Bendersky.
........
r87273 | eric.araujo | 2010-12-15 20:30:15 +0100 (mer., 15 déc. 2010) | 2 lines
Use nested method directives, rewrap long lines, fix whitespace.
........
r87447 | eric.araujo | 2010-12-23 20:13:05 +0100 (jeu., 23 déc. 2010) | 2 lines
Fix typo in superclass method name
........
2011-02-02 20:12:18 -04:00
|
|
|
from test.test_support import captured_stdout, run_unittest
|
2008-04-04 02:41:30 -03:00
|
|
|
import unittest
|
2009-10-18 06:28:26 -03:00
|
|
|
from distutils.tests import support
|
2008-04-04 02:41:30 -03:00
|
|
|
|
|
|
|
# setup script that uses __file__
|
|
|
|
setup_using___file__ = """\
|
|
|
|
|
|
|
|
__file__
|
|
|
|
|
|
|
|
from distutils.core import setup
|
|
|
|
setup()
|
|
|
|
"""
|
|
|
|
|
2008-04-04 08:31:14 -03:00
|
|
|
setup_prints_cwd = """\
|
|
|
|
|
|
|
|
import os
|
|
|
|
print os.getcwd()
|
|
|
|
|
|
|
|
from distutils.core import setup
|
|
|
|
setup()
|
|
|
|
"""
|
|
|
|
|
2008-04-04 02:41:30 -03:00
|
|
|
|
2009-10-18 06:28:26 -03:00
|
|
|
class CoreTestCase(support.EnvironGuard, unittest.TestCase):
|
2008-04-04 02:41:30 -03:00
|
|
|
|
2008-04-04 08:31:14 -03:00
|
|
|
def setUp(self):
|
2009-10-18 06:28:26 -03:00
|
|
|
super(CoreTestCase, self).setUp()
|
2008-04-04 08:31:14 -03:00
|
|
|
self.old_stdout = sys.stdout
|
|
|
|
self.cleanup_testfn()
|
2009-10-18 06:28:26 -03:00
|
|
|
self.old_argv = sys.argv, sys.argv[:]
|
2008-04-04 08:31:14 -03:00
|
|
|
|
2008-04-04 02:41:30 -03:00
|
|
|
def tearDown(self):
|
2008-04-04 08:31:14 -03:00
|
|
|
sys.stdout = self.old_stdout
|
|
|
|
self.cleanup_testfn()
|
2009-10-18 06:28:26 -03:00
|
|
|
sys.argv = self.old_argv[0]
|
|
|
|
sys.argv[:] = self.old_argv[1]
|
|
|
|
super(CoreTestCase, self).tearDown()
|
2008-04-04 08:31:14 -03:00
|
|
|
|
|
|
|
def cleanup_testfn(self):
|
|
|
|
path = test.test_support.TESTFN
|
|
|
|
if os.path.isfile(path):
|
|
|
|
os.remove(path)
|
|
|
|
elif os.path.isdir(path):
|
|
|
|
shutil.rmtree(path)
|
2008-04-04 02:41:30 -03:00
|
|
|
|
2008-04-04 08:31:14 -03:00
|
|
|
def write_setup(self, text, path=test.test_support.TESTFN):
|
2010-11-06 01:06:18 -03:00
|
|
|
f = open(path, "w")
|
|
|
|
try:
|
|
|
|
f.write(text)
|
|
|
|
finally:
|
|
|
|
f.close()
|
2008-04-04 08:31:14 -03:00
|
|
|
return path
|
2008-04-04 02:41:30 -03:00
|
|
|
|
|
|
|
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.
|
2008-04-04 08:31:14 -03:00
|
|
|
distutils.core.run_setup(
|
|
|
|
self.write_setup(setup_using___file__))
|
|
|
|
|
|
|
|
def test_run_setup_uses_current_dir(self):
|
|
|
|
# This tests that the setup script is run with the current directory
|
2009-02-21 16:27:01 -04:00
|
|
|
# as its own current directory; this was temporarily broken by a
|
2008-04-04 08:31:14 -03:00
|
|
|
# previous patch when TESTFN did not use the current directory.
|
|
|
|
sys.stdout = StringIO.StringIO()
|
|
|
|
cwd = os.getcwd()
|
|
|
|
|
|
|
|
# Create a directory and write the setup.py file there:
|
|
|
|
os.mkdir(test.test_support.TESTFN)
|
|
|
|
setup_py = os.path.join(test.test_support.TESTFN, "setup.py")
|
|
|
|
distutils.core.run_setup(
|
|
|
|
self.write_setup(setup_prints_cwd, path=setup_py))
|
|
|
|
|
|
|
|
output = sys.stdout.getvalue()
|
|
|
|
if output.endswith("\n"):
|
|
|
|
output = output[:-1]
|
|
|
|
self.assertEqual(cwd, output)
|
2008-04-04 02:41:30 -03:00
|
|
|
|
2009-09-21 09:19:07 -03:00
|
|
|
def test_debug_mode(self):
|
|
|
|
# this covers the code called when DEBUG is set
|
|
|
|
sys.argv = ['setup.py', '--name']
|
|
|
|
with captured_stdout() as stdout:
|
|
|
|
distutils.core.setup(name='bar')
|
|
|
|
stdout.seek(0)
|
2010-11-21 09:34:58 -04:00
|
|
|
self.assertEqual(stdout.read(), 'bar\n')
|
2009-09-21 09:19:07 -03:00
|
|
|
|
|
|
|
distutils.core.DEBUG = True
|
|
|
|
try:
|
|
|
|
with captured_stdout() as stdout:
|
|
|
|
distutils.core.setup(name='bar')
|
|
|
|
finally:
|
|
|
|
distutils.core.DEBUG = False
|
|
|
|
stdout.seek(0)
|
|
|
|
wanted = "options (after parsing config files):\n"
|
2010-11-21 09:34:58 -04:00
|
|
|
self.assertEqual(stdout.readlines()[0], wanted)
|
2008-04-04 02:41:30 -03:00
|
|
|
|
|
|
|
def test_suite():
|
|
|
|
return unittest.makeSuite(CoreTestCase)
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
Merged revisions 86236,86240,86332,86340,87271,87273,87447 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k
To comply with the 2.x doc style, the methods in trace.rst use brackets around
optional arguments. The rest is a mostly straight merge, modulo support changed
to test_support and use of the old super call style in test_tuple.
........
r86236 | eric.araujo | 2010-11-06 03:44:43 +0100 (sam., 06 nov. 2010) | 2 lines
Make sure each test can be run standalone (./python Lib/distutils/tests/x.py)
........
r86240 | eric.araujo | 2010-11-06 05:11:59 +0100 (sam., 06 nov. 2010) | 2 lines
Prevent ResourceWarnings in test_gettext
........
r86332 | eric.araujo | 2010-11-08 19:15:17 +0100 (lun., 08 nov. 2010) | 4 lines
Add missing NEWS entry for a fix committed by Senthil.
All recent modifications to distutils should now be covered in NEWS.
........
r86340 | eric.araujo | 2010-11-08 22:48:23 +0100 (lun., 08 nov. 2010) | 2 lines
This was actually fixed for the previous alpha.
........
r87271 | eric.araujo | 2010-12-15 20:09:58 +0100 (mer., 15 déc. 2010) | 2 lines
Improve trace documentation (#9264). Patch by Eli Bendersky.
........
r87273 | eric.araujo | 2010-12-15 20:30:15 +0100 (mer., 15 déc. 2010) | 2 lines
Use nested method directives, rewrap long lines, fix whitespace.
........
r87447 | eric.araujo | 2010-12-23 20:13:05 +0100 (jeu., 23 déc. 2010) | 2 lines
Fix typo in superclass method name
........
2011-02-02 20:12:18 -04:00
|
|
|
run_unittest(test_suite())
|