This is an automated email from the ASF dual-hosted git repository.

fschumacher pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jmeter.git


The following commit(s) were added to refs/heads/master by this push:
     new 353ad79  Better parse curl commands with backslash at line endings and 
support PUT method with data arguments
353ad79 is described below

commit 353ad79c5497c4d624f8b276580b6b50d45b27b9
Author: Felix Schumacher <felix.schumac...@internetallee.de>
AuthorDate: Tue Jun 9 12:49:00 2020 +0200

    Better parse curl commands with backslash at line endings and support PUT 
method with data arguments
    
    Bugzilla Id: 64446
---
 .../jmeter/protocol/http/curl/BasicCurlParser.java    |  6 ++++--
 .../org/apache/jmeter/curl/BasicCurlParserTest.java   | 19 +++++++++++++++++++
 xdocs/changes.xml                                     |  1 +
 3 files changed, 24 insertions(+), 2 deletions(-)

diff --git 
a/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/curl/BasicCurlParser.java
 
b/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/curl/BasicCurlParser.java
index 0c7fcd6..8d95da2 100644
--- 
a/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/curl/BasicCurlParser.java
+++ 
b/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/curl/BasicCurlParser.java
@@ -700,7 +700,9 @@ public class BasicCurlParser {
                     String value = option.getArgument(0);
                     String dataOptionName = option.getDescriptor().getName();
                     value = getPostDataByDifferentOption(value.trim(), 
dataOptionName);
-                    request.setMethod("POST");
+                    if ("GET".equals(request.getMethod())) {
+                        request.setMethod("POST");
+                    }
                     request.setPostData(value);
                 } else if (FORMS_OPT.contains(option.getDescriptor().getId())) 
{
                     String nameAndValue = option.getArgument(0);
@@ -850,7 +852,7 @@ public class BasicCurlParser {
                         current.setLength(0);
                     }
                 } else {
-                    current.append(nextTok);
+                    current.append(nextTok.replaceAll("^\\\\[\\r\\n]", ""));
                 }
                 lastTokenHasBeenQuoted = false;
                 break;
diff --git 
a/src/protocol/http/src/test/java/org/apache/jmeter/curl/BasicCurlParserTest.java
 
b/src/protocol/http/src/test/java/org/apache/jmeter/curl/BasicCurlParserTest.java
index 39f003b..c9f9228 100644
--- 
a/src/protocol/http/src/test/java/org/apache/jmeter/curl/BasicCurlParserTest.java
+++ 
b/src/protocol/http/src/test/java/org/apache/jmeter/curl/BasicCurlParserTest.java
@@ -89,6 +89,25 @@ public class BasicCurlParserTest {
     }
 
     @Test
+    public void testBackslashAtLineEnding() {
+        String cmdLine = "curl \\\n-d 'hey' http://jmeter.apache.org/";;
+        BasicCurlParser basicCurlParser = new BasicCurlParser();
+        BasicCurlParser.Request request = basicCurlParser.parse(cmdLine);
+        assertEquals("http://jmeter.apache.org/";, request.getUrl());
+        assertEquals("hey", request.getPostData());
+    }
+
+    @Test
+    public void testSetRequestMethodOnData() {
+        String cmdLine = "curl -X PUT -d 'hey' http://jmeter.apache.org/";;
+        BasicCurlParser basicCurlParser = new BasicCurlParser();
+        BasicCurlParser.Request request = basicCurlParser.parse(cmdLine);
+        assertEquals("http://jmeter.apache.org/";, request.getUrl());
+        assertEquals("hey", request.getPostData());
+        assertEquals("PUT", request.getMethod());
+    }
+
+    @Test
     public void testChromeParsingNotCompressed() {
         String cmdLine = "curl 'https://jmeter.apache.org/' -H 
'Proxy-Connection: keep-alive' "
                 + "-H 'Proxy-Authorization: Basic XXXXXXXXX/' -H 
'Upgrade-Insecure-Requests: 1' "
diff --git a/xdocs/changes.xml b/xdocs/changes.xml
index f2c8db3..0772b9a 100644
--- a/xdocs/changes.xml
+++ b/xdocs/changes.xml
@@ -109,6 +109,7 @@ Summary
 
 <h3>General</h3>
 <ul>
+  <li><bug>64446</bug>Better parse curl commands with backslash at line 
endings and support <code>PUT</code> method with data arguments</li>
 </ul>
 
 <ch_section>Non-functional changes</ch_section>

Reply via email to