Skip to content

Commit 4a06471

Browse files
committed
Add regression test for exception interop
1 parent 1bfb5b8 commit 4a06471

File tree

1 file changed

+29
-8
lines changed

1 file changed

+29
-8
lines changed

graalpython/com.oracle.graal.python.test/src/com/oracle/graal/python/test/interop/InteropLibraryTest.java

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,24 +40,27 @@
4040
*/
4141
package com.oracle.graal.python.test.interop;
4242

43-
import org.junit.After;
44-
import org.junit.Before;
45-
import org.junit.Test;
46-
import static org.junit.Assert.assertFalse;
4743
import static org.junit.Assert.assertEquals;
44+
import static org.junit.Assert.assertFalse;
45+
import static org.junit.Assert.assertNotEquals;
4846
import static org.junit.Assert.assertTrue;
47+
import static org.junit.Assert.fail;
48+
49+
import java.util.Arrays;
50+
import java.util.Iterator;
51+
import java.util.List;
4952

5053
import org.graalvm.polyglot.Context;
5154
import org.graalvm.polyglot.Context.Builder;
55+
import org.graalvm.polyglot.PolyglotException;
5256
import org.graalvm.polyglot.Value;
5357
import org.graalvm.polyglot.proxy.ProxyArray;
58+
import org.junit.After;
59+
import org.junit.Before;
60+
import org.junit.Test;
5461

5562
import com.oracle.graal.python.test.PythonTests;
5663

57-
import java.util.Arrays;
58-
import java.util.Iterator;
59-
import java.util.List;
60-
6164
public class InteropLibraryTest extends PythonTests {
6265
private Context context;
6366

@@ -165,6 +168,24 @@ public void testForItemInLazyArray() {
165168
assertEquals(list.size() * 3, tripples.getArraySize());
166169
}
167170

171+
@Test
172+
public void testException() {
173+
try {
174+
context.eval("python", "1/0");
175+
} catch (PolyglotException e) {
176+
Value exception = e.getGuestObject();
177+
assertTrue(exception.hasMember("args"));
178+
Value args = exception.getMember("args");
179+
assertTrue(args.hasArrayElements());
180+
assertEquals(1, args.getArraySize());
181+
assertEquals("division by zero", args.getArrayElement(0).asString());
182+
// This excercises isIdenticalOrUndefined message internally
183+
assertNotEquals(exception, args);
184+
return;
185+
}
186+
fail("didn't throw exception");
187+
}
188+
168189
private static final class LazyArray implements ProxyArray {
169190

170191
private final Iterator<?> it;

0 commit comments

Comments
 (0)