#!/usr/bin/env python3 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								import  argparse 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								import  sys 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								from  typing  import  List ,  Tuple 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								import  unittest 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  selfdrive . car . tests . routes  import  CarTestRoute 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								from  selfdrive . car . tests . test_models  import  TestCarModel 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								def  create_test_models_suite ( routes :  List [ Tuple [ str ,  CarTestRoute ] ] ,  ci = False )  - >  unittest . TestSuite : 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  test_suite  =  unittest . TestSuite ( ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  car_model ,  test_route  in  routes : 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # create new test case and discover tests 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    test_case_args  =  { " car_model " :  car_model ,  " test_route " :  test_route ,  " ci " :  ci } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    CarModelTestCase  =  type ( " CarModelTestCase " ,  ( TestCarModel , ) ,  test_case_args ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    test_suite . addTest ( unittest . TestLoader ( ) . loadTestsFromTestCase ( CarModelTestCase ) ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  test_suite 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  __name__  ==  " __main__ " : 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  parser  =  argparse . ArgumentParser ( description = " Test any route against common issues with a new car port.  "  + 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                               " Uses selfdrive/car/tests/test_models.py " ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  parser . add_argument ( " route " ,  help = " Specify route to run tests on " ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  parser . add_argument ( " --car " ,  help = " Specify car model for test route " ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  parser . add_argument ( " --segment " ,  type = int ,  nargs = " ? " ,  help = " Specify segment of route to test " ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  parser . add_argument ( " --ci " ,  action = " store_true " ,  help = " Attempt to get logs using openpilotci, need to specify car " ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  args  =  parser . parse_args ( ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  len ( sys . argv )  ==  1 : 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    parser . print_help ( ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    sys . exit ( ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  test_route  =  CarTestRoute ( args . route ,  args . car ,  segment = args . segment ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  test_suite  =  create_test_models_suite ( [ ( args . car ,  test_route ) ] ,  ci = args . ci ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  unittest . TextTestRunner ( ) . run ( test_suite )