@@ -47,7 +47,18 @@ def refresh_packet_manager(archi, logs_dir):
4747
4848
4949# Install plugin, from local file if build is true, from repository if false.
50- def install_plugin (plugin , archi , build , logs_dir ):
50+ def install_plugin (plugin , archi , build , logs_dir , dependencies = None ):
51+ if dependencies :
52+ for dep in dependencies :
53+ if archi == "deb" :
54+ local_exists = len (glob .glob (f"./{ dep .lower ()} *.deb" )) > 0
55+ else :
56+ local_exists = len (glob .glob (f"./{ dep } *.rpm" )) > 0
57+ if local_exists :
58+ print (f"Installing test dependency { dep } for { plugin } " )
59+ dep_status = install_plugin (dep , archi , True , logs_dir )
60+ if dep_status != 0 :
61+ print (f"Warning: failed to install test dependency { dep } for { plugin } " )
5162 with open (f'{ logs_dir } /test-plugins-installation.log' , "a" ) as outfile :
5263 if archi == "deb" :
5364 if build :
@@ -99,12 +110,12 @@ def get_plugin_modes(plugin_command):
99110 break
100111 return modes
101112
102- def test_plugin (plugin_name , plugin_command , plugin_perl_package , plugin_paths , logs_dir , reports_dir ):
113+ def test_plugin (plugin_name , plugin_command , plugin_perl_package , plugin_paths , logs_dir , reports_dir , skip_robot_tests ):
103114 tests_path = []
104115 for path in plugin_paths :
105116 if os .path .exists (f"tests/{ path } " ):
106117 tests_path .append (f"tests/{ path } " )
107- if len (tests_path ) == 0 :
118+ if len (tests_path ) == 0 or skip_robot_tests :
108119 output_status = 3
109120 with open (f'{ logs_dir } /test-plugins-help.log' , "a" ) as outfile :
110121 print (
@@ -177,11 +188,13 @@ def remove_plugin(plugin, archi, logs_dir):
177188 parser .add_argument ('--runner-id' , type = int , help = 'ID du runner pour le test des plugins' )
178189 parser .add_argument ('--logs-dir' , type = str , help = 'Répertoire des logs' , default = '/var/log' )
179190 parser .add_argument ('--reports-dir' , type = str , help = 'Répertoire des rapports' , default = 'reports' )
191+ parser .add_argument ('--skip-robot-tests' , type = str , help = 'True to skip robot tests, default value: False' , default = 'false' )
180192 args = parser .parse_args ()
181193
182194 launch_snmp_sim ()
183195 archi = args .extension # expected either deb or rpm.
184196 logs_dir = args .logs_dir
197+ skip_robot_tests = args .skip_robot_tests .lower () == 'true'
185198 if args .runner_id :
186199 logs_dir = os .path .join (logs_dir , f"runner-{ args .runner_id } " )
187200 os .makedirs (logs_dir , exist_ok = True )
@@ -211,13 +224,15 @@ def remove_plugin(plugin, archi, logs_dir):
211224 print ("Testing plugin : " , plugin )
212225
213226 nb_plugins += 1
214- tmp = install_plugin (plugin , archi , plugins [plugin ]["build" ], logs_dir )
227+
228+ test_deps = plugins [plugin ].get ("test_dependencies" , [])
229+ tmp = install_plugin (plugin , archi , plugins [plugin ]["build" ], logs_dir , test_deps )
215230 if tmp > 0 :
216231 error_install += 1
217232 list_plugin_error .add (plugin )
218233 else :
219234 if plugins [plugin ]["test" ]:
220- tmp = test_plugin (plugin , plugins [plugin ]["command" ], plugins [plugin ]["perl_package" ], plugins [plugin ]["paths" ], logs_dir , reports_dir )
235+ tmp = test_plugin (plugin , plugins [plugin ]["command" ], plugins [plugin ]["perl_package" ], plugins [plugin ]["paths" ], logs_dir , reports_dir , skip_robot_tests )
221236 if tmp > 0 :
222237 error_tests += 1
223238 list_plugin_error .add (plugin )
0 commit comments