parses args
| 3518 | |
| 3519 | // parses args |
| 3520 | void Context::parseArgs(int argc, const char* const* argv, bool withDefaults) { |
| 3521 | using namespace detail; |
| 3522 | |
| 3523 | // clang-format off |
| 3524 | parseCommaSepArgs(argc, argv, DOCTEST_CONFIG_OPTIONS_PREFIX "source-file=", p->filters[0]); |
| 3525 | parseCommaSepArgs(argc, argv, DOCTEST_CONFIG_OPTIONS_PREFIX "sf=", p->filters[0]); |
| 3526 | parseCommaSepArgs(argc, argv, DOCTEST_CONFIG_OPTIONS_PREFIX "source-file-exclude=",p->filters[1]); |
| 3527 | parseCommaSepArgs(argc, argv, DOCTEST_CONFIG_OPTIONS_PREFIX "sfe=", p->filters[1]); |
| 3528 | parseCommaSepArgs(argc, argv, DOCTEST_CONFIG_OPTIONS_PREFIX "test-suite=", p->filters[2]); |
| 3529 | parseCommaSepArgs(argc, argv, DOCTEST_CONFIG_OPTIONS_PREFIX "ts=", p->filters[2]); |
| 3530 | parseCommaSepArgs(argc, argv, DOCTEST_CONFIG_OPTIONS_PREFIX "test-suite-exclude=", p->filters[3]); |
| 3531 | parseCommaSepArgs(argc, argv, DOCTEST_CONFIG_OPTIONS_PREFIX "tse=", p->filters[3]); |
| 3532 | parseCommaSepArgs(argc, argv, DOCTEST_CONFIG_OPTIONS_PREFIX "test-case=", p->filters[4]); |
| 3533 | parseCommaSepArgs(argc, argv, DOCTEST_CONFIG_OPTIONS_PREFIX "tc=", p->filters[4]); |
| 3534 | parseCommaSepArgs(argc, argv, DOCTEST_CONFIG_OPTIONS_PREFIX "test-case-exclude=", p->filters[5]); |
| 3535 | parseCommaSepArgs(argc, argv, DOCTEST_CONFIG_OPTIONS_PREFIX "tce=", p->filters[5]); |
| 3536 | parseCommaSepArgs(argc, argv, DOCTEST_CONFIG_OPTIONS_PREFIX "subcase=", p->filters[6]); |
| 3537 | parseCommaSepArgs(argc, argv, DOCTEST_CONFIG_OPTIONS_PREFIX "sc=", p->filters[6]); |
| 3538 | parseCommaSepArgs(argc, argv, DOCTEST_CONFIG_OPTIONS_PREFIX "subcase-exclude=", p->filters[7]); |
| 3539 | parseCommaSepArgs(argc, argv, DOCTEST_CONFIG_OPTIONS_PREFIX "sce=", p->filters[7]); |
| 3540 | parseCommaSepArgs(argc, argv, DOCTEST_CONFIG_OPTIONS_PREFIX "reporters=", p->filters[8]); |
| 3541 | parseCommaSepArgs(argc, argv, DOCTEST_CONFIG_OPTIONS_PREFIX "r=", p->filters[8]); |
| 3542 | // clang-format on |
| 3543 | |
| 3544 | int intRes = 0; |
| 3545 | String strRes; |
| 3546 | |
| 3547 | #define DOCTEST_PARSE_AS_BOOL_OR_FLAG(name, sname, var, default) \ |
| 3548 | if(parseIntOption(argc, argv, DOCTEST_CONFIG_OPTIONS_PREFIX name "=", option_bool, intRes) || \ |
| 3549 | parseIntOption(argc, argv, DOCTEST_CONFIG_OPTIONS_PREFIX sname "=", option_bool, intRes)) \ |
| 3550 | p->var = static_cast<bool>(intRes); \ |
| 3551 | else if(parseFlag(argc, argv, DOCTEST_CONFIG_OPTIONS_PREFIX name) || \ |
| 3552 | parseFlag(argc, argv, DOCTEST_CONFIG_OPTIONS_PREFIX sname)) \ |
| 3553 | p->var = true; \ |
| 3554 | else if(withDefaults) \ |
| 3555 | p->var = default |
| 3556 | |
| 3557 | #define DOCTEST_PARSE_INT_OPTION(name, sname, var, default) \ |
| 3558 | if(parseIntOption(argc, argv, DOCTEST_CONFIG_OPTIONS_PREFIX name "=", option_int, intRes) || \ |
| 3559 | parseIntOption(argc, argv, DOCTEST_CONFIG_OPTIONS_PREFIX sname "=", option_int, intRes)) \ |
| 3560 | p->var = intRes; \ |
| 3561 | else if(withDefaults) \ |
| 3562 | p->var = default |
| 3563 | |
| 3564 | #define DOCTEST_PARSE_STR_OPTION(name, sname, var, default) \ |
| 3565 | if(parseOption(argc, argv, DOCTEST_CONFIG_OPTIONS_PREFIX name "=", &strRes, default) || \ |
| 3566 | parseOption(argc, argv, DOCTEST_CONFIG_OPTIONS_PREFIX sname "=", &strRes, default) || \ |
| 3567 | withDefaults) \ |
| 3568 | p->var = strRes |
| 3569 | |
| 3570 | // clang-format off |
| 3571 | DOCTEST_PARSE_STR_OPTION("out", "o", out, ""); |
| 3572 | DOCTEST_PARSE_STR_OPTION("order-by", "ob", order_by, "file"); |
| 3573 | DOCTEST_PARSE_INT_OPTION("rand-seed", "rs", rand_seed, 0); |
| 3574 | |
| 3575 | DOCTEST_PARSE_INT_OPTION("first", "f", first, 0); |
| 3576 | DOCTEST_PARSE_INT_OPTION("last", "l", last, UINT_MAX); |
| 3577 |
nothing calls this directly
no test coverage detected