| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- """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})"
- )
|