Skip to content

Commit 3c7dfc1

Browse files
committed
Review Feedback Vol. 1
1 parent 667a845 commit 3c7dfc1

10 files changed

Lines changed: 70 additions & 11 deletions

File tree

spock-spring/spring.gradle

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ def springVersion = "4.3.5.RELEASE"
1313
def testSpringVersions = [
1414
(springVersion): (8..11),
1515
"5.0.2.RELEASE": (8..11),
16-
"6.0.0" : (17..17)
16+
"6.0.0" : (17..javaVersions.max()),
17+
"7.0.6" : (17..javaVersions.max())
1718
].findAll { javaVersion in it.value }.keySet()
1819

1920
dependencies {
@@ -29,6 +30,7 @@ testing {
2930
useJUnitJupiter()
3031
dependencies {
3132
implementation "javax.inject:javax.inject:1"
33+
implementation "jakarta.inject:jakarta.inject-api:2.0.1"
3234
implementation groovylibs.groovySql // for groovy.sql.Sql
3335
implementation libs.junit.platform.testkit
3436
runtimeOnly libs.h2database

spock-spring/spring7-test/spring7-test.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
def springVersion = "7.0.0"
1+
def springVersion = "7.0.6"
22

33
java {
44
toolchain {

spock-spring/src/main/java/org/spockframework/spring/SpringExtension.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,9 @@ private void checkNoSharedFieldsInjected(SpecInfo spec) {
132132
&& (field.getReflection().isAnnotationPresent(Autowired.class)
133133
// avoid compile-time dependency on optional classes
134134
|| ReflectionUtil.isAnnotationPresent(field.getReflection(), "javax.annotation.Resource")
135-
|| ReflectionUtil.isAnnotationPresent(field.getReflection(), "javax.inject.Inject"))) {
135+
|| ReflectionUtil.isAnnotationPresent(field.getReflection(), "jakarta.annotation.Resource")
136+
|| ReflectionUtil.isAnnotationPresent(field.getReflection(), "javax.inject.Inject")
137+
|| ReflectionUtil.isAnnotationPresent(field.getReflection(), "jakarta.inject.Inject"))) {
136138
throw new SpringExtensionException(
137139
"@Shared field injection is not enabled by default therefore '%s' field cannot be injected. Refer to " +
138140
"javadoc of %s for information on how to opt-in for @Shared field injection.")

spock-spring/src/test/groovy/org/spockframework/spring/ContextHierarchyExample.groovy

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ package org.spockframework.spring
1818

1919
import spock.lang.Specification
2020

21-
import javax.inject.Inject
21+
import javax.inject.Inject as JavaxInject
22+
import jakarta.inject.Inject
2223

2324
import org.springframework.beans.factory.annotation.Autowired
2425
import org.springframework.test.context.*
@@ -28,6 +29,7 @@ class ContextHierarchyExample extends Specification {
2829
@Autowired
2930
Service1 service1
3031

32+
@JavaxInject
3133
@Inject
3234
Service2 service2
3335

spock-spring/src/test/groovy/org/spockframework/spring/InjectionExamples.groovy

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ class InjectionExamples extends Specification {
3838
}
3939

4040
@Requires({ReflectionUtil.isClassAvailable("javax.annotation.Resource")})
41-
def "injecting a field by name"() {
41+
def "injecting a field by name with javax"() {
4242
def runner = new EmbeddedSpecRunner()
4343

4444
when:
@@ -50,6 +50,35 @@ import org.spockframework.spring.IService1
5050
import org.springframework.test.context.ContextConfiguration
5151
import spock.lang.*
5252
53+
@ContextConfiguration(locations = "InjectionExamples-context.xml")
54+
class Foo extends Specification {
55+
@Resource
56+
IService1 myService1
57+
58+
def foo() {
59+
expect:
60+
myService1 instanceof IService1
61+
}
62+
}
63+
"""
64+
65+
then:
66+
noExceptionThrown()
67+
}
68+
69+
@Requires({ReflectionUtil.isClassAvailable("jakarta.annotation.Resource")})
70+
def "injecting a field by name with jakarta"() {
71+
def runner = new EmbeddedSpecRunner()
72+
73+
when:
74+
runner.run """
75+
package org.spockframework.spring
76+
77+
import jakarta.annotation.Resource
78+
import org.spockframework.spring.IService1
79+
import org.springframework.test.context.ContextConfiguration
80+
import spock.lang.*
81+
5382
@ContextConfiguration(locations = "InjectionExamples-context.xml")
5483
class Foo extends Specification {
5584
@Resource

spock-spring/src/test/groovy/org/spockframework/spring/MockInjectionExample.groovy

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ import org.springframework.test.context.ContextConfiguration
2222
import spock.lang.IgnoreIf
2323
import spock.lang.Specification
2424

25-
import javax.inject.Named
25+
import javax.inject.Named as JavaxNamed
26+
import jakarta.inject.Named
2627

2728
@IgnoreIf(
2829
value = { jvm.java17Compatible },
@@ -32,23 +33,28 @@ import javax.inject.Named
3233
class MockInjectionExample extends Specification {
3334

3435
@Autowired
36+
@JavaxNamed('serviceMock')
3537
@Named('serviceMock')
3638
IService1 serviceMock
3739

3840

3941
@Autowired
42+
@JavaxNamed('serviceStub')
4043
@Named('serviceStub')
4144
IService1 serviceStub
4245

4346
@Autowired
47+
@JavaxNamed('serviceSpy')
4448
@Named('serviceSpy')
4549
IService2 serviceSpy
4650

4751
@Autowired
52+
@JavaxNamed('service2')
4853
@Named('service2')
4954
IService2 service2
5055

5156
@Autowired
57+
@JavaxNamed('nonMock')
5258
@Named('nonMock')
5359
ArrayList concreteSpy;
5460

spock-spring/src/test/groovy/org/spockframework/spring/SharedFieldsInjection.groovy

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import org.springframework.test.context.ContextConfiguration
55
import spock.lang.Specification
66
import spock.util.EmbeddedSpecRunner
77

8-
import javax.inject.Inject
8+
import jakarta.inject.Inject
99

1010
import static org.springframework.test.annotation.DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD
1111
import static org.springframework.test.annotation.DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD
@@ -45,7 +45,9 @@ class SharedFieldsInjection extends Specification {
4545
ann << [
4646
"org.springframework.beans.factory.annotation.Autowired",
4747
"javax.annotation.Resource",
48-
"javax.inject.Inject"
48+
"jakarta.annotation.Resource",
49+
"javax.inject.Inject",
50+
"jakarta.inject.Inject"
4951
].findAll(ReflectionUtil.&isClassAvailable)
5052
}
5153

@@ -55,6 +57,7 @@ class SharedFieldsInjection extends Specification {
5557
@ContextConfiguration(locations = "/org/spockframework/spring/InjectionExamples-context.xml")
5658
@EnableSharedInjection
5759
class Foo extends Specification {
60+
@javax.inject.Inject
5861
@Inject
5962
@Shared
6063
IService1 sharedService
@@ -79,6 +82,7 @@ class SharedFieldsInjection extends Specification {
7982
def result = runner.runWithImports '''
8083
@EnableSharedInjection
8184
abstract class AbstractSharedInjectionSpec extends Specification {
85+
@javax.inject.Inject
8286
@Inject
8387
@Shared
8488
IService1 sharedService
@@ -109,6 +113,7 @@ class SharedFieldsInjection extends Specification {
109113
@ContextConfiguration
110114
@EnableSharedInjection
111115
class Foo extends Specification {
116+
@javax.inject.Inject
112117
@Inject
113118
@Shared
114119
IService1 sharedService
@@ -198,6 +203,7 @@ class SharedFieldsInjection extends Specification {
198203
@EnableSharedInjection
199204
@DirtiesContext
200205
class Foo extends Specification {
206+
@javax.inject.Inject
201207
@Inject
202208
@Shared
203209
IService1 sharedService

spock-spring/src/test/groovy/org/spockframework/spring/docs/MockExamples.groovy

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,23 +19,34 @@ package org.spockframework.spring.docs
1919
import spock.lang.IgnoreIf
2020
import spock.lang.Specification
2121

22-
import javax.inject.Named
22+
import javax.inject.Named as JavaxNamed
23+
import jakarta.inject.Named
2324

2425
import org.springframework.beans.factory.annotation.Autowired
2526
import org.springframework.test.context.ContextConfiguration
2627

2728
abstract class MockExampleBase extends Specification {
2829

30+
@JavaxNamed('serviceMock')
2931
//tag::example[]
3032
@Autowired @Named('serviceMock')
3133
GreeterService serviceMock
3234

35+
//end::example[]
36+
@JavaxNamed('serviceStub')
37+
//tag::example[]
3338
@Autowired @Named('serviceStub')
3439
GreeterService serviceStub
3540

41+
//end::example[]
42+
@JavaxNamed('serviceSpy')
43+
//tag::example[]
3644
@Autowired @Named('serviceSpy')
3745
GreeterService serviceSpy
3846

47+
//end::example[]
48+
@JavaxNamed('alternativeMock')
49+
//tag::example[]
3950
@Autowired @Named('alternativeMock')
4051
GreeterService alternativeMock
4152

spock-spring/src/test/groovy/org/spockframework/spring/mock/ComplexUsageSpec.groovy

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import org.spockframework.util.VersionNumber
2121
import spock.lang.IgnoreIf
2222
import spock.lang.Specification
2323

24-
import javax.inject.Named
2524
import java.lang.annotation.*
2625

2726
import org.springframework.beans.factory.annotation.*

spock-spring/src/test/groovy/org/spockframework/spring/mock/imported/SpringSpyWithAopProxyTests.groovy

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ import org.spockframework.spring.*
2020
import org.springframework.core.SpringVersion
2121
import spock.lang.*
2222

23-
import javax.inject.Inject
23+
import javax.inject.Inject as JavaxInject
24+
import jakarta.inject.Inject
2425

2526
import org.springframework.cache.CacheManager
2627
import org.springframework.cache.annotation.*
@@ -44,6 +45,7 @@ class SpringSpyWithAopProxyTests extends Specification {
4445
@UnwrapAopProxy
4546
private DateService spyService
4647

48+
@JavaxInject
4749
@Inject
4850
private DateService dateService
4951

0 commit comments

Comments
 (0)