46 lines
1.4 KiB
Python
46 lines
1.4 KiB
Python
|
"""Test exporting line-level reference information (undocumented feature)"""
|
||
|
|
||
|
from __future__ import annotations
|
||
|
|
||
|
import json
|
||
|
import os
|
||
|
import sys
|
||
|
|
||
|
from mypy import build
|
||
|
from mypy.modulefinder import BuildSource
|
||
|
from mypy.options import Options
|
||
|
from mypy.test.config import test_temp_dir
|
||
|
from mypy.test.data import DataDrivenTestCase, DataSuite
|
||
|
from mypy.test.helpers import assert_string_arrays_equal
|
||
|
|
||
|
|
||
|
class RefInfoSuite(DataSuite):
|
||
|
required_out_section = True
|
||
|
files = ["ref-info.test"]
|
||
|
|
||
|
def run_case(self, testcase: DataDrivenTestCase) -> None:
|
||
|
options = Options()
|
||
|
options.use_builtins_fixtures = True
|
||
|
options.show_traceback = True
|
||
|
options.export_ref_info = True # This is the flag we are testing
|
||
|
|
||
|
src = "\n".join(testcase.input)
|
||
|
result = build.build(
|
||
|
sources=[BuildSource("main", None, src)], options=options, alt_lib_path=test_temp_dir
|
||
|
)
|
||
|
assert not result.errors
|
||
|
|
||
|
major, minor = sys.version_info[:2]
|
||
|
ref_path = os.path.join(options.cache_dir, f"{major}.{minor}", "__main__.refs.json")
|
||
|
|
||
|
with open(ref_path) as refs_file:
|
||
|
data = json.load(refs_file)
|
||
|
|
||
|
a = []
|
||
|
for item in data:
|
||
|
a.append(f"{item['line']}:{item['column']}:{item['target']}")
|
||
|
|
||
|
assert_string_arrays_equal(
|
||
|
testcase.output, a, f"Invalid output ({testcase.file}, line {testcase.line})"
|
||
|
)
|