diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 0b91bbd..49e6152 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -3,7 +3,6 @@ * #114 %load magic does not recognize notebooks * #115 "%load" magic should not be adding extensions to file names * #118 Exception stack trace truncated — cause chain not fully reported -* #119 Variable nullification on later imports ## 1.0-a7 diff --git a/jjava-distro/src/test/java/org/dflib/jjava/distro/KernelExecutionIT.java b/jjava-distro/src/test/java/org/dflib/jjava/distro/KernelExecutionIT.java index 2768ba5..d61bd0e 100644 --- a/jjava-distro/src/test/java/org/dflib/jjava/distro/KernelExecutionIT.java +++ b/jjava-distro/src/test/java/org/dflib/jjava/distro/KernelExecutionIT.java @@ -5,6 +5,7 @@ import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.containsString; +import static org.hamcrest.Matchers.matchesRegex; import static org.hamcrest.Matchers.not; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -15,11 +16,36 @@ public class KernelExecutionIT extends ContainerizedKernelCase { */ @Test public void variableSurvivesLaterImports() throws Exception { - String snippet = "%load " + CONTAINER_RESOURCES + "/nullifying_import.jshell"; + String snippet = String.join("\n", + "%maven com.fasterxml.jackson.core:jackson-databind:2.21.2", + "import com.fasterxml.jackson.databind.*;", + "var om = new ObjectMapper().findAndRegisterModules();", + "import com.fasterxml.jackson.databind.node.*; import com.fasterxml.jackson.databind.type.*;", + "om.getClass().getName()" + ); + Container.ExecResult snippetResult = executeInKernel(snippet); + + assertEquals(0, snippetResult.getExitCode(), snippetResult.getStdout()); + assertThat(snippetResult.getStdout(), containsString("com.fasterxml.jackson.databind.ObjectMapper")); + assertThat(snippetResult.getStdout(), not(matchesRegex(".*(at |\\|).*"))); + } + + /** + * @see #119 + */ + @Test + public void variableRedeclarationUsesLatestValue() throws Exception { + String snippet = String.join("\n", + "int v = 1;", + "v", + "float v = 2.4f;", + "v" + ); Container.ExecResult snippetResult = executeInKernel(snippet); assertEquals(0, snippetResult.getExitCode(), snippetResult.getStdout()); - assertThat(snippetResult.getStdout(), not(containsString("|"))); + assertThat(snippetResult.getStdout(), containsString("Out[2]: 1")); + assertThat(snippetResult.getStdout(), containsString("Out[4]: 2.4")); } } diff --git a/jjava-distro/src/test/resources/nullifying_import.jshell b/jjava-distro/src/test/resources/nullifying_import.jshell deleted file mode 100644 index 56a2ac9..0000000 --- a/jjava-distro/src/test/resources/nullifying_import.jshell +++ /dev/null @@ -1,5 +0,0 @@ -%maven com.fasterxml.jackson.core:jackson-databind:2.21.2 -import com.fasterxml.jackson.databind.*; -var om = new ObjectMapper().findAndRegisterModules(); -import com.fasterxml.jackson.databind.node.*; import com.fasterxml.jackson.databind.type.*; -om.getClass().getName() diff --git a/jjava-kernel/src/main/java/org/dflib/jjava/kernel/execution/JJavaExecutionControl.java b/jjava-kernel/src/main/java/org/dflib/jjava/kernel/execution/JJavaExecutionControl.java index 1bbf21e..f85b735 100644 --- a/jjava-kernel/src/main/java/org/dflib/jjava/kernel/execution/JJavaExecutionControl.java +++ b/jjava-kernel/src/main/java/org/dflib/jjava/kernel/execution/JJavaExecutionControl.java @@ -76,11 +76,6 @@ public void stop() { executor.shutdownNow(); } - @Override - public void redefine(ClassBytecodes[] cbcs) { - loaderDelegate.classesRedefined(cbcs); - } - public Object takeResult(String id) { Object result = this.results.remove(id); if (result == null) {