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());
68 EXPECT_EQ(
"foo.o", parser_.out_.AsString());
69 EXPECT_EQ(2u, parser_.ins_.size());
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());
84 EXPECT_EQ(4u, parser_.ins_.size());
90 "a\\ bc\\ def: a\\ b c d",
94 parser_.out_.AsString());
95 ASSERT_EQ(3u, parser_.ins_.size());
97 parser_.ins_[0].AsString());
99 parser_.ins_[1].AsString());
101 parser_.ins_[2].AsString());
109 "\\!\\@\\#$$\\%\\^\\&\\\\",
112 EXPECT_EQ(
"\\!\\@#$\\%\\^\\&\\",
113 parser_.out_.AsString());
114 ASSERT_EQ(0u, parser_.ins_.size());
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",
127 EXPECT_EQ(
"C:/Program Files (x86)/Microsoft crtdefs.h",
128 parser_.out_.AsString());
129 ASSERT_EQ(3u, parser_.ins_.size());
130 EXPECT_EQ(
"en@quot.header~",
131 parser_.ins_[0].AsString());
132 EXPECT_EQ(
"t+t-x!=1",
133 parser_.ins_[1].AsString());
134 EXPECT_EQ(
"openldap/slapd.d/cn=config/cn=schema/cn={0}core.ldif",
135 parser_.ins_[2].AsString());
141 EXPECT_TRUE(Parse(
"foo foo: x y z", &err));
142 ASSERT_EQ(parser_.out_.AsString(),
"foo");
143 ASSERT_EQ(parser_.ins_.size(), 3u);
144 EXPECT_EQ(
"x", parser_.ins_[0].AsString());
145 EXPECT_EQ(
"y", parser_.ins_[1].AsString());
146 EXPECT_EQ(
"z", parser_.ins_[2].AsString());
152 EXPECT_FALSE(Parse(
"foo bar: x y z", &err));
153 ASSERT_EQ(
"depfile has multiple output paths", 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)