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 <[email protected]>
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>