GroovyCompilationExceptionTestCase.java :  » Inversion-of-Control » nanocontainer » org » nanocontainer » script » groovy » Java Open Source

Java Open Source » Inversion of Control » nanocontainer 
nanocontainer » org » nanocontainer » script » groovy » GroovyCompilationExceptionTestCase.java
package org.nanocontainer.script.groovy;

import java.io.CharArrayWriter;
import java.io.PrintWriter;
import java.io.Reader;
import java.io.StringReader;

import org.nanocontainer.script.AbstractScriptedContainerBuilderTestCase;
import org.picocontainer.PicoContainer;

/**
 *
 * @author Michael Rimov
 */
public class GroovyCompilationExceptionTestCase extends AbstractScriptedContainerBuilderTestCase {


    public void testGroovyCompilationExceptionContainsOriginalReasonInStackTrace() {
        //Bogus script where imports are not kosher.
        Reader script = new StringReader("" +
            "def unresolvedVariable = new TestBean()\n" +
            "");

        try {
            buildContainer(script, null, "Some Assembly Scope");
        } catch (GroovyCompilationException ex) {
            CharArrayWriter outputArray = new CharArrayWriter();
            PrintWriter output = new PrintWriter(outputArray);
            ex.printStackTrace(output);
            String resultingString = outputArray.toString();
            //System.out.println(resultingString);

            assertTrue(resultingString.indexOf("Caused by") > -1);

            //This may change from version to version.  Is there a better way for verification?  -MR
            assertTrue(resultingString.indexOf("unable to resolve class TestBean") > -1);
        }
    }

    private PicoContainer buildContainer(Reader script, PicoContainer parent, Object scope) {
        return buildContainer(new GroovyContainerBuilder(script, getClass().getClassLoader()), parent, scope);
    }


}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.