|
What this is
Other links
The source code/* * Sun Public License Notice * * The contents of this file are subject to the Sun Public License * Version 1.0 (the "License"). You may not use this file except in * compliance with the License. A copy of the License is available at * http://www.sun.com/ * * The Original Code is NetBeans. The Initial Developer of the Original * Code is Sun Microsystems, Inc. Portions Copyright 1997-2004 Sun * Microsystems, Inc. All Rights Reserved. */ package org.netbeans.modules.java.project; import java.io.File; import java.io.IOException; import java.io.Reader; import java.io.StringReader; import java.io.StringWriter; import java.net.URL; import java.util.ArrayList; import java.util.List; import javax.swing.event.ChangeListener; import org.apache.tools.ant.module.api.support.ActionUtils; import org.netbeans.api.java.queries.SourceForBinaryQuery; import org.netbeans.junit.NbTestCase; import org.netbeans.spi.java.queries.SourceForBinaryQueryImplementation; import org.openide.filesystems.FileObject; import org.openide.filesystems.FileUtil; import org.openide.modules.InstalledFileLocator; import org.openide.util.Lookup; import org.openide.util.lookup.Lookups; import org.openide.util.lookup.ProxyLookup; import org.openide.windows.IOProvider; import org.openide.windows.InputOutput; import org.openide.windows.OutputListener; import org.openide.windows.OutputWriter; /** * Test hyperlinking functionality of {@link JavaAntLogger}. * @author Jesse Glick */ public final class JavaAntLoggerTest extends NbTestCase { static { System.setProperty("org.openide.util.Lookup", Lkp.class.getName()); Lookup.getDefault(); } public JavaAntLoggerTest(String name) { super(name); } private File simpleAppDir; protected void setUp() throws Exception { super.setUp(); String testDataDirS = System.getProperty("test.data.dir"); assertNotNull("have test.data.dir (should have been set by test environment)", testDataDirS); simpleAppDir = new File(testDataDirS, "simple-app"); assertTrue("have dir " + simpleAppDir, simpleAppDir.isDirectory()); SFBQ.setSimpleAppDir(simpleAppDir); nonhyperlinkedOut.clear(); nonhyperlinkedErr.clear(); hyperlinkedOut.clear(); hyperlinkedErr.clear(); } public void testHyperlinkRun() throws Exception { FileObject buildXml = FileUtil.toFileObject(new File(simpleAppDir, "build.xml")); assertNotNull("have build.xml as a FileObject", buildXml); ActionUtils.runTarget(buildXml, new String[] {"clean", "run"}, null); //System.out.println("nonhyperlinkedOut=" + nonhyperlinkedOut + " nonhyperlinkedErr=" + nonhyperlinkedErr + " hyperlinkedOut=" + hyperlinkedOut + " hyperlinkedErr=" + hyperlinkedErr); assertTrue("got a hyperlink for Clazz.run NPE", hyperlinkedErr.contains("\tat simpleapp.Clazz.run(Clazz.java:4)")); } /** See #44328. */ public void testHyperlinkTest() throws Exception { FileObject buildXml = FileUtil.toFileObject(new File(simpleAppDir, "build.xml")); assertNotNull("have build.xml as a FileObject", buildXml); ActionUtils.runTarget(buildXml, new String[] {"clean", "test"}, null); //System.out.println("nonhyperlinkedOut=" + nonhyperlinkedOut + " nonhyperlinkedErr=" + nonhyperlinkedErr + " hyperlinkedOut=" + hyperlinkedOut + " hyperlinkedErr=" + hyperlinkedErr); assertTrue("got a hyperlink for Clazz.run NPE", hyperlinkedErr.contains("\tat simpleapp.Clazz.run(Clazz.java:4)")); } /** Lookup for this test. */ public static final class Lkp extends ProxyLookup { public Lkp() { super(new Lookup[] { Lookups.fixed(new Object[] { new IOP(), new IFL(), new SFBQ(), }), Lookups.metaInfServices(Lkp.class.getClassLoader()), }); } } private static final class SFBQ implements SourceForBinaryQueryImplementation { private static SFBQ INSTANCE; private URL buildClasses, buildTestClasses; private FileObject src, testSrc; public static void setSimpleAppDir(File simpleAppDir) throws Exception { assert INSTANCE != null; INSTANCE.buildClasses = slashify(new File(simpleAppDir, "build" + File.separatorChar + "classes").toURI().toURL()); INSTANCE.buildTestClasses = slashify(new File(simpleAppDir, "build" + File.separatorChar + "test" + File.separatorChar + "classes").toURI().toURL()); INSTANCE.src = FileUtil.toFileObject(new File(simpleAppDir, "src")); INSTANCE.testSrc = FileUtil.toFileObject(new File(simpleAppDir, "test")); } private static URL slashify(URL u) throws Exception { String s = u.toExternalForm(); if (s.endsWith("/")) { return u; } else { return new URL(s + "/"); } } public SFBQ() { assert INSTANCE == null; INSTANCE = this; } public SourceForBinaryQuery.Result findSourceRoots(URL binaryRoot) { if (binaryRoot.equals(buildClasses)) { return new FixedResult(src); } else if (binaryRoot.equals(buildTestClasses)) { return new FixedResult(testSrc); } else { return null; } } private static final class FixedResult implements SourceForBinaryQuery.Result { private final FileObject dir; public FixedResult(FileObject dir) { this.dir = dir; } public FileObject[] getRoots() { return new FileObject[] {dir}; } public void addChangeListener(ChangeListener l) {} public void removeChangeListener(ChangeListener l) {} } } private static final class IOP extends IOProvider implements InputOutput { public IOP() {} public InputOutput getIO(String name, boolean newIO) { return this; } public OutputWriter getStdOut() { throw new UnsupportedOperationException(); } public OutputWriter getOut() { return new OW(false); } public OutputWriter getErr() { return new OW(true); } public Reader getIn() { return new StringReader(""); } public Reader flushReader() { return getIn(); } public void closeInputOutput() {} public boolean isClosed() { return false; } public boolean isErrSeparated() { return false; } public boolean isFocusTaken() { return false; } public void select() {} public void setErrSeparated(boolean value) {} public void setErrVisible(boolean value) {} public void setFocusTaken(boolean value) {} public void setInputVisible(boolean value) {} public void setOutputVisible(boolean value) {} } private static final List/* |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.