1 17 18 package org.apache.tools.ant.taskdefs; 19 20 import java.io.File ; 21 import java.io.IOException ; 22 23 import org.apache.tools.ant.BuildException; 24 import org.apache.tools.ant.BuildFileTest; 25 import org.apache.tools.ant.Location; 26 import org.apache.tools.ant.Project; 27 28 30 public class ImportTest extends BuildFileTest { 31 32 public ImportTest(String name) { 33 super(name); 34 } 35 36 public void setUp() { 37 } 38 39 public void tearDown() { 40 } 41 42 public void testSimpleImport() { 43 configureProject("src/etc/testcases/taskdefs/import/import.xml"); 44 assertLogContaining("Before importIn imported topAfter import"); 45 } 46 47 public void testUnnamedNesting() { 48 configureProject("src/etc/testcases/taskdefs/import/unnamedImport.xml", 49 Project.MSG_WARN); 50 String log = getLog(); 51 assertTrue("Warnings logged when not expected: " + log, 52 log.length() == 0); 53 } 54 55 public void testSerial() { 56 configureProject("src/etc/testcases/taskdefs/import/subdir/serial.xml"); 57 assertLogContaining("Unnamed2.xmlUnnamed1.xml"); 58 String fullLog = getFullLog(); 59 String substring = "Skipped already imported file"; 60 assertTrue("expecting full log to contain \"" + substring 61 + "\" full log was \"" + fullLog + "\"", 62 fullLog.indexOf(substring) >= 0); 63 } 64 65 public void testImportInTargetNoEffect() { 67 configureProject("src/etc/testcases/taskdefs/import/subdir/importintarget.xml"); 68 expectPropertyUnset("no-import", "foo"); 69 assertTrue(null == getProject().getReference("baz")); 70 } 71 72 public void notTestImportInTargetWithEffect() { 74 configureProject("src/etc/testcases/taskdefs/import/subdir/importintarget.xml"); 75 expectPropertySet("do-import", "foo", "bar"); 76 assertNotNull(getProject().getReference("baz")); 77 } 78 79 public void testImportInTargetNotAllowed() { 80 configureProject( 81 "src/etc/testcases/taskdefs/import/subdir/importintarget.xml"); 82 expectBuildExceptionContaining( 83 "do-import", "not a top level task", 84 "import only allowed as a top-level task"); 85 } 86 87 public void testImportInSequential() { 88 configureProject( 89 "src/etc/testcases/taskdefs/import/subdir/importinsequential.xml"); 90 expectPropertySet("within-imported", "foo", "bar"); 91 assertNotNull(getProject().getReference("baz")); 92 } 93 94 public void testImportSameTargets() { 95 try { 96 configureProject( 97 "src/etc/testcases/taskdefs/import/same_target.xml"); 98 } catch (BuildException ex) { 99 String message = ex.getMessage(); 100 if (message.indexOf("Duplicate target") == -1) { 101 assertTrue("Did not see 'Duplicate target' in '" + message +"'", false); 102 } 103 return; 104 } 105 assertTrue( 106 "Did not see build exception", 107 false); 108 } 109 110 public void testImportError() { 111 try { 112 configureProject( 113 "src/etc/testcases/taskdefs/import/import_bad_import.xml"); 114 } catch (BuildException ex) { 115 Location lo = ex.getLocation(); 116 assertTrue( 117 "expected location of build exception to be set", 118 (lo != null)); 119 assertTrue( 120 "expected location to contain calling file", 121 lo.getFileName().indexOf("import_bad_import.xml") != -1); 122 assertTrue( 123 "expected message of ex to contain called file", 124 ex.getMessage().indexOf("bad.xml") != -1); 125 return; 126 } 127 assertTrue( 128 "Did not see build exception", 129 false); 130 } 131 132 public void testSymlinkedImports() throws Exception { 133 String ln = "/usr/bin/ln"; 134 if (!new File (ln).exists()) { 135 ln = "/bin/ln"; 136 } 137 if (!new File (ln).exists()) { 138 return; 140 } 141 String symlink = "src/etc/testcases/taskdefs/import/symlinks/d3b"; 142 if (Runtime.getRuntime().exec(new String [] {ln, "-s", "d3a", symlink}).waitFor() != 0) { 143 throw new IOException ("'" + ln + " -s d3a " + symlink + "' failed"); 144 } 145 try { 146 configureProject( 147 "src/etc/testcases/taskdefs/import/symlinks/d1/p1.xml"); 148 assertPropertyEquals( 149 "ant.file.p2", 150 new File ("src/etc/testcases/taskdefs/import/symlinks/d2/p2.xml") 151 .getAbsolutePath()); 152 assertPropertyEquals( 153 "ant.file.p3", 154 new File ("src/etc/testcases/taskdefs/import/symlinks/d3b/p3.xml") 155 .getAbsolutePath()); 156 } finally { 157 new File (symlink).delete(); 158 } 159 } 160 161 } 162 | Popular Tags |