blob: b77a8aa6f4f0a7853c09871e2c8583ad1b511000 [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.
*/
package org.netbeans.nbbuild;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Collections;
import java.util.HashSet;
import java.util.Properties;
import java.util.Set;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
/**
*
* @author pzajac
*/
public class FixTestDependenciesTest extends TestBase {
public FixTestDependenciesTest(String testName) {
super(testName);
}
public void testOpenideUtilTestDepNeedsToBeRecursive() throws IOException, Exception {
File prjFile = copyFile("FixTestDependencies-openide.filesystems.xml");
File propertiesFile = new File(getWorkDir(), "empty.properties");
propertiesFile.createNewFile();
FixTestDependencies ftd = newFixTestDependencies();
ftd.setPropertiesFile(propertiesFile);
ftd.setProjectXml(prjFile);
ftd.cachedEntries = getEntries();
ftd.execute();
String result = readFile(prjFile);
int first = result.indexOf("test-dependencies");
if (first == -1) {
fail("No test deps found in " + result);
}
result = result.substring(first);
if (result.indexOf("org.openide.util") == -1) {
fail("org.openide.util should be there: " + result);
}
if (result.indexOf("org.openide.util.lookup") == -1) {
fail("org.openide.util.lookup should be there: " + result);
}
}
public void testNoChangeForProjectsWithoutTests() throws IOException, Exception {
File prjFile = copyFile("FixTestDependencies-o.apache.xml.resolver.xml");
String before = readFile(prjFile);
File propertiesFile = new File(getWorkDir(), "some.properties");
Properties np = new Properties();
np.put("is.autoload", "true");
np.store(new FileOutputStream(propertiesFile), "");
FixTestDependencies ftd = newFixTestDependencies();
ftd.setPropertiesFile(propertiesFile);
ftd.setProjectXml(prjFile);
ftd.cachedEntries = getEntries();
ftd.execute();
String result = readFile(prjFile);
assertEquals("No change expected", before, result);
}
public void testSimple() throws IOException, Exception {
File prjFile = copyFile("FixTestDependenciesProject.xml");
File propertiesFile = copyFile("FixTestDependencies.properties");
doFixProjectXml(propertiesFile, prjFile);
doFixProjectXml(propertiesFile, copyFile("FixTestDependenciesProject2.xml"));
}
public void testStandalone() throws IOException, Exception {
File prjFile = copyFile("FixTestDependenciesProjectStandalone.xml");
File propertiesFile = copyFile("FixTestDependencies.properties");
FixTestDependencies ftd = newFixTestDependencies();
ftd.setPropertiesFile(propertiesFile);
ftd.setProjectXml(prjFile);
ftd.cachedEntries = getEntries();
ftd.execute();
assertFile(copyFile("FixTestDependenciesProjectStandalonePass.xml"),prjFile);
assertFile(copyFile("FixTestDependenciesPass.properties"),propertiesFile);
}
public void testWrongBuilClassDep() throws IOException {
FixTestDependencies ftd = newFixTestDependencies();
Set<String> cnb = new HashSet<>();
Set<String> testCnb = new HashSet<>();
Properties props = new Properties();
String PNAME = "cp.extra";
String PVALUE = "../build/test/unit/classes";
props.setProperty(PNAME,PVALUE);
ftd.readCodeNameBases(cnb, testCnb, props, "cp.extra", Collections.<String>emptySet(), Collections.<ModuleListParser.Entry>emptySet());
assertEquals("No dependency on module.",0,cnb.size());
assertEquals("No test dependency on module.",0,testCnb.size());
assertEquals("property value",PVALUE,props.getProperty(PNAME));
}
private FixTestDependencies newFixTestDependencies() throws IOException, BuildException {
Project project = new Project();
project.setBaseDir(getWorkDir());
FixTestDependencies ftd = new FixTestDependencies();
ftd.setProject(project);
return ftd;
}
private void doFixProjectXml(final File propertiesFile, final File prjFile) throws Exception, IOException {
FixTestDependencies ftd = newFixTestDependencies();
ftd.setPropertiesFile(propertiesFile);
ftd.setProjectXml(prjFile);
ftd.cachedEntries = getEntries();
ftd.execute();
assertFile(copyFile("FixTestDependenciesProjectPass.xml"),prjFile);
assertFile(copyFile("FixTestDependenciesPass.properties"),propertiesFile);
}
private File copyFile(String resourceName) throws IOException {
File retFile = new File(getWorkDir(), resourceName);
try (InputStream is = getClass().getResourceAsStream(resourceName);
FileOutputStream fos = new FileOutputStream(retFile);) {
byte buf[] = new byte[10000];
int size;
while ((size = is.read(buf)) > 0) {
fos.write(buf, 0, size);
}
}
return retFile;
}
private Set<ModuleListParser.Entry> getEntries() {
Set<ModuleListParser.Entry> entries = new HashSet<>();
File nonexistent = new File("nonexistent");
entries.add(new ModuleListParser.Entry("org.openide.io",new File("extra/modules/org-openide-io.jar"),
new File[0], null,"openide/io","openide/io",
new String[]{"org.openide.util"},
"extra",
new String[]{"org.openide.util"},
Collections.<String,String[]>emptyMap(), nonexistent));
entries.add(new ModuleListParser.Entry("org.openide.compat",new File("extra/modules/org-openide-compat.jar"),
new File[0], null,"openide/compat","openide/compat",
new String[]{"org.netbeans.core","org.openide.actions","org.openide.awt","org.openide.dialogs","org.openide.explorer","org.openide.filesystems","org.openide.nodes","org.openide.options","org.openide.text","org.openide.util","org.openide.windows"},
"extra",
new String[]{"org.netbeans.core","org.openide.actions","org.openide.awt","org.openide.dialogs","org.openide.explorer","org.openide.filesystems","org.openide.nodes","org.openide.options","org.openide.text","org.openide.util","org.openide.windows"},
Collections.<String,String[]>emptyMap(), nonexistent));
entries.add(new ModuleListParser.Entry("org.netbeans.modules.projectapi",new File("extra/modules/org-netbeans-modules-projectapi.jar"),
new File[0], null,"projects/projectapi","projects/projectapi",
new String[]{"org.netbeans.modules.queries","org.openide.filesystems","org.openide.util"},
"extra",
new String[]{"org.netbeans.modules.queries","org.openide.filesystems","org.openide.util"},
Collections.<String,String[]>emptyMap(), nonexistent));
entries.add(new ModuleListParser.Entry("org.openide.loaders",new File("extra/modules/org-openide-loaders.jar"),
new File[0], null,"openide/loaders","openide/loaders",
new String[]{"org.netbeans.api.progress","org.openide.actions","org.openide.awt","org.openide.dialogs","org.openide.explorer","org.openide.filesystems","org.openide.modules","org.openide.nodes","org.openide.text","org.openide.util","org.openide.windows"},
"extra",
new String[]{"org.netbeans.api.progress","org.openide.actions","org.openide.awt","org.openide.dialogs","org.openide.explorer","org.openide.filesystems","org.openide.modules","org.openide.nodes","org.openide.text","org.openide.util","org.openide.windows"},
Collections.<String,String[]>emptyMap(), nonexistent));
entries.add(new ModuleListParser.Entry("org.netbeans.core",new File("extra/modules/org-netbeans-core.jar"),
new File[0], null,"core","core",
new String[]{"org.netbeans.bootstrap","org.netbeans.core.startup","org.netbeans.swing.plaf","org.openide.actions","org.openide.awt","org.openide.dialogs","org.openide.explorer","org.openide.filesystems","org.openide.loaders","org.openide.modules","org.openide.nodes","org.openide.options","org.openide.text","org.openide.util","org.openide.windows"},
"extra",
new String[]{"org.netbeans.bootstrap","org.netbeans.core.startup","org.netbeans.swing.plaf","org.openide.actions","org.openide.awt","org.openide.dialogs","org.openide.explorer","org.openide.filesystems","org.openide.loaders","org.openide.modules","org.openide.nodes","org.openide.options","org.openide.text","org.openide.util","org.openide.windows"},
Collections.<String,String[]>emptyMap(), nonexistent));
entries.add(new ModuleListParser.Entry("org.netbeans.modules.masterfs",new File("extra/modules/org-netbeans-modules-masterfs.jar"),
new File[0], null,"openide/masterfs","openide/masterfs",
new String[]{"org.openide.filesystems","org.openide.util","org.openide.options","org.netbeans.modules.queries"},
"extra",
new String[]{"org.openide.filesystems","org.openide.util","org.openide.options","org.netbeans.modules.queries"},
Collections.<String,String[]>emptyMap(), nonexistent));
entries.add(new ModuleListParser.Entry("org.netbeans.bootstrap",new File("extra/lib/boot.jar"),
new File[0], null,"core/bootstrap","core/bootstrap",
new String[]{"org.openide.modules","org.openide.util"},
"extra",
new String[]{"org.openide.modules","org.openide.util"},
Collections.<String,String[]>emptyMap(), nonexistent));
entries.add(new ModuleListParser.Entry("org.netbeans.libs.xerces",new File("extra/modules/org-netbeans-libs-xerces.jar"),
new File[]{new File("nonsence:/home/pzajac/cvss/freshtrunk/libs/external/xerces-2.8.0.jar"),new File("nonsence:/home/pzajac/cvss/freshtrunk/libs/external/xml-commons-dom-ranges-1.0.b2.jar")},
null,"libs/xerces","libs/xerces",
new String[0],
"extra",
new String[0],
Collections.<String,String[]>emptyMap(), nonexistent));
entries.add(new ModuleListParser.Entry("org.netbeans.api.progress",new File("extra/modules/org-netbeans-api-progress.jar"),
new File[0], null,"core/progress","core/progress",
new String[]{"org.openide.util","org.openide.awt"},
"extra",
new String[]{"org.openide.util","org.openide.awt"},
Collections.<String,String[]>emptyMap(), nonexistent));
entries.add(new ModuleListParser.Entry("org.openide.options",new File("extra/modules/org-openide-options.jar"),
new File[0], null,"openide/options","openide/options",
new String[]{"org.openide.util"},
"extra",
new String[]{"org.openide.util"},
Collections.<String,String[]>emptyMap(), nonexistent));
entries.add(new ModuleListParser.Entry("org.openide.explorer",new File("extra/modules/org-openide-explorer.jar"),
new File[0], null,"openide/explorer","openide/explorer",
new String[]{"org.openide.util","org.openide.nodes","org.openide.awt","org.openide.dialogs","org.openide.options"},
"extra",
new String[]{"org.openide.util","org.openide.nodes","org.openide.awt","org.openide.dialogs","org.openide.options"},
Collections.<String,String[]>emptyMap(), nonexistent));
entries.add(new ModuleListParser.Entry("org.openide.dialogs",new File("extra/modules/org-openide-dialogs.jar"),
new File[0], null,"openide/dialogs","openide/dialogs",
new String[]{"org.netbeans.api.progress","org.openide.awt","org.openide.util"},
"extra",
new String[]{"org.netbeans.api.progress","org.openide.awt","org.openide.util"},
Collections.<String,String[]>emptyMap(), nonexistent));
entries.add(new ModuleListParser.Entry("org.openide.nodes",new File("extra/modules/org-openide-nodes.jar"),
new File[0], null,"openide/nodes","openide/nodes",
new String[]{"org.openide.util","org.openide.awt","org.openide.dialogs"},
"extra",
new String[]{"org.openide.util","org.openide.awt","org.openide.dialogs"},
Collections.<String,String[]>emptyMap(), nonexistent));
entries.add(new ModuleListParser.Entry("org.openide.awt",new File("extra/modules/org-openide-awt.jar"),
new File[0], null,"openide/awt","openide/awt",
new String[]{"org.openide.util"},
"extra",
new String[]{"org.openide.util"},
Collections.<String,String[]>emptyMap(), nonexistent));
entries.add(new ModuleListParser.Entry("org.openide.text",new File("extra/modules/org-openide-text.jar"),
new File[0], null,"openide/text","openide/text",
new String[]{"org.netbeans.modules.editor.mimelookup","org.openide.awt","org.openide.dialogs","org.openide.nodes","org.openide.options","org.openide.util","org.openide.windows"},
"extra",
new String[]{"org.netbeans.modules.editor.mimelookup","org.openide.awt","org.openide.dialogs","org.openide.nodes","org.openide.options","org.openide.util","org.openide.windows"},
Collections.<String,String[]>emptyMap(), nonexistent));
entries.add(new ModuleListParser.Entry("org.openide.actions",new File("extra/modules/org-openide-actions.jar"),
new File[0], null,"openide/actions","openide/actions",
new String[]{"org.openide.util","org.openide.nodes","org.openide.awt","org.openide.options","org.openide.text","org.openide.explorer","org.openide.dialogs","org.openide.windows"},
"extra",
new String[]{"org.openide.util","org.openide.nodes","org.openide.awt","org.openide.options","org.openide.text","org.openide.explorer","org.openide.dialogs","org.openide.windows"},
Collections.<String,String[]>emptyMap(), nonexistent));
entries.add(new ModuleListParser.Entry("org.openide.util",new File("extra/lib/org-openide-util.jar"),
new File[0], null,"openide/util","openide/util",
new String[0],
"extra",
new String[0],
Collections.<String,String[]>emptyMap(), nonexistent));
entries.add(new ModuleListParser.Entry("org.netbeans.core.startup",new File("extra/core/core.jar"),
new File[0], null,"core/startup","core/startup",
new String[]{"org.netbeans.bootstrap","org.openide.filesystems","org.openide.modules","org.openide.util"},
"extra",
new String[]{"org.netbeans.bootstrap","org.openide.filesystems","org.openide.modules","org.openide.util"},
Collections.<String,String[]>emptyMap(), nonexistent));
entries.add(new ModuleListParser.Entry("org.openide.modules",new File("extra/lib/org-openide-modules.jar"),
new File[0], null,"openide/modules","openide/modules",
new String[]{"org.openide.util"},
"extra",
new String[]{"org.openide.util"},
Collections.<String,String[]>emptyMap(), nonexistent));
entries.add(new ModuleListParser.Entry("org.openide.filesystems",new File("extra/core/org-openide-filesystems.jar"),
new File[0], null,"openide/fs","openide/fs",
new String[]{"org.openide.util"},
"extra",
new String[]{"org.openide.util"},
Collections.<String,String[]>emptyMap(), nonexistent));
return entries;
}
}