Skip to content

Commit ea06a1c

Browse files
Prevent variable nullification on later imports #119
1 parent ef30da8 commit ea06a1c

3 files changed

Lines changed: 35 additions & 0 deletions

File tree

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package org.dflib.jjava.distro;
2+
3+
import org.junit.jupiter.api.Test;
4+
import org.testcontainers.containers.Container;
5+
6+
import static org.hamcrest.MatcherAssert.assertThat;
7+
import static org.hamcrest.Matchers.containsString;
8+
import static org.hamcrest.Matchers.not;
9+
import static org.junit.jupiter.api.Assertions.assertEquals;
10+
11+
public class KernelExecutionIT extends ContainerizedKernelCase {
12+
13+
/**
14+
* @see <a href="https://github.com/dflib/jjava/issues/119">#119</a>
15+
*/
16+
@Test
17+
public void variableSurvivesLaterImports() throws Exception {
18+
String snippet = "%load " + CONTAINER_RESOURCES + "/nullifying_import.jshell";
19+
20+
Container.ExecResult snippetResult = executeInKernel(snippet);
21+
22+
assertEquals(0, snippetResult.getExitCode(), snippetResult.getStdout());
23+
assertThat(snippetResult.getStdout(), not(containsString("|")));
24+
}
25+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
%maven tools.jackson.core:jackson-databind:3.1.2
2+
import tools.jackson.databind.*; import tools.jackson.databind.json.*;
3+
var om = JsonMapper.builder().findAndAddModules().build();
4+
import tools.jackson.databind.node.*; import tools.jackson.databind.type.*;
5+
om.getClass().getName()

jjava-kernel/src/main/java/org/dflib/jjava/kernel/execution/JJavaExecutionControl.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,11 @@ public void stop() {
7676
executor.shutdownNow();
7777
}
7878

79+
@Override
80+
public void redefine(ClassBytecodes[] cbcs) {
81+
loaderDelegate.classesRedefined(cbcs);
82+
}
83+
7984
public Object takeResult(String id) {
8085
Object result = this.results.remove(id);
8186
if (result == null) {

0 commit comments

Comments
 (0)