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