Skip to content

Commit b19f9ea

Browse files
committed
[GR-23350] get test_pickle to pass
PullRequest: graalpython/1338
2 parents 88e4545 + e7fa111 commit b19f9ea

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+1140
-236
lines changed

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

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,3 +193,78 @@ def test_decode_report_consumed():
193193
dec, consumed = codecs.utf_8_decode(data)
194194
assert dec == "memory of “unsigned bytes” of the given length."
195195
assert consumed == len(data)
196+
197+
198+
class EscapeEncodeTest(unittest.TestCase):
199+
200+
def test_escape_encode(self):
201+
tests = [
202+
(b'', (b'', 0)),
203+
(b'foobar', (b'foobar', 6)),
204+
(b'spam\0eggs', (b'spam\\x00eggs', 9)),
205+
(b'a\'b', (b"a\\'b", 3)),
206+
(b'b\\c', (b'b\\\\c', 3)),
207+
(b'c\nd', (b'c\\nd', 3)),
208+
(b'd\re', (b'd\\re', 3)),
209+
(b'f\x7fg', (b'f\\x7fg', 3)),
210+
]
211+
for data, output in tests:
212+
self.assertEqual(codecs.escape_encode(data), output)
213+
self.assertRaises(TypeError, codecs.escape_encode, 'spam')
214+
self.assertRaises(TypeError, codecs.escape_encode, bytearray(b'spam'))
215+
216+
217+
class EscapeDecodeTest(unittest.TestCase):
218+
def test_empty(self):
219+
self.assertEqual(codecs.escape_decode(b""), (b"", 0))
220+
self.assertEqual(codecs.escape_decode(bytearray()), (b"", 0))
221+
222+
def test_raw(self):
223+
decode = codecs.escape_decode
224+
for b in range(256):
225+
b = bytes([b])
226+
if b != b'\\':
227+
self.assertEqual(decode(b + b'0'), (b + b'0', 2))
228+
229+
def test_escape(self):
230+
decode = codecs.escape_decode
231+
check = coding_checker(self, decode)
232+
check(b"[\\\n]", b"[]")
233+
check(br'[\"]', b'["]')
234+
check(br"[\']", b"[']")
235+
check(br"[\\]", b"[\\]")
236+
check(br"[\a]", b"[\x07]")
237+
check(br"[\b]", b"[\x08]")
238+
check(br"[\t]", b"[\x09]")
239+
check(br"[\n]", b"[\x0a]")
240+
check(br"[\v]", b"[\x0b]")
241+
check(br"[\f]", b"[\x0c]")
242+
check(br"[\r]", b"[\x0d]")
243+
check(br"[\7]", b"[\x07]")
244+
check(br"[\78]", b"[\x078]")
245+
check(br"[\41]", b"[!]")
246+
check(br"[\418]", b"[!8]")
247+
check(br"[\101]", b"[A]")
248+
check(br"[\1010]", b"[A0]")
249+
check(br"[\501]", b"[A]")
250+
check(br"[\x41]", b"[A]")
251+
check(br"[\x410]", b"[A0]")
252+
for i in range(97, 123):
253+
b = bytes([i])
254+
if b not in b'abfnrtvx':
255+
check(b"\\" + b, b"\\" + b)
256+
check(b"\\" + b.upper(), b"\\" + b.upper())
257+
check(br"\8", b"\\8")
258+
check(br"\9", b"\\9")
259+
check(b"\\\xfa", b"\\\xfa")
260+
261+
def test_errors(self):
262+
decode = codecs.escape_decode
263+
self.assertRaises(ValueError, decode, br"\x")
264+
self.assertRaises(ValueError, decode, br"[\x]")
265+
self.assertEqual(decode(br"[\x]\x", "ignore"), (b"[]", 6))
266+
self.assertEqual(decode(br"[\x]\x", "replace"), (b"[?]?", 6))
267+
self.assertRaises(ValueError, decode, br"\x0")
268+
self.assertRaises(ValueError, decode, br"[\x0]")
269+
self.assertEqual(decode(br"[\x0]\x0", "ignore"), (b"[]", 8))
270+
self.assertEqual(decode(br"[\x0]\x0", "replace"), (b"[?]?", 8))
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,62 @@
1+
*graalpython.lib-python.3.test.test_pickle.CompatPickleTests.test_exceptions
2+
*graalpython.lib-python.3.test.test_pickle.CompatPickleTests.test_import
3+
*graalpython.lib-python.3.test.test_pickle.CompatPickleTests.test_import_mapping
4+
*graalpython.lib-python.3.test.test_pickle.CompatPickleTests.test_multiprocessing_exceptions
5+
*graalpython.lib-python.3.test.test_pickle.CompatPickleTests.test_name_mapping
6+
*graalpython.lib-python.3.test.test_pickle.CompatPickleTests.test_reverse_import_mapping
7+
*graalpython.lib-python.3.test.test_pickle.CompatPickleTests.test_reverse_name_mapping
8+
*graalpython.lib-python.3.test.test_pickle.InMemoryPickleTests.test_appends_on_non_lists
9+
*graalpython.lib-python.3.test.test_pickle.InMemoryPickleTests.test_attribute_name_interning
10+
*graalpython.lib-python.3.test.test_pickle.InMemoryPickleTests.test_bad_getattr
11+
*graalpython.lib-python.3.test.test_pickle.InMemoryPickleTests.test_bad_mark
12+
*graalpython.lib-python.3.test.test_pickle.InMemoryPickleTests.test_bad_newobj
13+
*graalpython.lib-python.3.test.test_pickle.InMemoryPickleTests.test_bad_newobj_ex
14+
*graalpython.lib-python.3.test.test_pickle.InMemoryPickleTests.test_bad_reduce
15+
*graalpython.lib-python.3.test.test_pickle.InMemoryPickleTests.test_bad_stack
16+
*graalpython.lib-python.3.test.test_pickle.InMemoryPickleTests.test_badly_escaped_string
17+
*graalpython.lib-python.3.test.test_pickle.InMemoryPickleTests.test_badly_quoted_string
18+
*graalpython.lib-python.3.test.test_pickle.InMemoryPickleTests.test_binbytes
19+
*graalpython.lib-python.3.test.test_pickle.InMemoryPickleTests.test_binbytes8
20+
*graalpython.lib-python.3.test.test_pickle.InMemoryPickleTests.test_binget
21+
*graalpython.lib-python.3.test.test_pickle.InMemoryPickleTests.test_binunicode8
22+
*graalpython.lib-python.3.test.test_pickle.InMemoryPickleTests.test_buffer_callback_error
23+
*graalpython.lib-python.3.test.test_pickle.InMemoryPickleTests.test_buffers_error
24+
*graalpython.lib-python.3.test.test_pickle.InMemoryPickleTests.test_buffers_numpy
25+
*graalpython.lib-python.3.test.test_pickle.InMemoryPickleTests.test_bytearray
26+
*graalpython.lib-python.3.test.test_pickle.InMemoryPickleTests.test_bytearray8
27+
*graalpython.lib-python.3.test.test_pickle.InMemoryPickleTests.test_bytes
28+
*graalpython.lib-python.3.test.test_pickle.InMemoryPickleTests.test_c_methods
29+
*graalpython.lib-python.3.test.test_pickle.InMemoryPickleTests.test_compat_pickle
30+
*graalpython.lib-python.3.test.test_pickle.InMemoryPickleTests.test_compat_unpickle
31+
*graalpython.lib-python.3.test.test_pickle.InMemoryPickleTests.test_complex_newobj
32+
*graalpython.lib-python.3.test.test_pickle.InMemoryPickleTests.test_complex_newobj_ex
33+
*graalpython.lib-python.3.test.test_pickle.InMemoryPickleTests.test_constants
34+
*graalpython.lib-python.3.test.test_pickle.InMemoryPickleTests.test_correctly_quoted_string
35+
*graalpython.lib-python.3.test.test_pickle.InMemoryPickleTests.test_dict_chunking
36+
*graalpython.lib-python.3.test.test_pickle.InMemoryPickleTests.test_dup
37+
*graalpython.lib-python.3.test.test_pickle.InMemoryPickleTests.test_dynamic_class
38+
*graalpython.lib-python.3.test.test_pickle.InMemoryPickleTests.test_ellipsis
39+
*graalpython.lib-python.3.test.test_pickle.InMemoryPickleTests.test_empty_bytestring
40+
*graalpython.lib-python.3.test.test_pickle.InMemoryPickleTests.test_float
41+
*graalpython.lib-python.3.test.test_pickle.InMemoryPickleTests.test_float_format
42+
*graalpython.lib-python.3.test.test_pickle.InMemoryPickleTests.test_frame_readline
43+
*graalpython.lib-python.3.test.test_pickle.InMemoryPickleTests.test_framing_large_objects
144
*test.pickletester.AbstractHookTests.test_reducer_override_no_reference_cycle
45+
*test.pickletester.AbstractPickleModuleTests.test_dump_load_oob_buffers
46+
*test.pickletester.AbstractPickleModuleTests.test_dumps_loads_oob_buffers
247
*test.pickletester.AbstractPickleModuleTests.test_highest_protocol
48+
*test.pickletester.AbstractPickleTests.test_attribute_name_interning
49+
*test.pickletester.AbstractPickleTests.test_buffer_callback_error
50+
*test.pickletester.AbstractPickleTests.test_buffers_error
351
*test.pickletester.AbstractPickleTests.test_buffers_numpy
52+
*test.pickletester.AbstractPickleTests.test_in_band_buffers
53+
*test.pickletester.AbstractPickleTests.test_local_lookup_error
54+
*test.pickletester.AbstractPickleTests.test_oob_buffers
55+
*test.pickletester.AbstractPickleTests.test_oob_buffers_writable_to_readonly
56+
*test.pickletester.AbstractPickleTests.test_picklebuffer_error
57+
*test.pickletester.AbstractUnpickleTests.test_unpickle_module_race
58+
*test.pickletester.BigmemPickleTests.test_huge_bytes_32b
59+
*test.pickletester.BigmemPickleTests.test_huge_bytes_64b
60+
*test.pickletester.BigmemPickleTests.test_huge_long_32b
61+
*test.pickletester.BigmemPickleTests.test_huge_str_32b
62+
*test.pickletester.BigmemPickleTests.test_huge_str_64b

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/PythonLanguage.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
import com.oracle.graal.python.builtins.Builtin;
4242
import com.oracle.graal.python.builtins.Python3Core;
4343
import com.oracle.graal.python.builtins.PythonBuiltinClassType;
44-
import com.oracle.graal.python.builtins.objects.PEllipsis;
44+
import com.oracle.graal.python.builtins.objects.ellipsis.PEllipsis;
4545
import com.oracle.graal.python.builtins.objects.PNone;
4646
import com.oracle.graal.python.builtins.objects.PNotImplemented;
4747
import com.oracle.graal.python.builtins.objects.PythonAbstractObject;

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/Python3Core.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@
4444
import java.util.regex.Matcher;
4545
import java.util.regex.Pattern;
4646

