@@ -287,13 +287,7 @@ def side_effect():
287287 pre_config .side_effect = side_effect
288288
289289 obj .add_config (name = "" , pre_config = pre_config )
290- try :
291- ui .main ()
292- except SystemExit as exc :
293- if retval is True :
294- self .assertEqual (exc .code , 0 )
295- else :
296- self .assertEqual (exc .code , 1 )
290+ self ._run_main (ui , 0 if retval else 1 )
297291
298292 pre_config .assert_has_calls ([call ()])
299293
@@ -304,17 +298,46 @@ def test_entity_has_pre_config(self):
304298 def test_test_has_pre_config (self ):
305299 self ._test_pre_config_helper (True , test_not_entity = False )
306300
301+ @mock .patch ("vunit.ui.LOGGER" , autospec = True )
302+ def test_warning_on_no_tests (self , logger ):
303+ ui = self ._create_ui ("--compile" )
304+ self ._run_main (ui )
305+ self .assertEqual (logger .warning .mock_calls , [])
306+ logger .reset_mock ()
307+
308+ ui = self ._create_ui ("--list" )
309+ self ._run_main (ui )
310+ self .assertEqual (len (logger .warning .mock_calls ), 1 )
311+ self .assertTrue ("found no test benches" in str (logger .warning .mock_calls ))
312+ logger .reset_mock ()
313+
314+ ui = self ._create_ui ()
315+ self ._run_main (ui )
316+ self .assertEqual (len (logger .warning .mock_calls ), 1 )
317+ self .assertTrue ("found no test benches" in str (logger .warning .mock_calls ))
318+ logger .reset_mock ()
319+
307320 def _create_ui (self , * args ):
308321 """ Create an instance of the VUnit public interface class """
309322 ui = VUnit .from_argv (argv = ["--output-path=%s" % self ._output_path ,
310- "--clean" ] + list (args ))
323+ "--clean" ] + list (args ),
324+ compile_builtins = False )
311325 ui .add_library ('lib' )
312326
313327 factory = MockSimulatorFactory (self ._output_path )
314328 self .mocksim = factory .mocksim
315329 ui ._simulator_factory = factory # pylint: disable=protected-access
316330 return ui
317331
332+ def _run_main (self , ui , code = 0 ):
333+ """
334+ Run ui.main and expect exit code
335+ """
336+ try :
337+ ui .main ()
338+ except SystemExit as exc :
339+ self .assertEqual (exc .code , code )
340+
318341 def create_entity_file (self , idx = 0 , file_suffix = '.vhd' ):
319342 """
320343 Create and a temporary file containing the same source code
0 commit comments