@@ -204,6 +204,136 @@ TEST(ToolchainTestGroup, VerifyToolchain_LockedFolder) {
204
204
}
205
205
}
206
206
207
+ TEST (ToolchainTestGroup, VerifyToolchain_ConditionalAdd_CompilerVersion) {
208
+ buildcc::base::Toolchain gcc (buildcc::base::Toolchain::Id::Gcc, " gcc" , " as" ,
209
+ " gcc" , " g++" , " ar" , " ld" );
210
+
211
+ buildcc::base::VerifyToolchainConfig config;
212
+ config.env_vars .clear ();
213
+ config.absolute_search_paths .push_back (
214
+ (fs::current_path () / " toolchains" / " gcc" ).string ());
215
+ config.compiler_version = " 10.2.1" ;
216
+
217
+ std::vector<std::string> compiler_version{" 10.2.1" };
218
+ std::vector<std::string> arch{" none" };
219
+ buildcc::env::m::CommandExpect_Execute (1 , true , &compiler_version, nullptr );
220
+ buildcc::env::m::CommandExpect_Execute (1 , true , &arch, nullptr );
221
+
222
+ std::vector<buildcc::base::VerifiedToolchain> verified_toolchains =
223
+ gcc.Verify (config);
224
+ UT_PRINT (std::to_string (verified_toolchains.size ()).c_str ());
225
+ CHECK_EQUAL (verified_toolchains.size (), 1 );
226
+ }
227
+
228
+ TEST (ToolchainTestGroup,
229
+ VerifyToolchain_ConditionalAdd_CompilerVersionFailure) {
230
+ buildcc::base::Toolchain gcc (buildcc::base::Toolchain::Id::Gcc, " gcc" , " as" ,
231
+ " gcc" , " g++" , " ar" , " ld" );
232
+
233
+ buildcc::base::VerifyToolchainConfig config;
234
+ config.env_vars .clear ();
235
+ config.absolute_search_paths .push_back (
236
+ (fs::current_path () / " toolchains" / " gcc" ).string ());
237
+ config.compiler_version = " 11.0.0" ;
238
+
239
+ std::vector<std::string> compiler_version{" 10.2.1" };
240
+ std::vector<std::string> arch{" none" };
241
+ buildcc::env::m::CommandExpect_Execute (1 , true , &compiler_version, nullptr );
242
+ buildcc::env::m::CommandExpect_Execute (1 , true , &arch, nullptr );
243
+
244
+ std::vector<buildcc::base::VerifiedToolchain> verified_toolchains =
245
+ gcc.Verify (config);
246
+ UT_PRINT (std::to_string (verified_toolchains.size ()).c_str ());
247
+ CHECK_EQUAL (verified_toolchains.size (), 0 );
248
+ }
249
+
250
+ TEST (ToolchainTestGroup, VerifyToolchain_ConditionalAdd_TargetArch) {
251
+ buildcc::base::Toolchain gcc (buildcc::base::Toolchain::Id::Gcc, " gcc" , " as" ,
252
+ " gcc" , " g++" , " ar" , " ld" );
253
+
254
+ buildcc::base::VerifyToolchainConfig config;
255
+ config.env_vars .clear ();
256
+ config.absolute_search_paths .push_back (
257
+ (fs::current_path () / " toolchains" / " gcc" ).string ());
258
+ config.target_arch = " arm-none-eabi" ;
259
+
260
+ std::vector<std::string> compiler_version{" 10.2.1" };
261
+ std::vector<std::string> arch{" arm-none-eabi" };
262
+ buildcc::env::m::CommandExpect_Execute (1 , true , &compiler_version, nullptr );
263
+ buildcc::env::m::CommandExpect_Execute (1 , true , &arch, nullptr );
264
+
265
+ std::vector<buildcc::base::VerifiedToolchain> verified_toolchains =
266
+ gcc.Verify (config);
267
+ UT_PRINT (std::to_string (verified_toolchains.size ()).c_str ());
268
+ CHECK_EQUAL (verified_toolchains.size (), 1 );
269
+ }
270
+
271
+ TEST (ToolchainTestGroup, VerifyToolchain_ConditionalAdd_TargetArchFailure) {
272
+ buildcc::base::Toolchain gcc (buildcc::base::Toolchain::Id::Gcc, " gcc" , " as" ,
273
+ " gcc" , " g++" , " ar" , " ld" );
274
+
275
+ buildcc::base::VerifyToolchainConfig config;
276
+ config.env_vars .clear ();
277
+ config.absolute_search_paths .push_back (
278
+ (fs::current_path () / " toolchains" / " gcc" ).string ());
279
+ config.target_arch = " none" ;
280
+
281
+ std::vector<std::string> compiler_version{" 10.2.1" };
282
+ std::vector<std::string> arch{" arm-none-eabi" };
283
+ buildcc::env::m::CommandExpect_Execute (1 , true , &compiler_version, nullptr );
284
+ buildcc::env::m::CommandExpect_Execute (1 , true , &arch, nullptr );
285
+
286
+ std::vector<buildcc::base::VerifiedToolchain> verified_toolchains =
287
+ gcc.Verify (config);
288
+ UT_PRINT (std::to_string (verified_toolchains.size ()).c_str ());
289
+ CHECK_EQUAL (verified_toolchains.size (), 0 );
290
+ }
291
+
292
+ TEST (ToolchainTestGroup, VerifyToolchain_ConditionalAdd_BothFailure) {
293
+ buildcc::base::Toolchain gcc (buildcc::base::Toolchain::Id::Gcc, " gcc" , " as" ,
294
+ " gcc" , " g++" , " ar" , " ld" );
295
+
296
+ buildcc::base::VerifyToolchainConfig config;
297
+ config.env_vars .clear ();
298
+ config.absolute_search_paths .push_back (
299
+ (fs::current_path () / " toolchains" / " gcc" ).string ());
300
+ config.compiler_version = " none" ;
301
+ config.target_arch = " none" ;
302
+
303
+ std::vector<std::string> compiler_version{" 10.2.1" };
304
+ std::vector<std::string> arch{" arm-none-eabi" };
305
+ buildcc::env::m::CommandExpect_Execute (1 , true , &compiler_version, nullptr );
306
+ buildcc::env::m::CommandExpect_Execute (1 , true , &arch, nullptr );
307
+
308
+ std::vector<buildcc::base::VerifiedToolchain> verified_toolchains =
309
+ gcc.Verify (config);
310
+ UT_PRINT (std::to_string (verified_toolchains.size ()).c_str ());
311
+ CHECK_EQUAL (verified_toolchains.size (), 0 );
312
+ }
313
+
314
+ TEST (ToolchainTestGroup, VerifyToolchain_UpdateFalse) {
315
+ buildcc::base::Toolchain gcc (buildcc::base::Toolchain::Id::Gcc, " gcc" , " as" ,
316
+ " gcc" , " g++" , " ar" , " ld" );
317
+
318
+ buildcc::base::VerifyToolchainConfig config;
319
+ config.env_vars .clear ();
320
+ config.absolute_search_paths .push_back (
321
+ (fs::current_path () / " toolchains" / " gcc" ).string ());
322
+ // config.compiler_version = "none";
323
+ // config.target_arch = "none";
324
+ config.update = false ;
325
+
326
+ std::vector<std::string> compiler_version{" 10.2.1" };
327
+ std::vector<std::string> arch{" arm-none-eabi" };
328
+ buildcc::env::m::CommandExpect_Execute (1 , true , &compiler_version, nullptr );
329
+ buildcc::env::m::CommandExpect_Execute (1 , true , &arch, nullptr );
330
+
331
+ std::vector<buildcc::base::VerifiedToolchain> verified_toolchains =
332
+ gcc.Verify (config);
333
+ UT_PRINT (std::to_string (verified_toolchains.size ()).c_str ());
334
+ CHECK_EQUAL (verified_toolchains.size (), 1 );
335
+ }
336
+
207
337
int main (int ac, char **av) {
208
338
buildcc::env::m::VectorStringCopier copier;
209
339
mock ().installCopier (TEST_VECTOR_STRING_TYPE, copier);
0 commit comments