@@ -173,8 +173,10 @@ def __init__(
173173 self ._builtins = Builtins (self , self ._vhdl_standard , simulator_class )
174174
175175 self ._dependency_graph = None
176- self ._include_in_test_pattern : Optional [List [Union [str , Path ]]] = []
177- self ._exclude_from_test_pattern : Optional [List [Union [str , Path ]]] = []
176+ self ._include_in_test_pattern : Optional [List [Union [str , Path ]]] = None
177+ self ._exclude_from_test_pattern : Optional [List [Union [str , Path ]]] = None
178+ self ._latest_dependency_updates = None
179+ self ._test_history = None
178180
179181 def _create_database (self ):
180182 """
@@ -750,8 +752,8 @@ def _main(self, post_run):
750752 """
751753 Base vunit main function without performing exit
752754 """
753- if self ._include_in_test_pattern or self ._exclude_from_test_pattern :
754- self ._update_test_filter (self ._include_in_test_pattern , self ._exclude_from_test_pattern )
755+ if self ._include_in_test_pattern or self ._exclude_from_test_pattern or self . _args . changed :
756+ self ._update_test_filter (self ._include_in_test_pattern , self ._exclude_from_test_pattern , self . _args . changed )
755757
756758 if self ._args .export_json is not None :
757759 return self ._main_export_json (self ._args .export_json )
@@ -768,7 +770,7 @@ def _main(self, post_run):
768770 all_ok = self ._main_run (post_run )
769771 return all_ok
770772
771- def _update_test_filter (self , include_dependencies = None , exclude_dependencies = None ):
773+ def _update_test_filter (self , include_dependencies = None , exclude_dependencies = None , only_tests_depending_on_changes = False ):
772774 """
773775 Update test filter to reflect included and excluded testbenches
774776 """
@@ -802,15 +804,31 @@ def get_dependent_files(dependencies):
802804 return dependent_files
803805
804806 dependent_files = get_dependent_files (include_dependencies ) - get_dependent_files (exclude_dependencies )
805-
806- # Extract testbenches from dependent files and create corresponding test patterns:
807- # lib_name.tb_name*
808- test_patterns = []
807+
808+ # Extract testbenches from dependent files
809+ dependent_testbench_files = {}
809810 for dependent_file in dependent_files :
810811 library_name = dependent_file .library .name
811812 for testbench in self ._test_bench_list .get_test_benches_in_library (library_name ):
812813 if testbench .design_unit .source_file == dependent_file :
813- test_patterns .append (f"{ library_name } .{ testbench .name } *" )
814+ dependent_testbench_files [dependent_file ] = testbench .name
815+
816+ # Remove testbenches not depending on changes if --change options has been set
817+ # if only_tests_depending_on_changes:
818+ # if self._latest_dependency_updates is None:
819+ # self._latest_dependency_updates = self._get_latest_dependency_updates()
820+
821+ # if self._test_history is None:
822+ # self._test_history = self._get_test_history(simulator_if=None)
823+
824+ # for dependent_testbench_file in dependent_testbench_files:
825+ # latest_dependency_update = self._latest_dependency_updates[str(dependent_testbench_file.original_name)]
826+
827+ # Create test patterns for remaining testbenches: lib_name.tb_name*
828+ test_patterns = []
829+ for dependent_file , testbench_name in dependent_testbench_files .items ():
830+ library_name = dependent_file .library .name
831+ test_patterns .append (f"{ library_name } .{ testbench_name } *" )
814832
815833 # Update test filter to match test patterns
816834 if isinstance (self ._args .test_patterns , list ):
0 commit comments