summaryrefslogtreecommitdiff
path: root/debian/patches/lib2to3-no-pgen-caching.diff
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/lib2to3-no-pgen-caching.diff')
-rw-r--r--debian/patches/lib2to3-no-pgen-caching.diff76
1 files changed, 76 insertions, 0 deletions
diff --git a/debian/patches/lib2to3-no-pgen-caching.diff b/debian/patches/lib2to3-no-pgen-caching.diff
new file mode 100644
index 0000000..e04685a
--- /dev/null
+++ b/debian/patches/lib2to3-no-pgen-caching.diff
@@ -0,0 +1,76 @@
+Index: b/Lib/lib2to3/tests/test_parser.py
+===================================================================
+--- a/Lib/lib2to3/tests/test_parser.py
++++ b/Lib/lib2to3/tests/test_parser.py
+@@ -36,71 +36,6 @@
+ self.assertEqual(t.children[1].children[0].type, syms.print_stmt)
+
+
+-class TestPgen2Caching(support.TestCase):
+- def test_load_grammar_from_txt_file(self):
+- pgen2_driver.load_grammar(support.grammar_path, save=False, force=True)
+-
+- def test_load_grammar_from_pickle(self):
+- # Make a copy of the grammar file in a temp directory we are
+- # guaranteed to be able to write to.
+- tmpdir = tempfile.mkdtemp()
+- try:
+- grammar_copy = os.path.join(
+- tmpdir, os.path.basename(support.grammar_path))
+- shutil.copy(support.grammar_path, grammar_copy)
+- pickle_name = pgen2_driver._generate_pickle_name(grammar_copy)
+-
+- pgen2_driver.load_grammar(grammar_copy, save=True, force=True)
+- self.assertTrue(os.path.exists(pickle_name))
+-
+- os.unlink(grammar_copy) # Only the pickle remains...
+- pgen2_driver.load_grammar(grammar_copy, save=False, force=False)
+- finally:
+- shutil.rmtree(tmpdir)
+-
+- @unittest.skipIf(sys.executable is None, 'sys.executable required')
+- def test_load_grammar_from_subprocess(self):
+- tmpdir = tempfile.mkdtemp()
+- tmpsubdir = os.path.join(tmpdir, 'subdir')
+- try:
+- os.mkdir(tmpsubdir)
+- grammar_base = os.path.basename(support.grammar_path)
+- grammar_copy = os.path.join(tmpdir, grammar_base)
+- grammar_sub_copy = os.path.join(tmpsubdir, grammar_base)
+- shutil.copy(support.grammar_path, grammar_copy)
+- shutil.copy(support.grammar_path, grammar_sub_copy)
+- pickle_name = pgen2_driver._generate_pickle_name(grammar_copy)
+- pickle_sub_name = pgen2_driver._generate_pickle_name(
+- grammar_sub_copy)
+- self.assertNotEqual(pickle_name, pickle_sub_name)
+-
+- # Generate a pickle file from this process.
+- pgen2_driver.load_grammar(grammar_copy, save=True, force=True)
+- self.assertTrue(os.path.exists(pickle_name))
+-
+- # Generate a new pickle file in a subprocess with a most likely
+- # different hash randomization seed.
+- sub_env = dict(os.environ)
+- sub_env['PYTHONHASHSEED'] = 'random'
+- subprocess.check_call(
+- [sys.executable, '-c', """
+-from lib2to3.pgen2 import driver as pgen2_driver
+-pgen2_driver.load_grammar(%r, save=True, force=True)
+- """ % (grammar_sub_copy,)],
+- env=sub_env)
+- self.assertTrue(os.path.exists(pickle_sub_name))
+-
+- with open(pickle_name, 'rb') as pickle_f_1, \
+- open(pickle_sub_name, 'rb') as pickle_f_2:
+- self.assertEqual(
+- pickle_f_1.read(), pickle_f_2.read(),
+- msg='Grammar caches generated using different hash seeds'
+- ' were not identical.')
+- finally:
+- shutil.rmtree(tmpdir)
+-
+-
+-
+ class GrammarTest(support.TestCase):
+ def validate(self, code):
+ support.parse_string(code)