static int dm_do_test(struct unit_test_state *uts, struct unit_test *test, bool of_live) { struct sandbox_state *state = state_get_current(); const char *fname = strrchr(test->file, '/') + 1; printf("Test: %s: %s%s\n", test->name, fname, !of_live ? " (flat tree)" : ""); ut_assertok(dm_test_init(uts, of_live)); uts->start = mallinfo(); if (test->flags & DM_TESTF_SCAN_PDATA) ut_assertok(dm_scan_platdata(false)); if (test->flags & DM_TESTF_PROBE_TEST) ut_assertok(do_autoprobe(uts)); if (test->flags & DM_TESTF_SCAN_FDT) ut_assertok(dm_extended_scan_fdt(gd->fdt_blob, false)); /* * Silence the console and rely on console reocrding to get * our output. */ console_record_reset(); if (!state->show_test_output) gd->flags |= GD_FLG_SILENT; test->func(uts); gd->flags &= ~GD_FLG_SILENT; state_set_skip_delays(false); ut_assertok(dm_test_destroy(uts)); return 0; }
static int dm_test_main(const char *test_name) { struct unit_test *tests = ll_entry_start(struct unit_test, dm_test); const int n_ents = ll_entry_count(struct unit_test, dm_test); struct unit_test_state *uts = &global_dm_test_state; uts->priv = &_global_priv_dm_test_state; struct unit_test *test; int run_count; /* * If we have no device tree, or it only has a root node, then these * tests clearly aren't going to work... */ if (!gd->fdt_blob || fdt_next_node(gd->fdt_blob, 0, NULL) < 0) { puts("Please run with test device tree:\n" " ./u-boot -d arch/sandbox/dts/test.dtb\n"); ut_assert(gd->fdt_blob); } if (!test_name) printf("Running %d driver model tests\n", n_ents); run_count = 0; for (test = tests; test < tests + n_ents; test++) { const char *name = test->name; /* All tests have this prefix */ if (!strncmp(name, "dm_test_", 8)) name += 8; if (test_name && strcmp(test_name, name)) continue; printf("Test: %s\n", test->name); run_count++; ut_assertok(dm_test_init(uts)); uts->start = mallinfo(); if (test->flags & DM_TESTF_SCAN_PDATA) ut_assertok(dm_scan_platdata(false)); if (test->flags & DM_TESTF_PROBE_TEST) ut_assertok(do_autoprobe(uts)); if (test->flags & DM_TESTF_SCAN_FDT) ut_assertok(dm_scan_fdt(gd->fdt_blob, false)); test->func(uts); ut_assertok(dm_test_destroy(uts)); } if (test_name && !run_count) printf("Test '%s' not found\n", test_name); else printf("Failures: %d\n", uts->fail_count); gd->dm_root = NULL; ut_assertok(dm_init()); dm_scan_platdata(false); dm_scan_fdt(gd->fdt_blob, false); return uts->fail_count ? CMD_RET_FAILURE : 0; }
int dm_test_main(const char *test_name) { struct dm_test *tests = ll_entry_start(struct dm_test, dm_test); const int n_ents = ll_entry_count(struct dm_test, dm_test); struct dm_test_state *dms = &global_test_state; struct dm_test *test; /* * If we have no device tree, or it only has a root node, then these * tests clearly aren't going to work... */ if (!gd->fdt_blob || fdt_next_node(gd->fdt_blob, 0, NULL) < 0) { puts("Please run with test device tree:\n" " dtc -I dts -O dtb test/dm/test.dts -o test/dm/test.dtb\n" " ./u-boot -d test/dm/test.dtb\n"); ut_assert(gd->fdt_blob); } if (!test_name) printf("Running %d driver model tests\n", n_ents); for (test = tests; test < tests + n_ents; test++) { if (test_name && strcmp(test_name, test->name)) continue; printf("Test: %s\n", test->name); ut_assertok(dm_test_init(dms)); dms->start = mallinfo(); if (test->flags & DM_TESTF_SCAN_PDATA) ut_assertok(dm_scan_platdata(false)); if (test->flags & DM_TESTF_PROBE_TEST) ut_assertok(do_autoprobe(dms)); if (test->flags & DM_TESTF_SCAN_FDT) ut_assertok(dm_scan_fdt(gd->fdt_blob, false)); if (test->func(dms)) break; ut_assertok(dm_test_destroy(dms)); } printf("Failures: %d\n", dms->fail_count); return 0; }