You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by jl...@apache.org on 2018/06/18 04:40:03 UTC
[incubator-netbeans] branch master updated: Fixing problems with
watches evaluation on (not only) the upcoming JDK 11,
fixing EvaluatorTest to pass on both JDK 8 with nb-javac and on recent JDK
11.
This is an automated email from the ASF dual-hosted git repository.
jlahoda pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-netbeans.git
The following commit(s) were added to refs/heads/master by this push:
new 6b33d35 Fixing problems with watches evaluation on (not only) the upcoming JDK 11, fixing EvaluatorTest to pass on both JDK 8 with nb-javac and on recent JDK 11.
6b33d35 is described below
commit 6b33d358012d670bfa229c21f8fd0dd18887a317
Author: Jan Lahoda <jl...@netbeans.org>
AuthorDate: Sat May 12 10:21:35 2018 +0200
Fixing problems with watches evaluation on (not only) the upcoming JDK 11, fixing EvaluatorTest to pass on both JDK 8 with nb-javac and on recent JDK 11.
---
.../debugger/jpda/projects/IntroduceClass.java | 1 +
debugger.jpda/nbproject/project.properties | 1 +
debugger.jpda/nbproject/project.xml | 5 +++
.../debugger/jpda/expr/EvaluatorVisitor.java | 2 +-
.../netbeans/api/debugger/jpda/EvaluatorTest.java | 18 ++++++++++
.../netbeans/api/debugger/jpda/JPDASupport.java | 39 ++++++++++++----------
.../api/debugger/jpda/testapps/EvaluatorApp.java | 6 +++-
nbjunit/apichanges.xml | 14 ++++++++
nbjunit/manifest.mf | 2 +-
nbjunit/src/org/netbeans/junit/NbModuleSuite.java | 13 ++++++++
10 files changed, 80 insertions(+), 21 deletions(-)
diff --git a/debugger.jpda.projects/src/org/netbeans/modules/debugger/jpda/projects/IntroduceClass.java b/debugger.jpda.projects/src/org/netbeans/modules/debugger/jpda/projects/IntroduceClass.java
index c76fbd7..612d06a 100644
--- a/debugger.jpda.projects/src/org/netbeans/modules/debugger/jpda/projects/IntroduceClass.java
+++ b/debugger.jpda.projects/src/org/netbeans/modules/debugger/jpda/projects/IntroduceClass.java
@@ -124,6 +124,7 @@ class IntroduceClass {
lsBegin -= codeOffset;
this.snippetCode = new StringBuilder(this.snippetCode)
.insert((int) lsBegin, "return ")
+ .append(';')
.toString();
}
if (returnType == null) {
diff --git a/debugger.jpda/nbproject/project.properties b/debugger.jpda/nbproject/project.properties
index 46316d0..ab2561a 100644
--- a/debugger.jpda/nbproject/project.properties
+++ b/debugger.jpda/nbproject/project.properties
@@ -25,5 +25,6 @@ requires.nb.javac=true
spec.version.base=1.110.0
test-unit-sys-prop.test.dir.src=${basedir}/test/unit/src/
test-unit-sys-prop.netbeans.user=${basedir}/work/nb_user_dir
+test.unit.cp.extra=../java.source.nbjavac/build/test-nb-javac/cluster/modules/org-netbeans-modules-java-source-nbjavac-test.jar
diff --git a/debugger.jpda/nbproject/project.xml b/debugger.jpda/nbproject/project.xml
index 814e374..14cbb11 100644
--- a/debugger.jpda/nbproject/project.xml
+++ b/debugger.jpda/nbproject/project.xml
@@ -184,6 +184,11 @@
<recursive/>
</test-dependency>
<test-dependency>
+ <code-name-base>org.netbeans.modules.java.source.nbjavac</code-name-base>
+ <compile-dependency/>
+ <test/>
+ </test-dependency>
+ <test-dependency>
<code-name-base>org.netbeans.modules.nbjunit</code-name-base>
<recursive/>
<compile-dependency/>
diff --git a/debugger.jpda/src/org/netbeans/modules/debugger/jpda/expr/EvaluatorVisitor.java b/debugger.jpda/src/org/netbeans/modules/debugger/jpda/expr/EvaluatorVisitor.java
index 04edbe7..614b7c7 100644
--- a/debugger.jpda/src/org/netbeans/modules/debugger/jpda/expr/EvaluatorVisitor.java
+++ b/debugger.jpda/src/org/netbeans/modules/debugger/jpda/expr/EvaluatorVisitor.java
@@ -1992,7 +1992,7 @@ public class EvaluatorVisitor extends ErrorAwareTreePathScanner<Mirror, Evaluati
identifierPath = getCurrentPath();
}
elm = evaluationContext.getTrees().getElement(identifierPath);
- if (elm instanceof TypeElement && ((TypeElement) elm).asType() instanceof ErrorType) {
+ if (elm instanceof TypeElement && ((TypeElement) elm).asType().getKind() == TypeKind.ERROR) {
currentPath = null; // Elements not resolved correctly
}
}
diff --git a/debugger.jpda/test/unit/src/org/netbeans/api/debugger/jpda/EvaluatorTest.java b/debugger.jpda/test/unit/src/org/netbeans/api/debugger/jpda/EvaluatorTest.java
index 30e22ec..43e3481 100644
--- a/debugger.jpda/test/unit/src/org/netbeans/api/debugger/jpda/EvaluatorTest.java
+++ b/debugger.jpda/test/unit/src/org/netbeans/api/debugger/jpda/EvaluatorTest.java
@@ -23,6 +23,7 @@ import com.sun.jdi.ArrayReference;
import com.sun.jdi.StringReference;
import com.sun.jdi.Value;
import java.io.BufferedReader;
+import java.io.File;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.ArrayList;
@@ -30,8 +31,16 @@ import java.util.List;
import junit.framework.AssertionFailedError;
import junit.framework.Test;
import org.netbeans.api.debugger.DebuggerManager;
+import org.netbeans.api.java.classpath.ClassPath;
+import org.netbeans.api.java.source.ClasspathInfo;
+import org.netbeans.api.java.source.JavaSource;
+import org.netbeans.api.project.FileOwnerQuery;
+import org.netbeans.api.project.Project;
+import org.netbeans.api.project.ui.OpenProjects;
import org.netbeans.junit.NbTestCase;
import org.netbeans.modules.debugger.jpda.expr.JDIVariable;
+import org.openide.filesystems.FileObject;
+import org.openide.filesystems.FileUtil;
/**
* Tests evaluation of various expressions.
@@ -58,6 +67,15 @@ public class EvaluatorTest extends NbTestCase {
protected void setUp () throws Exception {
super.setUp ();
+ //PreferredCCParser is using SourceUtils.isScanInProgress() to modify behavior; ensure indexing is not running.
+ FileObject prjRoot = FileUtil.toFileObject(new File(System.getProperty("test.dir.src")));
+ assertNotNull(prjRoot);
+ Project prj = FileOwnerQuery.getOwner(prjRoot);
+ assertNotNull(prj);
+ Project annotationsPrj = FileOwnerQuery.getOwner(prj.getProjectDirectory().getParent().getFileObject("api.annotations.common"));
+ assertNotNull(annotationsPrj);
+ OpenProjects.getDefault().open(new Project[] {annotationsPrj}, false);
+ JavaSource.create(ClasspathInfo.create(ClassPath.EMPTY, ClassPath.EMPTY, ClassPath.EMPTY)).runWhenScanFinished(p -> {}, true).get();
System.setProperty("debugger.evaluator2", "true");
JPDASupport.removeAllBreakpoints ();
Utils.BreakPositions bp = Utils.getBreakPositions(System.getProperty ("test.dir.src")+
diff --git a/debugger.jpda/test/unit/src/org/netbeans/api/debugger/jpda/JPDASupport.java b/debugger.jpda/test/unit/src/org/netbeans/api/debugger/jpda/JPDASupport.java
index 23e70f5..b13a30a 100644
--- a/debugger.jpda/test/unit/src/org/netbeans/api/debugger/jpda/JPDASupport.java
+++ b/debugger.jpda/test/unit/src/org/netbeans/api/debugger/jpda/JPDASupport.java
@@ -46,6 +46,8 @@ import org.netbeans.junit.NbModuleSuite;
import org.netbeans.junit.NbModuleSuite.Configuration;
import org.netbeans.spi.java.classpath.support.ClassPathSupport;
import org.openide.filesystems.FileObject;
+import org.openide.filesystems.FileUtil;
+import org.openide.util.Exceptions;
/**
* Contains support functionality for unit tests.
@@ -82,7 +84,25 @@ public class JPDASupport implements DebuggerManagerListener {
public static Test createTestSuite(Class<? extends TestCase> clazz) {
Configuration suiteConfiguration = NbModuleSuite.createConfiguration(clazz);
- suiteConfiguration = suiteConfiguration.gui(false);
+ suiteConfiguration = suiteConfiguration.clusters(".*").enableModules(".*java.source.*").gui(false);
+ if (!(ClassLoader.getSystemClassLoader() instanceof URLClassLoader)) {
+ //when running on JDK 9+, to make the com.sun.jdi package dependency work, we need to make getPackage("com.sun.jdi") work
+ //for system CL's parent (which otherwise happily loads the VirtualMachineManager class,
+ //but won't return the package from getPackage due to JDK "specialty":
+ suiteConfiguration = suiteConfiguration.parentClassLoader(new ClassLoader(ClassLoader.getSystemClassLoader().getParent()) {
+ @Override
+ protected Package getPackage(String pack) {
+ if ("com.sun.jdi".equals(pack)) {
+ try {
+ return loadClass("com.sun.jdi.VirtualMachineManager").getPackage();
+ } catch (ClassNotFoundException ex) {
+ throw new IllegalStateException(ex);
+ }
+ }
+ return super.getPackage(pack);
+ }
+ });
+ }
//suiteConfiguration = suiteConfiguration.reuseUserDir(false);
return NbModuleSuite.create(suiteConfiguration);
}
@@ -134,22 +154,6 @@ public class JPDASupport implements DebuggerManagerListener {
// return new JPDASupport (jpdaDebugger);
// }
- private static void deleteUserDir() {
- String userDir = System.getProperty("netbeans.user");
- if (userDir != null) {
- delete(new File(userDir));
- }
- }
-
- private static void delete(File f) {
- if (f.isDirectory()) {
- for (File cf : f.listFiles()) {
- delete(cf);
- }
- }
- f.delete();
- }
-
public static JPDASupport attach (String mainClass) throws IOException,
DebuggerStartException {
return attach(mainClass, null);
@@ -241,7 +245,6 @@ public class JPDASupport implements DebuggerManagerListener {
debuggerEngine.getActionsManager ().
doAction (ActionsManager.ACTION_KILL);
waitState (JPDADebugger.STATE_DISCONNECTED);
- deleteUserDir();
}
public void waitState (int state) {
diff --git a/debugger.jpda/test/unit/src/org/netbeans/api/debugger/jpda/testapps/EvaluatorApp.java b/debugger.jpda/test/unit/src/org/netbeans/api/debugger/jpda/testapps/EvaluatorApp.java
index d520076..b1d8995 100644
--- a/debugger.jpda/test/unit/src/org/netbeans/api/debugger/jpda/testapps/EvaluatorApp.java
+++ b/debugger.jpda/test/unit/src/org/netbeans/api/debugger/jpda/testapps/EvaluatorApp.java
@@ -846,7 +846,7 @@ public class EvaluatorApp extends BaseClass {
}
public static int testMember7() {
- // return pointObject.x;
+ // return-TODO pointObject.x;
return ((java.awt.Point) pointObject).x;
}
@@ -1120,6 +1120,10 @@ public class EvaluatorApp extends BaseClass {
return super.basedField;
}
+ public long testLambdas() {
+ return Arrays.stream(new String[] {"a", "b"}).map(str -> str.length()).distinct().count();
+ }
+
// Private access
// Test public class first
diff --git a/nbjunit/apichanges.xml b/nbjunit/apichanges.xml
index fb563af..ab04d99 100644
--- a/nbjunit/apichanges.xml
+++ b/nbjunit/apichanges.xml
@@ -34,6 +34,20 @@
<!-- ACTUAL CHANGES BEGIN HERE: -->
<changes>
+ <change id="NbModuleSuite.Configuration.parentClassLoader">
+ <api name="nbjunit"/>
+ <summary>NbModuleSuite.Configuration.parentClassLoader()</summary>
+ <version major="1" minor="91"/>
+ <date day="17" month="6" year="2018"/>
+ <author login="jlahoda"/>
+ <compatibility addition="yes"/>
+ <description>
+ <p>
+ Adding a way to set parent classloader on which the NB platform should start.
+ </p>
+ </description>
+ <class package="org.netbeans.junit" name="NbModuleSuite"/>
+ </change>
<change id="branding.token">
<api name="nbjunit"/>
<summary>System property branding.token</summary>
diff --git a/nbjunit/manifest.mf b/nbjunit/manifest.mf
index 953464f..00b5bba 100644
--- a/nbjunit/manifest.mf
+++ b/nbjunit/manifest.mf
@@ -1,5 +1,5 @@
Manifest-Version: 1.0
OpenIDE-Module: org.netbeans.modules.nbjunit/1
OpenIDE-Module-Localizing-Bundle: org/netbeans/junit/Bundle.properties
-OpenIDE-Module-Specification-Version: 1.90
+OpenIDE-Module-Specification-Version: 1.91
diff --git a/nbjunit/src/org/netbeans/junit/NbModuleSuite.java b/nbjunit/src/org/netbeans/junit/NbModuleSuite.java
index 311171d..696ed77 100644
--- a/nbjunit/src/org/netbeans/junit/NbModuleSuite.java
+++ b/nbjunit/src/org/netbeans/junit/NbModuleSuite.java
@@ -508,6 +508,19 @@ public class NbModuleSuite {
}
/**
+ * Sets the parent ClassLoader on which the NB platform should start.
+ * @param parentCL the parent ClassLoader
+ * @return clone of this configuration with the parent ClassLoader set
+ * @since 1.91
+ */
+ public Configuration parentClassLoader(ClassLoader parentCL) {
+ return new Configuration(
+ clusterRegExp, moduleRegExp, startupArgs, parentCL, tests,
+ latestTestCaseClass, reuseUserDir, gui, enableClasspathModules
+ ,honorAutoEager, failOnMessage, failOnException, hideExtraModules);
+ }
+
+ /**
* Creates a test suite from this configuration.
* Same as {@link #create(org.netbeans.junit.NbModuleSuite.Configuration)} but more fluid.
* @return a suite ready for returning from a {@code public static Test suite()} method
--
To stop receiving notification emails like this one, please contact
jlahoda@apache.org.
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists