@@ -4,15 +4,15 @@ import grails.core.DefaultGrailsApplication
44import org.grails.plugins.BinaryGrailsPlugin
55import org.grails.plugins.BinaryGrailsPluginDescriptor
66import org.springframework.core.io.ByteArrayResource
7+ import org.springframework.core.io.FileSystemResource
78import org.springframework.core.io.Resource
8-
9+ import spock.lang.Shared
910import spock.lang.Specification
1011
1112class BinaryPluginSpec extends Specification {
1213
13- def " Test creation of a binary plugin" () {
14- given :
15- def str = '''
14+ @Shared
15+ String testBinary = '''
1616 <plugin name='testBinary'>
1717 <class>org.codehaus.groovy.grails.plugins.TestBinaryGrailsPlugin</class>
1818 <resources>
@@ -21,10 +21,9 @@ class BinaryPluginSpec extends Specification {
2121 </plugin>
2222 '''
2323
24- def xml = new XmlSlurper (). parseText(str)
25-
24+ def " Test creation of a binary plugin" () {
2625 when :
27- def descriptor = new BinaryGrailsPluginDescriptor (new ByteArrayResource (str . getBytes(' UTF-8' )), [' org.codehaus.groovy.grails.plugins.TestBinaryResource' ])
26+ def descriptor = new BinaryGrailsPluginDescriptor (new ByteArrayResource (testBinary . getBytes(' UTF-8' )), [' org.codehaus.groovy.grails.plugins.TestBinaryResource' ])
2827 def binaryPlugin = new BinaryGrailsPlugin (TestBinaryGrailsPlugin , descriptor, new DefaultGrailsApplication ())
2928
3029 then :
@@ -36,20 +35,8 @@ class BinaryPluginSpec extends Specification {
3635
3736
3837 def " Test load static resource from binary plugin" () {
39- given :
40- def str = '''
41- <plugin name='testBinary'>
42- <class>org.codehaus.groovy.grails.plugins.TestBinaryGrailsPlugin</class>
43- <resources>
44- <resource>org.codehaus.groovy.grails.plugins.TestBinaryResource</resource>
45- </resources>
46- </plugin>
47- '''
48-
49- def xml = new XmlSlurper (). parseText(str)
50-
5138 when :
52- def resource = new MockBinaryPluginResource (str . getBytes(' UTF-8' ))
39+ def resource = new MockBinaryPluginResource (testBinary . getBytes(' UTF-8' ))
5340 def descriptor = new BinaryGrailsPluginDescriptor (resource, [' org.codehaus.groovy.grails.plugins.TestBinaryResource' ])
5441 resource. relativesResources[' static/css/main.css' ] = new ByteArrayResource (' ' . bytes)
5542 def binaryPlugin = new BinaryGrailsPlugin (TestBinaryGrailsPlugin , descriptor, new DefaultGrailsApplication ())
@@ -63,6 +50,68 @@ class BinaryPluginSpec extends Specification {
6350 then :
6451 cssResource == null
6552 }
53+
54+ def " Test plugin with both plugin.yml and plugin.groovy throws exception" () {
55+ when :
56+ def descriptor = new BinaryGrailsPluginDescriptor (new ByteArrayResource (testBinary. getBytes(' UTF-8' )), [' org.codehaus.groovy.grails.plugins.TestBinaryResource' ])
57+ MockConfigBinaryGrailsPlugin . YAML_EXISTS = true
58+ MockConfigBinaryGrailsPlugin . GROOVY_EXISTS = true
59+ new MockConfigBinaryGrailsPlugin (descriptor)
60+
61+ then :
62+ thrown(RuntimeException )
63+ }
64+
65+ def " Test plugin with only plugin.yml" () {
66+ when :
67+ def descriptor = new BinaryGrailsPluginDescriptor (new ByteArrayResource (testBinary. getBytes(' UTF-8' )), [' org.codehaus.groovy.grails.plugins.TestBinaryResource' ])
68+ MockConfigBinaryGrailsPlugin . YAML_EXISTS = true
69+ MockConfigBinaryGrailsPlugin . GROOVY_EXISTS = false
70+ def binaryPlugin = new MockConfigBinaryGrailsPlugin (descriptor)
71+
72+ then :
73+ binaryPlugin. propertySource. getProperty(' foo' ) == " bar"
74+ }
75+
76+ def " Test plugin with only plugin.groovy" () {
77+ when :
78+ def descriptor = new BinaryGrailsPluginDescriptor (new ByteArrayResource (testBinary. getBytes(' UTF-8' )), [' org.codehaus.groovy.grails.plugins.TestBinaryResource' ])
79+ MockConfigBinaryGrailsPlugin . YAML_EXISTS = false
80+ MockConfigBinaryGrailsPlugin . GROOVY_EXISTS = true
81+ def binaryPlugin = new MockConfigBinaryGrailsPlugin (descriptor)
82+
83+ then :
84+ binaryPlugin. propertySource. getProperty(' bar' ) == " foo"
85+ }
86+
87+ }
88+
89+ class MockConfigBinaryGrailsPlugin extends BinaryGrailsPlugin {
90+ static Boolean YAML_EXISTS = false
91+ static Boolean GROOVY_EXISTS = false
92+
93+ MockConfigBinaryGrailsPlugin (BinaryGrailsPluginDescriptor descriptor ) {
94+ super (TestBinaryGrailsPlugin , descriptor, new DefaultGrailsApplication ())
95+ }
96+
97+ protected Resource getConfigurationResource (Class<?> pluginClass , String path ) {
98+ String tempDir = System . getProperty(" java.io.tmpdir" )
99+ if (YAML_EXISTS && path == PLUGIN_YML_PATH ) {
100+ File file = new File (tempDir, " plugin.yml" )
101+ file. write(" foo: bar" )
102+ return new FileSystemResource (file)
103+ }
104+ if (GROOVY_EXISTS && path == PLUGIN_GROOVY_PATH ) {
105+ File file = new File (tempDir, " plugin.groovy" )
106+ file. write(" bar = 'foo'" )
107+ return new FileSystemResource (file)
108+ }
109+ return null
110+ }
111+
112+ public String getVersion () {
113+ super . getVersion()
114+ }
66115}
67116
68117class TestBinaryGrailsPlugin {
@@ -91,3 +140,4 @@ class MyView extends Script {
91140 return " Good"
92141 }
93142}
143+
0 commit comments