Skip to content

Commit ecdf835

Browse files
committed
Skip trace mode tests if not supported
1 parent f9bd560 commit ecdf835

File tree

4 files changed

+22
-5
lines changed

4 files changed

+22
-5
lines changed

graalpython/com.oracle.graal.python.hpy.test/src/hpytest/support.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -541,6 +541,17 @@ def supports_debug_mode():
541541
except:
542542
return False
543543

544+
@staticmethod
545+
def supports_trace_mode():
546+
""" Returns True if the underlying Python implementation supports
547+
the trace mode.
548+
"""
549+
from hpy.universal import _trace
550+
try:
551+
return _trace.get_call_counts() is not None
552+
except:
553+
return False
554+
544555

545556
class HPyDebugCapture:
546557
"""

graalpython/com.oracle.graal.python.hpy.test/src/hpytest/trace/test_trace.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,11 @@
2222
# SOFTWARE.
2323

2424
import pytest
25+
from hpytest.support import HPyTest
2526
from hpy.trace import get_call_counts, get_durations, set_trace_functions
2627

28+
pytestmark = pytest.mark.skipif(not HPyTest.supports_trace_mode(), reason="trace mode not supported")
29+
2730
@pytest.fixture
2831
def hpy_abi():
2932
return "trace"

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

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,9 @@
5757
import com.oracle.graal.python.builtins.objects.cext.hpy.GraalHPyContext;
5858
import com.oracle.graal.python.builtins.objects.dict.PDict;
5959
import com.oracle.graal.python.builtins.objects.function.PBuiltinFunction;
60+
import com.oracle.graal.python.builtins.objects.method.PBuiltinMethod;
6061
import com.oracle.graal.python.builtins.objects.module.PythonModule;
62+
import com.oracle.graal.python.builtins.objects.object.PythonBuiltinObject;
6163
import com.oracle.graal.python.nodes.ErrorMessages;
6264
import com.oracle.graal.python.nodes.PRaiseNode;
6365
import com.oracle.graal.python.nodes.function.BuiltinFunctionRootNode;
@@ -112,7 +114,7 @@ public void postInitialize(Python3Core core) {
112114
* Error case: install "not_available" for everything. So, loading still works, but you
113115
* cannot use it.
114116
*/
115-
PBuiltinFunction notAvailableObj = createFunction(core);
117+
PythonBuiltinObject notAvailableObj = createFunction(core, hpyDebugModule);
116118
for (TruffleString tkey : keys) {
117119
hpyDebugModule.setAttribute(tkey, notAvailableObj);
118120
}
@@ -128,14 +130,15 @@ public Object execute(VirtualFrame frame) {
128130
}
129131

130132
@TruffleBoundary
131-
static PBuiltinFunction createFunction(Python3Core core) {
133+
static PBuiltinMethod createFunction(Python3Core core, PythonModule module) {
132134
Builtin builtin = NotAvailable.class.getAnnotation(Builtin.class);
133135
RootCallTarget callTarget = core.getLanguage().createCachedCallTarget(l -> {
134136
NodeFactory<PythonBuiltinBaseNode> nodeFactory = new BuiltinFunctionRootNode.StandaloneBuiltinFactory<>(new NotAvailable());
135137
return new BuiltinFunctionRootNode(l, builtin, nodeFactory, false);
136138
}, NotAvailable.class, builtin.name());
137139
int flags = PBuiltinFunction.getFlags(builtin, callTarget);
138140
TruffleString name = PythonUtils.toTruffleStringUncached(builtin.name());
139-
return core.factory().createBuiltinFunction(name, null, 0, flags, callTarget);
141+
PBuiltinFunction fun = core.factory().createBuiltinFunction(name, null, 0, flags, callTarget);
142+
return core.factory().createBuiltinMethod(module, fun);
140143
}
141144
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@
5353
import com.oracle.graal.python.builtins.objects.cext.common.LoadCExtException.ImportException;
5454
import com.oracle.graal.python.builtins.objects.cext.hpy.GraalHPyContext;
5555
import com.oracle.graal.python.builtins.objects.dict.PDict;
56-
import com.oracle.graal.python.builtins.objects.function.PBuiltinFunction;
5756
import com.oracle.graal.python.builtins.objects.module.PythonModule;
57+
import com.oracle.graal.python.builtins.objects.object.PythonBuiltinObject;
5858
import com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode;
5959
import com.oracle.graal.python.nodes.object.GetDictIfExistsNode;
6060
import com.oracle.graal.python.util.PythonUtils;
@@ -94,7 +94,7 @@ public void postInitialize(Python3Core core) {
9494
* Error case: install "not_available" for everything. So, loading still works, but you
9595
* cannot use it.
9696
*/
97-
PBuiltinFunction notAvailableObj = GraalHPyDebugModuleBuiltins.createFunction(core);
97+
PythonBuiltinObject notAvailableObj = GraalHPyDebugModuleBuiltins.createFunction(core, hpyTraceModule);
9898
for (TruffleString tkey : keys) {
9999
hpyTraceModule.setAttribute(tkey, notAvailableObj);
100100
}

0 commit comments

Comments
 (0)