001    /*
002     *   Copyright (C) Christian Schulte, 2005-206
003     *   All rights reserved.
004     *
005     *   Redistribution and use in source and binary forms, with or without
006     *   modification, are permitted provided that the following conditions
007     *   are met:
008     *
009     *     o Redistributions of source code must retain the above copyright
010     *       notice, this list of conditions and the following disclaimer.
011     *
012     *     o Redistributions in binary form must reproduce the above copyright
013     *       notice, this list of conditions and the following disclaimer in
014     *       the documentation and/or other materials provided with the
015     *       distribution.
016     *
017     *   THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
018     *   INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
019     *   AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
020     *   THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT,
021     *   INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
022     *   NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
023     *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
024     *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
025     *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
026     *   THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
027     *
028     *   $JOMC: ManageSourcesTaskTest.java 3879 2011-10-24 00:59:27Z schulte2005 $
029     *
030     */
031    package org.jomc.ant.test;
032    
033    import org.apache.tools.ant.BuildException;
034    import org.apache.tools.ant.Project;
035    import org.jomc.ant.ManageSourcesTask;
036    import org.jomc.ant.SourceProcessingException;
037    import org.jomc.ant.test.support.AntExecutionResult;
038    import static org.jomc.ant.test.support.Assert.assertException;
039    import static org.jomc.ant.test.support.Assert.assertExceptionMessage;
040    import static org.jomc.ant.test.support.Assert.assertMessageLogged;
041    import static org.jomc.ant.test.support.Assert.assertMessageNotLogged;
042    import static org.jomc.ant.test.support.Assert.assertNoException;
043    import org.junit.Test;
044    
045    /**
046     * Test cases for class {@code org.jomc.ant.ManageSourcesTask}.
047     *
048     * @author <a href="mailto:schulte2005@users.sourceforge.net">Christian Schulte</a>
049     * @version $JOMC: ManageSourcesTaskTest.java 3879 2011-10-24 00:59:27Z schulte2005 $
050     */
051    public class ManageSourcesTaskTest extends SourceFileProcessorTaskTest
052    {
053    
054        /** Creates a new {@code ManageSourcesTaskTest} instance. */
055        public ManageSourcesTaskTest()
056        {
057            super();
058        }
059    
060        /** {@inheritDoc} */
061        @Override
062        public ManageSourcesTask getJomcTask()
063        {
064            return (ManageSourcesTask) super.getJomcTask();
065        }
066    
067        /** {@inheritDoc} */
068        @Override
069        protected ManageSourcesTask newJomcTask()
070        {
071            return new ManageSourcesTask();
072        }
073    
074        /** {@inheritDoc} */
075        @Override
076        protected String getBuildFileName()
077        {
078            return "manage-sources-test.xml";
079        }
080    
081        @Test
082        public final void testMissingSourcesDirectory() throws Exception
083        {
084            final AntExecutionResult r = this.executeTarget( "test-missing-sources-directory" );
085            assertException( r, BuildException.class );
086            assertExceptionMessage( r, "Mandatory attribute 'sourcesDirectory' is missing a value." );
087        }
088    
089        @Test
090        public final void testSpecificationNotFound() throws Exception
091        {
092            final AntExecutionResult r = this.executeTarget( "test-specification-not-found" );
093            assertNoException( r );
094            assertMessageLogged( r, "Specification 'DOES NOT EXIST' not found.", Project.MSG_WARN );
095        }
096    
097        @Test
098        public final void testImplementationNotFound() throws Exception
099        {
100            final AntExecutionResult r = this.executeTarget( "test-implementation-not-found" );
101            assertNoException( r );
102            assertMessageLogged( r, "Implementation 'DOES NOT EXIST' not found.", Project.MSG_WARN );
103        }
104    
105        @Test
106        public final void testModuleNotFound() throws Exception
107        {
108            final AntExecutionResult r = this.executeTarget( "test-module-not-found" );
109            assertNoException( r );
110            assertMessageLogged( r, "Module 'DOES NOT EXIST' not found.", Project.MSG_WARN );
111        }
112    
113        @Test
114        public final void testSourceProcessingDisabled() throws Exception
115        {
116            final AntExecutionResult r = this.executeTarget( "test-source-processing-disabled" );
117            assertNoException( r );
118            assertMessageLogged( r, "Source file processing disabled.", Project.MSG_INFO );
119        }
120    
121        @Test
122        public final void testManageAntTaskSources() throws Exception
123        {
124            final AntExecutionResult r = this.executeTarget( "test-manage-ant-task-sources" );
125            assertNoException( r );
126            assertMessageLogged( r, "Source file processing successful.", Project.MSG_INFO );
127        }
128    
129        @Test
130        public final void testManageAntTaskSourcesWithRedundantResources() throws Exception
131        {
132            final AntExecutionResult r = this.executeTarget( "test-manage-ant-task-sources-with-redundant-resources" );
133            assertNoException( r );
134            assertMessageLogged( r, "Source file processing successful.", Project.MSG_INFO );
135        }
136    
137        @Test
138        public final void testManageOneSpecification() throws Exception
139        {
140            final AntExecutionResult r = this.executeTarget( "test-manage-one-specification" );
141            assertNoException( r );
142            assertMessageNotLogged( r, "Specification 'org.jomc.ant.test.JomcTask' not found." );
143        }
144    
145        @Test
146        public final void testManageOneImplementation() throws Exception
147        {
148            final AntExecutionResult r = this.executeTarget( "test-manage-one-implementation" );
149            assertNoException( r );
150            assertMessageNotLogged( r, "Implementation 'org.jomc.ant.test.JomcToolTask' not found." );
151        }
152    
153        @Test
154        public final void testManageOneModule() throws Exception
155        {
156            final AntExecutionResult r = this.executeTarget( "test-manage-one-module" );
157            assertNoException( r );
158            assertMessageNotLogged( r, "Module 'JOMC Ant Tasks Tests' not found." );
159        }
160    
161        @Test
162        public final void testManageAntTaskSourcesWithClasspathref() throws Exception
163        {
164            final AntExecutionResult r = this.executeTarget( "test-manage-ant-task-sources-with-classpathref" );
165            assertNoException( r );
166            assertMessageLogged( r, "Source file processing successful.", Project.MSG_INFO );
167        }
168    
169        @Test
170        public final void testManageAntTaskSourcesWithNestedClasspath() throws Exception
171        {
172            final AntExecutionResult r = this.executeTarget( "test-manage-ant-task-sources-with-nested-classpath" );
173            assertNoException( r );
174            assertMessageLogged( r, "Source file processing successful.", Project.MSG_INFO );
175        }
176    
177        @Test
178        public final void testManageAntTaskSourcesAllAttributes() throws Exception
179        {
180            final AntExecutionResult r = this.executeTarget( "test-manage-ant-task-sources-all-attributes" );
181            assertNoException( r );
182            assertMessageLogged( r, "Source file processing successful.", Project.MSG_INFO );
183        }
184    
185        @Test
186        public final void testManageAntTaskSourcesBrokenModel() throws Exception
187        {
188            final AntExecutionResult r = this.executeTarget( "test-manage-ant-task-sources-broken-model" );
189            assertException( r, SourceProcessingException.class );
190        }
191    
192    }