This is an automated email from the ASF dual-hosted git repository.
jamesfredley pushed a change to branch 7.1.x
in repository https://gitbox.apache.org/repos/asf/grails-core.git
from 1bbfd1607c Merge branch '7.0.x' into 7.1.x
add e69afe5d9d test(integration): Add comprehensive integration tests for
Grails features
add e4cb761c5d fix: Add Apache License headers and fix failing integration
tests
add e8adf0143f test: Review suggestions and stability improvements for
slow CI
add 0f21207d5f test(cache): Add comprehensive @Cacheable tests to
grails-test-examples
add 6b90174dfc refactor(test-examples): Use explicit params.subMap() for
data binding
add b585f97d2a test(integration): Add comprehensive tests for datasources,
external config, and plugins
add 4bf8d90c33 test(integration): Implement incomplete test assertions and
expand coverage
add 8b288c6a5b test(integration): Add comprehensive tests based on Grails
documentation
add b1389e7710 fix: Test stability and correctness improvements
add ea770fc500 Merge pull request #15348 from
apache/test/expand-integration-test-coverage
new e56812c8c7 Merge branch '7.0.x' into 7.1.x
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.../functionaltests/BookController.groovy | 11 +-
.../controllers/functionaltests/UrlMappings.groovy | 62 ++
.../async/AsyncTestController.groovy | 304 +++++++
.../binding/AdvancedDataBindingController.groovy | 306 +++++++
.../caching/CacheTestController.groovy | 131 +++
.../codecs/CodecTestController.groovy | 281 ++++++
.../commanddi/CommandDIController.groovy | 406 +++++++++
.../contentneg/ContentNegotiationController.groovy | 168 ++++
.../functionaltests/cors/CorsTestController.groovy | 113 +++
.../ErrorHandlingTestController.groovy | 215 +++++
.../fileupload/FileUploadTestController.groovy | 241 +++++
.../functionaltests/flow/FlowController.groovy | 245 +++++
.../flow/FlowTargetController.groovy | 52 ++
.../functionaltests/i18n/I18nTestController.groovy | 226 +++++
.../interceptors/ActionExcludeInterceptor.groovy} | 25 +-
.../interceptors/AdvancedMatchingController.groovy | 107 +++
.../AttributeSettingInterceptor.groovy} | 44 +-
.../interceptors/BlockingInterceptor.groovy} | 47 +-
.../ConditionalMatchInterceptor.groovy | 52 ++
.../interceptors/FirstInterceptor.groovy} | 38 +-
.../HttpMethodMatchingInterceptor.groovy} | 23 +-
.../interceptors/InterceptorTestController.groovy | 172 ++++
.../interceptors/MultipleRulesInterceptor.groovy} | 25 +-
.../NamespaceMatchingInterceptor.groovy} | 23 +-
.../interceptors/SecondInterceptor.groovy} | 38 +-
.../interceptors/SessionInterceptor.groovy} | 27 +-
.../interceptors/ThirdInterceptor.groovy} | 38 +-
.../interceptors/TimingInterceptor.groovy} | 44 +-
.../RequestResponseTestController.groovy | 270 ++++++
.../springevents/SpringEventController.groovy | 148 +++
.../taglib/TagLibTestController.groovy | 326 +++++++
.../urlmappings/UrlMappingsTestController.groovy | 167 ++++
.../domain/functionaltests/binding/Address.groovy} | 26 +-
.../functionaltests/binding/Contributor.groovy} | 22 +-
.../functionaltests/binding/Employee.groovy} | 62 +-
.../domain/functionaltests/binding/Project.groovy} | 25 +-
.../domain/functionaltests/binding/Team.groovy} | 23 +-
.../functionaltests/binding/TeamMember.groovy} | 25 +-
.../functionaltests/constraints/Appointment.groovy | 109 +++
.../functionaltests/constraints/PaymentInfo.groovy | 178 ++++
.../functionaltests/constraints/Product.groovy | 76 ++
.../constraints/Registration.groovy | 158 ++++
.../functionaltests/events/AuditedEntity.groovy | 108 +++
.../functionaltests/events/StatefulEntity.groovy | 81 ++
.../functionaltests/events/VetoableEntity.groovy | 67 ++
.../domain/functionaltests/gorm/Author.groovy | 62 ++
.../domain/functionaltests/gorm/GormBook.groovy | 70 ++
.../functionaltests/services/InventoryItem.groovy} | 28 +-
.../app1/grails-app/i18n/messages.properties | 9 +
.../app1/grails-app/i18n/messages_de.properties | 9 +
.../app1/grails-app/i18n/messages_fr.properties | 9 +
.../caching/CacheTestService.groovy | 133 +++
.../commanddi/NotificationService.groovy | 88 ++
.../commanddi/PricingService.groovy | 77 ++
.../commanddi/ValidationHelperService.groovy | 80 ++
.../services/AsyncProcessingService.groovy | 122 +++
.../services/InventoryService.groovy | 204 +++++
.../functionaltests/services/OrderService.groovy | 118 +++
.../springevents/EventListenerService.groovy | 169 ++++
.../springevents/EventPublisherService.groovy | 78 ++
.../functionaltests/taglib/CustomTagLib.groovy | 341 +++++++
.../grails-app/views/contentNegotiation/error.gsp | 29 +
.../grails-app/views/contentNegotiation/index.gsp | 34 +
.../views/tagLibTest/_simpleTemplate.gsp | 19 +
.../grails-app/views/tagLibTest/testAlertTag.gsp | 20 +
.../grails-app/views/tagLibTest/testAppInfoTag.gsp | 20 +
.../grails-app/views/tagLibTest/testBadgeTag.gsp | 20 +
.../views/tagLibTest/testBuiltInCheckBox.gsp | 20 +
.../views/tagLibTest/testBuiltInCollect.gsp | 20 +
.../views/tagLibTest/testBuiltInCookie.gsp | 20 +
.../views/tagLibTest/testBuiltInCreateLink.gsp | 21 +
.../views/tagLibTest/testBuiltInEach.gsp | 21 +
.../views/tagLibTest/testBuiltInFieldValue.gsp | 20 +
.../views/tagLibTest/testBuiltInFindAll.gsp | 20 +
.../views/tagLibTest/testBuiltInForm.gsp | 23 +
.../views/tagLibTest/testBuiltInFormatDate.gsp | 21 +
.../views/tagLibTest/testBuiltInFormatNumber.gsp | 21 +
.../views/tagLibTest/testBuiltInHeader.gsp | 20 +
.../views/tagLibTest/testBuiltInHiddenField.gsp | 20 +
.../grails-app/views/tagLibTest/testBuiltInIf.gsp | 24 +
.../views/tagLibTest/testBuiltInInclude.gsp | 20 +
.../views/tagLibTest/testBuiltInJoin.gsp | 20 +
.../views/tagLibTest/testBuiltInLink.gsp | 22 +
.../views/tagLibTest/testBuiltInMessage.gsp | 20 +
.../views/tagLibTest/testBuiltInPaginate.gsp | 20 +
.../views/tagLibTest/testBuiltInPasswordField.gsp | 20 +
.../views/tagLibTest/testBuiltInRadio.gsp | 22 +
.../views/tagLibTest/testBuiltInRender.gsp | 20 +
.../views/tagLibTest/testBuiltInResource.gsp | 20 +
.../views/tagLibTest/testBuiltInSelect.gsp | 20 +
.../grails-app/views/tagLibTest/testBuiltInSet.gsp | 23 +
.../views/tagLibTest/testBuiltInSortableColumn.gsp | 26 +
.../views/tagLibTest/testBuiltInTextArea.gsp | 20 +
.../views/tagLibTest/testBuiltInTextField.gsp | 20 +
.../views/tagLibTest/testBuiltInUploadForm.gsp | 23 +
.../views/tagLibTest/testBuiltInWhile.gsp | 21 +
.../views/tagLibTest/testConditionalTags.gsp | 21 +
.../views/tagLibTest/testCssClassTag.gsp | 20 +
.../views/tagLibTest/testDefinitionListTag.gsp | 20 +
.../views/tagLibTest/testEncodingTags.gsp | 22 +
.../views/tagLibTest/testFormattedTag.gsp | 20 +
.../grails-app/views/tagLibTest/testHelloTag.gsp | 20 +
.../grails-app/views/tagLibTest/testIterateTag.gsp | 20 +
.../grails-app/views/tagLibTest/testJoinTag.gsp | 20 +
.../grails-app/views/tagLibTest/testListTag.gsp | 20 +
.../grails-app/views/tagLibTest/testNestedTags.gsp | 22 +
.../grails-app/views/tagLibTest/testPanelTag.gsp | 20 +
.../views/tagLibTest/testProgressTag.gsp | 20 +
.../grails-app/views/tagLibTest/testRawTag.gsp | 20 +
.../grails-app/views/tagLibTest/testRepeatTag.gsp | 20 +
.../views/tagLibTest/testRequestInfoTag.gsp | 20 +
.../views/tagLibTest/testSessionValueTag.gsp | 20 +
.../grails-app/views/tagLibTest/testSetVarTag.gsp | 20 +
.../views/tagLibTest/testTagsWithModel.gsp | 26 +
.../grails-app/views/tagLibTest/testWrapperTag.gsp | 20 +
.../functionaltests/async/AsyncPromiseSpec.groovy | 395 ++++++++
.../binding/AdvancedDataBindingSpec.groovy | 451 ++++++++++
.../functionaltests/caching/CachingSpec.groovy | 406 +++++++++
.../codecs/SecurityCodecsSpec.groovy | 423 +++++++++
.../commanddi/CommandObjectDISpec.groovy | 386 ++++++++
.../constraints/ConstraintValidationSpec.groovy | 996 +++++++++++++++++++++
.../contentneg/ContentNegotiationSpec.groovy | 411 +++++++++
.../functionaltests/cors/CorsAdvancedSpec.groovy | 301 +++++++
.../errorhandling/ErrorHandlingSpec.groovy | 217 +++++
.../functionaltests/events/DomainEventsSpec.groovy | 574 ++++++++++++
.../fileupload/FileUploadSpec.groovy | 395 ++++++++
.../flow/FlashChainForwardSpec.groovy | 338 +++++++
.../functionaltests/gorm/GormAdvancedSpec.groovy | 719 +++++++++++++++
.../i18n/InternationalizationSpec.groovy | 445 +++++++++
.../InterceptorAdvancedMatchingSpec.groovy | 275 ++++++
.../interceptors/InterceptorOrderingSpec.groovy | 315 +++++++
.../requestresponse/RequestResponseSpec.groovy | 386 ++++++++
.../services/ServiceIntegrationSpec.groovy | 379 ++++++++
.../springevents/SpringEventsSpec.groovy | 333 +++++++
.../functionaltests/taglib/TagLibSpec.groovy | 968 ++++++++++++++++++++
.../urlmappings/UrlMappingsSpec.groovy | 352 ++++++++
.../springevents/CustomApplicationEvent.groovy} | 26 +-
.../springevents/PriorityEvent.groovy} | 24 +-
.../springevents/UserActionEvent.groovy} | 26 +-
.../functionaltests/BookControllerSpec.groovy | 10 +-
.../services/pubsub/demo/TotalService.groovy | 12 +-
.../groovy/pubsub/demo/AsyncEventsSpec.groovy | 203 +++++
.../groovy/pubsub/demo/PubSubSpec.groovy | 37 +-
.../main/groovy/pubsub/demo/BookSubscriber.groovy | 16 +-
grails-test-examples/cache/build.gradle | 2 +
.../com/demo/AdvancedCachingController.groovy | 123 +++
.../controllers/com/demo/UrlMappings.groovy | 54 ++
.../com/demo/AdvancedCachingService.groovy | 158 ++++
.../com/demo/AdvancedCachingIntegrationSpec.groovy | 323 +++++++
.../com/demo/AdvancedCachingServiceSpec.groovy | 316 +++++++
.../CrossDatasourceTransactionSpec.groovy | 284 ++++++
.../functionaltests/DatasourceSwitchingSpec.groovy | 370 ++++++++
.../functionaltests/MultipleDataSourcesSpec.groovy | 13 +-
.../test/app/ConfigurationPrioritySpec.groovy | 249 ++++++
.../test/app/EnvironmentConfigurationSpec.groovy | 223 +++++
grails-test-examples/gorm/build.gradle | 5 +-
.../gorm/AuthorController.groovy} | 17 +-
.../gorm/BookController.groovy} | 17 +-
.../gorm/UrlMappings.groovy} | 18 +-
.../grails-app/domain/gorm/AuditedEntity.groovy | 148 +++
.../domain/gorm/Author.groovy} | 39 +-
.../gorm/grails-app/domain/gorm/Book.groovy | 33 +-
.../gorm}/grails-app/i18n/messages.properties | 0
.../services/gorm/BookDataService.groovy | 151 ++++
.../services/gorm/TransactionTestService.groovy | 187 ++++
.../gorm/grails-app/views/error.gsp | 48 +
.../gorm/grails-app/views/index.gsp | 32 +
.../gorm/grails-app/views/notFound.gsp | 28 +
.../groovy/gorm/FieldsValidationSpec.groovy | 552 ++++++++++++
.../groovy/gorm/GormCascadeOperationsSpec.groovy | 357 ++++++++
.../groovy/gorm/GormCriteriaQueriesSpec.groovy | 614 +++++++++++++
.../groovy/gorm/GormDataServicesSpec.groovy | 338 +++++++
.../groovy/gorm/GormEventsSpec.groovy | 377 ++++++++
.../groovy/gorm/GormWhereQueryAdvancedSpec.groovy | 373 ++++++++
.../groovy/gorm/ScaffoldingFunctionalSpec.groovy | 293 ++++++
.../groovy/gorm/TransactionPropagationSpec.groovy | 268 ++++++
.../integration-test/groovy/gorm/UserSpec.groovy | 33 +-
.../groovy/gorm/ValidationConstraintsSpec.groovy | 496 ++++++++++
.../groovy/gorm/pages/AuthorPages.groovy | 75 ++
.../groovy/gorm/pages/BookPages.groovy | 79 ++
.../example/grails/layout/TagLibController.groovy | 95 ++
.../grails-app/views/tagLib/_partial.gsp | 21 +
.../grails-app/views/tagLib/collectTag.gsp | 29 +
.../grails-app/views/tagLib/createLinkTag.gsp | 30 +
.../gsp-layout/grails-app/views/tagLib/eachTag.gsp | 33 +
.../gsp-layout/grails-app/views/tagLib/elseTag.gsp | 33 +
.../grails-app/views/tagLib/encodeTags.gsp | 30 +
.../gsp-layout/grails-app/views/tagLib/formTag.gsp | 50 ++
.../grails-app/views/tagLib/formatTags.gsp | 30 +
.../gsp-layout/grails-app/views/tagLib/ifTag.gsp | 31 +
.../gsp-layout/grails-app/views/tagLib/index.gsp | 32 +
.../gsp-layout/grails-app/views/tagLib/joinTag.gsp | 30 +
.../gsp-layout/grails-app/views/tagLib/linkTag.gsp | 30 +
.../grails-app/views/tagLib/renderTag.gsp | 31 +
.../gsp-layout/grails-app/views/tagLib/setTag.gsp | 35 +
.../integration-test/groovy/GspTagLibSpec.groovy | 275 ++++++
.../controllers/example/BookController.groovy | 8 +-
.../functional/tests/BookController.groovy | 8 +-
.../functional/tests/BookControllerUnitSpec.groovy | 10 +-
.../controllers/example/BookController.groovy | 8 +-
.../schemapertenant/BookController.groovy | 8 +-
.../groovy/micronaut/MicronautContextSpec.groovy | 92 ++
.../groovy/micronaut/MicronautQualifierSpec.groovy | 106 +++
.../functional/tests/BookController.groovy | 8 +-
.../examples/mongo/tenant/BookController.groovy | 8 +-
.../functional/tests/AuthorController.groovy | 8 +-
.../functional/tests/BookController.groovy | 8 +-
grails-test-examples/plugins/exploded/build.gradle | 3 +
.../groovy/exploded/PluginDependencySpec.groovy | 223 +++++
.../plugins/loadfirst/build.gradle | 3 +
.../groovy/loadfirst/PluginLifecycleSpec.groovy | 236 +++++
.../plugins/loadsecond/build.gradle | 3 +
.../groovy/loadsecond/PluginLoadOrderSpec.groovy | 222 +++++
.../{gorm => scaffolding-fields}/build.gradle | 33 +-
.../grails-app/conf/application.yml | 106 +++
.../scaffoldingfields/DepartmentController.groovy} | 20 +-
.../scaffoldingfields/EmployeeController.groovy} | 20 +-
.../scaffoldingfields/ProjectController.groovy} | 20 +-
.../scaffoldingfields/UrlMappings.groovy} | 20 +-
.../domain/scaffoldingfields/Address.groovy} | 26 +-
.../domain/scaffoldingfields/Department.groovy} | 22 +-
.../domain/scaffoldingfields/Employee.groovy | 129 +++
.../domain/scaffoldingfields/Project.groovy} | 47 +-
.../grails-app/i18n/messages.properties | 0
.../init/scaffoldingfields/Application.groovy} | 17 +-
.../init/scaffoldingfields/BootStrap.groovy | 114 +++
.../grails-app/views/_fields/default/_wrapper.gsp | 38 +
.../views/_fields/employee/biography/_wrapper.gsp | 38 +
.../views/_fields/employee/email/_wrapper.gsp | 39 +
.../scaffoldingfields/CrudFunctionalSpec.groovy | 269 ++++++
.../scaffoldingfields/CustomTemplatesSpec.groovy | 171 ++++
.../groovy/scaffoldingfields/FieldTypesSpec.groovy | 250 ++++++
.../groovy/scaffoldingfields/PaginationSpec.groovy | 502 +++++++++++
.../RelationshipsFunctionalSpec.groovy | 534 +++++++++++
.../ValidationFunctionalSpec.groovy | 861 ++++++++++++++++++
.../scaffoldingfields/pages/DepartmentPages.groovy | 96 ++
.../scaffoldingfields/pages/EmployeePages.groovy | 139 +++
.../scaffoldingfields/pages/ProjectPages.groovy | 105 +++
.../pages/ScaffoldCreatePage.groovy | 147 +++
.../pages/ScaffoldEditPage.groovy | 159 ++++
.../pages/ScaffoldListPage.groovy | 112 +++
.../pages/ScaffoldShowPage.groovy | 106 +++
settings.gradle | 2 +
243 files changed, 30015 insertions(+), 489 deletions(-)
create mode 100644
grails-test-examples/app1/grails-app/controllers/functionaltests/async/AsyncTestController.groovy
create mode 100644
grails-test-examples/app1/grails-app/controllers/functionaltests/binding/AdvancedDataBindingController.groovy
create mode 100644
grails-test-examples/app1/grails-app/controllers/functionaltests/caching/CacheTestController.groovy
create mode 100644
grails-test-examples/app1/grails-app/controllers/functionaltests/codecs/CodecTestController.groovy
create mode 100644
grails-test-examples/app1/grails-app/controllers/functionaltests/commanddi/CommandDIController.groovy
create mode 100644
grails-test-examples/app1/grails-app/controllers/functionaltests/contentneg/ContentNegotiationController.groovy
create mode 100644
grails-test-examples/app1/grails-app/controllers/functionaltests/cors/CorsTestController.groovy
create mode 100644
grails-test-examples/app1/grails-app/controllers/functionaltests/errorhandling/ErrorHandlingTestController.groovy
create mode 100644
grails-test-examples/app1/grails-app/controllers/functionaltests/fileupload/FileUploadTestController.groovy
create mode 100644
grails-test-examples/app1/grails-app/controllers/functionaltests/flow/FlowController.groovy
create mode 100644
grails-test-examples/app1/grails-app/controllers/functionaltests/flow/FlowTargetController.groovy
create mode 100644
grails-test-examples/app1/grails-app/controllers/functionaltests/i18n/I18nTestController.groovy
copy grails-test-examples/{gorm/grails-app/domain/gorm/Book.groovy =>
app1/grails-app/controllers/functionaltests/interceptors/ActionExcludeInterceptor.groovy}
(63%)
create mode 100644
grails-test-examples/app1/grails-app/controllers/functionaltests/interceptors/AdvancedMatchingController.groovy
copy
grails-test-examples/{async-events-pubsub-demo/src/main/groovy/pubsub/demo/BookSubscriber.groovy
=>
app1/grails-app/controllers/functionaltests/interceptors/AttributeSettingInterceptor.groovy}
(52%)
copy
grails-test-examples/{async-events-pubsub-demo/grails-app/services/pubsub/demo/TotalService.groovy
=>
app1/grails-app/controllers/functionaltests/interceptors/BlockingInterceptor.groovy}
(51%)
create mode 100644
grails-test-examples/app1/grails-app/controllers/functionaltests/interceptors/ConditionalMatchInterceptor.groovy
copy
grails-test-examples/{gorm/src/integration-test/groovy/gorm/UserSpec.groovy =>
app1/grails-app/controllers/functionaltests/interceptors/FirstInterceptor.groovy}
(55%)
copy grails-test-examples/{gorm/grails-app/domain/gorm/Book.groovy =>
app1/grails-app/controllers/functionaltests/interceptors/HttpMethodMatchingInterceptor.groovy}
(66%)
create mode 100644
grails-test-examples/app1/grails-app/controllers/functionaltests/interceptors/InterceptorTestController.groovy
copy grails-test-examples/{gorm/grails-app/domain/gorm/Book.groovy =>
app1/grails-app/controllers/functionaltests/interceptors/MultipleRulesInterceptor.groovy}
(61%)
copy grails-test-examples/{gorm/grails-app/domain/gorm/Book.groovy =>
app1/grails-app/controllers/functionaltests/interceptors/NamespaceMatchingInterceptor.groovy}
(67%)
copy
grails-test-examples/{gorm/src/integration-test/groovy/gorm/UserSpec.groovy =>
app1/grails-app/controllers/functionaltests/interceptors/SecondInterceptor.groovy}
(54%)
copy grails-test-examples/{gorm/grails-app/domain/gorm/Book.groovy =>
app1/grails-app/controllers/functionaltests/interceptors/SessionInterceptor.groovy}
(58%)
copy
grails-test-examples/{gorm/src/integration-test/groovy/gorm/UserSpec.groovy =>
app1/grails-app/controllers/functionaltests/interceptors/ThirdInterceptor.groovy}
(55%)
copy
grails-test-examples/{async-events-pubsub-demo/src/main/groovy/pubsub/demo/BookSubscriber.groovy
=>
app1/grails-app/controllers/functionaltests/interceptors/TimingInterceptor.groovy}
(51%)
create mode 100644
grails-test-examples/app1/grails-app/controllers/functionaltests/requestresponse/RequestResponseTestController.groovy
create mode 100644
grails-test-examples/app1/grails-app/controllers/functionaltests/springevents/SpringEventController.groovy
create mode 100644
grails-test-examples/app1/grails-app/controllers/functionaltests/taglib/TagLibTestController.groovy
create mode 100644
grails-test-examples/app1/grails-app/controllers/functionaltests/urlmappings/UrlMappingsTestController.groovy
copy grails-test-examples/{gorm/grails-app/domain/gorm/Book.groovy =>
app1/grails-app/domain/functionaltests/binding/Address.groovy} (69%)
copy grails-test-examples/{gorm/grails-app/domain/gorm/Book.groovy =>
app1/grails-app/domain/functionaltests/binding/Contributor.groovy} (76%)
copy
grails-test-examples/{async-events-pubsub-demo/src/main/groovy/pubsub/demo/BookSubscriber.groovy
=> app1/grails-app/domain/functionaltests/binding/Employee.groovy} (50%)
copy grails-test-examples/{gorm/grails-app/domain/gorm/Book.groovy =>
app1/grails-app/domain/functionaltests/binding/Project.groovy} (72%)
copy grails-test-examples/{gorm/grails-app/domain/gorm/Book.groovy =>
app1/grails-app/domain/functionaltests/binding/Team.groovy} (77%)
copy grails-test-examples/{gorm/grails-app/domain/gorm/Book.groovy =>
app1/grails-app/domain/functionaltests/binding/TeamMember.groovy} (73%)
create mode 100644
grails-test-examples/app1/grails-app/domain/functionaltests/constraints/Appointment.groovy
create mode 100644
grails-test-examples/app1/grails-app/domain/functionaltests/constraints/PaymentInfo.groovy
create mode 100644
grails-test-examples/app1/grails-app/domain/functionaltests/constraints/Product.groovy
create mode 100644
grails-test-examples/app1/grails-app/domain/functionaltests/constraints/Registration.groovy
create mode 100644
grails-test-examples/app1/grails-app/domain/functionaltests/events/AuditedEntity.groovy
create mode 100644
grails-test-examples/app1/grails-app/domain/functionaltests/events/StatefulEntity.groovy
create mode 100644
grails-test-examples/app1/grails-app/domain/functionaltests/events/VetoableEntity.groovy
create mode 100644
grails-test-examples/app1/grails-app/domain/functionaltests/gorm/Author.groovy
create mode 100644
grails-test-examples/app1/grails-app/domain/functionaltests/gorm/GormBook.groovy
copy grails-test-examples/{gorm/grails-app/domain/gorm/Book.groovy =>
app1/grails-app/domain/functionaltests/services/InventoryItem.groovy} (64%)
create mode 100644
grails-test-examples/app1/grails-app/services/functionaltests/caching/CacheTestService.groovy
create mode 100644
grails-test-examples/app1/grails-app/services/functionaltests/commanddi/NotificationService.groovy
create mode 100644
grails-test-examples/app1/grails-app/services/functionaltests/commanddi/PricingService.groovy
create mode 100644
grails-test-examples/app1/grails-app/services/functionaltests/commanddi/ValidationHelperService.groovy
create mode 100644
grails-test-examples/app1/grails-app/services/functionaltests/services/AsyncProcessingService.groovy
create mode 100644
grails-test-examples/app1/grails-app/services/functionaltests/services/InventoryService.groovy
create mode 100644
grails-test-examples/app1/grails-app/services/functionaltests/services/OrderService.groovy
create mode 100644
grails-test-examples/app1/grails-app/services/functionaltests/springevents/EventListenerService.groovy
create mode 100644
grails-test-examples/app1/grails-app/services/functionaltests/springevents/EventPublisherService.groovy
create mode 100644
grails-test-examples/app1/grails-app/taglib/functionaltests/taglib/CustomTagLib.groovy
create mode 100644
grails-test-examples/app1/grails-app/views/contentNegotiation/error.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/contentNegotiation/index.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/_simpleTemplate.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testAlertTag.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testAppInfoTag.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testBadgeTag.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testBuiltInCheckBox.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testBuiltInCollect.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testBuiltInCookie.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testBuiltInCreateLink.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testBuiltInEach.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testBuiltInFieldValue.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testBuiltInFindAll.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testBuiltInForm.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testBuiltInFormatDate.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testBuiltInFormatNumber.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testBuiltInHeader.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testBuiltInHiddenField.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testBuiltInIf.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testBuiltInInclude.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testBuiltInJoin.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testBuiltInLink.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testBuiltInMessage.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testBuiltInPaginate.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testBuiltInPasswordField.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testBuiltInRadio.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testBuiltInRender.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testBuiltInResource.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testBuiltInSelect.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testBuiltInSet.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testBuiltInSortableColumn.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testBuiltInTextArea.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testBuiltInTextField.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testBuiltInUploadForm.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testBuiltInWhile.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testConditionalTags.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testCssClassTag.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testDefinitionListTag.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testEncodingTags.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testFormattedTag.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testHelloTag.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testIterateTag.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testJoinTag.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testListTag.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testNestedTags.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testPanelTag.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testProgressTag.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testRawTag.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testRepeatTag.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testRequestInfoTag.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testSessionValueTag.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testSetVarTag.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testTagsWithModel.gsp
create mode 100644
grails-test-examples/app1/grails-app/views/tagLibTest/testWrapperTag.gsp
create mode 100644
grails-test-examples/app1/src/integration-test/groovy/functionaltests/async/AsyncPromiseSpec.groovy
create mode 100644
grails-test-examples/app1/src/integration-test/groovy/functionaltests/binding/AdvancedDataBindingSpec.groovy
create mode 100644
grails-test-examples/app1/src/integration-test/groovy/functionaltests/caching/CachingSpec.groovy
create mode 100644
grails-test-examples/app1/src/integration-test/groovy/functionaltests/codecs/SecurityCodecsSpec.groovy
create mode 100644
grails-test-examples/app1/src/integration-test/groovy/functionaltests/commanddi/CommandObjectDISpec.groovy
create mode 100644
grails-test-examples/app1/src/integration-test/groovy/functionaltests/constraints/ConstraintValidationSpec.groovy
create mode 100644
grails-test-examples/app1/src/integration-test/groovy/functionaltests/contentneg/ContentNegotiationSpec.groovy
create mode 100644
grails-test-examples/app1/src/integration-test/groovy/functionaltests/cors/CorsAdvancedSpec.groovy
create mode 100644
grails-test-examples/app1/src/integration-test/groovy/functionaltests/errorhandling/ErrorHandlingSpec.groovy
create mode 100644
grails-test-examples/app1/src/integration-test/groovy/functionaltests/events/DomainEventsSpec.groovy
create mode 100644
grails-test-examples/app1/src/integration-test/groovy/functionaltests/fileupload/FileUploadSpec.groovy
create mode 100644
grails-test-examples/app1/src/integration-test/groovy/functionaltests/flow/FlashChainForwardSpec.groovy
create mode 100644
grails-test-examples/app1/src/integration-test/groovy/functionaltests/gorm/GormAdvancedSpec.groovy
create mode 100644
grails-test-examples/app1/src/integration-test/groovy/functionaltests/i18n/InternationalizationSpec.groovy
create mode 100644
grails-test-examples/app1/src/integration-test/groovy/functionaltests/interceptors/InterceptorAdvancedMatchingSpec.groovy
create mode 100644
grails-test-examples/app1/src/integration-test/groovy/functionaltests/interceptors/InterceptorOrderingSpec.groovy
create mode 100644
grails-test-examples/app1/src/integration-test/groovy/functionaltests/requestresponse/RequestResponseSpec.groovy
create mode 100644
grails-test-examples/app1/src/integration-test/groovy/functionaltests/services/ServiceIntegrationSpec.groovy
create mode 100644
grails-test-examples/app1/src/integration-test/groovy/functionaltests/springevents/SpringEventsSpec.groovy
create mode 100644
grails-test-examples/app1/src/integration-test/groovy/functionaltests/taglib/TagLibSpec.groovy
create mode 100644
grails-test-examples/app1/src/integration-test/groovy/functionaltests/urlmappings/UrlMappingsSpec.groovy
copy grails-test-examples/{gorm/grails-app/domain/gorm/Book.groovy =>
app1/src/main/groovy/functionaltests/springevents/CustomApplicationEvent.groovy}
(63%)
copy grails-test-examples/{gorm/grails-app/domain/gorm/Book.groovy =>
app1/src/main/groovy/functionaltests/springevents/PriorityEvent.groovy} (69%)
copy grails-test-examples/{gorm/grails-app/domain/gorm/Book.groovy =>
app1/src/main/groovy/functionaltests/springevents/UserActionEvent.groovy} (62%)
create mode 100644
grails-test-examples/async-events-pubsub-demo/src/integration-test/groovy/pubsub/demo/AsyncEventsSpec.groovy
create mode 100644
grails-test-examples/cache/grails-app/controllers/com/demo/AdvancedCachingController.groovy
create mode 100644
grails-test-examples/cache/grails-app/controllers/com/demo/UrlMappings.groovy
create mode 100644
grails-test-examples/cache/grails-app/services/com/demo/AdvancedCachingService.groovy
create mode 100644
grails-test-examples/cache/src/integration-test/groovy/com/demo/AdvancedCachingIntegrationSpec.groovy
create mode 100644
grails-test-examples/cache/src/test/groovy/com/demo/AdvancedCachingServiceSpec.groovy
create mode 100644
grails-test-examples/datasources/src/integration-test/groovy/functionaltests/CrossDatasourceTransactionSpec.groovy
create mode 100644
grails-test-examples/datasources/src/integration-test/groovy/functionaltests/DatasourceSwitchingSpec.groovy
create mode 100644
grails-test-examples/external-configuration/src/integration-test/groovy/test/app/ConfigurationPrioritySpec.groovy
create mode 100644
grails-test-examples/external-configuration/src/integration-test/groovy/test/app/EnvironmentConfigurationSpec.groovy
copy grails-test-examples/gorm/grails-app/{domain/gorm/Book.groovy =>
controllers/gorm/AuthorController.groovy} (83%)
copy grails-test-examples/gorm/grails-app/{domain/gorm/Book.groovy =>
controllers/gorm/BookController.groovy} (82%)
copy grails-test-examples/gorm/grails-app/{domain/gorm/Book.groovy =>
controllers/gorm/UrlMappings.groovy} (75%)
create mode 100644
grails-test-examples/gorm/grails-app/domain/gorm/AuditedEntity.groovy
copy
grails-test-examples/gorm/{src/integration-test/groovy/gorm/UserSpec.groovy =>
grails-app/domain/gorm/Author.groovy} (57%)
copy {grails-data-graphql/examples/grails-docs-app =>
grails-test-examples/gorm}/grails-app/i18n/messages.properties (100%)
create mode 100644
grails-test-examples/gorm/grails-app/services/gorm/BookDataService.groovy
create mode 100644
grails-test-examples/gorm/grails-app/services/gorm/TransactionTestService.groovy
create mode 100644 grails-test-examples/gorm/grails-app/views/error.gsp
create mode 100644 grails-test-examples/gorm/grails-app/views/index.gsp
create mode 100644 grails-test-examples/gorm/grails-app/views/notFound.gsp
create mode 100644
grails-test-examples/gorm/src/integration-test/groovy/gorm/FieldsValidationSpec.groovy
create mode 100644
grails-test-examples/gorm/src/integration-test/groovy/gorm/GormCascadeOperationsSpec.groovy
create mode 100644
grails-test-examples/gorm/src/integration-test/groovy/gorm/GormCriteriaQueriesSpec.groovy
create mode 100644
grails-test-examples/gorm/src/integration-test/groovy/gorm/GormDataServicesSpec.groovy
create mode 100644
grails-test-examples/gorm/src/integration-test/groovy/gorm/GormEventsSpec.groovy
create mode 100644
grails-test-examples/gorm/src/integration-test/groovy/gorm/GormWhereQueryAdvancedSpec.groovy
create mode 100644
grails-test-examples/gorm/src/integration-test/groovy/gorm/ScaffoldingFunctionalSpec.groovy
create mode 100644
grails-test-examples/gorm/src/integration-test/groovy/gorm/TransactionPropagationSpec.groovy
create mode 100644
grails-test-examples/gorm/src/integration-test/groovy/gorm/ValidationConstraintsSpec.groovy
create mode 100644
grails-test-examples/gorm/src/integration-test/groovy/gorm/pages/AuthorPages.groovy
create mode 100644
grails-test-examples/gorm/src/integration-test/groovy/gorm/pages/BookPages.groovy
create mode 100644
grails-test-examples/gsp-layout/grails-app/controllers/org/example/grails/layout/TagLibController.groovy
create mode 100644
grails-test-examples/gsp-layout/grails-app/views/tagLib/_partial.gsp
create mode 100644
grails-test-examples/gsp-layout/grails-app/views/tagLib/collectTag.gsp
create mode 100644
grails-test-examples/gsp-layout/grails-app/views/tagLib/createLinkTag.gsp
create mode 100644
grails-test-examples/gsp-layout/grails-app/views/tagLib/eachTag.gsp
create mode 100644
grails-test-examples/gsp-layout/grails-app/views/tagLib/elseTag.gsp
create mode 100644
grails-test-examples/gsp-layout/grails-app/views/tagLib/encodeTags.gsp
create mode 100644
grails-test-examples/gsp-layout/grails-app/views/tagLib/formTag.gsp
create mode 100644
grails-test-examples/gsp-layout/grails-app/views/tagLib/formatTags.gsp
create mode 100644
grails-test-examples/gsp-layout/grails-app/views/tagLib/ifTag.gsp
create mode 100644
grails-test-examples/gsp-layout/grails-app/views/tagLib/index.gsp
create mode 100644
grails-test-examples/gsp-layout/grails-app/views/tagLib/joinTag.gsp
create mode 100644
grails-test-examples/gsp-layout/grails-app/views/tagLib/linkTag.gsp
create mode 100644
grails-test-examples/gsp-layout/grails-app/views/tagLib/renderTag.gsp
create mode 100644
grails-test-examples/gsp-layout/grails-app/views/tagLib/setTag.gsp
create mode 100644
grails-test-examples/gsp-layout/src/integration-test/groovy/GspTagLibSpec.groovy
create mode 100644
grails-test-examples/micronaut/src/integration-test/groovy/micronaut/MicronautContextSpec.groovy
create mode 100644
grails-test-examples/micronaut/src/integration-test/groovy/micronaut/MicronautQualifierSpec.groovy
create mode 100644
grails-test-examples/plugins/exploded/src/integration-test/groovy/exploded/PluginDependencySpec.groovy
create mode 100644
grails-test-examples/plugins/loadfirst/src/integration-test/groovy/loadfirst/PluginLifecycleSpec.groovy
create mode 100644
grails-test-examples/plugins/loadsecond/src/integration-test/groovy/loadsecond/PluginLoadOrderSpec.groovy
copy grails-test-examples/{gorm => scaffolding-fields}/build.gradle (69%)
create mode 100644
grails-test-examples/scaffolding-fields/grails-app/conf/application.yml
copy grails-test-examples/{gorm/grails-app/domain/gorm/Book.groovy =>
scaffolding-fields/grails-app/controllers/scaffoldingfields/DepartmentController.groovy}
(71%)
copy grails-test-examples/{gorm/grails-app/domain/gorm/Book.groovy =>
scaffolding-fields/grails-app/controllers/scaffoldingfields/EmployeeController.groovy}
(72%)
copy grails-test-examples/{gorm/grails-app/domain/gorm/Book.groovy =>
scaffolding-fields/grails-app/controllers/scaffoldingfields/ProjectController.groovy}
(72%)
copy grails-test-examples/{gorm/grails-app/domain/gorm/Book.groovy =>
scaffolding-fields/grails-app/controllers/scaffoldingfields/UrlMappings.groovy}
(73%)
copy grails-test-examples/{gorm/grails-app/domain/gorm/Book.groovy =>
scaffolding-fields/grails-app/domain/scaffoldingfields/Address.groovy} (60%)
copy grails-test-examples/{gorm/grails-app/domain/gorm/Book.groovy =>
scaffolding-fields/grails-app/domain/scaffoldingfields/Department.groovy} (66%)
create mode 100644
grails-test-examples/scaffolding-fields/grails-app/domain/scaffoldingfields/Employee.groovy
copy
grails-test-examples/{datasources/src/integration-test/groovy/functionaltests/MultipleDataSourcesSpec.groovy
=> scaffolding-fields/grails-app/domain/scaffoldingfields/Project.groovy} (51%)
copy {grails-data-graphql/examples/grails-docs-app =>
grails-test-examples/scaffolding-fields}/grails-app/i18n/messages.properties
(100%)
copy grails-test-examples/{gorm/grails-app/domain/gorm/Book.groovy =>
scaffolding-fields/grails-app/init/scaffoldingfields/Application.groovy} (74%)
create mode 100644
grails-test-examples/scaffolding-fields/grails-app/init/scaffoldingfields/BootStrap.groovy
create mode 100644
grails-test-examples/scaffolding-fields/grails-app/views/_fields/default/_wrapper.gsp
create mode 100644
grails-test-examples/scaffolding-fields/grails-app/views/_fields/employee/biography/_wrapper.gsp
create mode 100644
grails-test-examples/scaffolding-fields/grails-app/views/_fields/employee/email/_wrapper.gsp
create mode 100644
grails-test-examples/scaffolding-fields/src/integration-test/groovy/scaffoldingfields/CrudFunctionalSpec.groovy
create mode 100644
grails-test-examples/scaffolding-fields/src/integration-test/groovy/scaffoldingfields/CustomTemplatesSpec.groovy
create mode 100644
grails-test-examples/scaffolding-fields/src/integration-test/groovy/scaffoldingfields/FieldTypesSpec.groovy
create mode 100644
grails-test-examples/scaffolding-fields/src/integration-test/groovy/scaffoldingfields/PaginationSpec.groovy
create mode 100644
grails-test-examples/scaffolding-fields/src/integration-test/groovy/scaffoldingfields/RelationshipsFunctionalSpec.groovy
create mode 100644
grails-test-examples/scaffolding-fields/src/integration-test/groovy/scaffoldingfields/ValidationFunctionalSpec.groovy
create mode 100644
grails-test-examples/scaffolding-fields/src/integration-test/groovy/scaffoldingfields/pages/DepartmentPages.groovy
create mode 100644
grails-test-examples/scaffolding-fields/src/integration-test/groovy/scaffoldingfields/pages/EmployeePages.groovy
create mode 100644
grails-test-examples/scaffolding-fields/src/integration-test/groovy/scaffoldingfields/pages/ProjectPages.groovy
create mode 100644
grails-test-examples/scaffolding-fields/src/integration-test/groovy/scaffoldingfields/pages/ScaffoldCreatePage.groovy
create mode 100644
grails-test-examples/scaffolding-fields/src/integration-test/groovy/scaffoldingfields/pages/ScaffoldEditPage.groovy
create mode 100644
grails-test-examples/scaffolding-fields/src/integration-test/groovy/scaffoldingfields/pages/ScaffoldListPage.groovy
create mode 100644
grails-test-examples/scaffolding-fields/src/integration-test/groovy/scaffoldingfields/pages/ScaffoldShowPage.groovy