KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > apisupport > project > CompilationDependencyTest


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19
20 package org.netbeans.modules.apisupport.project;
21
22 import java.io.BufferedReader JavaDoc;
23 import java.io.File JavaDoc;
24 import java.io.PrintStream JavaDoc;
25 import java.io.Reader JavaDoc;
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 /**
43  * Tests ProjectXMLManager class.
44  *
45  * @author Petr Zajac
46  */

47 public class CompilationDependencyTest extends TestBase {
48     
49     private final static String JavaDoc WINDOWS = "org.openide.windows";
50     
51     static {
52         // #65461: do not try to load ModuleInfo instances from ant module
53
System.setProperty("org.netbeans.core.startup.ModuleSystem.CULPRIT", "true");
54         LayerTestBase.Lkp.setLookup(new Object JavaDoc[0]);
55         DialogDisplayerImpl.returnFromNotify(DialogDescriptor.NO_OPTION);
56     }
57     
58     public CompilationDependencyTest(String JavaDoc testName) {
59         super(testName);
60     }
61     
62     protected void setUp() throws Exception JavaDoc {
63         clearWorkDir();
64         super.setUp();
65         InstalledFileLocatorImpl.registerDestDir(destDirF);
66         TestAntLogger.getDefault().setEnabled(true);
67         
68     }
69     
70     protected void tearDown() throws Exception JavaDoc {
71         TestAntLogger.getDefault().setEnabled(false);
72     }
73     
74     public void testInvalidSpecVersion() throws Exception JavaDoc {
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 JavaDoc[]{"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 JavaDoc[]{"clean","jar"}, null);
87         et.waitFinished();
88         
89         // it must fail but I don't know why it passed
90
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 JavaDoc {
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 JavaDoc ps = new PrintStream JavaDoc(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 JavaDoc[]{"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 JavaDoc[]{"clean","netbeans"}, null);
127         Reader JavaDoc reader = et.getInputOutput().getIn();
128         BufferedReader JavaDoc breader = new BufferedReader JavaDoc(reader);
129         et.waitFinished();
130         String JavaDoc 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 JavaDoc {
140         SuiteProject suite = TestBase.generateSuite(new File JavaDoc(getWorkDir(), "projects"), "suite");
141         NbModuleProject proj = TestBase.generateSuiteComponent(suite, "mod1");
142         SuiteProjectTest.openSuite(suite);
143         Util.addDependency(proj, WINDOWS);
144         
145         // remove WINDOWS from platform
146
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         // build project
153
FileObject buildScript = proj.getProjectDirectory().getFileObject(GeneratedFilesHelper.BUILD_XML_PATH);
154         assertNotNull(buildScript);
155         ExecutorTask et = ActionUtils.runTarget(buildScript, new String JavaDoc[]{"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