17 #include <gtest/gtest.h>
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());
38 EXPECT_EQ(4u, parser_.ins_.size());
57 EXPECT_EQ(
"foo.o", parser_.out_.AsString());
58 EXPECT_EQ(2u, parser_.ins_.size());
64 "Project\\Dir\\Build\\Release8\\Foo\\Foo.res : \\\n"
65 " Dir\\Library\\Foo.rc \\\n"
66 " Dir\\Library\\Version\\Bar.h \\\n"
67 " Dir\\Library\\Foo.ico \\\n"
68 " Project\\Thing\\Bar.tlb \\\n",
71 EXPECT_EQ(
"Project\\Dir\\Build\\Release8\\Foo\\Foo.res",
72 parser_.out_.AsString());
73 EXPECT_EQ(4u, parser_.ins_.size());
79 "a\\ bc\\ def: a\\ b c d",
83 parser_.out_.AsString());
84 ASSERT_EQ(3u, parser_.ins_.size());
86 parser_.ins_[0].AsString());
88 parser_.ins_[1].AsString());
90 parser_.ins_[2].AsString());
98 "\\!\\@\\#$$\\%\\^\\&\\\\",
101 EXPECT_EQ(
"\\!\\@#$\\%\\^\\&\\",
102 parser_.out_.AsString());
103 ASSERT_EQ(0u, parser_.ins_.size());
111 "C:/Program\\ Files\\ (x86)/Microsoft\\ crtdefs.h: \n"
112 " en@quot.header~ t+t-x!=1",
115 EXPECT_EQ(
"C:/Program Files (x86)/Microsoft crtdefs.h",
116 parser_.out_.AsString());
117 ASSERT_EQ(2u, parser_.ins_.size());
118 EXPECT_EQ(
"en@quot.header~",
119 parser_.ins_[0].AsString());
120 EXPECT_EQ(
"t+t-x!=1",
121 parser_.ins_[1].AsString());
127 EXPECT_TRUE(Parse(
"foo foo: x y z", &err));
128 ASSERT_EQ(parser_.out_.AsString(),
"foo");
129 ASSERT_EQ(parser_.ins_.size(), 3u);
130 EXPECT_EQ(
"x", parser_.ins_[0].AsString());
131 EXPECT_EQ(
"y", parser_.ins_[1].AsString());
132 EXPECT_EQ(
"z", parser_.ins_[2].AsString());
138 EXPECT_FALSE(Parse(
"foo bar: x y z", &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)