Skip to content

Commit 9b41424

Browse files
committed
[GR-50050][GR-50451] Build native image with assertions when running CI gates
PullRequest: graalpython/3056
2 parents 8ced808 + e56ba6b commit 9b41424

File tree

27 files changed

+949
-654
lines changed

27 files changed

+949
-654
lines changed

ci.jsonnet

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{ "overlay": "8462b258e6f0a8ec9586086df1cd0fca1165a989" }
1+
{ "overlay": "fad71a4294ba5cae680c5aca72c4f71a8ec3920b" }

graalpython/com.oracle.graal.python.cext/src/unicodeobject.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -819,10 +819,9 @@ PyUnicode_InternInPlace(PyObject **p)
819819
}
820820

821821
if (t != s) {
822-
Py_INCREF(t);
823-
Py_SETREF(*p, t);
824-
return;
822+
*p = t;
825823
}
824+
Py_DECREF(s);
826825
}
827826

828827
// 15940

graalpython/com.oracle.graal.python.test/src/com/oracle/graal/python/test/builtin/modules/FileDescriptorConversionNodeTests.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -76,12 +76,6 @@ public void none() {
7676
Assert.assertEquals(AT_FDCWD.value, call(PNone.NO_VALUE));
7777
}
7878

79-
@Test
80-
public void noValue() {
81-
expectPythonMessage("TypeError: argument must be an int, or have a fileno() method.");
82-
call(PNone.NO_VALUE);
83-
}
84-
8579
@Test
8680
public void fdBool() {
8781
Assert.assertEquals(0, call(false));

graalpython/com.oracle.graal.python.test/src/graalpytest.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -400,6 +400,8 @@ def run_safely(self, func, print_immediately=False):
400400
func(*arg_vec)
401401
else:
402402
func()
403+
except KeyboardInterrupt:
404+
raise
403405
except BaseException as e:
404406
if isinstance(e, SkipTest):
405407
return _skipped_marker
@@ -718,6 +720,8 @@ def load_module(self, path):
718720
for p in pkg[1:]:
719721
test_module = getattr(test_module, p)
720722
test_module = getattr(test_module, name)
723+
except KeyboardInterrupt:
724+
raise
721725
except BaseException as e:
722726
_, _, tb = sys.exc_info()
723727
try:
@@ -738,6 +742,8 @@ def load_module(self, path):
738742
with _io.FileIO(path, "r") as f:
739743
test_module.__file__ = path
740744
exec(compile(f.readall(), path, "exec"), test_module.__dict__)
745+
except KeyboardInterrupt:
746+
raise
741747
except BaseException as e:
742748
self.exceptions.append((path, e))
743749
else:
@@ -838,6 +844,11 @@ class TestSuite:
838844

839845
if __name__ == "__main__":
840846
sys.modules["unittest"] = sys.modules["__main__"]
847+
848+
if sys.implementation.name == 'graalpy' and os.environ.get(b"GRAALPYTEST_ALLOW_NO_JAVA_ASSERTIONS") != b"true":
849+
if not __graalpython__.java_assert():
850+
sys.exit("Java assertions are not enabled, refusing to run. Set GRAALPYTEST_ALLOW_NO_JAVA_ASSERTIONS=true to disable this check")
851+
841852
patterns = []
842853
argv = sys.argv[:]
843854
idx = 0
@@ -846,12 +857,12 @@ class TestSuite:
846857
argv.pop(idx)
847858
try:
848859
import json
849-
except:
860+
except Exception:
850861
print("--report needs working json module")
851862
raise
852863
try:
853864
reportfile = [argv.pop(idx),]
854-
except:
865+
except Exception:
855866
print("--report needs argument path to the json output")
856867
raise
857868
elif argv[idx] == "-k":

graalpython/com.oracle.graal.python.test/src/tests/cpyext/test_unicode.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1030,18 +1030,21 @@ def compile_module(self, name):
10301030
cmpfunc=unhandled_error_compare
10311031
)
10321032

