Skip to content

Commit 72a47ca

Browse files
authored
Merge pull request #120 from m-dzianishchyts/119-fix-variable-nullifying-on-import
Prevent variable nullification on later imports
2 parents f9ca11c + 7aa650d commit 72a47ca

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 com.fasterxml.jackson.core:jackson-databind:2.21.2
2+
import com.fasterxml.jackson.databind.*;
3+
var om = new ObjectMapper().findAndRegisterModules();
4+
import com.fasterxml.jackson.databind.node.*; import com.fasterxml.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)