1010import os
1111import re
1212
13- from typing import List , Tuple , Optional , cast
13+ from typing import List , Set , Tuple , Optional , cast
1414
1515from mypy import build
1616from mypy .build import BuildManager , BuildSource , Graph
2121from mypy .test .data import (
2222 DataDrivenTestCase , DataSuite , UpdateFile , module_from_path
2323)
24- from mypy .test .helpers import assert_string_arrays_equal , parse_options , copy_and_fudge_mtime
24+ from mypy .test .helpers import (
25+ assert_string_arrays_equal , parse_options , copy_and_fudge_mtime , assert_module_equivalence ,
26+ )
2527from mypy .server .mergecheck import check_consistency
2628from mypy .dmypy_server import Server
2729from mypy .main import expand_dir
@@ -96,6 +98,7 @@ def run_case(self, testcase: DataDrivenTestCase) -> None:
9698
9799 steps = testcase .find_steps ()
98100 all_triggered = []
101+
99102 for operations in steps :
100103 step += 1
101104 for op in operations :
@@ -108,10 +111,26 @@ def run_case(self, testcase: DataDrivenTestCase) -> None:
108111 sources = self .parse_sources (main_src , step )
109112 new_messages = self .run_check (server , sources )
110113
114+ assert server .fine_grained_manager
115+
116+ updated , changed = [], []
111117 if server .fine_grained_manager :
112118 if CHECK_CONSISTENCY :
113119 check_consistency (server .fine_grained_manager )
114120 all_triggered .append (server .fine_grained_manager .triggered )
121+
122+ updated = server .fine_grained_manager .updated_modules
123+ changed = [mod for mod , file in server .fine_grained_manager .changed_modules ]
124+
125+ assert_module_equivalence (
126+ 'stale' + str (step - 1 ),
127+ testcase .expected_stale_modules .get (step - 1 ),
128+ changed )
129+ assert_module_equivalence (
130+ 'rechecked' + str (step - 1 ),
131+ testcase .expected_rechecked_modules .get (step - 1 ),
132+ updated )
133+
115134 new_messages = normalize_messages (new_messages )
116135
117136 a .append ('==' )
0 commit comments