Replace @Unroll’s with a rule to always unroll.
This commit is contained in:
parent
6b16722316
commit
d5d24c50c7
|
@ -8,7 +8,6 @@ import org.h2.Driver
|
|||
import org.hsqldb.jdbc.JDBCDriver
|
||||
import spock.lang.Shared
|
||||
import spock.lang.Specification
|
||||
import spock.lang.Unroll
|
||||
|
||||
import java.sql.Connection
|
||||
import java.sql.PreparedStatement
|
||||
|
@ -46,7 +45,6 @@ class JDBCInstrumentationTest extends Specification {
|
|||
writer.start()
|
||||
}
|
||||
|
||||
@Unroll
|
||||
def "basic statement on #driver generates spans"() {
|
||||
setup:
|
||||
Statement statement = connection.createStatement()
|
||||
|
@ -92,7 +90,6 @@ class JDBCInstrumentationTest extends Specification {
|
|||
"hsqldb" | connections.get("hsqldb") | "SA" | "SELECT 3 FROM INFORMATION_SCHEMA.SYSTEM_USERS"
|
||||
}
|
||||
|
||||
@Unroll
|
||||
def "prepared statement execute on #driver generates a span"() {
|
||||
setup:
|
||||
PreparedStatement statement = connection.prepareStatement(query)
|
||||
|
@ -139,7 +136,6 @@ class JDBCInstrumentationTest extends Specification {
|
|||
"hsqldb" | connections.get("hsqldb") | "SA" | "SELECT 3 FROM INFORMATION_SCHEMA.SYSTEM_USERS"
|
||||
}
|
||||
|
||||
@Unroll
|
||||
def "prepared statement query on #driver generates a span"() {
|
||||
setup:
|
||||
PreparedStatement statement = connection.prepareStatement(query)
|
||||
|
@ -185,7 +181,6 @@ class JDBCInstrumentationTest extends Specification {
|
|||
"hsqldb" | connections.get("hsqldb") | "SA" | "SELECT 3 FROM INFORMATION_SCHEMA.SYSTEM_USERS"
|
||||
}
|
||||
|
||||
@Unroll
|
||||
def "statement update on #driver generates a span"() {
|
||||
setup:
|
||||
Statement statement = connection.createStatement()
|
||||
|
@ -232,7 +227,6 @@ class JDBCInstrumentationTest extends Specification {
|
|||
"hsqldb" | connections.get("hsqldb") | "SA" | "CREATE TABLE PUBLIC.S_HSQLDB (id INTEGER not NULL, PRIMARY KEY ( id ))"
|
||||
}
|
||||
|
||||
@Unroll
|
||||
def "prepared statement update on #driver generates a span"() {
|
||||
setup:
|
||||
def sql = connection.nativeSQL(query)
|
||||
|
|
|
@ -6,7 +6,6 @@ import org.junit.Rule
|
|||
import org.junit.contrib.java.lang.system.EnvironmentVariables
|
||||
import org.junit.contrib.java.lang.system.RestoreSystemProperties
|
||||
import spock.lang.Specification
|
||||
import spock.lang.Unroll
|
||||
|
||||
class ConfigurableInstrumenterTest extends Specification {
|
||||
@Rule
|
||||
|
@ -70,7 +69,6 @@ class ConfigurableInstrumenterTest extends Specification {
|
|||
enabled << [true, false]
|
||||
}
|
||||
|
||||
@Unroll
|
||||
def "configure default sys prop as #value"() {
|
||||
setup:
|
||||
System.setProperty("dd.integrations.enabled", value)
|
||||
|
@ -88,7 +86,6 @@ class ConfigurableInstrumenterTest extends Specification {
|
|||
"asdf" | false
|
||||
}
|
||||
|
||||
@Unroll
|
||||
def "configure default env var as #value"() {
|
||||
setup:
|
||||
environmentVariables.set("DD_INTEGRATIONS_ENABLED", value)
|
||||
|
@ -106,7 +103,6 @@ class ConfigurableInstrumenterTest extends Specification {
|
|||
"asdf" | false
|
||||
}
|
||||
|
||||
@Unroll
|
||||
def "configure sys prop enabled for #value when default is disabled"() {
|
||||
setup:
|
||||
System.setProperty("dd.integrations.enabled", "false")
|
||||
|
@ -129,7 +125,6 @@ class ConfigurableInstrumenterTest extends Specification {
|
|||
"period.test" | true | "period.test" | "asdf"
|
||||
}
|
||||
|
||||
@Unroll
|
||||
def "configure env var enabled for #value when default is disabled"() {
|
||||
setup:
|
||||
environmentVariables.set("DD_INTEGRATIONS_ENABLED", "false")
|
||||
|
|
|
@ -15,7 +15,6 @@ import datadog.trace.api.DDTags
|
|||
import io.opentracing.tag.Tags
|
||||
import ratpack.http.Headers
|
||||
import spock.lang.Shared
|
||||
import spock.lang.Unroll
|
||||
|
||||
import java.util.concurrent.atomic.AtomicReference
|
||||
|
||||
|
@ -81,7 +80,6 @@ class AWSClientTest extends AgentTestRunner {
|
|||
false | 1
|
||||
}
|
||||
|
||||
@Unroll
|
||||
def "send #operation request with mocked response"() {
|
||||
setup:
|
||||
responseBody.set(body)
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
import com.netflix.hystrix.HystrixCommand
|
||||
import datadog.trace.agent.test.AgentTestRunner
|
||||
import datadog.trace.api.Trace
|
||||
import spock.lang.Unroll
|
||||
|
||||
import java.util.concurrent.BlockingQueue
|
||||
import java.util.concurrent.LinkedBlockingQueue
|
||||
|
@ -17,7 +16,6 @@ class HystrixTest extends AgentTestRunner {
|
|||
// System.setProperty("hystrix.command.default.execution.timeout.enabled", "false")
|
||||
}
|
||||
|
||||
@Unroll
|
||||
def "test command #action"() {
|
||||
setup:
|
||||
def command = new HystrixCommand(asKey("ExampleGroup")) {
|
||||
|
@ -91,7 +89,6 @@ class HystrixTest extends AgentTestRunner {
|
|||
}
|
||||
}
|
||||
|
||||
@Unroll
|
||||
def "test command #action fallback"() {
|
||||
setup:
|
||||
def command = new HystrixCommand(asKey("ExampleGroup")) {
|
||||
|
|
|
@ -1,10 +1,8 @@
|
|||
import datadog.opentracing.DDSpan
|
||||
import datadog.trace.agent.test.AgentTestRunner
|
||||
import spock.lang.Unroll
|
||||
|
||||
class AkkaActorTest extends AgentTestRunner {
|
||||
|
||||
@Unroll
|
||||
def "akka #testMethod"() {
|
||||
setup:
|
||||
AkkaActors akkaTester = new AkkaActors()
|
||||
|
|
|
@ -4,7 +4,6 @@ import datadog.trace.agent.test.AgentTestRunner
|
|||
import datadog.trace.api.Trace
|
||||
import io.opentracing.util.GlobalTracer
|
||||
import spock.lang.Shared
|
||||
import spock.lang.Unroll
|
||||
|
||||
import java.lang.reflect.Method
|
||||
import java.util.concurrent.ArrayBlockingQueue
|
||||
|
@ -33,7 +32,6 @@ class ExecutorInstrumentationTest extends AgentTestRunner {
|
|||
submitMethod = ExecutorService.getMethod("submit", Callable)
|
||||
}
|
||||
|
||||
@Unroll
|
||||
// more useful name breaks java9 javac
|
||||
// def "#poolImpl.getClass().getSimpleName() #method.getName() propagates"()
|
||||
def "#poolImpl #method propagates"() {
|
||||
|
@ -77,7 +75,6 @@ class ExecutorInstrumentationTest extends AgentTestRunner {
|
|||
new ScheduledThreadPoolExecutor(1) | executeMethod
|
||||
}
|
||||
|
||||
@Unroll
|
||||
// more useful name breaks java9 javac
|
||||
// def "#poolImpl.getClass().getSimpleName() #method.getName() propagates"()
|
||||
def "#poolImpl reports after canceled jobs"() {
|
||||
|
|
|
@ -1,13 +1,17 @@
|
|||
import datadog.opentracing.DDSpanContext
|
||||
import datadog.trace.agent.test.AgentTestRunner
|
||||
import io.opentracing.util.GlobalTracer
|
||||
import spock.lang.Unroll
|
||||
|
||||
import javax.ws.rs.*
|
||||
import javax.ws.rs.DELETE
|
||||
import javax.ws.rs.GET
|
||||
import javax.ws.rs.HEAD
|
||||
import javax.ws.rs.OPTIONS
|
||||
import javax.ws.rs.POST
|
||||
import javax.ws.rs.PUT
|
||||
import javax.ws.rs.Path
|
||||
|
||||
class JaxRsAnnotationsInstrumentationTest extends AgentTestRunner {
|
||||
|
||||
@Unroll
|
||||
def "span named '#resourceName' from annotations on class"() {
|
||||
setup:
|
||||
def scope = GlobalTracer.get().buildSpan("test").startActive(false)
|
||||
|
|
|
@ -6,7 +6,6 @@ import org.apache.cxf.jaxrs.client.spec.ClientBuilderImpl
|
|||
import org.glassfish.jersey.client.JerseyClientBuilder
|
||||
import org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder
|
||||
import ratpack.http.Headers
|
||||
import spock.lang.Unroll
|
||||
|
||||
import javax.ws.rs.client.AsyncInvoker
|
||||
import javax.ws.rs.client.Client
|
||||
|
@ -33,7 +32,6 @@ class JaxRsClientTest extends AgentTestRunner {
|
|||
}
|
||||
}
|
||||
|
||||
@Unroll
|
||||
def "#lib request creates spans and sends headers"() {
|
||||
setup:
|
||||
Client client = builder.build()
|
||||
|
|
|
@ -5,7 +5,6 @@ import org.apache.activemq.ActiveMQMessageConsumer
|
|||
import org.apache.activemq.ActiveMQMessageProducer
|
||||
import org.apache.activemq.junit.EmbeddedActiveMQBroker
|
||||
import spock.lang.Shared
|
||||
import spock.lang.Unroll
|
||||
|
||||
import javax.jms.Connection
|
||||
import javax.jms.Message
|
||||
|
@ -29,7 +28,6 @@ class JMS1Test extends AgentTestRunner {
|
|||
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE)
|
||||
}
|
||||
|
||||
@Unroll
|
||||
def "sending a message to #resourceName generates spans"() {
|
||||
setup:
|
||||
def producer = session.createProducer(destination)
|
||||
|
@ -147,7 +145,6 @@ class JMS1Test extends AgentTestRunner {
|
|||
session.createTemporaryTopic() | "Temporary Topic"
|
||||
}
|
||||
|
||||
@Unroll
|
||||
def "sending to a MessageListener on #resourceName generates a span"() {
|
||||
setup:
|
||||
def lock = new CountDownLatch(1)
|
||||
|
|
|
@ -15,7 +15,6 @@ import org.hornetq.core.server.HornetQServers
|
|||
import org.hornetq.jms.client.HornetQMessageConsumer
|
||||
import org.hornetq.jms.client.HornetQMessageProducer
|
||||
import spock.lang.Shared
|
||||
import spock.lang.Unroll
|
||||
|
||||
import javax.jms.Message
|
||||
import javax.jms.MessageListener
|
||||
|
@ -63,7 +62,6 @@ class JMS2Test extends AgentTestRunner {
|
|||
session.run()
|
||||
}
|
||||
|
||||
@Unroll
|
||||
def "sending a message to #resourceName generates spans"() {
|
||||
setup:
|
||||
def producer = session.createProducer(destination)
|
||||
|
@ -138,7 +136,6 @@ class JMS2Test extends AgentTestRunner {
|
|||
session.createTemporaryTopic() | "Temporary Topic"
|
||||
}
|
||||
|
||||
@Unroll
|
||||
def "sending to a MessageListener on #resourceName generates a span"() {
|
||||
setup:
|
||||
def lock = new CountDownLatch(1)
|
||||
|
|
|
@ -11,7 +11,6 @@ import okhttp3.Request
|
|||
import okhttp3.Response
|
||||
import org.eclipse.jetty.server.Server
|
||||
import org.eclipse.jetty.servlet.ServletContextHandler
|
||||
import spock.lang.Unroll
|
||||
|
||||
import java.lang.reflect.Field
|
||||
import java.util.concurrent.CountDownLatch
|
||||
|
@ -81,7 +80,6 @@ class JettyServlet2Test extends AgentTestRunner {
|
|||
jettyServer.destroy()
|
||||
}
|
||||
|
||||
@Unroll
|
||||
def "test #path servlet call"() {
|
||||
setup:
|
||||
def request = new Request.Builder()
|
||||
|
@ -119,7 +117,6 @@ class JettyServlet2Test extends AgentTestRunner {
|
|||
"sync" | "Hello Sync"
|
||||
}
|
||||
|
||||
@Unroll
|
||||
def "test #path error servlet call"() {
|
||||
setup:
|
||||
def request = new Request.Builder()
|
||||
|
@ -158,7 +155,6 @@ class JettyServlet2Test extends AgentTestRunner {
|
|||
"sync" | "Hello Sync"
|
||||
}
|
||||
|
||||
@Unroll
|
||||
def "test #path non-throwing-error servlet call"() {
|
||||
// This doesn't actually detect the error because we can't get the status code via the old servlet API.
|
||||
setup:
|
||||
|
|
|
@ -11,7 +11,6 @@ import okhttp3.Request
|
|||
import okhttp3.Response
|
||||
import org.eclipse.jetty.server.Server
|
||||
import org.eclipse.jetty.servlet.ServletContextHandler
|
||||
import spock.lang.Unroll
|
||||
|
||||
import java.lang.reflect.Field
|
||||
import java.util.concurrent.CountDownLatch
|
||||
|
@ -83,7 +82,6 @@ class JettyServlet3Test extends AgentTestRunner {
|
|||
jettyServer.destroy()
|
||||
}
|
||||
|
||||
@Unroll
|
||||
def "test #path servlet call"() {
|
||||
setup:
|
||||
def request = new Request.Builder()
|
||||
|
@ -123,7 +121,6 @@ class JettyServlet3Test extends AgentTestRunner {
|
|||
"sync" | "Hello Sync"
|
||||
}
|
||||
|
||||
@Unroll
|
||||
def "test #path error servlet call"() {
|
||||
setup:
|
||||
def request = new Request.Builder()
|
||||
|
@ -164,7 +161,6 @@ class JettyServlet3Test extends AgentTestRunner {
|
|||
"sync" | "Hello Sync"
|
||||
}
|
||||
|
||||
@Unroll
|
||||
def "test #path non-throwing-error servlet call"() {
|
||||
setup:
|
||||
def request = new Request.Builder()
|
||||
|
|
|
@ -11,7 +11,6 @@ import org.apache.catalina.Context
|
|||
import org.apache.catalina.startup.Tomcat
|
||||
import org.apache.tomcat.JarScanFilter
|
||||
import org.apache.tomcat.JarScanType
|
||||
import spock.lang.Unroll
|
||||
|
||||
import java.lang.reflect.Field
|
||||
|
||||
|
@ -82,7 +81,6 @@ class TomcatServlet3Test extends AgentTestRunner {
|
|||
tomcatServer.destroy()
|
||||
}
|
||||
|
||||
@Unroll
|
||||
def "test #path servlet call"() {
|
||||
setup:
|
||||
def request = new Request.Builder()
|
||||
|
@ -122,7 +120,6 @@ class TomcatServlet3Test extends AgentTestRunner {
|
|||
"sync" | "Hello Sync"
|
||||
}
|
||||
|
||||
@Unroll
|
||||
def "test #path error servlet call"() {
|
||||
setup:
|
||||
def request = new Request.Builder()
|
||||
|
@ -163,7 +160,6 @@ class TomcatServlet3Test extends AgentTestRunner {
|
|||
"sync" | "Hello Sync"
|
||||
}
|
||||
|
||||
@Unroll
|
||||
def "test #path error servlet call for non-throwing error"() {
|
||||
setup:
|
||||
def request = new Request.Builder()
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
import datadog.trace.agent.test.AgentTestRunner
|
||||
import datadog.trace.instrumentation.trace_annotation.TraceAnnotationsInstrumentation
|
||||
import dd.test.trace.annotation.SayTracedHello
|
||||
import spock.lang.Unroll
|
||||
|
||||
import java.util.concurrent.Callable
|
||||
|
||||
|
@ -46,7 +45,6 @@ class ConfiguredTraceAnnotationsTest extends AgentTestRunner {
|
|||
}
|
||||
}
|
||||
|
||||
@Unroll
|
||||
def "test configuration #value"() {
|
||||
setup:
|
||||
def config = null
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
import datadog.trace.agent.test.AgentTestRunner
|
||||
import datadog.trace.instrumentation.trace_annotation.TraceConfigInstrumentation
|
||||
import spock.lang.Unroll
|
||||
|
||||
import java.util.concurrent.Callable
|
||||
|
||||
|
@ -42,7 +41,6 @@ class TraceConfigTest extends AgentTestRunner {
|
|||
}
|
||||
}
|
||||
|
||||
@Unroll
|
||||
def "test configuration #value"() {
|
||||
setup:
|
||||
def config = null
|
||||
|
|
|
@ -6,11 +6,9 @@ import datadog.trace.api.DDTags
|
|||
import datadog.trace.api.sampling.PrioritySampling
|
||||
import datadog.trace.common.writer.ListWriter
|
||||
import spock.lang.Specification
|
||||
import spock.lang.Unroll
|
||||
|
||||
class DDSpanSerializationTest extends Specification {
|
||||
|
||||
@Unroll
|
||||
def "serialize spans"() throws Exception {
|
||||
setup:
|
||||
final Map<String, String> baggage = new HashMap<>()
|
||||
|
|
|
@ -4,7 +4,6 @@ import datadog.trace.api.interceptor.MutableSpan
|
|||
import datadog.trace.api.interceptor.TraceInterceptor
|
||||
import datadog.trace.common.writer.ListWriter
|
||||
import spock.lang.Specification
|
||||
import spock.lang.Unroll
|
||||
|
||||
import java.util.concurrent.atomic.AtomicBoolean
|
||||
|
||||
|
@ -65,7 +64,6 @@ class TraceInterceptorTest extends Specification {
|
|||
1 | true
|
||||
}
|
||||
|
||||
@Unroll
|
||||
def "interceptor can discard a trace (p=#score)"() {
|
||||
setup:
|
||||
def called = new AtomicBoolean(false)
|
||||
|
@ -96,7 +94,6 @@ class TraceInterceptorTest extends Specification {
|
|||
1 | _
|
||||
}
|
||||
|
||||
@Unroll
|
||||
def "interceptor can modify a span"() {
|
||||
setup:
|
||||
tracer.interceptors.add(new TraceInterceptor() {
|
||||
|
|
|
@ -9,7 +9,6 @@ import io.opentracing.propagation.TextMapExtractAdapter
|
|||
import io.opentracing.propagation.TextMapInjectAdapter
|
||||
import spock.lang.Shared
|
||||
import spock.lang.Specification
|
||||
import spock.lang.Unroll
|
||||
|
||||
class HTTPCodecTest extends Specification {
|
||||
@Shared
|
||||
|
@ -21,7 +20,6 @@ class HTTPCodecTest extends Specification {
|
|||
@Shared
|
||||
private static final String SAMPLING_PRIORITY_KEY = "x-datadog-sampling-priority"
|
||||
|
||||
@Unroll
|
||||
def "inject http headers"() {
|
||||
setup:
|
||||
def writer = new ListWriter()
|
||||
|
@ -65,7 +63,6 @@ class HTTPCodecTest extends Specification {
|
|||
PrioritySampling.SAMPLER_KEEP | _
|
||||
}
|
||||
|
||||
@Unroll
|
||||
def "extract http headers"() {
|
||||
setup:
|
||||
final Map<String, String> actual = [
|
||||
|
|
|
@ -10,7 +10,6 @@ import io.opentracing.Span
|
|||
import io.opentracing.noop.NoopSpan
|
||||
import spock.lang.Specification
|
||||
import spock.lang.Subject
|
||||
import spock.lang.Unroll
|
||||
|
||||
import java.util.concurrent.atomic.AtomicBoolean
|
||||
import java.util.concurrent.atomic.AtomicReference
|
||||
|
@ -300,7 +299,6 @@ class ScopeManagerTest extends Specification {
|
|||
writer == [[childSpan, span]]
|
||||
}
|
||||
|
||||
@Unroll
|
||||
def "context takes control (#active)"() {
|
||||
setup:
|
||||
contexts.each {
|
||||
|
@ -322,7 +320,6 @@ class ScopeManagerTest extends Specification {
|
|||
3 | [new AtomicReferenceScope(false), new AtomicReferenceScope(true), new AtomicReferenceScope(false), new AtomicReferenceScope(true)]
|
||||
}
|
||||
|
||||
@Unroll
|
||||
def "disabled context is ignored (#contexts.size)"() {
|
||||
setup:
|
||||
contexts.each {
|
||||
|
@ -372,7 +369,6 @@ class ScopeManagerTest extends Specification {
|
|||
scopeManager.tlsScope.get() == newScope
|
||||
}
|
||||
|
||||
@Unroll
|
||||
def "context to threadlocal (#contexts.size)"() {
|
||||
setup:
|
||||
contexts.each {
|
||||
|
|
|
@ -11,7 +11,6 @@ import org.junit.Rule
|
|||
import org.junit.contrib.java.lang.system.EnvironmentVariables
|
||||
import org.junit.contrib.java.lang.system.RestoreSystemProperties
|
||||
import spock.lang.Specification
|
||||
import spock.lang.Unroll
|
||||
|
||||
import static datadog.trace.common.DDTraceConfig.AGENT_HOST
|
||||
import static datadog.trace.common.DDTraceConfig.AGENT_PORT
|
||||
|
@ -132,7 +131,6 @@ class DDTraceConfigTest extends Specification {
|
|||
"a:b,c:d" | [a: "b", c: "d"]
|
||||
}
|
||||
|
||||
@Unroll
|
||||
def "verify single override on #source for #key"() {
|
||||
when:
|
||||
System.setProperty(PREFIX + key, value)
|
||||
|
|
|
@ -11,7 +11,6 @@ import ratpack.exec.Blocking
|
|||
import ratpack.http.Headers
|
||||
import ratpack.http.MediaType
|
||||
import spock.lang.Specification
|
||||
import spock.lang.Unroll
|
||||
|
||||
import java.util.concurrent.atomic.AtomicInteger
|
||||
import java.util.concurrent.atomic.AtomicReference
|
||||
|
@ -180,7 +179,6 @@ class DDApiTest extends Specification {
|
|||
v3Agent.close()
|
||||
}
|
||||
|
||||
@Unroll
|
||||
def "Api Downgrades to v3 if timeout exceeded (#delayTrace, #badPort)"() {
|
||||
// This test is unfortunately only exercising the read timeout, not the connect timeout.
|
||||
setup:
|
||||
|
|
|
@ -8,7 +8,6 @@ import datadog.trace.common.writer.DDAgentWriter
|
|||
import datadog.trace.common.writer.DDApi
|
||||
import datadog.trace.common.writer.ListWriter
|
||||
import spock.lang.Specification
|
||||
import spock.lang.Unroll
|
||||
|
||||
import java.util.concurrent.TimeUnit
|
||||
import java.util.concurrent.atomic.AtomicReference
|
||||
|
@ -50,7 +49,6 @@ class DDApiIntegrationTest {
|
|||
return true
|
||||
}
|
||||
|
||||
@Unroll
|
||||
def "Sending traces succeeds (test #test)"() {
|
||||
expect:
|
||||
api.sendTraces(traces)
|
||||
|
@ -67,7 +65,6 @@ class DDApiIntegrationTest {
|
|||
[[new DDSpan(TimeUnit.MILLISECONDS.toMicros(System.currentTimeMillis()), CONTEXT)]] | 4
|
||||
}
|
||||
|
||||
@Unroll
|
||||
def "Sending bad trace fails (test #test)"() {
|
||||
expect:
|
||||
api.sendTraces(traces) == false
|
||||
|
|
|
@ -49,6 +49,7 @@ dependencies {
|
|||
testCompile deps.spock
|
||||
testCompile deps.groovy
|
||||
testCompile deps.testLogging
|
||||
testCompile 'info.solidsoft.spock:spock-global-unroll:0.5.1'
|
||||
testCompile group: 'io.ratpack', name: 'ratpack-groovy-test', version: '1.4.6'
|
||||
testCompile group: 'com.github.stefanbirkner', name: 'system-rules', version: '1.17.1'
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue