You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@grails.apache.org by ja...@apache.org on 2026/01/25 19:54:27 UTC
(grails-core) 01/05: Use @RestoreSystemProperties for cleaner test isolation
This is an automated email from the ASF dual-hosted git repository.
jamesfredley pushed a commit to branch improve-gh-ci-speed
in repository https://gitbox.apache.org/repos/asf/grails-core.git
commit ae9b1abd17d762058b828eaf5c8bf64cb7dfe563
Author: James Fredley <ja...@users.noreply.github.com>
AuthorDate: Sun Jan 25 12:40:14 2026 -0500
Use @RestoreSystemProperties for cleaner test isolation
Replace manual system property save/restore in setup/cleanup methods with
Spock's @RestoreSystemProperties annotation. This reduces boilerplate code
and ensures properties are reliably restored even if tests fail.
Changes apply to multi-tenancy tests across datamapping-core-test,
hibernate5, mongodb, and interceptors modules that use Spock 2.3+.
---
.../MultiTenancyBidirectionalManyToManySpec.groovy | 6 ++----
.../hibernate/connections/SchemaMultiTenantSpec.groovy | 11 ++---------
.../orm/hibernate/connections/SingleTenantSpec.groovy | 11 ++---------
.../gorm/mongo/connections/MultiTenancySpec.groovy | 10 ++--------
.../mongo/connections/SchemaBasedMultiTenancySpec.groovy | 10 ++--------
.../gorm/mongo/connections/SingleTenancySpec.groovy | 10 ++--------
.../multitenancy/MongoStaticApiMultiTenancySpec.groovy | 10 ++--------
.../multitenancy/database/DatabasePerTenantSpec.groovy | 8 ++------
.../partitioned/MultiTenantServiceTransformSpec.groovy | 10 ++--------
.../partitioned/PartitionMultiTenancySpec.groovy | 10 ++--------
.../multitenancy/schema/SchemaPerTenantSpec.groovy | 10 ++--------
.../grails/gorm/tests/CurrentTenantTransformSpec.groovy | 10 ++--------
.../groovy/grails/gorm/tests/TenantServiceSpec.groovy | 9 ++-------
.../web/interceptors/UrlMappingMatcherSpec.groovy | 16 ++--------------
14 files changed, 28 insertions(+), 113 deletions(-)
diff --git a/grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/multitenancy/MultiTenancyBidirectionalManyToManySpec.groovy b/grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/multitenancy/MultiTenancyBidirectionalManyToManySpec.groovy
index c6dd06031e..c36b25199b 100644
--- a/grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/multitenancy/MultiTenancyBidirectionalManyToManySpec.groovy
+++ b/grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/multitenancy/MultiTenancyBidirectionalManyToManySpec.groovy
@@ -32,12 +32,14 @@ import org.hibernate.dialect.H2Dialect
import spock.lang.AutoCleanup
import spock.lang.Ignore
import spock.lang.Issue
+import spock.util.environment.RestoreSystemProperties
import spock.lang.Shared
import spock.lang.Specification
/**
* Created by puneetbehl on 21/03/2018.
*/
+@RestoreSystemProperties
class MultiTenancyBidirectionalManyToManySpec extends Specification {
final Map config = [
@@ -64,10 +66,6 @@ class MultiTenancyBidirectionalManyToManySpec extends Specification {
userService = datastore.getService(UserService)
}
- void cleanup() {
- System.setProperty(SystemPropertyTenantResolver.PROPERTY_NAME, "")
- }
-
@Rollback
@Issue("https://github.com/grails/grails-data-hibernate5/issues/58")
void "test hasMany and 'in' query with multi-tenancy" () {
diff --git a/grails-data-hibernate5/core/src/test/groovy/org/grails/orm/hibernate/connections/SchemaMultiTenantSpec.groovy b/grails-data-hibernate5/core/src/test/groovy/org/grails/orm/hibernate/connections/SchemaMultiTenantSpec.groovy
index 4433230d09..701700e0f0 100644
--- a/grails-data-hibernate5/core/src/test/groovy/org/grails/orm/hibernate/connections/SchemaMultiTenantSpec.groovy
+++ b/grails-data-hibernate5/core/src/test/groovy/org/grails/orm/hibernate/connections/SchemaMultiTenantSpec.groovy
@@ -30,6 +30,7 @@ import org.hibernate.resource.jdbc.spi.JdbcSessionOwner
import org.springframework.orm.hibernate5.SessionHolder
import org.springframework.transaction.support.TransactionSynchronizationManager
import spock.lang.AutoCleanup
+import spock.util.environment.RestoreSystemProperties
import spock.lang.Shared
import spock.lang.Specification
@@ -38,17 +39,9 @@ import java.sql.Connection
/**
* Created by graemerocher on 20/07/2016.
*/
+@RestoreSystemProperties
class SchemaMultiTenantSpec extends Specification {
- def setup() {
- // Ensure other specs don't leak a tenant id and skip the expected TenantNotFoundException.
- System.setProperty(SystemPropertyTenantResolver.PROPERTY_NAME, "")
- }
-
- def cleanup() {
- System.setProperty(SystemPropertyTenantResolver.PROPERTY_NAME, "")
- }
-
void "Test a database per tenant multi tenancy"() {
given:"A configuration for multiple data sources"
System.setProperty(SystemPropertyTenantResolver.PROPERTY_NAME, "")
diff --git a/grails-data-hibernate5/core/src/test/groovy/org/grails/orm/hibernate/connections/SingleTenantSpec.groovy b/grails-data-hibernate5/core/src/test/groovy/org/grails/orm/hibernate/connections/SingleTenantSpec.groovy
index a60857236c..5c32e23af2 100644
--- a/grails-data-hibernate5/core/src/test/groovy/org/grails/orm/hibernate/connections/SingleTenantSpec.groovy
+++ b/grails-data-hibernate5/core/src/test/groovy/org/grails/orm/hibernate/connections/SingleTenantSpec.groovy
@@ -31,6 +31,7 @@ import org.grails.orm.hibernate.HibernateDatastore
import org.hibernate.Session
import org.hibernate.dialect.H2Dialect
import org.hibernate.resource.jdbc.spi.JdbcSessionOwner
+import spock.util.environment.RestoreSystemProperties
import spock.lang.Specification
import java.sql.Connection
@@ -38,17 +39,9 @@ import java.sql.Connection
/**
* Created by graemerocher on 07/07/2016.
*/
+@RestoreSystemProperties
class SingleTenantSpec extends Specification {
- def setup() {
- // Ensure other specs don't leak a tenant id and skip the expected TenantNotFoundException.
- System.setProperty(SystemPropertyTenantResolver.PROPERTY_NAME, "")
- }
-
- def cleanup() {
- System.setProperty(SystemPropertyTenantResolver.PROPERTY_NAME, "")
- }
-
void "Test a database per tenant multi tenancy"() {
given:"A configuration for multiple data sources"
System.setProperty(SystemPropertyTenantResolver.PROPERTY_NAME, "")
diff --git a/grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/connections/MultiTenancySpec.groovy b/grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/connections/MultiTenancySpec.groovy
index dd6630c574..04032e20ea 100644
--- a/grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/connections/MultiTenancySpec.groovy
+++ b/grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/connections/MultiTenancySpec.groovy
@@ -30,6 +30,7 @@ import org.grails.datastore.mapping.mongo.config.MongoSettings
import org.grails.datastore.mapping.multitenancy.AllTenantsResolver
import org.grails.datastore.mapping.multitenancy.resolvers.SystemPropertyTenantResolver
import spock.lang.AutoCleanup
+import spock.util.environment.RestoreSystemProperties
import spock.lang.Shared
import static com.mongodb.client.model.Filters.*
@@ -37,6 +38,7 @@ import static com.mongodb.client.model.Filters.*
/**
* Created by graemerocher on 13/07/2016.
*/
+@RestoreSystemProperties
class MultiTenancySpec extends AutoStartedMongoSpec {
@Shared @AutoCleanup MongoDatastore datastore
@@ -55,14 +57,6 @@ class MultiTenancySpec extends AutoStartedMongoSpec {
this.datastore = new MongoDatastore(config, getDomainClasses() as Class[])
}
- void setup() {
- System.setProperty(SystemPropertyTenantResolver.PROPERTY_NAME, "")
- }
-
- void cleanup() {
- System.setProperty(SystemPropertyTenantResolver.PROPERTY_NAME, "")
- }
-
void "Test persist and retrieve entities with multi tenancy"() {
setup:
diff --git a/grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/connections/SchemaBasedMultiTenancySpec.groovy b/grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/connections/SchemaBasedMultiTenancySpec.groovy
index d6f243e307..b30ad424fa 100644
--- a/grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/connections/SchemaBasedMultiTenancySpec.groovy
+++ b/grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/connections/SchemaBasedMultiTenancySpec.groovy
@@ -26,11 +26,13 @@ import org.grails.datastore.mapping.mongo.config.MongoSettings
import org.grails.datastore.mapping.multitenancy.exceptions.TenantNotFoundException
import org.grails.datastore.mapping.multitenancy.resolvers.SystemPropertyTenantResolver
import spock.lang.AutoCleanup
+import spock.util.environment.RestoreSystemProperties
import spock.lang.Shared
/**
* Created by graemerocher on 14/07/2016.
*/
+@RestoreSystemProperties
class SchemaBasedMultiTenancySpec extends AutoStartedMongoSpec {
@Shared @AutoCleanup MongoDatastore datastore
@@ -49,14 +51,6 @@ class SchemaBasedMultiTenancySpec extends AutoStartedMongoSpec {
this.datastore = new MongoDatastore(config, getDomainClasses() as Class[])
}
- void setup() {
- System.setProperty(SystemPropertyTenantResolver.PROPERTY_NAME, "")
- }
-
- void cleanup() {
- System.setProperty(SystemPropertyTenantResolver.PROPERTY_NAME, "")
- }
-
void "Test no tenant id"() {
when:
CompanyB.DB
diff --git a/grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/connections/SingleTenancySpec.groovy b/grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/connections/SingleTenancySpec.groovy
index 00a4dce4ca..0d08660749 100644
--- a/grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/connections/SingleTenancySpec.groovy
+++ b/grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/connections/SingleTenancySpec.groovy
@@ -31,6 +31,7 @@ import org.grails.datastore.mapping.mongo.config.MongoSettings
import org.grails.datastore.mapping.multitenancy.exceptions.TenantNotFoundException
import org.grails.datastore.mapping.multitenancy.resolvers.SystemPropertyTenantResolver
import spock.lang.AutoCleanup
+import spock.util.environment.RestoreSystemProperties
import spock.lang.Shared
import static com.mongodb.client.model.Filters.eq
@@ -38,6 +39,7 @@ import static com.mongodb.client.model.Filters.eq
/**
* Created by graemerocher on 07/07/2016.
*/
+@RestoreSystemProperties
class SingleTenancySpec extends AutoStartedMongoSpec {
@Shared @AutoCleanup MongoDatastore datastore
@@ -64,14 +66,6 @@ class SingleTenancySpec extends AutoStartedMongoSpec {
this.datastore = new MongoDatastore(config, getDomainClasses() as Class[])
}
- void setup() {
- System.setProperty(SystemPropertyTenantResolver.PROPERTY_NAME, "")
- }
-
- void cleanup() {
- System.setProperty(SystemPropertyTenantResolver.PROPERTY_NAME, "")
- }
-
void "Test no tenant id"() {
when:
CompanyB.DB
diff --git a/grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/multitenancy/MongoStaticApiMultiTenancySpec.groovy b/grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/multitenancy/MongoStaticApiMultiTenancySpec.groovy
index 61a66f24e0..3398777ff5 100644
--- a/grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/multitenancy/MongoStaticApiMultiTenancySpec.groovy
+++ b/grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/multitenancy/MongoStaticApiMultiTenancySpec.groovy
@@ -29,8 +29,10 @@ import org.grails.datastore.mapping.mongo.config.MongoSettings
import org.grails.datastore.mapping.multitenancy.exceptions.TenantNotFoundException
import org.grails.datastore.mapping.multitenancy.resolvers.SystemPropertyTenantResolver
import spock.lang.AutoCleanup
+import spock.util.environment.RestoreSystemProperties
import spock.lang.Shared
+@RestoreSystemProperties
class MongoStaticApiMultiTenancySpec extends AutoStartedMongoSpec {
@Shared @AutoCleanup MongoDatastore datastore
@@ -49,14 +51,6 @@ class MongoStaticApiMultiTenancySpec extends AutoStartedMongoSpec {
this.datastore = new MongoDatastore(config, getDomainClasses() as Class[])
}
- void setup() {
- System.setProperty(SystemPropertyTenantResolver.PROPERTY_NAME, "")
- }
-
- void cleanup() {
- System.setProperty(SystemPropertyTenantResolver.PROPERTY_NAME, "")
- }
-
void "test search"() {
setup: "drop existing database"
diff --git a/grails-datamapping-core-test/src/test/groovy/grails/gorm/services/multitenancy/database/DatabasePerTenantSpec.groovy b/grails-datamapping-core-test/src/test/groovy/grails/gorm/services/multitenancy/database/DatabasePerTenantSpec.groovy
index 1ce33f70ae..8c239fea93 100644
--- a/grails-datamapping-core-test/src/test/groovy/grails/gorm/services/multitenancy/database/DatabasePerTenantSpec.groovy
+++ b/grails-datamapping-core-test/src/test/groovy/grails/gorm/services/multitenancy/database/DatabasePerTenantSpec.groovy
@@ -29,13 +29,14 @@ import org.grails.datastore.mapping.simple.SimpleMapDatastore
import spock.lang.AutoCleanup
import spock.lang.Ignore
import spock.lang.IgnoreIf
+import spock.util.environment.RestoreSystemProperties
import spock.lang.Shared
import spock.lang.Specification
/**
* Created by graemerocher on 05/04/2017.
*/
-
+@RestoreSystemProperties
class DatabasePerTenantSpec extends Specification {
@Shared @AutoCleanup SimpleMapDatastore datastore = new SimpleMapDatastore(
@@ -47,11 +48,6 @@ class DatabasePerTenantSpec extends Specification {
)
@Shared IBookService bookDataService = datastore.getService(IBookService)
- def setup() {
- // Ensure other specs don't leak a tenant id and skip the expected TenantNotFoundException.
- System.setProperty(SystemPropertyTenantResolver.PROPERTY_NAME, "")
- }
-
void 'Test database per tenant'() {
when:"When there is no tenant"
Book.count()
diff --git a/grails-datamapping-core-test/src/test/groovy/grails/gorm/services/multitenancy/partitioned/MultiTenantServiceTransformSpec.groovy b/grails-datamapping-core-test/src/test/groovy/grails/gorm/services/multitenancy/partitioned/MultiTenantServiceTransformSpec.groovy
index f4e4b6b361..d9214e1874 100644
--- a/grails-datamapping-core-test/src/test/groovy/grails/gorm/services/multitenancy/partitioned/MultiTenantServiceTransformSpec.groovy
+++ b/grails-datamapping-core-test/src/test/groovy/grails/gorm/services/multitenancy/partitioned/MultiTenantServiceTransformSpec.groovy
@@ -23,9 +23,11 @@ import org.grails.datastore.mapping.multitenancy.MultiTenancySettings
import org.grails.datastore.mapping.multitenancy.resolvers.SystemPropertyTenantResolver
import org.grails.datastore.mapping.simple.SimpleMapDatastore
import spock.lang.AutoCleanup
+import spock.util.environment.RestoreSystemProperties
import spock.lang.Shared
import spock.lang.Specification
+@RestoreSystemProperties
class MultiTenantServiceTransformSpec extends Specification {
@Shared @AutoCleanup SimpleMapDatastore datastore = new SimpleMapDatastore(
@@ -42,14 +44,6 @@ class MultiTenantServiceTransformSpec extends Specification {
gcl = new GroovyClassLoader()
}
- def setup() {
- System.setProperty(SystemPropertyTenantResolver.PROPERTY_NAME, "")
- }
-
- def cleanup() {
- System.setProperty(SystemPropertyTenantResolver.PROPERTY_NAME, "")
- }
-
void "test service transform applied with @WithoutTenant"() {
when: "The service transform is applied to an interface it can't implement"
Class service = gcl.parseClass('''
diff --git a/grails-datamapping-core-test/src/test/groovy/grails/gorm/services/multitenancy/partitioned/PartitionMultiTenancySpec.groovy b/grails-datamapping-core-test/src/test/groovy/grails/gorm/services/multitenancy/partitioned/PartitionMultiTenancySpec.groovy
index 73a7578072..8943ded93a 100644
--- a/grails-datamapping-core-test/src/test/groovy/grails/gorm/services/multitenancy/partitioned/PartitionMultiTenancySpec.groovy
+++ b/grails-datamapping-core-test/src/test/groovy/grails/gorm/services/multitenancy/partitioned/PartitionMultiTenancySpec.groovy
@@ -31,9 +31,11 @@ import org.grails.datastore.mapping.multitenancy.exceptions.TenantNotFoundExcept
import org.grails.datastore.mapping.multitenancy.resolvers.SystemPropertyTenantResolver
import org.grails.datastore.mapping.simple.SimpleMapDatastore
import spock.lang.AutoCleanup
+import spock.util.environment.RestoreSystemProperties
import spock.lang.Shared
import spock.lang.Specification
+@RestoreSystemProperties
class PartitionMultiTenancySpec extends Specification {
@Shared @AutoCleanup SimpleMapDatastore datastore = new SimpleMapDatastore(
@@ -44,14 +46,6 @@ class PartitionMultiTenancySpec extends Specification {
)
@Shared IBookService bookDataService = datastore.getService(IBookService)
- def setup() {
- System.setProperty(SystemPropertyTenantResolver.PROPERTY_NAME, "")
- }
-
- def cleanup() {
- System.setProperty(SystemPropertyTenantResolver.PROPERTY_NAME, "")
- }
-
void 'Test partitioned multi-tenancy with GORM services'() {
setup:
BookService bookService = new BookService()
diff --git a/grails-datamapping-core-test/src/test/groovy/grails/gorm/services/multitenancy/schema/SchemaPerTenantSpec.groovy b/grails-datamapping-core-test/src/test/groovy/grails/gorm/services/multitenancy/schema/SchemaPerTenantSpec.groovy
index cb8302e08e..a59ec8ca1b 100644
--- a/grails-datamapping-core-test/src/test/groovy/grails/gorm/services/multitenancy/schema/SchemaPerTenantSpec.groovy
+++ b/grails-datamapping-core-test/src/test/groovy/grails/gorm/services/multitenancy/schema/SchemaPerTenantSpec.groovy
@@ -30,9 +30,11 @@ import org.grails.datastore.mapping.multitenancy.exceptions.TenantNotFoundExcept
import org.grails.datastore.mapping.multitenancy.resolvers.SystemPropertyTenantResolver
import org.grails.datastore.mapping.simple.SimpleMapDatastore
import spock.lang.AutoCleanup
+import spock.util.environment.RestoreSystemProperties
import spock.lang.Shared
import spock.lang.Specification
+@RestoreSystemProperties
class SchemaPerTenantSpec extends Specification {
@Shared @AutoCleanup SimpleMapDatastore datastore = new SimpleMapDatastore(
@@ -43,14 +45,6 @@ class SchemaPerTenantSpec extends Specification {
)
@Shared IBookService bookDataService = datastore.getService(IBookService)
- def setup() {
- System.setProperty(SystemPropertyTenantResolver.PROPERTY_NAME, "")
- }
-
- def cleanup() {
- System.setProperty(SystemPropertyTenantResolver.PROPERTY_NAME, "")
- }
-
void 'Test schema per tenant'() {
when:"When there is no tenant"
Book.count()
diff --git a/grails-datamapping-core-test/src/test/groovy/grails/gorm/tests/CurrentTenantTransformSpec.groovy b/grails-datamapping-core-test/src/test/groovy/grails/gorm/tests/CurrentTenantTransformSpec.groovy
index df28c81f2b..d68e3cfdad 100644
--- a/grails-datamapping-core-test/src/test/groovy/grails/gorm/tests/CurrentTenantTransformSpec.groovy
+++ b/grails-datamapping-core-test/src/test/groovy/grails/gorm/tests/CurrentTenantTransformSpec.groovy
@@ -33,12 +33,14 @@ import org.grails.datastore.mapping.multitenancy.resolvers.SystemPropertyTenantR
import org.grails.datastore.mapping.simple.SimpleMapDatastore
import org.springframework.transaction.TransactionStatus
import spock.lang.AutoCleanup
+import spock.util.environment.RestoreSystemProperties
import spock.lang.Shared
import spock.lang.Specification
/**
* Created by graemerocher on 16/01/2017.
*/
+@RestoreSystemProperties
class CurrentTenantTransformSpec extends Specification {
@Shared @AutoCleanup SimpleMapDatastore datastore = new SimpleMapDatastore(
@@ -51,14 +53,6 @@ class CurrentTenantTransformSpec extends Specification {
Player
)
- void setup() {
- System.setProperty(SystemPropertyTenantResolver.PROPERTY_NAME, "")
- }
-
- void cleanup() {
- System.setProperty(SystemPropertyTenantResolver.PROPERTY_NAME, "")
- }
-
void "Test parsing of @WithoutTenant"() {
Class testServiceClass = new GroovyShell().evaluate('''
import grails.gorm.multitenancy.WithoutTenant
diff --git a/grails-datamapping-core-test/src/test/groovy/grails/gorm/tests/TenantServiceSpec.groovy b/grails-datamapping-core-test/src/test/groovy/grails/gorm/tests/TenantServiceSpec.groovy
index 77e1b40ddc..53a20219d6 100644
--- a/grails-datamapping-core-test/src/test/groovy/grails/gorm/tests/TenantServiceSpec.groovy
+++ b/grails-datamapping-core-test/src/test/groovy/grails/gorm/tests/TenantServiceSpec.groovy
@@ -29,12 +29,14 @@ import org.grails.datastore.mapping.multitenancy.exceptions.TenantNotFoundExcept
import org.grails.datastore.mapping.multitenancy.resolvers.SystemPropertyTenantResolver
import org.grails.datastore.mapping.simple.SimpleMapDatastore
import spock.lang.AutoCleanup
+import spock.util.environment.RestoreSystemProperties
import spock.lang.Shared
import spock.lang.Specification
/**
* Created by graemerocher on 11/01/2017.
*/
+@RestoreSystemProperties
class TenantServiceSpec extends Specification {
@Shared @AutoCleanup SimpleMapDatastore datastore = new SimpleMapDatastore(
@@ -45,13 +47,6 @@ class TenantServiceSpec extends Specification {
[ConnectionSource.DEFAULT, 'two'],
Team
)
- def setup() {
- System.setProperty(SystemPropertyTenantResolver.PROPERTY_NAME, "")
- }
-
- def cleanup() {
- System.setProperty(SystemPropertyTenantResolver.PROPERTY_NAME, "")
- }
void "test multi tenancy with in-memory datastore"() {
when:
diff --git a/grails-interceptors/src/test/groovy/org/grails/plugins/web/interceptors/UrlMappingMatcherSpec.groovy b/grails-interceptors/src/test/groovy/org/grails/plugins/web/interceptors/UrlMappingMatcherSpec.groovy
index 4e6bf65a94..de677844a2 100644
--- a/grails-interceptors/src/test/groovy/org/grails/plugins/web/interceptors/UrlMappingMatcherSpec.groovy
+++ b/grails-interceptors/src/test/groovy/org/grails/plugins/web/interceptors/UrlMappingMatcherSpec.groovy
@@ -22,13 +22,11 @@ import grails.artefact.Interceptor
import grails.util.Environment
import grails.web.mapping.UrlMappingInfo
import spock.lang.Issue
+import spock.util.environment.RestoreSystemProperties
import spock.lang.Specification
class UrlMappingMatcherSpec extends Specification {
- // Store original environment to restore in cleanup for parallel test isolation
- private String originalEnvironment
-
@Issue('https://github.com/apache/grails-core/issues/9179')
void 'test a matcher with a uri does not match all requests'() {
given:
@@ -42,10 +40,10 @@ class UrlMappingMatcherSpec extends Specification {
!matcher.doesMatch('/demo/index', mappingInfo)
}
+ @RestoreSystemProperties
@Issue("https://github.com/apache/grails-core/issues/9208")
void "test caching of results in production"() {
given:
- originalEnvironment = System.getProperty(Environment.KEY)
System.setProperty(Environment.KEY, "prod")
String controller = "foo"
String url = "/foo/test"
@@ -56,24 +54,14 @@ class UrlMappingMatcherSpec extends Specification {
def matcher = new UrlMappingMatcher(Mock(Interceptor))
matcher.matches(controller: controller)
-
then:
matcher.doesMatch(url, info)
-
when:
matcher = new UrlMappingMatcher(Mock(Interceptor))
matcher.matches(controller: 'bar')
then:
!matcher.doesMatch(url, info)
-
- cleanup:
- // Restore original environment value for parallel test isolation
- if (originalEnvironment != null) {
- System.setProperty(Environment.KEY, originalEnvironment)
- } else {
- System.clearProperty(Environment.KEY)
- }
}
}