brbzull0 commented on code in PR #13861: URL: https://github.com/apache/trafficserver/pull/13861#discussion_r4326557060
########## include/tscore/ArgParser.h: ########## @@ -364,6 +364,14 @@ class ArgParser // Enable test mode - makes do_exit() throw instead of calling exit() for unit testing static void set_test_mode(bool test = true); + /** Clear the parser-wide state held at file scope in ArgParser.cc. + + Test-only. A program builds one parser and never reuses the state, but a unit test binary + runs many parsers in sequence, and set_default_command() or Command::set_default() would + otherwise leak default_command into every later test. + */ + static void reset_global_state(); Review Comment: No change, as in https://github.com/apache/trafficserver/pull/13861#discussion_r4314314492: `reset_global_state()` is declared under the `protected:` label of `ArgParser` (the one above `do_exit()` and `set_test_mode()`), not public, and `tscore` headers are not installed; tests reach it through a derived `Access` struct. ########## src/traffic_ctl/traffic_ctl.cc: ########## @@ -173,8 +173,9 @@ main([[maybe_unused]] int argc, const char **argv) .add_option("--data", "-d", "Inline config data (@file, @- for stdin, or yaml string)", "", MORE_THAN_ZERO_ARG_N, "") .add_option("--directive", "-D", "Pass a reload directive to a config handler (format: config_key.directive_key=value)", "", MORE_THAN_ZERO_ARG_N, "") + // No short form: -w is the global --watch. .add_option( - "--initial-wait", "-w", + "--initial-wait", "", "Initial wait before first poll, giving the server time to schedule all handlers (seconds). Accepts fractional values", "", 1, "2") Review Comment: No change, as in https://github.com/apache/trafficserver/pull/13861#discussion_r4314315542: `add_option` takes the short form as `std::string const &`, an empty string is never added to the short-option map, and `""` is how the other long-only options in this file are declared. ########## src/tscore/ArgParser.cc: ########## @@ -39,11 +44,23 @@ std::string default_command; // by default return EX_USAGE(64) when usage is called. // if -h or --help is called specifically, return 0 int usage_return_code = EX_USAGE; +} // namespace namespace ts { bool ArgParser::_test_mode = false; +// protected method for testing +/*static*/ void +ArgParser::reset_global_state() +{ + global_usage.clear(); + description.clear(); + parser_program_name.clear(); + default_command.clear(); + usage_return_code = EX_USAGE; +} Review Comment: No change: the declaration is in the `protected:` section of `ArgParser` in `include/tscore/ArgParser.h`, so the comment matches; see https://github.com/apache/trafficserver/pull/13861#discussion_r4314314492. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
