From 4dd406dd29b166d98485a09ef25ec52867bd5530 Mon Sep 17 00:00:00 2001 From: Patrick J Cherry Date: Wed, 10 Feb 2016 10:57:47 +0000 Subject: Adjusted greediness of regex in http with content It should match the next occurrence of the opening quote type, not the last. --- lib/custodian/protocoltest/http.rb | 2 +- t/test-custodian-parser.rb | 19 ++++++++++--------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/lib/custodian/protocoltest/http.rb b/lib/custodian/protocoltest/http.rb index 3bc4b05..05e71ae 100644 --- a/lib/custodian/protocoltest/http.rb +++ b/lib/custodian/protocoltest/http.rb @@ -114,7 +114,7 @@ module Custodian # # The content we expect to find # - if line =~ /with content (["'])(.*)\1/ + if line =~ /with content (["'])(.*?)\1/ @expected_content = $2.dup else @expected_content = nil diff --git a/t/test-custodian-parser.rb b/t/test-custodian-parser.rb index d9420a5..d3c3842 100755 --- a/t/test-custodian-parser.rb +++ b/t/test-custodian-parser.rb @@ -372,14 +372,15 @@ EOF # Test that we can use lots of different strings for content. # def test_http_with_content_parsing - content_strings = [ - "'bar in single quotes'", - '"bar in double quotes"', - "'bar in single quotes with \"embedded double quotes\"'", - '"bar in double quotes with \'embedded double quotes\'"', - ] - - content_strings.each do |cs| + content_strings = { + "'bar in single quotes'" => 'bar in single quotes', + '"bar in double quotes"' => "bar in double quotes", + "'bar in single quotes with \"embedded double quotes\"'" => 'bar in single quotes with "embedded double quotes"', + '"bar in double quotes with \'embedded double quotes\'"' => "bar in double quotes with 'embedded double quotes'", + "'bar testing greediness' with host header 'but dont be greedy'" => "bar testing greediness", + } + + content_strings.each do |cs, ex| str = "http://example must run http with content #{cs}." obj = Custodian::TestFactory.create(str) assert(!obj.nil?) @@ -387,7 +388,7 @@ EOF assert(obj.size == 1) assert_equal(obj[0].to_s, str) - assert_equal(cs[1..-2], obj[0].expected_content) + assert_equal(ex, obj[0].expected_content) end end -- cgit v1.2.1