diff --git a/src/groovy/grails/plugin/cucumber/RuntimeOptionsBuilder.groovy b/src/groovy/grails/plugin/cucumber/RuntimeOptionsBuilder.groovy index 8e3009c..61dfb6d 100644 --- a/src/groovy/grails/plugin/cucumber/RuntimeOptionsBuilder.groovy +++ b/src/groovy/grails/plugin/cucumber/RuntimeOptionsBuilder.groovy @@ -28,7 +28,9 @@ class RuntimeOptionsBuilder { RuntimeOptions init (RuntimeOptions options, Map args) { addTags (options) + clearDefaultPlugins (options) addFormatter (options, args.format as String) + addPlugins (options, args.plugin as String) addGluePaths (options) addFeaturePaths (options) addFilter (options, args.params as List ?: []) @@ -110,9 +112,12 @@ class RuntimeOptionsBuilder { } } - private void addFormatter (RuntimeOptions options, String format) { + private void clearDefaultPlugins (RuntimeOptions options) { options.clearDefaultPlugins () + } + // compatibility with 1.0.1 and earlier + private void addFormatter (RuntimeOptions options, String format) { if (format) { options.addPlugin (format) } @@ -123,6 +128,18 @@ class RuntimeOptionsBuilder { } } + // replaces formats/--format configuration + private void addPlugins (RuntimeOptions options, String plugin) { + if (plugin) { + options.addPlugin (plugin) + } + else { + configObject.cucumber.plugins.each { + options.addPlugin (it) + } + } + } + private void addTags (RuntimeOptions options) { configObject.cucumber.tags.each { options.filters.add (it) diff --git a/test/unit/grails/plugin/cucumber/RuntimeOptionsBuilderSpec.groovy b/test/unit/grails/plugin/cucumber/RuntimeOptionsBuilderSpec.groovy index 250d128..eb75b11 100644 --- a/test/unit/grails/plugin/cucumber/RuntimeOptionsBuilderSpec.groovy +++ b/test/unit/grails/plugin/cucumber/RuntimeOptionsBuilderSpec.groovy @@ -331,4 +331,37 @@ class RuntimeOptionsBuilderSpec extends Specification { options.pluginNames.size () == 1 options.pluginNames.containsAll (args.format) } + + def "add plugin(s) from configuration to options" () { + given: + configObject.cucumber.plugins = [ + "json:target/results.json", + "html:target/results" + ] + + when: + def options = createRuntimeOptions (configObject) + + then: + options.pluginNames.containsAll (configObject.cucumber.plugins) + } + + @Deprecated + def "command line --plugin= overwrites config plugins" () { + given: + configObject.cucumber.plugins = [ + "html:target/results" + ] + def args = [ + 'plugin': "json:target/override.json" + ] + + when: + def options = createRuntimeOptions (configObject, args) + + then: + options.pluginNames.size () == 1 + options.pluginNames.containsAll (args.plugin) + } + }