xref: /aosp_15_r20/external/abseil-cpp/absl/flags/internal/usage_test.cc (revision 9356374a3709195abf420251b3e825997ff56c0f)
1*9356374aSAndroid Build Coastguard Worker //
2*9356374aSAndroid Build Coastguard Worker //  Copyright 2019 The Abseil Authors.
3*9356374aSAndroid Build Coastguard Worker //
4*9356374aSAndroid Build Coastguard Worker // Licensed under the Apache License, Version 2.0 (the "License");
5*9356374aSAndroid Build Coastguard Worker // you may not use this file except in compliance with the License.
6*9356374aSAndroid Build Coastguard Worker // You may obtain a copy of the License at
7*9356374aSAndroid Build Coastguard Worker //
8*9356374aSAndroid Build Coastguard Worker //      https://www.apache.org/licenses/LICENSE-2.0
9*9356374aSAndroid Build Coastguard Worker //
10*9356374aSAndroid Build Coastguard Worker // Unless required by applicable law or agreed to in writing, software
11*9356374aSAndroid Build Coastguard Worker // distributed under the License is distributed on an "AS IS" BASIS,
12*9356374aSAndroid Build Coastguard Worker // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*9356374aSAndroid Build Coastguard Worker // See the License for the specific language governing permissions and
14*9356374aSAndroid Build Coastguard Worker // limitations under the License.
15*9356374aSAndroid Build Coastguard Worker 
16*9356374aSAndroid Build Coastguard Worker #include "absl/flags/internal/usage.h"
17*9356374aSAndroid Build Coastguard Worker 
18*9356374aSAndroid Build Coastguard Worker #include <stdint.h>
19*9356374aSAndroid Build Coastguard Worker 
20*9356374aSAndroid Build Coastguard Worker #include <sstream>
21*9356374aSAndroid Build Coastguard Worker #include <string>
22*9356374aSAndroid Build Coastguard Worker 
23*9356374aSAndroid Build Coastguard Worker #include "gmock/gmock.h"
24*9356374aSAndroid Build Coastguard Worker #include "gtest/gtest.h"
25*9356374aSAndroid Build Coastguard Worker #include "absl/flags/config.h"
26*9356374aSAndroid Build Coastguard Worker #include "absl/flags/flag.h"
27*9356374aSAndroid Build Coastguard Worker #include "absl/flags/internal/parse.h"
28*9356374aSAndroid Build Coastguard Worker #include "absl/flags/internal/program_name.h"
29*9356374aSAndroid Build Coastguard Worker #include "absl/flags/reflection.h"
30*9356374aSAndroid Build Coastguard Worker #include "absl/flags/usage.h"
31*9356374aSAndroid Build Coastguard Worker #include "absl/flags/usage_config.h"
32*9356374aSAndroid Build Coastguard Worker #include "absl/strings/match.h"
33*9356374aSAndroid Build Coastguard Worker #include "absl/strings/string_view.h"
34*9356374aSAndroid Build Coastguard Worker 
35*9356374aSAndroid Build Coastguard Worker ABSL_FLAG(int, usage_reporting_test_flag_01, 101,
36*9356374aSAndroid Build Coastguard Worker           "usage_reporting_test_flag_01 help message");
37*9356374aSAndroid Build Coastguard Worker ABSL_FLAG(bool, usage_reporting_test_flag_02, false,
38*9356374aSAndroid Build Coastguard Worker           "usage_reporting_test_flag_02 help message");
39*9356374aSAndroid Build Coastguard Worker ABSL_FLAG(double, usage_reporting_test_flag_03, 1.03,
40*9356374aSAndroid Build Coastguard Worker           "usage_reporting_test_flag_03 help message");
41*9356374aSAndroid Build Coastguard Worker ABSL_FLAG(int64_t, usage_reporting_test_flag_04, 1000000000000004L,
42*9356374aSAndroid Build Coastguard Worker           "usage_reporting_test_flag_04 help message");
43*9356374aSAndroid Build Coastguard Worker ABSL_FLAG(std::string, usage_reporting_test_flag_07, "\r\n\f\v\a\b\t ",
44*9356374aSAndroid Build Coastguard Worker           "usage_reporting_test_flag_07 help \r\n\f\v\a\b\t ");
45*9356374aSAndroid Build Coastguard Worker 
46*9356374aSAndroid Build Coastguard Worker static const char kTestUsageMessage[] = "Custom usage message";
47*9356374aSAndroid Build Coastguard Worker 
48*9356374aSAndroid Build Coastguard Worker struct UDT {
49*9356374aSAndroid Build Coastguard Worker   UDT() = default;
50*9356374aSAndroid Build Coastguard Worker   UDT(const UDT&) = default;
51*9356374aSAndroid Build Coastguard Worker   UDT& operator=(const UDT&) = default;
52*9356374aSAndroid Build Coastguard Worker };
AbslParseFlag(absl::string_view,UDT *,std::string *)53*9356374aSAndroid Build Coastguard Worker static bool AbslParseFlag(absl::string_view, UDT*, std::string*) {
54*9356374aSAndroid Build Coastguard Worker   return true;
55*9356374aSAndroid Build Coastguard Worker }
AbslUnparseFlag(const UDT &)56*9356374aSAndroid Build Coastguard Worker static std::string AbslUnparseFlag(const UDT&) { return "UDT{}"; }
57*9356374aSAndroid Build Coastguard Worker 
58*9356374aSAndroid Build Coastguard Worker ABSL_FLAG(UDT, usage_reporting_test_flag_05, {},
59*9356374aSAndroid Build Coastguard Worker           "usage_reporting_test_flag_05 help message");
60*9356374aSAndroid Build Coastguard Worker 
61*9356374aSAndroid Build Coastguard Worker ABSL_FLAG(
62*9356374aSAndroid Build Coastguard Worker     std::string, usage_reporting_test_flag_06, {},
63*9356374aSAndroid Build Coastguard Worker     "usage_reporting_test_flag_06 help message.\n"
64*9356374aSAndroid Build Coastguard Worker     "\n"
65*9356374aSAndroid Build Coastguard Worker     "Some more help.\n"
66*9356374aSAndroid Build Coastguard Worker     "Even more long long long long long long long long long long long long "
67*9356374aSAndroid Build Coastguard Worker     "help message.");
68*9356374aSAndroid Build Coastguard Worker 
69*9356374aSAndroid Build Coastguard Worker namespace {
70*9356374aSAndroid Build Coastguard Worker 
71*9356374aSAndroid Build Coastguard Worker namespace flags = absl::flags_internal;
72*9356374aSAndroid Build Coastguard Worker 
NormalizeFileName(absl::string_view fname)73*9356374aSAndroid Build Coastguard Worker static std::string NormalizeFileName(absl::string_view fname) {
74*9356374aSAndroid Build Coastguard Worker #ifdef _WIN32
75*9356374aSAndroid Build Coastguard Worker   std::string normalized(fname);
76*9356374aSAndroid Build Coastguard Worker   std::replace(normalized.begin(), normalized.end(), '\\', '/');
77*9356374aSAndroid Build Coastguard Worker   fname = normalized;
78*9356374aSAndroid Build Coastguard Worker #endif
79*9356374aSAndroid Build Coastguard Worker 
80*9356374aSAndroid Build Coastguard Worker   auto absl_pos = fname.rfind("absl/");
81*9356374aSAndroid Build Coastguard Worker   if (absl_pos != absl::string_view::npos) {
82*9356374aSAndroid Build Coastguard Worker     fname = fname.substr(absl_pos);
83*9356374aSAndroid Build Coastguard Worker   }
84*9356374aSAndroid Build Coastguard Worker   return std::string(fname);
85*9356374aSAndroid Build Coastguard Worker }
86*9356374aSAndroid Build Coastguard Worker 
87*9356374aSAndroid Build Coastguard Worker class UsageReportingTest : public testing::Test {
88*9356374aSAndroid Build Coastguard Worker  protected:
UsageReportingTest()89*9356374aSAndroid Build Coastguard Worker   UsageReportingTest() {
90*9356374aSAndroid Build Coastguard Worker     // Install default config for the use on this unit test.
91*9356374aSAndroid Build Coastguard Worker     // Binary may install a custom config before tests are run.
92*9356374aSAndroid Build Coastguard Worker     absl::FlagsUsageConfig default_config;
93*9356374aSAndroid Build Coastguard Worker     default_config.normalize_filename = &NormalizeFileName;
94*9356374aSAndroid Build Coastguard Worker     absl::SetFlagsUsageConfig(default_config);
95*9356374aSAndroid Build Coastguard Worker   }
~UsageReportingTest()96*9356374aSAndroid Build Coastguard Worker   ~UsageReportingTest() override {
97*9356374aSAndroid Build Coastguard Worker     flags::SetFlagsHelpMode(flags::HelpMode::kNone);
98*9356374aSAndroid Build Coastguard Worker     flags::SetFlagsHelpMatchSubstr("");
99*9356374aSAndroid Build Coastguard Worker     flags::SetFlagsHelpFormat(flags::HelpFormat::kHumanReadable);
100*9356374aSAndroid Build Coastguard Worker   }
SetUp()101*9356374aSAndroid Build Coastguard Worker   void SetUp() override {
102*9356374aSAndroid Build Coastguard Worker #if ABSL_FLAGS_STRIP_NAMES
103*9356374aSAndroid Build Coastguard Worker     GTEST_SKIP() << "This test requires flag names to be present";
104*9356374aSAndroid Build Coastguard Worker #endif
105*9356374aSAndroid Build Coastguard Worker   }
106*9356374aSAndroid Build Coastguard Worker 
107*9356374aSAndroid Build Coastguard Worker  private:
108*9356374aSAndroid Build Coastguard Worker   absl::FlagSaver flag_saver_;
109*9356374aSAndroid Build Coastguard Worker };
110*9356374aSAndroid Build Coastguard Worker 
111*9356374aSAndroid Build Coastguard Worker // --------------------------------------------------------------------
112*9356374aSAndroid Build Coastguard Worker 
113*9356374aSAndroid Build Coastguard Worker using UsageReportingDeathTest = UsageReportingTest;
114*9356374aSAndroid Build Coastguard Worker 
TEST_F(UsageReportingDeathTest,TestSetProgramUsageMessage)115*9356374aSAndroid Build Coastguard Worker TEST_F(UsageReportingDeathTest, TestSetProgramUsageMessage) {
116*9356374aSAndroid Build Coastguard Worker #if !defined(GTEST_HAS_ABSL) || !GTEST_HAS_ABSL
117*9356374aSAndroid Build Coastguard Worker   // Check for kTestUsageMessage set in main() below.
118*9356374aSAndroid Build Coastguard Worker   EXPECT_EQ(absl::ProgramUsageMessage(), kTestUsageMessage);
119*9356374aSAndroid Build Coastguard Worker #else
120*9356374aSAndroid Build Coastguard Worker   // Check for part of the usage message set by GoogleTest.
121*9356374aSAndroid Build Coastguard Worker   EXPECT_THAT(absl::ProgramUsageMessage(),
122*9356374aSAndroid Build Coastguard Worker               ::testing::HasSubstr(
123*9356374aSAndroid Build Coastguard Worker                   "This program contains tests written using Google Test"));
124*9356374aSAndroid Build Coastguard Worker #endif
125*9356374aSAndroid Build Coastguard Worker 
126*9356374aSAndroid Build Coastguard Worker   EXPECT_DEATH_IF_SUPPORTED(
127*9356374aSAndroid Build Coastguard Worker       absl::SetProgramUsageMessage("custom usage message"),
128*9356374aSAndroid Build Coastguard Worker       ::testing::HasSubstr("SetProgramUsageMessage() called twice"));
129*9356374aSAndroid Build Coastguard Worker }
130*9356374aSAndroid Build Coastguard Worker 
131*9356374aSAndroid Build Coastguard Worker // --------------------------------------------------------------------
132*9356374aSAndroid Build Coastguard Worker 
TEST_F(UsageReportingTest,TestFlagHelpHRF_on_flag_01)133*9356374aSAndroid Build Coastguard Worker TEST_F(UsageReportingTest, TestFlagHelpHRF_on_flag_01) {
134*9356374aSAndroid Build Coastguard Worker   const auto* flag = absl::FindCommandLineFlag("usage_reporting_test_flag_01");
135*9356374aSAndroid Build Coastguard Worker   std::stringstream test_buf;
136*9356374aSAndroid Build Coastguard Worker 
137*9356374aSAndroid Build Coastguard Worker   flags::FlagHelp(test_buf, *flag, flags::HelpFormat::kHumanReadable);
138*9356374aSAndroid Build Coastguard Worker   EXPECT_EQ(
139*9356374aSAndroid Build Coastguard Worker       test_buf.str(),
140*9356374aSAndroid Build Coastguard Worker       R"(    --usage_reporting_test_flag_01 (usage_reporting_test_flag_01 help message);
141*9356374aSAndroid Build Coastguard Worker       default: 101;
142*9356374aSAndroid Build Coastguard Worker )");
143*9356374aSAndroid Build Coastguard Worker }
144*9356374aSAndroid Build Coastguard Worker 
TEST_F(UsageReportingTest,TestFlagHelpHRF_on_flag_02)145*9356374aSAndroid Build Coastguard Worker TEST_F(UsageReportingTest, TestFlagHelpHRF_on_flag_02) {
146*9356374aSAndroid Build Coastguard Worker   const auto* flag = absl::FindCommandLineFlag("usage_reporting_test_flag_02");
147*9356374aSAndroid Build Coastguard Worker   std::stringstream test_buf;
148*9356374aSAndroid Build Coastguard Worker 
149*9356374aSAndroid Build Coastguard Worker   flags::FlagHelp(test_buf, *flag, flags::HelpFormat::kHumanReadable);
150*9356374aSAndroid Build Coastguard Worker   EXPECT_EQ(
151*9356374aSAndroid Build Coastguard Worker       test_buf.str(),
152*9356374aSAndroid Build Coastguard Worker       R"(    --usage_reporting_test_flag_02 (usage_reporting_test_flag_02 help message);
153*9356374aSAndroid Build Coastguard Worker       default: false;
154*9356374aSAndroid Build Coastguard Worker )");
155*9356374aSAndroid Build Coastguard Worker }
156*9356374aSAndroid Build Coastguard Worker 
TEST_F(UsageReportingTest,TestFlagHelpHRF_on_flag_03)157*9356374aSAndroid Build Coastguard Worker TEST_F(UsageReportingTest, TestFlagHelpHRF_on_flag_03) {
158*9356374aSAndroid Build Coastguard Worker   const auto* flag = absl::FindCommandLineFlag("usage_reporting_test_flag_03");
159*9356374aSAndroid Build Coastguard Worker   std::stringstream test_buf;
160*9356374aSAndroid Build Coastguard Worker 
161*9356374aSAndroid Build Coastguard Worker   flags::FlagHelp(test_buf, *flag, flags::HelpFormat::kHumanReadable);
162*9356374aSAndroid Build Coastguard Worker   EXPECT_EQ(
163*9356374aSAndroid Build Coastguard Worker       test_buf.str(),
164*9356374aSAndroid Build Coastguard Worker       R"(    --usage_reporting_test_flag_03 (usage_reporting_test_flag_03 help message);
165*9356374aSAndroid Build Coastguard Worker       default: 1.03;
166*9356374aSAndroid Build Coastguard Worker )");
167*9356374aSAndroid Build Coastguard Worker }
168*9356374aSAndroid Build Coastguard Worker 
TEST_F(UsageReportingTest,TestFlagHelpHRF_on_flag_04)169*9356374aSAndroid Build Coastguard Worker TEST_F(UsageReportingTest, TestFlagHelpHRF_on_flag_04) {
170*9356374aSAndroid Build Coastguard Worker   const auto* flag = absl::FindCommandLineFlag("usage_reporting_test_flag_04");
171*9356374aSAndroid Build Coastguard Worker   std::stringstream test_buf;
172*9356374aSAndroid Build Coastguard Worker 
173*9356374aSAndroid Build Coastguard Worker   flags::FlagHelp(test_buf, *flag, flags::HelpFormat::kHumanReadable);
174*9356374aSAndroid Build Coastguard Worker   EXPECT_EQ(
175*9356374aSAndroid Build Coastguard Worker       test_buf.str(),
176*9356374aSAndroid Build Coastguard Worker       R"(    --usage_reporting_test_flag_04 (usage_reporting_test_flag_04 help message);
177*9356374aSAndroid Build Coastguard Worker       default: 1000000000000004;
178*9356374aSAndroid Build Coastguard Worker )");
179*9356374aSAndroid Build Coastguard Worker }
180*9356374aSAndroid Build Coastguard Worker 
TEST_F(UsageReportingTest,TestFlagHelpHRF_on_flag_05)181*9356374aSAndroid Build Coastguard Worker TEST_F(UsageReportingTest, TestFlagHelpHRF_on_flag_05) {
182*9356374aSAndroid Build Coastguard Worker   const auto* flag = absl::FindCommandLineFlag("usage_reporting_test_flag_05");
183*9356374aSAndroid Build Coastguard Worker   std::stringstream test_buf;
184*9356374aSAndroid Build Coastguard Worker 
185*9356374aSAndroid Build Coastguard Worker   flags::FlagHelp(test_buf, *flag, flags::HelpFormat::kHumanReadable);
186*9356374aSAndroid Build Coastguard Worker   EXPECT_EQ(
187*9356374aSAndroid Build Coastguard Worker       test_buf.str(),
188*9356374aSAndroid Build Coastguard Worker       R"(    --usage_reporting_test_flag_05 (usage_reporting_test_flag_05 help message);
189*9356374aSAndroid Build Coastguard Worker       default: UDT{};
190*9356374aSAndroid Build Coastguard Worker )");
191*9356374aSAndroid Build Coastguard Worker }
192*9356374aSAndroid Build Coastguard Worker 
193*9356374aSAndroid Build Coastguard Worker // --------------------------------------------------------------------
194*9356374aSAndroid Build Coastguard Worker 
TEST_F(UsageReportingTest,TestFlagsHelpHRF)195*9356374aSAndroid Build Coastguard Worker TEST_F(UsageReportingTest, TestFlagsHelpHRF) {
196*9356374aSAndroid Build Coastguard Worker   std::string usage_test_flags_out =
197*9356374aSAndroid Build Coastguard Worker       R"(usage_test: Custom usage message
198*9356374aSAndroid Build Coastguard Worker 
199*9356374aSAndroid Build Coastguard Worker   Flags from absl/flags/internal/usage_test.cc:
200*9356374aSAndroid Build Coastguard Worker     --usage_reporting_test_flag_01 (usage_reporting_test_flag_01 help message);
201*9356374aSAndroid Build Coastguard Worker       default: 101;
202*9356374aSAndroid Build Coastguard Worker     --usage_reporting_test_flag_02 (usage_reporting_test_flag_02 help message);
203*9356374aSAndroid Build Coastguard Worker       default: false;
204*9356374aSAndroid Build Coastguard Worker     --usage_reporting_test_flag_03 (usage_reporting_test_flag_03 help message);
205*9356374aSAndroid Build Coastguard Worker       default: 1.03;
206*9356374aSAndroid Build Coastguard Worker     --usage_reporting_test_flag_04 (usage_reporting_test_flag_04 help message);
207*9356374aSAndroid Build Coastguard Worker       default: 1000000000000004;
208*9356374aSAndroid Build Coastguard Worker     --usage_reporting_test_flag_05 (usage_reporting_test_flag_05 help message);
209*9356374aSAndroid Build Coastguard Worker       default: UDT{};
210*9356374aSAndroid Build Coastguard Worker     --usage_reporting_test_flag_06 (usage_reporting_test_flag_06 help message.
211*9356374aSAndroid Build Coastguard Worker 
212*9356374aSAndroid Build Coastguard Worker       Some more help.
213*9356374aSAndroid Build Coastguard Worker       Even more long long long long long long long long long long long long help
214*9356374aSAndroid Build Coastguard Worker       message.); default: "";)"
215*9356374aSAndroid Build Coastguard Worker 
216*9356374aSAndroid Build Coastguard Worker       "\n    --usage_reporting_test_flag_07 (usage_reporting_test_flag_07 "
217*9356374aSAndroid Build Coastguard Worker       "help\n\n      \f\v\a\b ); default: \"\r\n\f\v\a\b\t \";\n"
218*9356374aSAndroid Build Coastguard Worker 
219*9356374aSAndroid Build Coastguard Worker       R"(
220*9356374aSAndroid Build Coastguard Worker Try --helpfull to get a list of all flags or --help=substring shows help for
221*9356374aSAndroid Build Coastguard Worker flags which include specified substring in either in the name, or description or
222*9356374aSAndroid Build Coastguard Worker path.
223*9356374aSAndroid Build Coastguard Worker )";
224*9356374aSAndroid Build Coastguard Worker 
225*9356374aSAndroid Build Coastguard Worker   std::stringstream test_buf_01;
226*9356374aSAndroid Build Coastguard Worker   flags::FlagsHelp(test_buf_01, "usage_test.cc",
227*9356374aSAndroid Build Coastguard Worker                    flags::HelpFormat::kHumanReadable, kTestUsageMessage);
228*9356374aSAndroid Build Coastguard Worker   EXPECT_EQ(test_buf_01.str(), usage_test_flags_out);
229*9356374aSAndroid Build Coastguard Worker 
230*9356374aSAndroid Build Coastguard Worker   std::stringstream test_buf_02;
231*9356374aSAndroid Build Coastguard Worker   flags::FlagsHelp(test_buf_02, "flags/internal/usage_test.cc",
232*9356374aSAndroid Build Coastguard Worker                    flags::HelpFormat::kHumanReadable, kTestUsageMessage);
233*9356374aSAndroid Build Coastguard Worker   EXPECT_EQ(test_buf_02.str(), usage_test_flags_out);
234*9356374aSAndroid Build Coastguard Worker 
235*9356374aSAndroid Build Coastguard Worker   std::stringstream test_buf_03;
236*9356374aSAndroid Build Coastguard Worker   flags::FlagsHelp(test_buf_03, "usage_test", flags::HelpFormat::kHumanReadable,
237*9356374aSAndroid Build Coastguard Worker                    kTestUsageMessage);
238*9356374aSAndroid Build Coastguard Worker   EXPECT_EQ(test_buf_03.str(), usage_test_flags_out);
239*9356374aSAndroid Build Coastguard Worker 
240*9356374aSAndroid Build Coastguard Worker   std::stringstream test_buf_04;
241*9356374aSAndroid Build Coastguard Worker   flags::FlagsHelp(test_buf_04, "flags/invalid_file_name.cc",
242*9356374aSAndroid Build Coastguard Worker                    flags::HelpFormat::kHumanReadable, kTestUsageMessage);
243*9356374aSAndroid Build Coastguard Worker   EXPECT_EQ(test_buf_04.str(),
244*9356374aSAndroid Build Coastguard Worker             R"(usage_test: Custom usage message
245*9356374aSAndroid Build Coastguard Worker 
246*9356374aSAndroid Build Coastguard Worker No flags matched.
247*9356374aSAndroid Build Coastguard Worker 
248*9356374aSAndroid Build Coastguard Worker Try --helpfull to get a list of all flags or --help=substring shows help for
249*9356374aSAndroid Build Coastguard Worker flags which include specified substring in either in the name, or description or
250*9356374aSAndroid Build Coastguard Worker path.
251*9356374aSAndroid Build Coastguard Worker )");
252*9356374aSAndroid Build Coastguard Worker 
253*9356374aSAndroid Build Coastguard Worker   std::stringstream test_buf_05;
254*9356374aSAndroid Build Coastguard Worker   flags::FlagsHelp(test_buf_05, "", flags::HelpFormat::kHumanReadable,
255*9356374aSAndroid Build Coastguard Worker                    kTestUsageMessage);
256*9356374aSAndroid Build Coastguard Worker   std::string test_out = test_buf_05.str();
257*9356374aSAndroid Build Coastguard Worker   absl::string_view test_out_str(test_out);
258*9356374aSAndroid Build Coastguard Worker   EXPECT_TRUE(
259*9356374aSAndroid Build Coastguard Worker       absl::StartsWith(test_out_str, "usage_test: Custom usage message"));
260*9356374aSAndroid Build Coastguard Worker   EXPECT_TRUE(absl::StrContains(
261*9356374aSAndroid Build Coastguard Worker       test_out_str, "Flags from absl/flags/internal/usage_test.cc:"));
262*9356374aSAndroid Build Coastguard Worker   EXPECT_TRUE(
263*9356374aSAndroid Build Coastguard Worker       absl::StrContains(test_out_str, "-usage_reporting_test_flag_01 "));
264*9356374aSAndroid Build Coastguard Worker }
265*9356374aSAndroid Build Coastguard Worker 
266*9356374aSAndroid Build Coastguard Worker // --------------------------------------------------------------------
267*9356374aSAndroid Build Coastguard Worker 
TEST_F(UsageReportingTest,TestNoUsageFlags)268*9356374aSAndroid Build Coastguard Worker TEST_F(UsageReportingTest, TestNoUsageFlags) {
269*9356374aSAndroid Build Coastguard Worker   std::stringstream test_buf;
270*9356374aSAndroid Build Coastguard Worker   EXPECT_EQ(flags::HandleUsageFlags(test_buf, kTestUsageMessage),
271*9356374aSAndroid Build Coastguard Worker             flags::HelpMode::kNone);
272*9356374aSAndroid Build Coastguard Worker }
273*9356374aSAndroid Build Coastguard Worker 
274*9356374aSAndroid Build Coastguard Worker // --------------------------------------------------------------------
275*9356374aSAndroid Build Coastguard Worker 
TEST_F(UsageReportingTest,TestUsageFlag_helpshort)276*9356374aSAndroid Build Coastguard Worker TEST_F(UsageReportingTest, TestUsageFlag_helpshort) {
277*9356374aSAndroid Build Coastguard Worker   flags::SetFlagsHelpMode(flags::HelpMode::kShort);
278*9356374aSAndroid Build Coastguard Worker 
279*9356374aSAndroid Build Coastguard Worker   std::stringstream test_buf;
280*9356374aSAndroid Build Coastguard Worker   EXPECT_EQ(flags::HandleUsageFlags(test_buf, kTestUsageMessage),
281*9356374aSAndroid Build Coastguard Worker             flags::HelpMode::kShort);
282*9356374aSAndroid Build Coastguard Worker   EXPECT_EQ(
283*9356374aSAndroid Build Coastguard Worker       test_buf.str(),
284*9356374aSAndroid Build Coastguard Worker       R"(usage_test: Custom usage message
285*9356374aSAndroid Build Coastguard Worker 
286*9356374aSAndroid Build Coastguard Worker   Flags from absl/flags/internal/usage_test.cc:
287*9356374aSAndroid Build Coastguard Worker     --usage_reporting_test_flag_01 (usage_reporting_test_flag_01 help message);
288*9356374aSAndroid Build Coastguard Worker       default: 101;
289*9356374aSAndroid Build Coastguard Worker     --usage_reporting_test_flag_02 (usage_reporting_test_flag_02 help message);
290*9356374aSAndroid Build Coastguard Worker       default: false;
291*9356374aSAndroid Build Coastguard Worker     --usage_reporting_test_flag_03 (usage_reporting_test_flag_03 help message);
292*9356374aSAndroid Build Coastguard Worker       default: 1.03;
293*9356374aSAndroid Build Coastguard Worker     --usage_reporting_test_flag_04 (usage_reporting_test_flag_04 help message);
294*9356374aSAndroid Build Coastguard Worker       default: 1000000000000004;
295*9356374aSAndroid Build Coastguard Worker     --usage_reporting_test_flag_05 (usage_reporting_test_flag_05 help message);
296*9356374aSAndroid Build Coastguard Worker       default: UDT{};
297*9356374aSAndroid Build Coastguard Worker     --usage_reporting_test_flag_06 (usage_reporting_test_flag_06 help message.
298*9356374aSAndroid Build Coastguard Worker 
299*9356374aSAndroid Build Coastguard Worker       Some more help.
300*9356374aSAndroid Build Coastguard Worker       Even more long long long long long long long long long long long long help
301*9356374aSAndroid Build Coastguard Worker       message.); default: "";)"
302*9356374aSAndroid Build Coastguard Worker 
303*9356374aSAndroid Build Coastguard Worker       "\n    --usage_reporting_test_flag_07 (usage_reporting_test_flag_07 "
304*9356374aSAndroid Build Coastguard Worker       "help\n\n      \f\v\a\b ); default: \"\r\n\f\v\a\b\t \";\n"
305*9356374aSAndroid Build Coastguard Worker 
306*9356374aSAndroid Build Coastguard Worker       R"(
307*9356374aSAndroid Build Coastguard Worker Try --helpfull to get a list of all flags or --help=substring shows help for
308*9356374aSAndroid Build Coastguard Worker flags which include specified substring in either in the name, or description or
309*9356374aSAndroid Build Coastguard Worker path.
310*9356374aSAndroid Build Coastguard Worker )");
311*9356374aSAndroid Build Coastguard Worker }
312*9356374aSAndroid Build Coastguard Worker 
313*9356374aSAndroid Build Coastguard Worker // --------------------------------------------------------------------
314*9356374aSAndroid Build Coastguard Worker 
TEST_F(UsageReportingTest,TestUsageFlag_help_simple)315*9356374aSAndroid Build Coastguard Worker TEST_F(UsageReportingTest, TestUsageFlag_help_simple) {
316*9356374aSAndroid Build Coastguard Worker   flags::SetFlagsHelpMode(flags::HelpMode::kImportant);
317*9356374aSAndroid Build Coastguard Worker 
318*9356374aSAndroid Build Coastguard Worker   std::stringstream test_buf;
319*9356374aSAndroid Build Coastguard Worker   EXPECT_EQ(flags::HandleUsageFlags(test_buf, kTestUsageMessage),
320*9356374aSAndroid Build Coastguard Worker             flags::HelpMode::kImportant);
321*9356374aSAndroid Build Coastguard Worker   EXPECT_EQ(
322*9356374aSAndroid Build Coastguard Worker       test_buf.str(),
323*9356374aSAndroid Build Coastguard Worker       R"(usage_test: Custom usage message
324*9356374aSAndroid Build Coastguard Worker 
325*9356374aSAndroid Build Coastguard Worker   Flags from absl/flags/internal/usage_test.cc:
326*9356374aSAndroid Build Coastguard Worker     --usage_reporting_test_flag_01 (usage_reporting_test_flag_01 help message);
327*9356374aSAndroid Build Coastguard Worker       default: 101;
328*9356374aSAndroid Build Coastguard Worker     --usage_reporting_test_flag_02 (usage_reporting_test_flag_02 help message);
329*9356374aSAndroid Build Coastguard Worker       default: false;
330*9356374aSAndroid Build Coastguard Worker     --usage_reporting_test_flag_03 (usage_reporting_test_flag_03 help message);
331*9356374aSAndroid Build Coastguard Worker       default: 1.03;
332*9356374aSAndroid Build Coastguard Worker     --usage_reporting_test_flag_04 (usage_reporting_test_flag_04 help message);
333*9356374aSAndroid Build Coastguard Worker       default: 1000000000000004;
334*9356374aSAndroid Build Coastguard Worker     --usage_reporting_test_flag_05 (usage_reporting_test_flag_05 help message);
335*9356374aSAndroid Build Coastguard Worker       default: UDT{};
336*9356374aSAndroid Build Coastguard Worker     --usage_reporting_test_flag_06 (usage_reporting_test_flag_06 help message.
337*9356374aSAndroid Build Coastguard Worker 
338*9356374aSAndroid Build Coastguard Worker       Some more help.
339*9356374aSAndroid Build Coastguard Worker       Even more long long long long long long long long long long long long help
340*9356374aSAndroid Build Coastguard Worker       message.); default: "";)"
341*9356374aSAndroid Build Coastguard Worker 
342*9356374aSAndroid Build Coastguard Worker       "\n    --usage_reporting_test_flag_07 (usage_reporting_test_flag_07 "
343*9356374aSAndroid Build Coastguard Worker       "help\n\n      \f\v\a\b ); default: \"\r\n\f\v\a\b\t \";\n"
344*9356374aSAndroid Build Coastguard Worker 
345*9356374aSAndroid Build Coastguard Worker       R"(
346*9356374aSAndroid Build Coastguard Worker Try --helpfull to get a list of all flags or --help=substring shows help for
347*9356374aSAndroid Build Coastguard Worker flags which include specified substring in either in the name, or description or
348*9356374aSAndroid Build Coastguard Worker path.
349*9356374aSAndroid Build Coastguard Worker )");
350*9356374aSAndroid Build Coastguard Worker }
351*9356374aSAndroid Build Coastguard Worker 
352*9356374aSAndroid Build Coastguard Worker // --------------------------------------------------------------------
353*9356374aSAndroid Build Coastguard Worker 
TEST_F(UsageReportingTest,TestUsageFlag_help_one_flag)354*9356374aSAndroid Build Coastguard Worker TEST_F(UsageReportingTest, TestUsageFlag_help_one_flag) {
355*9356374aSAndroid Build Coastguard Worker   flags::SetFlagsHelpMode(flags::HelpMode::kMatch);
356*9356374aSAndroid Build Coastguard Worker   flags::SetFlagsHelpMatchSubstr("usage_reporting_test_flag_06");
357*9356374aSAndroid Build Coastguard Worker 
358*9356374aSAndroid Build Coastguard Worker   std::stringstream test_buf;
359*9356374aSAndroid Build Coastguard Worker   EXPECT_EQ(flags::HandleUsageFlags(test_buf, kTestUsageMessage),
360*9356374aSAndroid Build Coastguard Worker             flags::HelpMode::kMatch);
361*9356374aSAndroid Build Coastguard Worker   EXPECT_EQ(test_buf.str(),
362*9356374aSAndroid Build Coastguard Worker             R"(usage_test: Custom usage message
363*9356374aSAndroid Build Coastguard Worker 
364*9356374aSAndroid Build Coastguard Worker   Flags from absl/flags/internal/usage_test.cc:
365*9356374aSAndroid Build Coastguard Worker     --usage_reporting_test_flag_06 (usage_reporting_test_flag_06 help message.
366*9356374aSAndroid Build Coastguard Worker 
367*9356374aSAndroid Build Coastguard Worker       Some more help.
368*9356374aSAndroid Build Coastguard Worker       Even more long long long long long long long long long long long long help
369*9356374aSAndroid Build Coastguard Worker       message.); default: "";
370*9356374aSAndroid Build Coastguard Worker 
371*9356374aSAndroid Build Coastguard Worker Try --helpfull to get a list of all flags or --help=substring shows help for
372*9356374aSAndroid Build Coastguard Worker flags which include specified substring in either in the name, or description or
373*9356374aSAndroid Build Coastguard Worker path.
374*9356374aSAndroid Build Coastguard Worker )");
375*9356374aSAndroid Build Coastguard Worker }
376*9356374aSAndroid Build Coastguard Worker 
377*9356374aSAndroid Build Coastguard Worker // --------------------------------------------------------------------
378*9356374aSAndroid Build Coastguard Worker 
TEST_F(UsageReportingTest,TestUsageFlag_help_multiple_flag)379*9356374aSAndroid Build Coastguard Worker TEST_F(UsageReportingTest, TestUsageFlag_help_multiple_flag) {
380*9356374aSAndroid Build Coastguard Worker   flags::SetFlagsHelpMode(flags::HelpMode::kMatch);
381*9356374aSAndroid Build Coastguard Worker   flags::SetFlagsHelpMatchSubstr("test_flag");
382*9356374aSAndroid Build Coastguard Worker 
383*9356374aSAndroid Build Coastguard Worker   std::stringstream test_buf;
384*9356374aSAndroid Build Coastguard Worker   EXPECT_EQ(flags::HandleUsageFlags(test_buf, kTestUsageMessage),
385*9356374aSAndroid Build Coastguard Worker             flags::HelpMode::kMatch);
386*9356374aSAndroid Build Coastguard Worker   EXPECT_EQ(
387*9356374aSAndroid Build Coastguard Worker       test_buf.str(),
388*9356374aSAndroid Build Coastguard Worker       R"(usage_test: Custom usage message
389*9356374aSAndroid Build Coastguard Worker 
390*9356374aSAndroid Build Coastguard Worker   Flags from absl/flags/internal/usage_test.cc:
391*9356374aSAndroid Build Coastguard Worker     --usage_reporting_test_flag_01 (usage_reporting_test_flag_01 help message);
392*9356374aSAndroid Build Coastguard Worker       default: 101;
393*9356374aSAndroid Build Coastguard Worker     --usage_reporting_test_flag_02 (usage_reporting_test_flag_02 help message);
394*9356374aSAndroid Build Coastguard Worker       default: false;
395*9356374aSAndroid Build Coastguard Worker     --usage_reporting_test_flag_03 (usage_reporting_test_flag_03 help message);
396*9356374aSAndroid Build Coastguard Worker       default: 1.03;
397*9356374aSAndroid Build Coastguard Worker     --usage_reporting_test_flag_04 (usage_reporting_test_flag_04 help message);
398*9356374aSAndroid Build Coastguard Worker       default: 1000000000000004;
399*9356374aSAndroid Build Coastguard Worker     --usage_reporting_test_flag_05 (usage_reporting_test_flag_05 help message);
400*9356374aSAndroid Build Coastguard Worker       default: UDT{};
401*9356374aSAndroid Build Coastguard Worker     --usage_reporting_test_flag_06 (usage_reporting_test_flag_06 help message.
402*9356374aSAndroid Build Coastguard Worker 
403*9356374aSAndroid Build Coastguard Worker       Some more help.
404*9356374aSAndroid Build Coastguard Worker       Even more long long long long long long long long long long long long help
405*9356374aSAndroid Build Coastguard Worker       message.); default: "";)"
406*9356374aSAndroid Build Coastguard Worker 
407*9356374aSAndroid Build Coastguard Worker       "\n    --usage_reporting_test_flag_07 (usage_reporting_test_flag_07 "
408*9356374aSAndroid Build Coastguard Worker       "help\n\n      \f\v\a\b ); default: \"\r\n\f\v\a\b\t \";\n"
409*9356374aSAndroid Build Coastguard Worker 
410*9356374aSAndroid Build Coastguard Worker       R"(
411*9356374aSAndroid Build Coastguard Worker Try --helpfull to get a list of all flags or --help=substring shows help for
412*9356374aSAndroid Build Coastguard Worker flags which include specified substring in either in the name, or description or
413*9356374aSAndroid Build Coastguard Worker path.
414*9356374aSAndroid Build Coastguard Worker )");
415*9356374aSAndroid Build Coastguard Worker }
416*9356374aSAndroid Build Coastguard Worker 
417*9356374aSAndroid Build Coastguard Worker // --------------------------------------------------------------------
418*9356374aSAndroid Build Coastguard Worker 
TEST_F(UsageReportingTest,TestUsageFlag_helppackage)419*9356374aSAndroid Build Coastguard Worker TEST_F(UsageReportingTest, TestUsageFlag_helppackage) {
420*9356374aSAndroid Build Coastguard Worker   flags::SetFlagsHelpMode(flags::HelpMode::kPackage);
421*9356374aSAndroid Build Coastguard Worker 
422*9356374aSAndroid Build Coastguard Worker   std::stringstream test_buf;
423*9356374aSAndroid Build Coastguard Worker   EXPECT_EQ(flags::HandleUsageFlags(test_buf, kTestUsageMessage),
424*9356374aSAndroid Build Coastguard Worker             flags::HelpMode::kPackage);
425*9356374aSAndroid Build Coastguard Worker   EXPECT_EQ(
426*9356374aSAndroid Build Coastguard Worker       test_buf.str(),
427*9356374aSAndroid Build Coastguard Worker       R"(usage_test: Custom usage message
428*9356374aSAndroid Build Coastguard Worker 
429*9356374aSAndroid Build Coastguard Worker   Flags from absl/flags/internal/usage_test.cc:
430*9356374aSAndroid Build Coastguard Worker     --usage_reporting_test_flag_01 (usage_reporting_test_flag_01 help message);
431*9356374aSAndroid Build Coastguard Worker       default: 101;
432*9356374aSAndroid Build Coastguard Worker     --usage_reporting_test_flag_02 (usage_reporting_test_flag_02 help message);
433*9356374aSAndroid Build Coastguard Worker       default: false;
434*9356374aSAndroid Build Coastguard Worker     --usage_reporting_test_flag_03 (usage_reporting_test_flag_03 help message);
435*9356374aSAndroid Build Coastguard Worker       default: 1.03;
436*9356374aSAndroid Build Coastguard Worker     --usage_reporting_test_flag_04 (usage_reporting_test_flag_04 help message);
437*9356374aSAndroid Build Coastguard Worker       default: 1000000000000004;
438*9356374aSAndroid Build Coastguard Worker     --usage_reporting_test_flag_05 (usage_reporting_test_flag_05 help message);
439*9356374aSAndroid Build Coastguard Worker       default: UDT{};
440*9356374aSAndroid Build Coastguard Worker     --usage_reporting_test_flag_06 (usage_reporting_test_flag_06 help message.
441*9356374aSAndroid Build Coastguard Worker 
442*9356374aSAndroid Build Coastguard Worker       Some more help.
443*9356374aSAndroid Build Coastguard Worker       Even more long long long long long long long long long long long long help
444*9356374aSAndroid Build Coastguard Worker       message.); default: "";)"
445*9356374aSAndroid Build Coastguard Worker 
446*9356374aSAndroid Build Coastguard Worker       "\n    --usage_reporting_test_flag_07 (usage_reporting_test_flag_07 "
447*9356374aSAndroid Build Coastguard Worker       "help\n\n      \f\v\a\b ); default: \"\r\n\f\v\a\b\t \";\n"
448*9356374aSAndroid Build Coastguard Worker 
449*9356374aSAndroid Build Coastguard Worker       R"(
450*9356374aSAndroid Build Coastguard Worker Try --helpfull to get a list of all flags or --help=substring shows help for
451*9356374aSAndroid Build Coastguard Worker flags which include specified substring in either in the name, or description or
452*9356374aSAndroid Build Coastguard Worker path.
453*9356374aSAndroid Build Coastguard Worker )");
454*9356374aSAndroid Build Coastguard Worker }
455*9356374aSAndroid Build Coastguard Worker 
456*9356374aSAndroid Build Coastguard Worker // --------------------------------------------------------------------
457*9356374aSAndroid Build Coastguard Worker 
TEST_F(UsageReportingTest,TestUsageFlag_version)458*9356374aSAndroid Build Coastguard Worker TEST_F(UsageReportingTest, TestUsageFlag_version) {
459*9356374aSAndroid Build Coastguard Worker   flags::SetFlagsHelpMode(flags::HelpMode::kVersion);
460*9356374aSAndroid Build Coastguard Worker 
461*9356374aSAndroid Build Coastguard Worker   std::stringstream test_buf;
462*9356374aSAndroid Build Coastguard Worker   EXPECT_EQ(flags::HandleUsageFlags(test_buf, kTestUsageMessage),
463*9356374aSAndroid Build Coastguard Worker             flags::HelpMode::kVersion);
464*9356374aSAndroid Build Coastguard Worker #ifndef NDEBUG
465*9356374aSAndroid Build Coastguard Worker   EXPECT_EQ(test_buf.str(), "usage_test\nDebug build (NDEBUG not #defined)\n");
466*9356374aSAndroid Build Coastguard Worker #else
467*9356374aSAndroid Build Coastguard Worker   EXPECT_EQ(test_buf.str(), "usage_test\n");
468*9356374aSAndroid Build Coastguard Worker #endif
469*9356374aSAndroid Build Coastguard Worker }
470*9356374aSAndroid Build Coastguard Worker 
471*9356374aSAndroid Build Coastguard Worker // --------------------------------------------------------------------
472*9356374aSAndroid Build Coastguard Worker 
TEST_F(UsageReportingTest,TestUsageFlag_only_check_args)473*9356374aSAndroid Build Coastguard Worker TEST_F(UsageReportingTest, TestUsageFlag_only_check_args) {
474*9356374aSAndroid Build Coastguard Worker   flags::SetFlagsHelpMode(flags::HelpMode::kOnlyCheckArgs);
475*9356374aSAndroid Build Coastguard Worker 
476*9356374aSAndroid Build Coastguard Worker   std::stringstream test_buf;
477*9356374aSAndroid Build Coastguard Worker   EXPECT_EQ(flags::HandleUsageFlags(test_buf, kTestUsageMessage),
478*9356374aSAndroid Build Coastguard Worker             flags::HelpMode::kOnlyCheckArgs);
479*9356374aSAndroid Build Coastguard Worker   EXPECT_EQ(test_buf.str(), "");
480*9356374aSAndroid Build Coastguard Worker }
481*9356374aSAndroid Build Coastguard Worker 
482*9356374aSAndroid Build Coastguard Worker // --------------------------------------------------------------------
483*9356374aSAndroid Build Coastguard Worker 
TEST_F(UsageReportingTest,TestUsageFlag_helpon)484*9356374aSAndroid Build Coastguard Worker TEST_F(UsageReportingTest, TestUsageFlag_helpon) {
485*9356374aSAndroid Build Coastguard Worker   flags::SetFlagsHelpMode(flags::HelpMode::kMatch);
486*9356374aSAndroid Build Coastguard Worker   flags::SetFlagsHelpMatchSubstr("/bla-bla.");
487*9356374aSAndroid Build Coastguard Worker 
488*9356374aSAndroid Build Coastguard Worker   std::stringstream test_buf_01;
489*9356374aSAndroid Build Coastguard Worker   EXPECT_EQ(flags::HandleUsageFlags(test_buf_01, kTestUsageMessage),
490*9356374aSAndroid Build Coastguard Worker             flags::HelpMode::kMatch);
491*9356374aSAndroid Build Coastguard Worker   EXPECT_EQ(test_buf_01.str(),
492*9356374aSAndroid Build Coastguard Worker             R"(usage_test: Custom usage message
493*9356374aSAndroid Build Coastguard Worker 
494*9356374aSAndroid Build Coastguard Worker No flags matched.
495*9356374aSAndroid Build Coastguard Worker 
496*9356374aSAndroid Build Coastguard Worker Try --helpfull to get a list of all flags or --help=substring shows help for
497*9356374aSAndroid Build Coastguard Worker flags which include specified substring in either in the name, or description or
498*9356374aSAndroid Build Coastguard Worker path.
499*9356374aSAndroid Build Coastguard Worker )");
500*9356374aSAndroid Build Coastguard Worker 
501*9356374aSAndroid Build Coastguard Worker   flags::SetFlagsHelpMatchSubstr("/usage_test.");
502*9356374aSAndroid Build Coastguard Worker 
503*9356374aSAndroid Build Coastguard Worker   std::stringstream test_buf_02;
504*9356374aSAndroid Build Coastguard Worker   EXPECT_EQ(flags::HandleUsageFlags(test_buf_02, kTestUsageMessage),
505*9356374aSAndroid Build Coastguard Worker             flags::HelpMode::kMatch);
506*9356374aSAndroid Build Coastguard Worker   EXPECT_EQ(
507*9356374aSAndroid Build Coastguard Worker       test_buf_02.str(),
508*9356374aSAndroid Build Coastguard Worker       R"(usage_test: Custom usage message
509*9356374aSAndroid Build Coastguard Worker 
510*9356374aSAndroid Build Coastguard Worker   Flags from absl/flags/internal/usage_test.cc:
511*9356374aSAndroid Build Coastguard Worker     --usage_reporting_test_flag_01 (usage_reporting_test_flag_01 help message);
512*9356374aSAndroid Build Coastguard Worker       default: 101;
513*9356374aSAndroid Build Coastguard Worker     --usage_reporting_test_flag_02 (usage_reporting_test_flag_02 help message);
514*9356374aSAndroid Build Coastguard Worker       default: false;
515*9356374aSAndroid Build Coastguard Worker     --usage_reporting_test_flag_03 (usage_reporting_test_flag_03 help message);
516*9356374aSAndroid Build Coastguard Worker       default: 1.03;
517*9356374aSAndroid Build Coastguard Worker     --usage_reporting_test_flag_04 (usage_reporting_test_flag_04 help message);
518*9356374aSAndroid Build Coastguard Worker       default: 1000000000000004;
519*9356374aSAndroid Build Coastguard Worker     --usage_reporting_test_flag_05 (usage_reporting_test_flag_05 help message);
520*9356374aSAndroid Build Coastguard Worker       default: UDT{};
521*9356374aSAndroid Build Coastguard Worker     --usage_reporting_test_flag_06 (usage_reporting_test_flag_06 help message.
522*9356374aSAndroid Build Coastguard Worker 
523*9356374aSAndroid Build Coastguard Worker       Some more help.
524*9356374aSAndroid Build Coastguard Worker       Even more long long long long long long long long long long long long help
525*9356374aSAndroid Build Coastguard Worker       message.); default: "";)"
526*9356374aSAndroid Build Coastguard Worker 
527*9356374aSAndroid Build Coastguard Worker       "\n    --usage_reporting_test_flag_07 (usage_reporting_test_flag_07 "
528*9356374aSAndroid Build Coastguard Worker       "help\n\n      \f\v\a\b ); default: \"\r\n\f\v\a\b\t \";\n"
529*9356374aSAndroid Build Coastguard Worker 
530*9356374aSAndroid Build Coastguard Worker       R"(
531*9356374aSAndroid Build Coastguard Worker Try --helpfull to get a list of all flags or --help=substring shows help for
532*9356374aSAndroid Build Coastguard Worker flags which include specified substring in either in the name, or description or
533*9356374aSAndroid Build Coastguard Worker path.
534*9356374aSAndroid Build Coastguard Worker )");
535*9356374aSAndroid Build Coastguard Worker }
536*9356374aSAndroid Build Coastguard Worker 
537*9356374aSAndroid Build Coastguard Worker // --------------------------------------------------------------------
538*9356374aSAndroid Build Coastguard Worker 
539*9356374aSAndroid Build Coastguard Worker }  // namespace
540*9356374aSAndroid Build Coastguard Worker 
main(int argc,char * argv[])541*9356374aSAndroid Build Coastguard Worker int main(int argc, char* argv[]) {
542*9356374aSAndroid Build Coastguard Worker   (void)absl::GetFlag(FLAGS_undefok);  // Force linking of parse.cc
543*9356374aSAndroid Build Coastguard Worker   flags::SetProgramInvocationName("usage_test");
544*9356374aSAndroid Build Coastguard Worker #if !defined(GTEST_HAS_ABSL) || !GTEST_HAS_ABSL
545*9356374aSAndroid Build Coastguard Worker   // GoogleTest calls absl::SetProgramUsageMessage() already.
546*9356374aSAndroid Build Coastguard Worker   absl::SetProgramUsageMessage(kTestUsageMessage);
547*9356374aSAndroid Build Coastguard Worker #endif
548*9356374aSAndroid Build Coastguard Worker   ::testing::InitGoogleTest(&argc, argv);
549*9356374aSAndroid Build Coastguard Worker   return RUN_ALL_TESTS();
550*9356374aSAndroid Build Coastguard Worker }
551