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