47+
import com.oracle.graal.python.builtins.objects.NotImplementedBuiltins;
48+
import com.oracle.graal.python.builtins.objects.ellipsis.EllipsisBuiltins;
4749
import org.graalvm.nativeimage.ImageInfo;
4850

4951
import com.oracle.graal.python.PythonLanguage;
@@ -340,6 +342,8 @@ private static PythonBuiltins[] initializeBuiltins() {
340342
new PZipBuiltins(),
341343
new EnumerateBuiltins(),
342344
new MapBuiltins(),
345+
new NotImplementedBuiltins(),
346+
new EllipsisBuiltins(),
343347
new SentinelIteratorBuiltins(),
344348
new ForeignIteratorBuiltins(),
345349
new GeneratorBuiltins(),

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/PythonBuiltinClassType.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929
import java.util.HashSet;
3030

3131
import com.oracle.graal.python.PythonLanguage;
32+
import com.oracle.graal.python.builtins.objects.PythonAbstractObject;
33+
import com.oracle.graal.python.builtins.objects.function.PArguments;
3234
import com.oracle.graal.python.builtins.objects.function.PArguments.ThreadState;
3335
import com.oracle.graal.python.builtins.objects.object.PythonObjectLibrary;
3436
import com.oracle.graal.python.builtins.objects.type.PythonBuiltinClass;
@@ -45,6 +47,7 @@
4547
import com.oracle.truffle.api.dsl.CachedContext;
4648
import com.oracle.truffle.api.dsl.Fallback;
4749
import com.oracle.truffle.api.dsl.Specialization;
50+
import com.oracle.truffle.api.frame.VirtualFrame;
4851
import com.oracle.truffle.api.interop.ArityException;
4952
import com.oracle.truffle.api.interop.InteropLibrary;
5053
import com.oracle.truffle.api.interop.TruffleObject;
@@ -56,6 +59,7 @@
5659
import com.oracle.truffle.api.library.ExportMessage;
5760
import com.oracle.truffle.api.nodes.ExplodeLoop;
5861
import com.oracle.truffle.api.object.Shape;
62+
import com.oracle.truffle.api.profiles.ConditionProfile;
5963

6064
@ExportLibrary(InteropLibrary.class)
6165
@ExportLibrary(PythonObjectLibrary.class)
@@ -546,6 +550,17 @@ static long asJavaLongWithState(PythonBuiltinClassType type, ThreadState state,
546550
throw raiseNode.raise(TypeError, ErrorMessages.MUST_BE_NUMERIC, type);
547551
}
548552

553+
@ExportMessage
554+
public Object lookupAttributeInternal(ThreadState state, String attribName, boolean strict,
555+
@Cached ConditionProfile gotState,
556+
@Cached.Exclusive @Cached PythonAbstractObject.LookupAttributeNode lookup) {
557+
VirtualFrame frame = null;
558+
if (gotState.profile(state != null)) {
559+
frame = PArguments.frameForCall(state);
560+
}
561+
return lookup.execute(frame, this, attribName, strict);
562+
}
563+
549564
@ExportMessage
550565
static Object getLazyPythonClass(@SuppressWarnings("unused") PythonBuiltinClassType type) {
551566
return PythonClass;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@
110110
import com.oracle.graal.python.builtins.PythonBuiltins;
111111
import com.oracle.graal.python.builtins.modules.WarningsModuleBuiltins.WarnNode;
112112
import com.oracle.graal.python.builtins.modules.WeakRefModuleBuiltins.GetWeakRefsNode;
113-
import com.oracle.graal.python.builtins.objects.PEllipsis;
113+
import com.oracle.graal.python.builtins.objects.ellipsis.PEllipsis;
114114
import com.oracle.graal.python.builtins.objects.PNone;
115115
import com.oracle.graal.python.builtins.objects.PNotImplemented;
116116
import com.oracle.graal.python.builtins.objects.array.PArray;

0 commit comments

Comments
 (0)