Commit 548c054f authored by Éric Araujo's avatar Éric Araujo

Stop trying to write into the stdlib during lib2to3 tests (#12331).

This prevents tests from failing when run from a Python installed in a
read-only directory.
parent ab7c1b3f
...@@ -177,22 +177,26 @@ from __future__ import print_function""" ...@@ -177,22 +177,26 @@ from __future__ import print_function"""
self.assertEqual(results, expected) self.assertEqual(results, expected)
def check_file_refactoring(self, test_file, fixers=_2TO3_FIXERS): def check_file_refactoring(self, test_file, fixers=_2TO3_FIXERS):
tmpdir = tempfile.mkdtemp(prefix="2to3-test_refactor")
self.addCleanup(shutil.rmtree, tmpdir)
# make a copy of the tested file that we can write to
shutil.copy(test_file, tmpdir)
test_file = os.path.join(tmpdir, os.path.basename(test_file))
os.chmod(test_file, 0o644)
def read_file(): def read_file():
with open(test_file, "rb") as fp: with open(test_file, "rb") as fp:
return fp.read() return fp.read()
old_contents = read_file() old_contents = read_file()
rt = self.rt(fixers=fixers) rt = self.rt(fixers=fixers)
rt.refactor_file(test_file) rt.refactor_file(test_file)
self.assertEqual(old_contents, read_file()) self.assertEqual(old_contents, read_file())
try:
rt.refactor_file(test_file, True) rt.refactor_file(test_file, True)
new_contents = read_file() new_contents = read_file()
self.assertNotEqual(old_contents, new_contents) self.assertNotEqual(old_contents, new_contents)
finally:
with open(test_file, "wb") as fp:
fp.write(old_contents)
return new_contents return new_contents
def test_refactor_file(self): def test_refactor_file(self):
......
...@@ -140,6 +140,9 @@ Tools/Demos ...@@ -140,6 +140,9 @@ Tools/Demos
Tests Tests
----- -----
- Issue #12331: The test suite for lib2to3 can now run from an installed
Python.
- Issue #12626: In regrtest, allow to filter tests using a glob filter - Issue #12626: In regrtest, allow to filter tests using a glob filter
with the ``-m`` (or ``--match``) option. This works with all test cases with the ``-m`` (or ``--match``) option. This works with all test cases
using the unittest module. This is useful with long test suites using the unittest module. This is useful with long test suites
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment