init
This commit is contained in:
commit
38355d2442
9083 changed files with 1225834 additions and 0 deletions
66
.venv/lib/python3.8/site-packages/mypy/test/testdiff.py
Normal file
66
.venv/lib/python3.8/site-packages/mypy/test/testdiff.py
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
"""Test cases for AST diff (used for fine-grained incremental checking)"""
|
||||
|
||||
import os
|
||||
from typing import List, Tuple, Dict, Optional
|
||||
|
||||
from mypy import build
|
||||
from mypy.modulefinder import BuildSource
|
||||
from mypy.defaults import PYTHON3_VERSION
|
||||
from mypy.errors import CompileError
|
||||
from mypy.nodes import MypyFile
|
||||
from mypy.options import Options
|
||||
from mypy.server.astdiff import snapshot_symbol_table, compare_symbol_table_snapshots
|
||||
from mypy.test.config import test_temp_dir
|
||||
from mypy.test.data import DataDrivenTestCase, DataSuite
|
||||
from mypy.test.helpers import assert_string_arrays_equal, parse_options
|
||||
|
||||
|
||||
class ASTDiffSuite(DataSuite):
|
||||
files = [
|
||||
'diff.test',
|
||||
]
|
||||
|
||||
def run_case(self, testcase: DataDrivenTestCase) -> None:
|
||||
first_src = '\n'.join(testcase.input)
|
||||
files_dict = dict(testcase.files)
|
||||
second_src = files_dict['tmp/next.py']
|
||||
options = parse_options(first_src, testcase, 1)
|
||||
|
||||
messages1, files1 = self.build(first_src, options)
|
||||
messages2, files2 = self.build(second_src, options)
|
||||
|
||||
a = []
|
||||
if messages1:
|
||||
a.extend(messages1)
|
||||
if messages2:
|
||||
a.append('== next ==')
|
||||
a.extend(messages2)
|
||||
|
||||
assert files1 is not None and files2 is not None, ('cases where CompileError'
|
||||
' occurred should not be run')
|
||||
prefix = '__main__'
|
||||
snapshot1 = snapshot_symbol_table(prefix, files1['__main__'].names)
|
||||
snapshot2 = snapshot_symbol_table(prefix, files2['__main__'].names)
|
||||
diff = compare_symbol_table_snapshots(prefix, snapshot1, snapshot2)
|
||||
for trigger in sorted(diff):
|
||||
a.append(trigger)
|
||||
|
||||
assert_string_arrays_equal(
|
||||
testcase.output, a,
|
||||
'Invalid output ({}, line {})'.format(testcase.file,
|
||||
testcase.line))
|
||||
|
||||
def build(self, source: str,
|
||||
options: Options) -> Tuple[List[str], Optional[Dict[str, MypyFile]]]:
|
||||
options.use_builtins_fixtures = True
|
||||
options.show_traceback = True
|
||||
options.cache_dir = os.devnull
|
||||
options.python_version = PYTHON3_VERSION
|
||||
try:
|
||||
result = build.build(sources=[BuildSource('main', None, source)],
|
||||
options=options,
|
||||
alt_lib_path=test_temp_dir)
|
||||
except CompileError as e:
|
||||
# TODO: Is it okay to return None?
|
||||
return e.messages, None
|
||||
return result.errors, result.files
|
||||
Loading…
Add table
Add a link
Reference in a new issue