OILS / devtools / pyann_driver.py View on Github | oils.pub

115 lines, 72 significant
1#!/usr/bin/env python2
2"""
3pyann_driver.py: Collect types
4"""
5import unittest
6
7from pyannotate_runtime import collect_types
8
9#from asdl import typed_arith_parse_test
10from asdl import format_test
11from core import comp_ui_test
12from osh import arith_parse_test
13from osh import bool_parse_test
14from osh import cmd_parse_test
15from osh import word_parse_test
16
17import glob
18
19
20def TopLevel():
21 """Copy some metaprogramming that only happens at the top level."""
22 # from core/meta.py
23 from core.meta import (_ID_TO_KIND_INTEGERS, BOOL_ARG_TYPES,
24 TEST_UNARY_LOOKUP, TEST_BINARY_LOOKUP,
25 TEST_OTHER_LOOKUP, types_asdl)
26 from core import id_kind_def
27
28 ID_SPEC = id_kind_def.IdSpec(_ID_TO_KIND_INTEGERS, BOOL_ARG_TYPES)
29
30 id_kind_def.AddKinds(ID_SPEC)
31 id_kind_def.AddBoolKinds(ID_SPEC,
32 types_asdl.bool_arg_type_e) # must come second
33 id_kind_def.SetupTestBuiltin(ID_SPEC, TEST_UNARY_LOOKUP,
34 TEST_BINARY_LOOKUP, TEST_OTHER_LOOKUP,
35 types_asdl.bool_arg_type_e)
36
37 from osh import arith_parse
38 spec = arith_parse.MakeShellSpec()
39
40
41def Match():
42 from frontend.match import _MatchOshToken_Slow, _MatchTokenSlow
43 from frontend import lexer_def
44 MATCHER = _MatchOshToken_Slow(lexer_def.LEXER_DEF)
45 ECHO_MATCHER = _MatchTokenSlow(lexer_def.ECHO_E_DEF)
46 GLOB_MATCHER = _MatchTokenSlow(lexer_def.GLOB_DEF)
47 PS1_MATCHER = _MatchTokenSlow(lexer_def.PS1_DEF)
48 HISTORY_MATCHER = _MatchTokenSlow(lexer_def.HISTORY_DEF)
49
50
51def Arith():
52 from osh.arith_parse import MakeShellSpec
53 SPEC = MakeShellSpec()
54
55
56def UnitTests():
57 loader = unittest.TestLoader()
58
59 g = glob.glob
60 py = g('lazylex/*_test.py') + g('doctools/*_test.py')
61 #py = g('frontend/*_test.py') + g('osh/*_test.py') + g('core/*_test.py') + g('')
62 # hangs
63 #py.remove('core/process_test.py')
64
65 modules = []
66 for p in py:
67 mod_name = p[:-3].replace('/', '.')
68 print(mod_name)
69 modules.append(__import__(mod_name, fromlist=['.']))
70
71 for m in modules:
72 print(m)
73
74 suites = [loader.loadTestsFromModule(m) for m in modules]
75
76 suite = unittest.TestSuite()
77 for s in suites:
78 suite.addTest(s)
79
80 runner = unittest.TextTestRunner()
81
82 collect_types.init_types_collection()
83 with collect_types.collect():
84 runner.run(suite)
85 if 0:
86 TopLevel()
87 Match()
88 Arith()
89
90 collect_types.dump_stats('type_info.json')
91
92
93def Doctools():
94 from doctools import help_gen
95 from doctools import oils_doc
96
97 collect_types.init_types_collection()
98 with collect_types.collect():
99 help_gen.main([
100 '', 'cards-from-chapters', '_devbuild/help',
101 '_tmp/code-blocks/help_meta.py', '_gen/frontend/help_meta',
102 '_release/VERSION/doc/ref/chap-front-end.html'
103 ])
104 #oils_doc.main([])
105
106 collect_types.dump_stats('type_info.json')
107
108
109def main():
110 #UnitTests()
111 Doctools()
112
113
114if __name__ == '__main__':
115 main()