You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@grails.apache.org by bo...@apache.org on 2026/03/11 19:13:38 UTC
(grails-core) 03/07: hibernate 7 GroovyChangeSpec
This is an automated email from the ASF dual-hosted git repository.
borinquenkid pushed a commit to branch 8.0.x-hibernate7-dev
in repository https://gitbox.apache.org/repos/asf/grails-core.git
commit 4ddb0f42f0fa5d8cf45955cd8f9ac79c39422e42
Author: Walter Duque de Estrada <wb...@mac.com>
AuthorDate: Tue Mar 10 20:26:02 2026 -0500
hibernate 7 GroovyChangeSpec
---
.../GroovyDiffToChangeLogCommandStep.groovy | 6 +-
.../GroovyDiffToChangeLogCommandStepSpec.groovy | 108 +++++++++++++++++++++
2 files changed, 113 insertions(+), 1 deletion(-)
diff --git a/grails-data-hibernate7/dbmigration/src/main/groovy/org/grails/plugins/databasemigration/liquibase/GroovyDiffToChangeLogCommandStep.groovy b/grails-data-hibernate7/dbmigration/src/main/groovy/org/grails/plugins/databasemigration/liquibase/GroovyDiffToChangeLogCommandStep.groovy
index a226fa5c29..f9c46a7fbe 100644
--- a/grails-data-hibernate7/dbmigration/src/main/groovy/org/grails/plugins/databasemigration/liquibase/GroovyDiffToChangeLogCommandStep.groovy
+++ b/grails-data-hibernate7/dbmigration/src/main/groovy/org/grails/plugins/databasemigration/liquibase/GroovyDiffToChangeLogCommandStep.groovy
@@ -48,7 +48,7 @@ class GroovyDiffToChangeLogCommandStep extends DiffChangelogCommandStep {
InternalSnapshotCommandStep.logUnsupportedDatabase(referenceDatabase, this.getClass())
- DiffCommandStep diffCommandStep = new DiffCommandStep()
+ DiffCommandStep diffCommandStep = createDiffCommandStep()
DiffResult diffResult = diffCommandStep.createDiffResult(resultsBuilder)
@@ -79,4 +79,8 @@ class GroovyDiffToChangeLogCommandStep extends DiffChangelogCommandStep {
return new String[][] { COMMAND_NAME }
}
+ protected static DiffCommandStep createDiffCommandStep() {
+ return new DiffCommandStep()
+ }
+
}
diff --git a/grails-data-hibernate7/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/liquibase/GroovyDiffToChangeLogCommandStepSpec.groovy b/grails-data-hibernate7/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/liquibase/GroovyDiffToChangeLogCommandStepSpec.groovy
new file mode 100644
index 0000000000..8b27135c6e
--- /dev/null
+++ b/grails-data-hibernate7/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/liquibase/GroovyDiffToChangeLogCommandStepSpec.groovy
@@ -0,0 +1,108 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.grails.plugins.databasemigration.liquibase
+
+import liquibase.command.CommandResultsBuilder
+import liquibase.command.CommandScope
+import liquibase.command.core.DiffChangelogCommandStep
+import liquibase.command.core.DiffCommandStep
+import liquibase.command.core.helpers.DiffOutputControlCommandStep
+import liquibase.command.core.helpers.ReferenceDbUrlConnectionCommandStep
+import liquibase.database.Database
+import liquibase.database.ObjectQuotingStrategy
+import liquibase.diff.DiffResult
+import liquibase.diff.output.DiffOutputControl
+import liquibase.diff.output.changelog.DiffToChangeLog
+import liquibase.serializer.ChangeLogSerializer
+import spock.lang.Specification
+
+class GroovyDiffToChangeLogCommandStepSpec extends Specification {
+
+ GroovyDiffToChangeLogCommandStep step = new GroovyDiffToChangeLogCommandStep()
+ CommandResultsBuilder resultsBuilder = Mock()
+ CommandScope commandScope = Mock()
+ Database database = Mock()
+ DiffOutputControl diffOutputControl = Mock()
+ DiffResult diffResult = Mock()
+ DiffToChangeLog diffToChangeLog = Mock()
+ DiffCommandStep diffCommandStep = Mock()
+
+ def "defineCommandNames returns correct name"() {
+ expect:
+ step.defineCommandNames() == [['groovyDiffChangelog'] as String[]] as String[][]
+ }
+
+ def "run executes diff and prints groovy changelog"() {
+ given:
+ resultsBuilder.getCommandScope() >> commandScope
+ commandScope.getArgumentValue(ReferenceDbUrlConnectionCommandStep.REFERENCE_DATABASE_ARG) >> database
+ commandScope.getArgumentValue(DiffChangelogCommandStep.CHANGELOG_FILE_ARG) >> null
+
+ resultsBuilder.getResult(DiffOutputControlCommandStep.DIFF_OUTPUT_CONTROL.getName()) >> diffOutputControl
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream()
+ resultsBuilder.getOutputStream() >> baos
+
+ database.getObjectQuotingStrategy() >> ObjectQuotingStrategy.LEGACY
+
+ GroovyDiffToChangeLogCommandStep stepSpy = Spy(GroovyDiffToChangeLogCommandStep)
+ stepSpy.createDiffCommandStep() >> diffCommandStep
+ stepSpy.createDiffToChangeLogObject(diffResult, diffOutputControl, false) >> diffToChangeLog
+
+ when:
+ stepSpy.run(resultsBuilder)
+
+ then:
+ 1 * diffCommandStep.createDiffResult(resultsBuilder) >> diffResult
+
+ 1 * database.setObjectQuotingStrategy(ObjectQuotingStrategy.QUOTE_ALL_OBJECTS)
+
+ 1 * diffToChangeLog.print(_ as PrintStream, _ as ChangeLogSerializer)
+
+ 1 * database.setObjectQuotingStrategy(ObjectQuotingStrategy.LEGACY)
+ 1 * resultsBuilder.addResult('statusCode', 0)
+ }
+
+ def "run executes diff and prints to file if specified"() {
+ given:
+ resultsBuilder.getCommandScope() >> commandScope
+ commandScope.getArgumentValue(ReferenceDbUrlConnectionCommandStep.REFERENCE_DATABASE_ARG) >> database
+ commandScope.getArgumentValue(DiffChangelogCommandStep.CHANGELOG_FILE_ARG) >> 'changelog.groovy'
+
+ resultsBuilder.getResult(DiffOutputControlCommandStep.DIFF_OUTPUT_CONTROL.getName()) >> diffOutputControl
+
+ resultsBuilder.getOutputStream() >> new ByteArrayOutputStream()
+
+ database.getObjectQuotingStrategy() >> ObjectQuotingStrategy.LEGACY
+
+ GroovyDiffToChangeLogCommandStep stepSpy = Spy(GroovyDiffToChangeLogCommandStep)
+ stepSpy.createDiffCommandStep() >> diffCommandStep
+ stepSpy.createDiffToChangeLogObject(diffResult, diffOutputControl, false) >> diffToChangeLog
+
+ when:
+ stepSpy.run(resultsBuilder)
+
+ then:
+ 1 * diffCommandStep.createDiffResult(resultsBuilder) >> diffResult
+
+ 1 * diffToChangeLog.print('changelog.groovy', _ as ChangeLogSerializer)
+
+ 1 * resultsBuilder.addResult('statusCode', 0)
+ }
+}