1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
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)
|