parse multiple rules
authorEvan Martin <martine@danga.com>
Sat, 16 Oct 2010 01:14:28 +0000 (18:14 -0700)
committerEvan Martin <martine@danga.com>
Sat, 16 Oct 2010 01:14:39 +0000 (18:14 -0700)
ninja.h
ninja_test.cc

diff --git a/ninja.h b/ninja.h
index dbf722a..1f03642 100644 (file)
--- a/ninja.h
+++ b/ninja.h
@@ -325,10 +325,9 @@ bool ManifestParser::Parse(const string& input, string* err) {
     } else {
       return Error("unknown token: " + token_, err);
     }
+    SkipWhitespace(true);
   }
 
-  SkipWhitespace(true);
-
   if (cur_ < end_)
     return Error("expected eof", err);
 
index 77c8347..9565698 100644 (file)
@@ -65,17 +65,19 @@ TEST(Parser, Empty) {
   EXPECT_EQ("", err);
 }
 
-TEST(Parser, Rule) {
+TEST(Parser, Rules) {
   State state;
   ManifestParser parser(&state);
   string err;
   EXPECT_TRUE(parser.Parse(
       "rule cat\n"
-      "command cat @in > $out\n\n",
+      "command cat @in > $out\n\n"
+      "rule date\n"
+      "command date > $out\n\n",
       &err));
   EXPECT_EQ("", err);
 
-  ASSERT_EQ(1, state.rules_.size());
+  ASSERT_EQ(2, state.rules_.size());
   Rule* rule = state.rules_.begin()->second;
   EXPECT_EQ("cat", rule->name_);
   EXPECT_EQ("cat @in > $out", rule->command_.unparsed());