Skip to content

Commit

Permalink
Added tests.
Browse files Browse the repository at this point in the history
  • Loading branch information
Daniel H A Lima committed Jul 3, 2011
1 parent d770406 commit 7af072d
Show file tree
Hide file tree
Showing 4 changed files with 89 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,9 @@ public DefaultGrailsMainClass(Class<?> clazz) {
@SuppressWarnings("serial")
private static Closure BLANK_CLOSURE = new Closure(
DefaultGrailsMainClass.class) {
@Override
public Object call(Object[] args) {

@SuppressWarnings("unused")
public Object doCall(Object[] args) {
return null;
}
};
Expand Down
20 changes: 11 additions & 9 deletions src/java/org/codehaus/groovy/grails/plugins/batch/Launcher.java
Original file line number Diff line number Diff line change
Expand Up @@ -161,16 +161,18 @@ public void destroy() {
GrailsApplication grailsApplication = ApplicationHolder
.getApplication();

DefaultGrailsMainClass main = getMainClass(grailsApplication);
if (main != null) {
main.callDestroy();
}
if (grailsApplication != null) {
DefaultGrailsMainClass main = getMainClass(grailsApplication);
if (main != null) {
main.callDestroy();
}

GrailsClass[] bootstraps = grailsApplication
.getArtefacts(BootstrapArtefactHandler.TYPE);
for (int i = bootstraps.length - 1; i >= 0; i--) {
GrailsClass bootstrap = bootstraps[i];
((GrailsBootstrapClass) bootstrap).callDestroy();
GrailsClass[] bootstraps = grailsApplication
.getArtefacts(BootstrapArtefactHandler.TYPE);
for (int i = bootstraps.length - 1; i >= 0; i--) {
GrailsClass bootstrap = bootstraps[i];
((GrailsBootstrapClass) bootstrap).callDestroy();
}
}

{
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package org.codehaus.groovy.grails.plugins.batch

import static org.junit.Assert.*


class LauncherTests extends GroovyTestCase {

void test() {
/*
System.setProperty "${Launcher.PROPERTY_PREFIX}resourcePath", 'web-app'
Launcher.main(new String [0])
System.setProperty "${Launcher.PROPERTY_PREFIX}resourcePath", null
*/
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package org.codehaus.groovy.grails.plugins.batch

import grails.test.*

import org.codehaus.groovy.grails.plugins.batch.DefaultGrailsMainClass


class DefaultGrailsMainClassTests extends GrailsUnitTestCase {

private GroovyClassLoader classLoader

void testEmptyClass() {
def mainClass = 'class Main {\
}'
mainClass = classLoader.parseClass(mainClass)
DefaultGrailsMainClass grailsMainClass = new DefaultGrailsMainClass(mainClass)
assertNotNull('initClosure is not null', grailsMainClass.initClosure)
assertNotNull('runClosure is not null', grailsMainClass.runClosure)
assertNotNull('destroyClosure is not null', grailsMainClass.destroyClosure)

grailsMainClass.callInit()
grailsMainClass.callRun([a:1])
grailsMainClass.callDestroy()
}


void testRegularClass() {
def mainClass = 'class Main {\
String step = null;\
def init = {-> step = "init";};\
def run = {Map context -> step = "run";};\
def destroy = {-> step = "destroy";};\
}'
mainClass = classLoader.parseClass(mainClass)
DefaultGrailsMainClass grailsMainClass = new DefaultGrailsMainClass(mainClass)
assertNotNull('initClosure is not null', grailsMainClass.initClosure)
assertNotNull('runClosure is not null', grailsMainClass.runClosure)
assertNotNull('destroyClosure is not null', grailsMainClass.destroyClosure)

def mainInstance = grailsMainClass.referenceInstance
assertNull mainInstance.step
grailsMainClass.callInit()
assertEquals 'init', mainInstance.step
grailsMainClass.callRun([a:1])
assertEquals 'run', mainInstance.step
grailsMainClass.callDestroy()
assertEquals 'destroy', mainInstance.step
}


@Override
protected void setUp() {
super.setUp()

this.classLoader = new GroovyClassLoader(Thread.currentThread().contextClassLoader?:this.class.classLoader)
}


}

0 comments on commit 7af072d

Please sign in to comment.