1033+
10331034
class TestUnicodeObject(object):
10341035
def test_intern(self):
10351036
TestIntern = CPyExtType(
10361037
"TestIntern",
10371038
'''
10381039
static PyObject* set_intern_str(PyObject* self, PyObject* str) {
1040+
Py_INCREF(str);
10391041
PyUnicode_InternInPlace(&str);
10401042
((TestInternObject*)self)->str = str;
10411043
return str;
10421044
}
10431045
10441046
static PyObject* check_is_same_str_ptr(PyObject* self, PyObject* str) {
1047+
Py_INCREF(str);
10451048
PyUnicode_InternInPlace(&str);
10461049
if (str == ((TestInternObject*)self)->str) {
10471050
Py_RETURN_TRUE;
@@ -1057,6 +1060,7 @@ def test_intern(self):
10571060
''',
10581061
)
10591062
tester = TestIntern()
1060-
s = 'some text'
1061-
assert tester.set_intern_str(s) == s
1062-
assert tester.check_is_same_str_ptr(s)
1063+
s1 = b'some text'.decode('ascii')
1064+
s2 = b'some text'.decode('ascii')
1065+
assert tester.set_intern_str(s1) == s2
1066+
assert tester.check_is_same_str_ptr(s2)

graalpython/com.oracle.graal.python.test/src/tests/test_multiprocessing_graalpy.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,3 @@ def test_wait():
8080
res = wait([b, x], 3)
8181
assert res == [x], "res3"
8282
assert x.recv() == 33, "res4"
83-
a.send(1)
84-
y.send(2)
85-
res = wait([b, x], 3)
86-
assert set(res) == {b, x}
87-
assert b.recv() == 1
88-
assert x.recv() == 2

graalpython/com.oracle.graal.python.test/src/tests/test_object.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,8 @@ def test_descr_call_with_none():
179179
descr = object.__dict__['__class__']
180180
assert None.__class__ is type(None)
181181
assert descr.__get__(None, type(None)) is descr
182+
assert None.__repr__() == 'None'
183+
assert None.__bool__() is False
182184
assert_raises(TypeError, descr.__get__, None, None)
183185

184186
def test_custom_getattribute():
@@ -224,4 +226,4 @@ def __getattribute__(self, name):
224226
return super().__getattribute__(name)
225227

226228
d = {"abc": 1}
227-
assert dict(BBB(d)) == d
229+
assert dict(BBB(d)) == d

graalpython/com.oracle.graal.python.test/src/tests/try-test.py

