1336d762aSopenharmony_cimod permute; 2336d762aSopenharmony_cimod task; 3336d762aSopenharmony_ci 4336d762aSopenharmony_cifn main() { 5336d762aSopenharmony_ci let features = ["termcolor", "humantime", "atty", "regex"]; 6336d762aSopenharmony_ci 7336d762aSopenharmony_ci // Run a default build 8336d762aSopenharmony_ci if !task::test(Default::default()) { 9336d762aSopenharmony_ci panic!("default test execution failed"); 10336d762aSopenharmony_ci } 11336d762aSopenharmony_ci 12336d762aSopenharmony_ci // Run a build with no features 13336d762aSopenharmony_ci if !task::test(task::TestArgs { 14336d762aSopenharmony_ci default_features: false, 15336d762aSopenharmony_ci ..Default::default() 16336d762aSopenharmony_ci }) { 17336d762aSopenharmony_ci panic!("default test execution failed"); 18336d762aSopenharmony_ci } 19336d762aSopenharmony_ci 20336d762aSopenharmony_ci // Run a set of permutations 21336d762aSopenharmony_ci let failed = permute::all(&features) 22336d762aSopenharmony_ci .into_iter() 23336d762aSopenharmony_ci .filter(|features| { 24336d762aSopenharmony_ci !task::test(task::TestArgs { 25336d762aSopenharmony_ci features: features.clone(), 26336d762aSopenharmony_ci default_features: false, 27336d762aSopenharmony_ci lib_only: true, 28336d762aSopenharmony_ci }) 29336d762aSopenharmony_ci }) 30336d762aSopenharmony_ci .collect::<Vec<_>>(); 31336d762aSopenharmony_ci 32336d762aSopenharmony_ci if !failed.is_empty() { 33336d762aSopenharmony_ci for failed in failed { 34336d762aSopenharmony_ci eprintln!("FAIL: {:?}", failed); 35336d762aSopenharmony_ci } 36336d762aSopenharmony_ci 37336d762aSopenharmony_ci panic!("test execution failed"); 38336d762aSopenharmony_ci } else { 39336d762aSopenharmony_ci println!("test execution succeeded"); 40336d762aSopenharmony_ci } 41336d762aSopenharmony_ci} 42