ARG_TEST_NAME_BLACKLIST = 'b',
        ARG_VERIFIER_STATS = 's',
        ARG_VERBOSE = 'v',
+       ARG_GET_TEST_CNT = 'c',
 };
 
 static const struct argp_option opts[] = {
          "Output verifier statistics", },
        { "verbose", ARG_VERBOSE, "LEVEL", OPTION_ARG_OPTIONAL,
          "Verbose output (use -vv or -vvv for progressively verbose output)" },
+       { "count", ARG_GET_TEST_CNT, NULL, 0,
+         "Get number of selected top-level tests " },
        {},
 };
 
                        }
                }
                break;
+       case ARG_GET_TEST_CNT:
+               env->get_test_cnt = true;
+               break;
        case ARGP_KEY_ARG:
                argp_usage(state);
                break;
                                test->test_num, test->test_name))
                        continue;
 
+               if (env.get_test_cnt) {
+                       env.succ_cnt++;
+                       continue;
+               }
+
                test->run_test();
                /* ensure last sub-test is finalized properly */
                if (test->subtest_name)
                        cleanup_cgroup_environment();
        }
        stdio_restore();
+
+       if (env.get_test_cnt) {
+               printf("%d\n", env.succ_cnt);
+               goto out;
+       }
+
        fprintf(stdout, "Summary: %d/%d PASSED, %d SKIPPED, %d FAILED\n",
                env.succ_cnt, env.sub_succ_cnt, env.skip_cnt, env.fail_cnt);
 
+out:
        free_str_set(&env.test_selector.blacklist);
        free_str_set(&env.test_selector.whitelist);
        free(env.test_selector.num_set);