20 bool Parse(
const char* input,
string* err);
34 "build/ninja.o: ninja.cc ninja.h eval_env.h manifest_parser.h\n",
37 EXPECT_EQ(
"build/ninja.o", parser_.out_.AsString());
57 EXPECT_EQ(
"foo.o", parser_.out_.AsString());
68 EXPECT_EQ(
"foo.o", parser_.out_.AsString());
75 "Project\\Dir\\Build\\Release8\\Foo\\Foo.res : \\\n" 76 " Dir\\Library\\Foo.rc \\\n" 77 " Dir\\Library\\Version\\Bar.h \\\n" 78 " Dir\\Library\\Foo.ico \\\n" 79 " Project\\Thing\\Bar.tlb \\\n",
82 EXPECT_EQ(
"Project\\Dir\\Build\\Release8\\Foo\\Foo.res",
83 parser_.out_.AsString());
90 "a\\ bc\\ def: a\\ b c d",
94 parser_.out_.AsString());
97 parser_.ins_[0].AsString());
99 parser_.ins_[1].AsString());
101 parser_.ins_[2].AsString());
109 "\\!\\@\\#$$\\%\\^\\&\\\\:",
113 parser_.out_.AsString());
122 "C:/Program\\ Files\\ (x86)/Microsoft\\ crtdefs.h: \\\n" 123 " en@quot.header~ t+t-x!=1 \\\n" 124 " openldap/slapd.d/cn=config/cn=schema/cn={0}core.ldif\\\n" 125 " Fu\303\244ball\\\n" 129 EXPECT_EQ(
"C:/Program Files (x86)/Microsoft crtdefs.h",
130 parser_.out_.AsString());
133 parser_.ins_[0].AsString());
135 parser_.ins_[1].AsString());
136 EXPECT_EQ(
"openldap/slapd.d/cn=config/cn=schema/cn={0}core.ldif",
137 parser_.ins_[2].AsString());
139 parser_.ins_[3].AsString());
141 parser_.ins_[4].AsString());
148 ASSERT_EQ(
"foo", parser_.out_.AsString());
150 EXPECT_EQ(
"x", parser_.ins_[0].AsString());
151 EXPECT_EQ(
"y", parser_.ins_[1].AsString());
152 EXPECT_EQ(
"z", parser_.ins_[2].AsString());
159 ASSERT_EQ(
"depfile has multiple output paths", err);
167 ASSERT_EQ(
"foo", parser_.out_.AsString());
169 EXPECT_EQ(
"x", parser_.ins_[0].AsString());
178 ASSERT_EQ(
"foo", parser_.out_.AsString());
180 EXPECT_EQ(
"x", parser_.ins_[0].AsString());
181 EXPECT_EQ(
"y", parser_.ins_[1].AsString());
182 EXPECT_EQ(
"z", parser_.ins_[2].AsString());
190 "foo: z\r\n", &err));
191 ASSERT_EQ(
"foo", parser_.out_.AsString());
193 EXPECT_EQ(
"x", parser_.ins_[0].AsString());
194 EXPECT_EQ(
"y", parser_.ins_[1].AsString());
195 EXPECT_EQ(
"z", parser_.ins_[2].AsString());
204 ASSERT_EQ(
"foo", parser_.out_.AsString());
206 EXPECT_EQ(
"x", parser_.ins_[0].AsString());
207 EXPECT_EQ(
"y", parser_.ins_[1].AsString());
208 EXPECT_EQ(
"z", parser_.ins_[2].AsString());
216 "foo: z\r\n", &err));
217 ASSERT_EQ(
"foo", parser_.out_.AsString());
219 EXPECT_EQ(
"x", parser_.ins_[0].AsString());
220 EXPECT_EQ(
"y", parser_.ins_[1].AsString());
221 EXPECT_EQ(
"z", parser_.ins_[2].AsString());
229 ASSERT_EQ(
"foo", parser_.out_.AsString());
231 EXPECT_EQ(
"x", parser_.ins_[0].AsString());
232 EXPECT_EQ(
"y", parser_.ins_[1].AsString());
233 EXPECT_EQ(
"z", parser_.ins_[2].AsString());
240 " foo: z\r\n", &err));
241 ASSERT_EQ(
"foo", parser_.out_.AsString());
243 EXPECT_EQ(
"x", parser_.ins_[0].AsString());
244 EXPECT_EQ(
"y", parser_.ins_[1].AsString());
245 EXPECT_EQ(
"z", parser_.ins_[2].AsString());
254 ASSERT_EQ(
"foo", parser_.out_.AsString());
256 EXPECT_EQ(
"x", parser_.ins_[0].AsString());
257 EXPECT_EQ(
"y", parser_.ins_[1].AsString());
258 EXPECT_EQ(
"z", parser_.ins_[2].AsString());
269 ASSERT_EQ(
"foo", parser_.out_.AsString());
271 EXPECT_EQ(
"x", parser_.ins_[0].AsString());
272 EXPECT_EQ(
"y", parser_.ins_[1].AsString());
273 EXPECT_EQ(
"z", parser_.ins_[2].AsString());
288 ASSERT_EQ(
"depfile has multiple output paths (on separate lines)" 289 " [-w depfilemulti=err]", err);
Parser for the dependency information emitted by gcc's -M flags.
bool Parse(string *content, string *err)
Parse an input file.
bool Parse(const char *input, string *err)
TEST_F(DepfileParserTest, Basic)
DepfileDistinctTargetLinesAction depfile_distinct_target_lines_action_