Lines changed: 0 additions & 37 deletions
This file was deleted.

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/RandomModuleBuiltins.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import com.oracle.graal.python.builtins.CoreFunctions;
3434
import com.oracle.graal.python.builtins.PythonBuiltinClassType;
3535
import com.oracle.graal.python.builtins.PythonBuiltins;
36+
import com.oracle.graal.python.builtins.objects.PNone;
3637
import com.oracle.graal.python.builtins.objects.random.PRandom;
3738
import com.oracle.graal.python.nodes.call.special.LookupAndCallBinaryNode;
3839
import com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode;
@@ -65,7 +66,7 @@ abstract static class PRandomNode extends PythonBuiltinNode {
6566
PRandom random(VirtualFrame frame, Object cls, Object seed,
6667
@Cached PythonObjectFactory factory) {
6768
PRandom random = factory.createRandom(cls);
68-
setSeed.executeObject(frame, random, seed);
69+
setSeed.executeObject(frame, random, seed != PNone.NO_VALUE ? seed : PNone.NONE);
6970
return random;
7071
}
7172
}

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextBuiltinRegistry.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ private PythonCextBuiltinRegistry() {
308308
public static final CApiBuiltinExecutable PyTruffleUnicode_DecodeUTF8Stateful = new CApiBuiltinExecutable("PyTruffleUnicode_DecodeUTF8Stateful", CApiCallPath.Ignored, ArgDescriptor.PyObjectTransfer, new ArgDescriptor[]{ArgDescriptor.Pointer, ArgDescriptor.Py_ssize_t, ArgDescriptor.ConstCharPtrAsTruffleString, ArgDescriptor.Int}, 247);
309309
public static final CApiBuiltinExecutable PyTruffleUnicode_FromUCS = new CApiBuiltinExecutable("PyTruffleUnicode_FromUCS", CApiCallPath.Ignored, ArgDescriptor.PyObjectTransfer, new ArgDescriptor[]{ArgDescriptor.Pointer, ArgDescriptor.Py_ssize_t, ArgDescriptor.Int}, 248);
310310
public static final CApiBuiltinExecutable PyTruffleUnicode_FromUTF = new CApiBuiltinExecutable("PyTruffleUnicode_FromUTF", CApiCallPath.Ignored, ArgDescriptor.PyObjectTransfer, new ArgDescriptor[]{ArgDescriptor.Pointer, ArgDescriptor.Py_ssize_t, ArgDescriptor.Int}, 249);
311-
public static final CApiBuiltinExecutable PyTruffleUnicode_LookupAndIntern = new CApiBuiltinExecutable("PyTruffleUnicode_LookupAndIntern", CApiCallPath.Ignored, ArgDescriptor.PyObject, new ArgDescriptor[]{ArgDescriptor.PyObject}, 250);
311+
public static final CApiBuiltinExecutable PyTruffleUnicode_LookupAndIntern = new CApiBuiltinExecutable("PyTruffleUnicode_LookupAndIntern", CApiCallPath.Ignored, ArgDescriptor.PyObjectTransfer, new ArgDescriptor[]{ArgDescriptor.PyObject}, 250);
312312
public static final CApiBuiltinExecutable PyTruffleUnicode_New = new CApiBuiltinExecutable("PyTruffleUnicode_New", CApiCallPath.Ignored, ArgDescriptor.PyObjectTransfer, new ArgDescriptor[]{ArgDescriptor.Pointer, ArgDescriptor.Py_ssize_t, ArgDescriptor.Py_ssize_t, ArgDescriptor.PY_UCS4}, 251);
313313
public static final CApiBuiltinExecutable PyTruffle_AddInheritedSlots = new CApiBuiltinExecutable("PyTruffle_AddInheritedSlots", CApiCallPath.Ignored, ArgDescriptor.Void, new ArgDescriptor[]{ArgDescriptor.PyTypeObject}, 252);
314314
public static final CApiBuiltinExecutable PyTruffle_Arg_ParseArrayAndKeywords = new CApiBuiltinExecutable("PyTruffle_Arg_ParseArrayAndKeywords", CApiCallPath.Ignored, ArgDescriptor.Int, new ArgDescriptor[]{ArgDescriptor.Pointer, ArgDescriptor.Py_ssize_t, ArgDescriptor.PyObject, ArgDescriptor.ConstCharPtrAsTruffleString, ArgDescriptor.Pointer, ArgDescriptor.Pointer}, 253);
@@ -381,7 +381,7 @@ private PythonCextBuiltinRegistry() {
381381
public static final CApiBuiltinExecutable PyUnicode_FromObject = new CApiBuiltinExecutable("PyUnicode_FromObject", CApiCallPath.Direct, ArgDescriptor.PyObjectTransfer, new ArgDescriptor[]{ArgDescriptor.PyObject}, 320);
382382
public static final CApiBuiltinExecutable PyUnicode_FromOrdinal = new CApiBuiltinExecutable("PyUnicode_FromOrdinal", CApiCallPath.Direct, ArgDescriptor.PyObjectTransfer, new ArgDescriptor[]{ArgDescriptor.Int}, 321);
383383
public static final CApiBuiltinExecutable PyUnicode_FromString = new CApiBuiltinExecutable("PyUnicode_FromString", CApiCallPath.Direct, ArgDescriptor.PyObjectTransfer, new ArgDescriptor[]{ArgDescriptor.ConstCharPtrAsTruffleString}, 322);
384-
public static final CApiBuiltinExecutable PyUnicode_FromWideChar = new CApiBuiltinExecutable("PyUnicode_FromWideChar", CApiCallPath.Direct, ArgDescriptor.PyObject, new ArgDescriptor[]{ArgDescriptor.CONST_WCHAR_PTR, ArgDescriptor.Py_ssize_t}, 323);
384+
public static final CApiBuiltinExecutable PyUnicode_FromWideChar = new CApiBuiltinExecutable("PyUnicode_FromWideChar", CApiCallPath.Direct, ArgDescriptor.PyObjectTransfer, new ArgDescriptor[]{ArgDescriptor.CONST_WCHAR_PTR, ArgDescriptor.Py_ssize_t}, 323);
385385
public static final CApiBuiltinExecutable PyUnicode_Join = new CApiBuiltinExecutable("PyUnicode_Join", CApiCallPath.Direct, ArgDescriptor.PyObjectTransfer, new ArgDescriptor[]{ArgDescriptor.PyObject, ArgDescriptor.PyObject}, 324);
386386
public static final CApiBuiltinExecutable PyUnicode_ReadChar = new CApiBuiltinExecutable("PyUnicode_ReadChar", CApiCallPath.Direct, ArgDescriptor.PY_UCS4, new ArgDescriptor[]{ArgDescriptor.PyObject, ArgDescriptor.Py_ssize_t}, 325);
387387
public static final CApiBuiltinExecutable PyUnicode_Replace = new CApiBuiltinExecutable("PyUnicode_Replace", CApiCallPath.Direct, ArgDescriptor.PyObjectTransfer, new ArgDescriptor[]{ArgDescriptor.PyObject, ArgDescriptor.PyObject, ArgDescriptor.PyObject, ArgDescriptor.Py_ssize_t}, 326);
@@ -391,9 +391,9 @@ private PythonCextBuiltinRegistry() {
391391
public static final CApiBuiltinExecutable PyWeakref_GetObject = new CApiBuiltinExecutable("PyWeakref_GetObject", CApiCallPath.Direct, ArgDescriptor.PyObjectBorrowed, new ArgDescriptor[]{ArgDescriptor.PyObject}, 330);
392392
public static final CApiBuiltinExecutable PyWeakref_NewRef = new CApiBuiltinExecutable("PyWeakref_NewRef", CApiCallPath.Direct, ArgDescriptor.PyObjectTransfer, new ArgDescriptor[]{ArgDescriptor.PyObject, ArgDescriptor.PyObject}, 331);
393393
public static final CApiBuiltinExecutable Py_AtExit = new CApiBuiltinExecutable("Py_AtExit", CApiCallPath.Direct, ArgDescriptor.Int, new ArgDescriptor[]{ArgDescriptor.func_voidvoid}, 332);
394-
public static final CApiBuiltinExecutable Py_CompileString = new CApiBuiltinExecutable("Py_CompileString", CApiCallPath.Direct, ArgDescriptor.PyObject, new ArgDescriptor[]{ArgDescriptor.ConstCharPtrAsTruffleString, ArgDescriptor.ConstCharPtrAsTruffleString, ArgDescriptor.Int}, 333);
395-
public static final CApiBuiltinExecutable Py_CompileStringExFlags = new CApiBuiltinExecutable("Py_CompileStringExFlags", CApiCallPath.Direct, ArgDescriptor.PyObject, new ArgDescriptor[]{ArgDescriptor.ConstCharPtrAsTruffleString, ArgDescriptor.ConstCharPtrAsTruffleString, ArgDescriptor.Int, ArgDescriptor.PY_COMPILER_FLAGS, ArgDescriptor.Int}, 334);
396-
public static final CApiBuiltinExecutable Py_CompileStringObject = new CApiBuiltinExecutable("Py_CompileStringObject", CApiCallPath.Direct, ArgDescriptor.PyObject, new ArgDescriptor[]{ArgDescriptor.ConstCharPtrAsTruffleString, ArgDescriptor.PyObject, ArgDescriptor.Int, ArgDescriptor.PY_COMPILER_FLAGS, ArgDescriptor.Int}, 335);
394+
public static final CApiBuiltinExecutable Py_CompileString = new CApiBuiltinExecutable("Py_CompileString", CApiCallPath.Direct, ArgDescriptor.PyObjectTransfer, new ArgDescriptor[]{ArgDescriptor.ConstCharPtrAsTruffleString, ArgDescriptor.ConstCharPtrAsTruffleString, ArgDescriptor.Int}, 333);
395+
public static final CApiBuiltinExecutable Py_CompileStringExFlags = new CApiBuiltinExecutable("Py_CompileStringExFlags", CApiCallPath.Direct, ArgDescriptor.PyObjectTransfer, new ArgDescriptor[]{ArgDescriptor.ConstCharPtrAsTruffleString, ArgDescriptor.ConstCharPtrAsTruffleString, ArgDescriptor.Int, ArgDescriptor.PY_COMPILER_FLAGS, ArgDescriptor.Int}, 334);
396+
public static final CApiBuiltinExecutable Py_CompileStringObject = new CApiBuiltinExecutable("Py_CompileStringObject", CApiCallPath.Direct, ArgDescriptor.PyObjectTransfer, new ArgDescriptor[]{ArgDescriptor.ConstCharPtrAsTruffleString, ArgDescriptor.PyObject, ArgDescriptor.Int, ArgDescriptor.PY_COMPILER_FLAGS, ArgDescriptor.Int}, 335);
397397
public static final CApiBuiltinExecutable Py_EnterRecursiveCall = new CApiBuiltinExecutable("Py_EnterRecursiveCall", CApiCallPath.Direct, ArgDescriptor.Int, new ArgDescriptor[]{ArgDescriptor.ConstCharPtr}, 336);
398398
public static final CApiBuiltinExecutable Py_GenericAlias = new CApiBuiltinExecutable("Py_GenericAlias", CApiCallPath.Direct, ArgDescriptor.PyObjectTransfer, new ArgDescriptor[]{ArgDescriptor.PyObject, ArgDescriptor.PyObject}, 337);
399399
public static final CApiBuiltinExecutable Py_LeaveRecursiveCall = new CApiBuiltinExecutable("Py_LeaveRecursiveCall", CApiCallPath.Direct, ArgDescriptor.Void, new ArgDescriptor[]{}, 338);

0 commit comments

Comments
 (0)