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: MergeModulesTaskTest.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.MergeModulesTask; 036 import org.jomc.ant.test.support.AntExecutionResult; 037 import static org.jomc.ant.test.support.Assert.assertException; 038 import static org.jomc.ant.test.support.Assert.assertExceptionMessage; 039 import static org.jomc.ant.test.support.Assert.assertExceptionMessageContaining; 040 import static org.jomc.ant.test.support.Assert.assertMessageLogged; 041 import static org.jomc.ant.test.support.Assert.assertMessageLoggedContaining; 042 import static org.jomc.ant.test.support.Assert.assertNoException; 043 import org.junit.Test; 044 import static org.junit.Assert.assertNotNull; 045 import static org.junit.Assert.fail; 046 047 /** 048 * Test cases for class {@code org.jomc.ant.MergeModulesTask}. 049 * 050 * @author <a href="mailto:schulte2005@users.sourceforge.net">Christian Schulte</a> 051 * @version $JOMC: MergeModulesTaskTest.java 3879 2011-10-24 00:59:27Z schulte2005 $ 052 */ 053 public class MergeModulesTaskTest extends JomcModelTaskTest 054 { 055 056 /** Creates a new {@code MergeModulesTaskTest} instance. */ 057 public MergeModulesTaskTest() 058 { 059 super(); 060 } 061 062 /** {@inheritDoc} */ 063 @Override 064 public MergeModulesTask getJomcTask() 065 { 066 return (MergeModulesTask) super.getJomcTask(); 067 } 068 069 /** {@inheritDoc} */ 070 @Override 071 protected MergeModulesTask newJomcTask() 072 { 073 return new MergeModulesTask(); 074 } 075 076 /** {@inheritDoc} */ 077 @Override 078 protected String getBuildFileName() 079 { 080 return "merge-modules-test.xml"; 081 } 082 083 @Test 084 public final void testMissingModuleFile() throws Exception 085 { 086 final AntExecutionResult r = this.executeTarget( "test-missing-module-file" ); 087 assertException( r, BuildException.class ); 088 assertExceptionMessage( r, "Mandatory attribute 'moduleFile' is missing a value." ); 089 } 090 091 @Test 092 public final void testMissingModuleName() throws Exception 093 { 094 final AntExecutionResult r = this.executeTarget( "test-missing-module-name" ); 095 assertException( r, BuildException.class ); 096 assertExceptionMessage( r, "Mandatory attribute 'moduleName' is missing a value." ); 097 } 098 099 @Test 100 public final void testExclusionMissingModuleName() throws Exception 101 { 102 final AntExecutionResult r = this.executeTarget( "test-exclusion-missing-module-name" ); 103 assertException( r, BuildException.class ); 104 assertExceptionMessage( r, "Mandatory attribute 'name' is missing a value." ); 105 } 106 107 @Test 108 public final void testInclusionMissingModuleName() throws Exception 109 { 110 final AntExecutionResult r = this.executeTarget( "test-inclusion-missing-module-name" ); 111 assertException( r, BuildException.class ); 112 assertExceptionMessage( r, "Mandatory attribute 'name' is missing a value." ); 113 } 114 115 @Test 116 public final void testMergeModules() throws Exception 117 { 118 final AntExecutionResult r = this.executeTarget( "test-merge-modules" ); 119 assertNoException( r ); 120 assertMessageLoggedContaining( r, "Writing", Project.MSG_INFO ); 121 } 122 123 @Test 124 public final void testMergeModulesWithNoopStylesheet() throws Exception 125 { 126 final AntExecutionResult r = this.executeTarget( "test-merge-modules-with-no-op-stylesheet" ); 127 assertNoException( r ); 128 assertMessageLoggedContaining( r, "Writing", Project.MSG_INFO ); 129 } 130 131 @Test 132 public final void testMergeModulesWithRedundantResources() throws Exception 133 { 134 final AntExecutionResult r = this.executeTarget( "test-merge-modules-with-redundant-resources" ); 135 assertNoException( r ); 136 assertMessageLoggedContaining( r, "Writing", Project.MSG_INFO ); 137 } 138 139 @Test 140 public final void testMergeModulesWithIllegalTransformationResultStylesheet() throws Exception 141 { 142 final AntExecutionResult r = 143 this.executeTarget( "test-merge-modules-with-illegal-transformation-result-stylesheet" ); 144 145 assertException( r, BuildException.class ); 146 assertExceptionMessageContaining( r, "Illegal transformation result" ); 147 } 148 149 @Test 150 public final void testMergeModulesUnsupportedResource() throws Exception 151 { 152 final AntExecutionResult r = this.executeTarget( "test-merge-modules-unsupported-resource" ); 153 assertNoException( r ); 154 assertMessageLoggedContaining( r, "not supported.", Project.MSG_WARN ); 155 } 156 157 @Test 158 public final void testMergeModulesExclusion() throws Exception 159 { 160 final AntExecutionResult r = this.executeTarget( "test-merge-modules-exclusion" ); 161 assertNoException( r ); 162 assertMessageLogged( r, "Excluding module 'JOMC Ant Tasks Tests'.", Project.MSG_INFO ); 163 } 164 165 @Test 166 public final void testMergeModulesInclusion() throws Exception 167 { 168 final AntExecutionResult r = this.executeTarget( "test-merge-modules-inclusion" ); 169 assertNoException( r ); 170 assertMessageLogged( r, "Including module 'JOMC Ant Tasks Tests'.", Project.MSG_INFO ); 171 } 172 173 @Test 174 public final void testMergeModulesAllAttributes() throws Exception 175 { 176 final AntExecutionResult r = this.executeTarget( "test-merge-modules-all-attributes" ); 177 assertNoException( r ); 178 assertMessageLoggedContaining( r, "Writing", Project.MSG_INFO ); 179 } 180 181 @Test 182 public final void testIsModuleExcluded() throws Exception 183 { 184 try 185 { 186 this.getJomcTask().isModuleExcluded( null ); 187 fail( "Expected 'NullPointerException' not thrown." ); 188 } 189 catch ( final NullPointerException e ) 190 { 191 assertNotNull( e.getMessage() ); 192 System.out.println( e ); 193 } 194 } 195 196 @Test 197 public final void testIsModuleIncluded() throws Exception 198 { 199 try 200 { 201 this.getJomcTask().isModuleIncluded( null ); 202 fail( "Expected 'NullPointerException' not thrown." ); 203 } 204 catch ( final NullPointerException e ) 205 { 206 assertNotNull( e.getMessage() ); 207 System.out.println( e ); 208 } 209 } 210 211 }