From 5c94e8c835f372c8167ae92dd224252f6482b222 Mon Sep 17 00:00:00 2001 From: stephenlink Date: Wed, 18 Jan 2017 20:27:09 -0800 Subject: [PATCH 1/3] First! --- config_parser_test.cc | 48 +++++++++++++++++++++++++++++++++++++++---- 1 file changed, 44 insertions(+), 4 deletions(-) diff --git a/config_parser_test.cc b/config_parser_test.cc index 69113b2..04f3b52 100644 --- a/config_parser_test.cc +++ b/config_parser_test.cc @@ -1,11 +1,51 @@ +#include +#include #include "gtest/gtest.h" #include "config_parser.h" -TEST(NginxConfigParserTest, SimpleConfig) { +TEST(NginxConfigTest, ToString) +{ + NginxConfigStatement statement; + statement.tokens_.push_back("foo"); + statement.tokens_.push_back("bar"); + EXPECT_EQ(statement.ToString(0), "foo bar;\n"); +} + +TEST(NginxConfigParserTest, SimpleConfig) +{ + std::string config_string = "foo bar;"; + std::stringstream config_stream(config_string); NginxConfigParser parser; - NginxConfig out_config; + NginxConfig config; + EXPECT_TRUE(parser.Parse(&config_stream, &config)); + EXPECT_EQ(1, config.statements_.size()) + << "Config has one statements"; + EXPECT_EQ("foo", config.statements_.at(0)->tokens_.at(0)); +} + +class NginxStringConfigTest : public :: testing :: Test { +protected: + bool ParseString(const std::string config_string) { + std::stringstream config_stream(config_string); + return parser_.Parse(&config_stream, &out_config_); + } + NginxConfigParser parser_; + NginxConfig out_config_; + //NginxConfigStatement statements; +}; - bool success = parser.Parse("example_config", &out_config); +TEST_F(NginxStringConfigTest, AnotherSimpleConfig) +{ + EXPECT_TRUE(ParseString("foo bar;")); + EXPECT_EQ(1, out_config_.statements_.size()) + <<"Config has one statements"; + EXPECT_EQ("foo", out_config_.statements_.at(0)->tokens_.at(0)); +} - EXPECT_TRUE(success); +TEST_F(NginxStringConfigTest, InvalidConfig) +{ + EXPECT_FALSE(ParseString("foo bar")); } + + + From 655571546d1576a48679b86affa455c70e5b9ba5 Mon Sep 17 00:00:00 2001 From: stephenlink Date: Wed, 18 Jan 2017 21:10:12 -0800 Subject: [PATCH 2/3] Unit tested --- config_parser_test.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config_parser_test.cc b/config_parser_test.cc index 04f3b52..317b942 100644 --- a/config_parser_test.cc +++ b/config_parser_test.cc @@ -10,7 +10,7 @@ TEST(NginxConfigTest, ToString) statement.tokens_.push_back("bar"); EXPECT_EQ(statement.ToString(0), "foo bar;\n"); } - +//blah TEST(NginxConfigParserTest, SimpleConfig) { std::string config_string = "foo bar;"; From a349d1cd03134008af07783a35557c3e74c67bda Mon Sep 17 00:00:00 2001 From: stephenlink Date: Thu, 19 Jan 2017 05:39:23 -0800 Subject: [PATCH 3/3] fixed commit issue with nginxparser --- config_parser.cc | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/config_parser.cc b/config_parser.cc index d083a63..947fe74 100644 --- a/config_parser.cc +++ b/config_parser.cc @@ -210,14 +210,20 @@ bool NginxConfigParser::Parse(std::istream* config_file, NginxConfig* config) { // Error. break; } - return true; + if( config_stack.size()==1){ + return true; + }else + { + break; + } } else { // Error. Unknown token. break; } + last_token_type = token_type; } - + printf ("Bad transition from %s to %s\n", TokenTypeAsString(last_token_type), TokenTypeAsString(token_type));