Skip to content

Commit f8163c2

Browse files
committed
Add supportsMultipart() hook to skip multipart test on Jetty 9.0.x
Spock AST-transforms feature methods, so @OverRide on a feature method override triggers a compile error. Use a boolean hook instead: - AppSecInactiveHttpServerTest.supportsMultipart() returns true by default and is guarded with assumeTrue() at the setup: block level - Jetty9InactiveAppSecTest overrides to false in both jetty-server-9.0 and jetty-server-9.0.4, where jetty-appsec-8.1.3 range [8.1.3, 9.2.0.RC0) causes ParameterCollector.put(String, String) to fail → HTTP 500. Verified locally: tests=8, skipped=3 (multipart correctly skipped), failures=0.
1 parent 05a5ec4 commit f8163c2

3 files changed

Lines changed: 9 additions & 10 deletions

File tree

dd-java-agent/appsec/appsec-test-fixtures/src/main/groovy/com/datadog/appsec/AppSecInactiveHttpServerTest.groovy

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,13 @@ abstract class AppSecInactiveHttpServerTest extends WithHttpServer {
139139
}
140140
}
141141

142+
protected boolean supportsMultipart() {
143+
true
144+
}
145+
142146
void multipart() {
143147
setup:
148+
assumeTrue supportsMultipart()
144149
def body = new MultipartBody.Builder()
145150
.setType(MultipartBody.FORM)
146151
.addFormDataPart('a', 'x')

dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0.4/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9InactiveAppSecTest.groovy

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package datadog.trace.instrumentation.jetty9
22

33
import com.datadog.appsec.AppSecInactiveHttpServerTest
44
import datadog.trace.agent.test.base.HttpServer
5-
import spock.lang.Ignore
65
import test.JettyServer
76
import test.TestHandler
87

@@ -14,10 +13,8 @@ class Jetty9InactiveAppSecTest extends AppSecInactiveHttpServerTest {
1413
// jetty-appsec-8.1.3 covers [8.1.3, 9.2.0.RC0) which includes Jetty 9.0.x.
1514
// It instruments extractContentParameters() but calls ParameterCollector.put(String, String)
1615
// which does not exist in Jetty 9.0.x → HTTP 500 on multipart requests.
17-
@Ignore('multipart not supported on Jetty 9.0.x due to jetty-appsec-8.1.3 range conflict')
1816
@Override
19-
void multipart() {
20-
setup:
21-
true
17+
protected boolean supportsMultipart() {
18+
false
2219
}
2320
}

dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/src/test/groovy/datadog/trace/instrumentation/jetty9/Jetty9InactiveAppSecTest.groovy

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package datadog.trace.instrumentation.jetty9
22

33
import com.datadog.appsec.AppSecInactiveHttpServerTest
44
import datadog.trace.agent.test.base.HttpServer
5-
import spock.lang.Ignore
65
import test.JettyServer
76
import test.TestHandler
87

@@ -14,10 +13,8 @@ class Jetty9InactiveAppSecTest extends AppSecInactiveHttpServerTest {
1413
// jetty-appsec-8.1.3 covers [8.1.3, 9.2.0.RC0) which includes Jetty 9.0.x.
1514
// It instruments extractContentParameters() but calls ParameterCollector.put(String, String)
1615
// which does not exist in Jetty 9.0.x → HTTP 500 on multipart requests.
17-
@Ignore('multipart not supported on Jetty 9.0.x due to jetty-appsec-8.1.3 range conflict')
1816
@Override
19-
void multipart() {
20-
setup:
21-
true
17+
protected boolean supportsMultipart() {
18+
false
2219
}
2320
}

0 commit comments

Comments
 (0)