blob: 144eb3a1bb6ae0956981c30928e192132582b458 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
/*
* TestDefaultLibraries.java
* NetBeans JUnit based test
*
* Created on 06 September 2004, 15:37
*/
package projects;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.URL;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.TreeSet;
import org.netbeans.jellytools.JellyTestCase;
import junit.framework.Test;
import org.netbeans.junit.NbModuleSuite;
//import org.netbeans.junit.ide.ProjectSupport;
import org.netbeans.api.project.libraries.LibraryManager;
import org.netbeans.api.project.libraries.Library;
/**
*
*/
public class LibrariesTest extends JellyTestCase {
Map<String, Set<String>> librariesUrls;
public LibrariesTest(java.lang.String testName) {
super(testName);
}
public static Test suite() {
return NbModuleSuite.create(
NbModuleSuite.createConfiguration(LibrariesTest.class).
addTest("testDefaultLibrariesIgnoreOrder").
enableModules(".*").clusters(".*"));
}
@Override
protected void setUp() throws Exception {
super.setUp();
librariesUrls = new HashMap<String, Set<String>>();
}
// -------------------------------------------------------------------------
/**
* This test fails only for golden files that differ from current state
* in content (ignored are differnces related to lines order).
*
*/
public void testDefaultLibrariesIgnoreOrder() throws IOException {
init1();
LibraryManager libMan = LibraryManager.getDefault();
Library[] libs = libMan.getLibraries();
String errorString = "";
PrintWriter initMethodBuff = new PrintWriter(new FileWriter(new File(getWorkDir(), "testDefaultLibrariesIgnoreOrder.txt")));
try {
for (int i = 0; i < libs.length; i++) {
// names of files are based on library name
String baseName = libs[i].getName();
Set<String> urls = new TreeSet<String>();
addURLs(urls, libs[i].getContent("classpath"));
addURLs(urls, libs[i].getContent("javadoc"));
addURLs(urls, libs[i].getContent("src"));
generateInitDefaultLibrariesIngoreOrder(initMethodBuff, urls, baseName);
assertEquals("Following files differ other way than lines order:", librariesUrls.get(baseName), urls);
}
} finally {
initMethodBuff.close();
}
}
public void init1() {
Set<String> set = new TreeSet<String>();
set.add("jar:nbinst://org.netbeans.modules.websvc.jaxrpc16/modules/ext/jaxrpc16/FastInfoset.jar!/");
set.add("jar:nbinst://org.netbeans.modules.websvc.jaxrpc16/modules/ext/jaxrpc16/activation.jar!/");
set.add("jar:nbinst://org.netbeans.modules.websvc.jaxrpc16/modules/ext/jaxrpc16/jax-qname.jar!/");
set.add("jar:nbinst://org.netbeans.modules.websvc.jaxrpc16/modules/ext/jaxrpc16/jaxp-api.jar!/");
set.add("jar:nbinst://org.netbeans.modules.websvc.jaxrpc16/modules/ext/jaxrpc16/jaxrpc-api.jar!/");
set.add("jar:nbinst://org.netbeans.modules.websvc.jaxrpc16/modules/ext/jaxrpc16/jaxrpc-impl.jar!/");
set.add("jar:nbinst://org.netbeans.modules.websvc.jaxrpc16/modules/ext/jaxrpc16/jaxrpc-spi.jar!/");
set.add("jar:nbinst://org.netbeans.modules.websvc.jaxrpc16/modules/ext/jaxrpc16/jsr173_api.jar!/");
set.add("jar:nbinst://org.netbeans.modules.websvc.jaxrpc16/modules/ext/jaxrpc16/mail.jar!/");
set.add("jar:nbinst://org.netbeans.modules.websvc.jaxrpc16/modules/ext/jaxrpc16/relaxngDatatype.jar!/");
set.add("jar:nbinst://org.netbeans.modules.websvc.jaxrpc16/modules/ext/jaxrpc16/saaj-api.jar!/");
set.add("jar:nbinst://org.netbeans.modules.websvc.jaxrpc16/modules/ext/jaxrpc16/saaj-impl.jar!/");
set.add("jar:nbinst://org.netbeans.modules.websvc.jaxrpc16/modules/ext/jaxrpc16/xsdlib.jar!/");
librariesUrls.put("jaxrpc16", set);
set = new TreeSet<String>();
set.add("jar:nbinst://org.netbeans.modules.form/modules/ext/AbsoluteLayout.jar!/");
librariesUrls.put("absolutelayout", set);
set = new TreeSet<String>();
set.add("jar:nbinst:///modules/ext/jaxws21/FastInfoset.jar!/");
set.add("jar:nbinst:///modules/ext/jaxws21/activation.jar!/");
set.add("jar:nbinst:///modules/ext/jaxws21/api/jaxb-api.jar!/");
set.add("jar:nbinst:///modules/ext/jaxws21/api/jaxws-api.jar!/");
set.add("jar:nbinst:///modules/ext/jaxws21/api/jsr173_api.jar!/");
set.add("jar:nbinst:///modules/ext/jaxws21/api/jsr181-api.jar!/");
set.add("jar:nbinst:///modules/ext/jaxws21/api/saaj-api.jar!/");
set.add("jar:nbinst:///modules/ext/jaxws21/http.jar!/");
set.add("jar:nbinst:///modules/ext/jaxws21/jaxb-impl.jar!/");
set.add("jar:nbinst:///modules/ext/jaxws21/jaxb-xjc.jar!/");
set.add("jar:nbinst:///modules/ext/jaxws21/jaxws-rt.jar!/");
set.add("jar:nbinst:///modules/ext/jaxws21/jaxws-tools.jar!/");
set.add("jar:nbinst:///modules/ext/jaxws21/jsr250-api.jar!/");
set.add("jar:nbinst:///modules/ext/jaxws21/saaj-impl.jar!/");
set.add("jar:nbinst:///modules/ext/jaxws21/sjsxp.jar!/");
set.add("jar:nbinst:///modules/ext/jaxws21/stax-ex.jar!/");
set.add("jar:nbinst:///modules/ext/jaxws21/streambuffer.jar!/");
librariesUrls.put("jaxws20", set);
set = new TreeSet<String>();
set.add("jar:nbinst:///docs/org-netbeans-libs-javacapi.zip!/");
set.add("jar:nbinst:///modules/ext/javac-api-nb-7.0-b07.jar!/");
librariesUrls.put("javac-api", set);
set = new TreeSet<String>();
set.add("jar:nbinst:///docs/javaee-doc-api.jar!/");
set.add("jar:nbinst://org.netbeans.libs.jstl/modules/ext/jstl-api.jar!/");
set.add("jar:nbinst://org.netbeans.libs.jstl/modules/ext/jstl-impl.jar!/");
librariesUrls.put("jstl", set);
set = new TreeSet<String>();
set.add("jar:nbinst:///modules/ext/jaxws21/activation.jar!/");
set.add("jar:nbinst:///modules/ext/jaxws21/api/jaxb-api.jar!/");
set.add("jar:nbinst:///modules/ext/jaxws21/api/jsr173_api.jar!/");
set.add("jar:nbinst:///modules/ext/jaxws21/jaxb-impl.jar!/");
set.add("jar:nbinst:///modules/ext/jaxws21/jaxb-xjc.jar!/");
librariesUrls.put("jaxb20", set);
set = new TreeSet<String>();
set.add("jar:nbinst://org.netbeans.modules.swingapp/docs/appframework-0.30-doc.zip!/");
set.add("jar:nbinst://org.netbeans.modules.swingapp/modules/ext/appframework-0.30.jar!/");
set.add("jar:nbinst://org.netbeans.modules.swingapp/modules/ext/swing-worker.jar!/");
librariesUrls.put("swing-app-framework", set);
set = new TreeSet<String>();
set.add("jar:nbinst:///docs/struts-1.2.9-javadoc.zip!/");
set.add("jar:nbinst://org.netbeans.modules.web.struts/modules/ext/struts/antlr.jar!/");
set.add("jar:nbinst://org.netbeans.modules.web.struts/modules/ext/struts/commons-beanutils.jar!/");
set.add("jar:nbinst://org.netbeans.modules.web.struts/modules/ext/struts/commons-digester.jar!/");
set.add("jar:nbinst://org.netbeans.modules.web.struts/modules/ext/struts/commons-fileupload.jar!/");
set.add("jar:nbinst://org.netbeans.modules.web.struts/modules/ext/struts/commons-logging.jar!/");
set.add("jar:nbinst://org.netbeans.modules.web.struts/modules/ext/struts/commons-validator.jar!/");
set.add("jar:nbinst://org.netbeans.modules.web.struts/modules/ext/struts/jakarta-oro.jar!/");
set.add("jar:nbinst://org.netbeans.modules.web.struts/modules/ext/struts/struts.jar!/");
librariesUrls.put("struts", set);
set = new TreeSet<String>();
set.add("jar:nbinst://org.netbeans.modules.junit/docs/junit-3.8.2-api.zip!/");
set.add("jar:nbinst://org.netbeans.modules.junit/modules/ext/junit-3.8.2.jar!/");
set.add("jar:nbinst://org.netbeans.modules.junit/modules/ext/junit-4.1.jar!/");
librariesUrls.put("junit", set);
set = new TreeSet<String>();
set.add("jar:nbinst://org.netbeans.modules.java.j2seproject/ant/extra/org-netbeans-modules-java-j2seproject-copylibstask.jar!/");
librariesUrls.put("CopyLibs", set);
set = new TreeSet<String>();
set.add("jar:nbinst:///modules/ext/beansbinding-0.5.jar!/");
librariesUrls.put("beans-binding", set);
set = new TreeSet<String>();
set.add("jar:nbinst:///docs/javaee-doc-api.jar!/");
set.add("jar:nbinst://org.netbeans.modules.web.jsf/modules/ext/jsf/commons-beanutils.jar!/");
set.add("jar:nbinst://org.netbeans.modules.web.jsf/modules/ext/jsf/commons-collections.jar!/");
set.add("jar:nbinst://org.netbeans.modules.web.jsf/modules/ext/jsf/commons-digester.jar!/");
set.add("jar:nbinst://org.netbeans.modules.web.jsf/modules/ext/jsf/commons-logging.jar!/");
set.add("jar:nbinst://org.netbeans.modules.web.jsf/modules/ext/jsf/jsf-api.jar!/");
set.add("jar:nbinst://org.netbeans.modules.web.jsf/modules/ext/jsf/jsf-impl.jar!/");
librariesUrls.put("jsf", set);
}
private void generateInitDefaultLibrariesIngoreOrder(PrintWriter buff, Set<String> urls, String baseName) {
buff.println("set = new TreeSet<String>();");
for (String url : urls) {
buff.println("set.add(\"" + url + "\");");
}
buff.println("librariesUrls.put(\"" + baseName + "\", set);");
}
private void addURLs(Set<String> urls, Iterable<URL> sourceUrls) {
for (URL url : sourceUrls) {
urls.add(url.toExternalForm());
}
}
/**
* This test fails if golden files differ from current state even if there are
* only differnces in lines order.
*/
// public void testDefaultLibraries() {
//
// LibraryManager libMan = LibraryManager.getDefault();
// Library [] libs = libMan.getLibraries();
//
// for (int i = 0; i < libs.length; i++) {
// System.out.println("**********" + libs[i].getName() + "**********");
// File refFile = null;
// PrintStream ps = null;
// // names of files are based on library name
// String baseName = libs[i].getName();
// String refFileName = baseName + "_ref.txt";
// String goldenFileName = baseName + "_pass.txt";
// String diffFileName = baseName + "_diff.txt";
//
// // write library data to ref file
// try {
// ps = new PrintStream(new java.io.FileOutputStream(new File(getWorkDir(), refFileName)));
// } catch (Exception exc) {
// fail(exc.getMessage());
// }
//
// List listOfClasspaths = libs[i].getContent("classpath");
// dumpList("", listOfClasspaths, ps);
// List listOfJavadocs = libs[i].getContent("javadoc");
// dumpList("", listOfJavadocs, ps);
// List listOfSrcs = libs[i].getContent("src");
// dumpList("", listOfSrcs, ps);
// ps.close();
//
// try {
// compareReferenceFiles(refFileName, goldenFileName, diffFileName);
// } catch (Exception exc) {
// fail(exc.getMessage());
// }
// }
//
// }
public void __testCreateLibrary() {
// learn hostname
String hostName = null;
try {
hostName = InetAddress.getLocalHost().getHostName();
} catch (UnknownHostException uhe) {
fail("Cannot get hostname: " + uhe.getMessage()); // NOI18N
}
hostName = hostName.replace('-', '_');
// load platforms.properties file
InputStream is = this.getClass().getResourceAsStream("libraries.properties");
Properties props = new Properties();
try {
props.load(is);
} catch (java.io.IOException ioe) {
fail("Cannot load platforms properties: " + ioe.getMessage()); // NOI18N
}
String[] libCp = getTokensAsArray(props.getProperty(hostName + "library1_cp"));
String[] libSrc = getTokensAsArray(props.getProperty(hostName + "library1_src"));
String[] libJdoc = getTokensAsArray(props.getProperty(hostName + "library1_jdoc"));
TestProjectUtils.addLibrary(props.getProperty(hostName + "library1_name"),
libCp, libSrc, libJdoc);
}
public void __testListDefaultLibraries() {
listDefaultLibs("e:\\work\\libs\\");
}
// -------------------------------------------------------------------------
/* This method is intended only for generation of golden files from Beta2 release build
*/
private void listDefaultLibs(String folder) {
PrintStream pw = null;
LibraryManager libMan = LibraryManager.getDefault();
Library[] libs = libMan.getLibraries();
for (int i = 0; i < libs.length; i++) {
try {
pw = new PrintStream(new FileOutputStream(folder + libs[i].getName() + ".txt"));
} catch (FileNotFoundException fnfe) {
fnfe.printStackTrace();
}
System.out.println("Display name: " + libs[i].getDisplayName());
System.out.println("Name: " + libs[i].getName());
List listOfClasspaths = libs[i].getContent("classpath");
dumpList("Classpath: ", listOfClasspaths, System.out);
dumpList("", listOfClasspaths, pw);
List listOfJavadocs = libs[i].getContent("javadoc");
dumpList("Javadoc: ", listOfJavadocs, System.out);
dumpList("", listOfJavadocs, pw);
List listOfSrcs = libs[i].getContent("src");
dumpList("Sources: ", listOfSrcs, System.out);
dumpList("", listOfSrcs, pw);
pw.close();
}
}
public String[] getGoldenFileLines(String goldenFileName) {
File goldenFile = null;
BufferedReader reader = null;
try {
goldenFile = getGoldenFile(goldenFileName);
reader = new BufferedReader(new FileReader(goldenFile));
} catch (Exception e) {
fail("Unable to open following golden file '" + goldenFile.toString() + "'"); // NOI18N
}
List<String> linesList = new ArrayList<String>();
String line;
try {
while ((line = reader.readLine()) != null) {
System.out.println(line);
if (line.trim() != "") {
linesList.add(line);
}
}
reader.close();
} catch (Exception e) {
}
String[] lines = linesList.toArray(new String[0]);
Arrays.sort(lines);
return lines;
}
private void dumpList(String prefix, List list, PrintStream ps) {
Iterator iter = list.iterator();
while (iter.hasNext()) {
ps.println(prefix + iter.next());
}
}
private String[] getTokensAsArray(String str) {
StringTokenizer st = new StringTokenizer(str, ",");
String[] array = new String[st.countTokens()];
int index = 0;
while (st.hasMoreTokens()) {
array[index++] = st.nextToken().trim();
}
return array;
}
}