1 19 20 package org.netbeans.modules.apisupport.project; 21 22 import java.io.BufferedReader ; 23 import java.io.File ; 24 import java.io.PrintStream ; 25 import java.io.Reader ; 26 import org.apache.tools.ant.module.api.support.ActionUtils; 27 import org.netbeans.api.project.ProjectManager; 28 import org.netbeans.modules.apisupport.project.layers.LayerTestBase; 29 import org.netbeans.modules.apisupport.project.suite.SuiteProject; 30 import org.netbeans.modules.apisupport.project.suite.SuiteProjectTest; 31 import org.netbeans.modules.apisupport.project.ui.customizer.ModuleDependency; 32 import org.netbeans.modules.apisupport.project.ui.customizer.SuiteProperties; 33 import org.netbeans.modules.apisupport.project.universe.ModuleEntry; 34 import org.netbeans.spi.project.support.ant.EditableProperties; 35 import org.netbeans.spi.project.support.ant.GeneratedFilesHelper; 36 import org.openide.DialogDescriptor; 37 import org.openide.execution.ExecutorTask; 38 import org.openide.filesystems.FileLock; 39 import org.openide.filesystems.FileObject; 40 import org.openide.modules.SpecificationVersion; 41 42 47 public class CompilationDependencyTest extends TestBase { 48 49 private final static String WINDOWS = "org.openide.windows"; 50 51 static { 52 System.setProperty("org.netbeans.core.startup.ModuleSystem.CULPRIT", "true"); 54 LayerTestBase.Lkp.setLookup(new Object [0]); 55 DialogDisplayerImpl.returnFromNotify(DialogDescriptor.NO_OPTION); 56 } 57 58 public CompilationDependencyTest(String testName) { 59 super(testName); 60 } 61 62 protected void setUp() throws Exception { 63 clearWorkDir(); 64 super.setUp(); 65 InstalledFileLocatorImpl.registerDestDir(destDirF); 66 TestAntLogger.getDefault().setEnabled(true); 67 68 } 69 70 protected void tearDown() throws Exception { 71 TestAntLogger.getDefault().setEnabled(false); 72 } 73 74 public void testInvalidSpecVersion() throws Exception { 75 NbModuleProject testingProject = TestBase.generateStandaloneModule(getWorkDir(), "testing"); 76 testingProject.open(); 77 78 FileObject buildScript = findBuildXml(testingProject); 79 assertNotNull(buildScript); 80 ExecutorTask et = ActionUtils.runTarget(buildScript, new String []{"jar"}, null); 81 et.waitFinished(); 82 assertEquals("Error during ant ...",0,et.result()); 83 SpecificationVersion invalid = new SpecificationVersion("1000"); 84 Util.addDependency(testingProject, WINDOWS, null, invalid, true); 85 ProjectManager.getDefault().saveProject(testingProject); 86 et = ActionUtils.runTarget(buildScript, new String []{"clean","jar"}, null); 87 et.waitFinished(); 88 89 assertFalse("Error during ant ...", 0 == et.result()); 91 assertFalse("Successfully compiled when is invalid specification version", 92 testingProject.getModuleJarLocation().exists()); 93 } 94 95 public void testCompileAgainstPublicPackage() throws Exception { 96 NbModuleProject testingProject = TestBase.generateStandaloneModule(getWorkDir(), "testing"); 97 testingProject.open(); 98 FileObject buildScript = findBuildXml(testingProject); 99 assertNotNull(buildScript); 100 101 Util.addDependency(testingProject, WINDOWS); 102 ProjectManager.getDefault().saveProject(testingProject); 103 104 FileObject javaFo = testingProject.getSourceDirectory().getFileObject("org/example/testing").createData("JavaFile.java"); 105 FileLock lock = javaFo.lock(); 106 PrintStream ps = new PrintStream (javaFo.getOutputStream(lock)); 107 ps.println("package org.example.testing;"); 108 ps.println("import org.netbeans.modules.openide.windows.*;"); 109 ps.println("public class JavaFile {}"); 110 ps.close(); 111 lock.releaseLock(); 112 113 ExecutorTask et = ActionUtils.runTarget(buildScript, new String []{"clean","netbeans"}, null); 114 et.waitFinished(); 115 116 assertFalse("project was successfully compiled against non public package", 117 testingProject.getModuleJarLocation().exists()); 118 119 ProjectXMLManager testingPXM = new ProjectXMLManager(testingProject); 120 testingPXM.removeDependency(WINDOWS); 121 ModuleEntry module = testingProject.getModuleList().getEntry(WINDOWS); 122 ModuleDependency newDep = new ModuleDependency(module,module.getReleaseVersion(),module.getSpecificationVersion(),true,true); 123 testingPXM.addDependency(newDep); 124 ProjectManager.getDefault().saveProject(testingProject); 125 126 et = ActionUtils.runTarget(buildScript, new String []{"clean","netbeans"}, null); 127 Reader reader = et.getInputOutput().getIn(); 128 BufferedReader breader = new BufferedReader (reader); 129 et.waitFinished(); 130 String line = null; 131 while ((line = breader.readLine()) != null ) { 132 log(line); 133 System.out.println(line); 134 } 135 assertTrue("compilation failed for implementation dependency: no file " + testingProject.getModuleJarLocation(), 136 testingProject.getModuleJarLocation().exists()); 137 } 138 139 public void testCompileAgainstRemovedModule68716() throws Exception { 140 SuiteProject suite = TestBase.generateSuite(new File (getWorkDir(), "projects"), "suite"); 141 NbModuleProject proj = TestBase.generateSuiteComponent(suite, "mod1"); 142 SuiteProjectTest.openSuite(suite); 143 Util.addDependency(proj, WINDOWS); 144 145 EditableProperties ep = suite.getHelper().getProperties("nbproject/platform.properties"); 147 ep.setProperty(SuiteProperties.DISABLED_MODULES_PROPERTY, WINDOWS); 148 suite.getHelper().putProperties("nbproject/platform.properties", ep); 149 ProjectManager.getDefault().saveProject(proj); 150 ProjectManager.getDefault().saveProject(suite); 151 152 FileObject buildScript = proj.getProjectDirectory().getFileObject(GeneratedFilesHelper.BUILD_XML_PATH); 154 assertNotNull(buildScript); 155 ExecutorTask et = ActionUtils.runTarget(buildScript, new String []{"clean","netbeans"}, null); 156 et.waitFinished(); 157 assertFalse("project was successfully compiled against removed module from platform",proj.getModuleJarLocation().exists()); 158 } 159 160 private static FileObject findBuildXml(final NbModuleProject project) { 161 return project.getProjectDirectory().getFileObject(GeneratedFilesHelper.BUILD_XML_PATH); 162 } 163 164 } 165 166 | Popular Tags |