001: /*
002: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
003: *
004: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
005: *
006: * The contents of this file are subject to the terms of either the GNU
007: * General Public License Version 2 only ("GPL") or the Common
008: * Development and Distribution License("CDDL") (collectively, the
009: * "License"). You may not use this file except in compliance with the
010: * License. You can obtain a copy of the License at
011: * http://www.netbeans.org/cddl-gplv2.html
012: * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
013: * specific language governing permissions and limitations under the
014: * License. When distributing the software, include this License Header
015: * Notice in each file and include the License file at
016: * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
017: * particular file as subject to the "Classpath" exception as provided
018: * by Sun in the GPL Version 2 section of the License file that
019: * accompanied this code. If applicable, add the following below the
020: * License Header, with the fields enclosed by brackets [] replaced by
021: * your own identifying information:
022: * "Portions Copyrighted [year] [name of copyright owner]"
023: *
024: * Contributor(s):
025: *
026: * The Original Software is NetBeans. The Initial Developer of the Original
027: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
028: * Microsystems, Inc. All Rights Reserved.
029: *
030: * If you wish your version of this file to be governed by only the CDDL
031: * or only the GPL Version 2, indicate your decision by adding
032: * "[Contributor] elects to include this software in this distribution
033: * under the [CDDL or GPL Version 2] license." If you do not indicate a
034: * single choice of license, a recipient has the option to distribute
035: * your version of this file under either the CDDL, the GPL Version 2 or
036: * to extend the choice of license to its licensees as provided above.
037: * However, if you add GPL Version 2 code and therefore, elected the GPL
038: * Version 2 license, then the option applies only if the new code is
039: * made subject to such option by the copyright holder.
040: */
041:
042: package org.netbeans.modules.projectimport.eclipse;
043:
044: import java.io.File;
045: import java.util.ArrayList;
046: import java.util.Arrays;
047: import java.util.Collection;
048: import java.util.Iterator;
049:
050: /**
051: * Tests importing of complex project (still without workspace provided). This
052: * test should check all features if project analyzer.
053: *
054: * @author mkrauskopf
055: */
056: public class WorkspaceAnalysisTest extends ProjectImporterTestCase {
057:
058: public WorkspaceAnalysisTest(String name) {
059: super (name);
060: }
061:
062: public void testComplexAloneProjectFor_3_1_M6() throws Exception {
063: File workspaceDir = extractToWorkDir("workspace-test-3.1M6.zip");
064: Workspace workspace = WorkspaceFactory.getInstance().load(
065: workspaceDir);
066: assertNotNull("Unable to load workspace", workspace);
067: printMessage("Checking " + workspace.getDirectory());
068: assertFalse("Workspace shouldn't be emtpy", workspace
069: .getProjects().isEmpty());
070: printMessage("Project in the workspace: "
071: + workspace.getProjects());
072:
073: // Below information are just known. Get familiar with tested zips
074: // (which could be created by the helper script createWorkspace.sh)
075: String[] ws31M6ProjectNames = { "p1", "p2", "p3" };
076: String[] p1RequiredProjects = { "/p2", "/p3" };
077:
078: boolean p1Tested = false;
079: Collection/*<String>*/p1ReqProjectsNames = new ArrayList(
080: Arrays.asList(p1RequiredProjects));
081: Collection/*<String>*/wsProjectNames = new ArrayList(Arrays
082: .asList(ws31M6ProjectNames));
083: Collection/*<EclipseProject>*/gainedP1ReqProjects = null;
084:
085: for (Iterator it = workspace.getProjects().iterator(); it
086: .hasNext();) {
087: EclipseProject project = (EclipseProject) it.next();
088: /* Test p1 project and its dependencies. */
089: if ("p1".equals(project.getName())) {
090: SingleProjectAnalysisTest.doBasicProjectTest(project); // for p1
091: gainedP1ReqProjects = project.getProjectsEntries();
092: assertEquals("Incorrect project count for p1",
093: p1RequiredProjects.length, gainedP1ReqProjects
094: .size());
095: printCollection("projects", gainedP1ReqProjects);
096: p1Tested = true;
097: }
098: wsProjectNames.remove(project.getName());
099: }
100: assertTrue("\"p1\" project wasn't found in the workspace.",
101: p1Tested);
102: assertTrue("All project should be processed.", wsProjectNames
103: .isEmpty());
104: for (Iterator it = gainedP1ReqProjects.iterator(); it.hasNext();) {
105: p1ReqProjectsNames.remove(((ClassPathEntry) it.next())
106: .getRawPath());
107: }
108: assertTrue("\"p1\" project depends on unknown projects: "
109: + p1ReqProjectsNames, p1ReqProjectsNames.isEmpty());
110: }
111:
112: public void test_73542() throws Exception {
113: File workspaceDir = extractToWorkDir("workspace_73542-3.1.2.zip");
114: Workspace workspace = WorkspaceFactory.getInstance().load(
115: workspaceDir);
116: assertNotNull("Unable to load workspace", workspace);
117: }
118:
119: }
|