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

Reply via email to