22 bool Parse(
const char* input,
string* err);
30 return parser_.Parse(&input_, err);
36 "build/ninja.o: ninja.cc ninja.h eval_env.h manifest_parser.h\n",
40 EXPECT_EQ(
"build/ninja.o", parser_.outs_[0].AsString());
61 EXPECT_EQ(
"foo.o", parser_.outs_[0].AsString());
73 EXPECT_EQ(
"foo.o", parser_.outs_[0].AsString());
80 "Project\\Dir\\Build\\Release8\\Foo\\Foo.res : \\\n" 81 " Dir\\Library\\Foo.rc \\\n" 82 " Dir\\Library\\Version\\Bar.h \\\n" 83 " Dir\\Library\\Foo.ico \\\n" 84 " Project\\Thing\\Bar.tlb \\\n",
88 EXPECT_EQ(
"Project\\Dir\\Build\\Release8\\Foo\\Foo.res",
89 parser_.outs_[0].AsString());
96 "a\\ bc\\ def: a\\ b c d",
101 parser_.outs_[0].AsString());
104 parser_.ins_[0].AsString());
106 parser_.ins_[1].AsString());
108 parser_.ins_[2].AsString());
118 "a\\ b\\#c.h: \\\\\\\\\\ \\\\\\\\ \\\\share\\info\\\\#1",
123 parser_.outs_[0].AsString());
126 parser_.ins_[0].AsString());
128 parser_.ins_[1].AsString());
130 parser_.ins_[2].AsString());
138 "\\!\\@\\#$$\\%\\^\\&\\[\\]\\\\:",
143 parser_.outs_[0].AsString());
153 "c\\:\\gcc\\x86_64-w64-mingw32\\include\\stddef.o: \\\n" 154 " c:\\gcc\\x86_64-w64-mingw32\\include\\stddef.h \n",
158 EXPECT_EQ(
"c:\\gcc\\x86_64-w64-mingw32\\include\\stddef.o",
159 parser_.outs_[0].AsString());
161 EXPECT_EQ(
"c:\\gcc\\x86_64-w64-mingw32\\include\\stddef.h",
162 parser_.ins_[0].AsString());
177 EXPECT_EQ(
"foo1\\", parser_.outs_[0].AsString());
179 EXPECT_EQ(
"x", parser_.ins_[0].AsString());
187 "C:/Program\\ Files\\ (x86)/Microsoft\\ crtdefs.h: \\\n" 188 " en@quot.header~ t+t-x!=1 \\\n" 189 " openldap/slapd.d/cn=config/cn=schema/cn={0}core.ldif\\\n" 190 " Fu\303\244ball\\\n" 195 EXPECT_EQ(
"C:/Program Files (x86)/Microsoft crtdefs.h",
196 parser_.outs_[0].AsString());
199 parser_.ins_[0].AsString());
201 parser_.ins_[1].AsString());
202 EXPECT_EQ(
"openldap/slapd.d/cn=config/cn=schema/cn={0}core.ldif",
203 parser_.ins_[2].AsString());
205 parser_.ins_[3].AsString());
207 parser_.ins_[4].AsString());
215 ASSERT_EQ(
"foo", parser_.outs_[0].AsString());
217 EXPECT_EQ(
"x", parser_.ins_[0].AsString());
218 EXPECT_EQ(
"y", parser_.ins_[1].AsString());
219 EXPECT_EQ(
"z", parser_.ins_[2].AsString());
227 ASSERT_EQ(
"foo", parser_.outs_[0].AsString());
228 ASSERT_EQ(
"bar", parser_.outs_[1].AsString());
230 EXPECT_EQ(
"x", parser_.ins_[0].AsString());
231 EXPECT_EQ(
"y", parser_.ins_[1].AsString());
232 EXPECT_EQ(
"z", parser_.ins_[2].AsString());
241 ASSERT_EQ(
"foo", parser_.outs_[0].AsString());
243 EXPECT_EQ(
"x", parser_.ins_[0].AsString());
253 ASSERT_EQ(
"foo", parser_.outs_[0].AsString());
255 EXPECT_EQ(
"x", parser_.ins_[0].AsString());
256 EXPECT_EQ(
"y", parser_.ins_[1].AsString());
257 EXPECT_EQ(
"z", parser_.ins_[2].AsString());
265 "foo: z\r\n", &err));
267 ASSERT_EQ(
"foo", parser_.outs_[0].AsString());
269 EXPECT_EQ(
"x", parser_.ins_[0].AsString());
270 EXPECT_EQ(
"y", parser_.ins_[1].AsString());
271 EXPECT_EQ(
"z", parser_.ins_[2].AsString());
281 ASSERT_EQ(
"foo", parser_.outs_[0].AsString());
283 EXPECT_EQ(
"x", parser_.ins_[0].AsString());
284 EXPECT_EQ(
"y", parser_.ins_[1].AsString());
285 EXPECT_EQ(
"z", parser_.ins_[2].AsString());
293 "foo: z\r\n", &err));
295 ASSERT_EQ(
"foo", parser_.outs_[0].AsString());
297 EXPECT_EQ(
"x", parser_.ins_[0].AsString());
298 EXPECT_EQ(
"y", parser_.ins_[1].AsString());
299 EXPECT_EQ(
"z", parser_.ins_[2].AsString());
308 ASSERT_EQ(
"foo", parser_.outs_[0].AsString());
310 EXPECT_EQ(
"x", parser_.ins_[0].AsString());
311 EXPECT_EQ(
"y", parser_.ins_[1].AsString());
312 EXPECT_EQ(
"z", parser_.ins_[2].AsString());
319 " foo: z\r\n", &err));
321 ASSERT_EQ(
"foo", parser_.outs_[0].AsString());
323 EXPECT_EQ(
"x", parser_.ins_[0].AsString());
324 EXPECT_EQ(
"y", parser_.ins_[1].AsString());
325 EXPECT_EQ(
"z", parser_.ins_[2].AsString());
335 ASSERT_EQ(
"foo", parser_.outs_[0].AsString());
337 EXPECT_EQ(
"x", parser_.ins_[0].AsString());
338 EXPECT_EQ(
"y", parser_.ins_[1].AsString());
339 EXPECT_EQ(
"z", parser_.ins_[2].AsString());
351 ASSERT_EQ(
"foo", parser_.outs_[0].AsString());
353 EXPECT_EQ(
"x", parser_.ins_[0].AsString());
354 EXPECT_EQ(
"y", parser_.ins_[1].AsString());
355 EXPECT_EQ(
"z", parser_.ins_[2].AsString());
363 "bar: y z\n", &err));
365 ASSERT_EQ(
"foo", parser_.outs_[0].AsString());
366 ASSERT_EQ(
"bar", parser_.outs_[1].AsString());
368 EXPECT_EQ(
"x", parser_.ins_[0].AsString());
369 EXPECT_EQ(
"y", parser_.ins_[1].AsString());
370 EXPECT_EQ(
"z", parser_.ins_[2].AsString());
379 ASSERT_EQ(
"inputs may not also have inputs", err);
Parser for the dependency information emitted by gcc's -M flags.
bool Parse(const char *input, string *err)
TEST_F(DepfileParserTest, Basic)