Skip to content

Commit abeee27

Browse files
committed
[GR-23315] make test_bz2 pass and fast
PullRequest: graalpython/1429
2 parents addbbe8 + a9e536c commit abeee27

File tree

23 files changed

+2096
-23
lines changed

23 files changed

+2096
-23
lines changed

graalpython/com.oracle.graal.python.cext/bz2/bz2.c

Lines changed: 577 additions & 0 deletions
Large diffs are not rendered by default.

graalpython/com.oracle.graal.python.cext/setup.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -474,6 +474,10 @@ def build(capi_home):
474474
subdir="zlib",
475475
libname="libzsupport",
476476
libs=['z'])
477+
build_nativelibsupport(capi_home,
478+
subdir="bz2",
479+
libname="libbz2support",
480+
deps=[Bzip2Depedency("bz2", "bzip2==1.0.8", "BZIP2")])
477481
build_libpython(capi_home)
478482
build_builtin_exts(capi_home)
479483
finally:

graalpython/com.oracle.graal.python.cext/zlib/zlib.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
* see cpython/Modules/zlibmodule.c
4545
*/
4646

47-
// #define DEBUG 500
47+
#define DEBUG 500
4848
// #define BENCHMARK
4949

5050
#include <limits.h>
@@ -57,7 +57,7 @@
5757
// Integer.MAX_INT
5858
#define GRAALPYTHON_MAX_SIZE (INT_MAX)
5959

60-
#ifdef DEBUG
60+
#ifndef NDEBUG
6161
#include <stdio.h>
6262
#include <stdarg.h>
6363
static void debug_log(int level, char *file, int line, char *format, ...) {

graalpython/com.oracle.graal.python.test/src/tests/unittest_tags/test_bz2.txt

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,93 @@
44
*graalpython.lib-python.3.test.test_bz2.BZ2CompressorTest.testCompressEmptyString
55
*graalpython.lib-python.3.test.test_bz2.BZ2CompressorTest.testPickle
66
*graalpython.lib-python.3.test.test_bz2.BZ2DecompressorTest.testDecompress
7+
*graalpython.lib-python.3.test.test_bz2.BZ2DecompressorTest.testDecompress4G
8+
*graalpython.lib-python.3.test.test_bz2.BZ2DecompressorTest.testDecompressChunks10
9+
*graalpython.lib-python.3.test.test_bz2.BZ2DecompressorTest.testDecompressUnusedData
10+
*graalpython.lib-python.3.test.test_bz2.BZ2DecompressorTest.testDecompressorChunksMaxsize
11+
*graalpython.lib-python.3.test.test_bz2.BZ2DecompressorTest.testEOFError
12+
*graalpython.lib-python.3.test.test_bz2.BZ2DecompressorTest.testPickle
13+
*graalpython.lib-python.3.test.test_bz2.BZ2DecompressorTest.test_Constructor
14+
*graalpython.lib-python.3.test.test_bz2.BZ2DecompressorTest.test_decompressor_inputbuf_1
15+
*graalpython.lib-python.3.test.test_bz2.BZ2DecompressorTest.test_decompressor_inputbuf_2
16+
*graalpython.lib-python.3.test.test_bz2.BZ2DecompressorTest.test_decompressor_inputbuf_3
17+
*graalpython.lib-python.3.test.test_bz2.BZ2DecompressorTest.test_failure
18+
*graalpython.lib-python.3.test.test_bz2.BZ2DecompressorTest.test_refleaks_in___init__
19+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testAppend
20+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testBadArgs
21+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testClosedIteratorDeadlock
22+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testContextProtocol
23+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testDecompressLimited
24+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testFileno
25+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testIterator
26+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testIteratorMultiStream
27+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testMixedIterationAndReads
28+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testMultiStreamOrdering
29+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testOpenBytesFilename
30+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testOpenDel
31+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testOpenNonexistent
32+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testOpenPathLikeFilename
33+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testPeek
34+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testPeekBytesIO
35+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testRead
36+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testRead0
37+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testRead100
38+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testReadBadFile
39+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testReadBytesIO
40+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testReadChunk10
41+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testReadChunk10MultiStream
42+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testReadInto
43+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testReadLine
44+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testReadLineMultiStream
45+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testReadLines
46+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testReadLinesMultiStream
47+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testReadMonkeyMultiStream
48+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testReadMultiStream
49+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testReadMultiStreamTrailingJunk
50+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testReadTrailingJunk
51+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testReadable
52+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testReadlinesNoNewline
53+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testSeekBackwards
54+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testSeekBackwardsAcrossStreams
55+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testSeekBackwardsBytesIO
56+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testSeekBackwardsFromEnd
57+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testSeekBackwardsFromEndAcrossStreams
58+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testSeekForward
59+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testSeekForwardAcrossStreams
60+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testSeekForwardBytesIO
61+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testSeekPostEnd
62+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testSeekPostEndMultiStream
63+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testSeekPostEndTwice
64+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testSeekPostEndTwiceMultiStream
65+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testSeekPreStart
66+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testSeekPreStartMultiStream
67+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testSeekable
68+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testThreading
69+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testWritable
70+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testWrite
71+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testWriteBytesIO
72+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testWriteChunks10
73+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testWriteLines
74+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testWriteMethodsOnReadOnlyFile
75+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.testWriteNonDefaultCompressLevel
76+
*graalpython.lib-python.3.test.test_bz2.BZ2FileTest.test_read_truncated
77+
*graalpython.lib-python.3.test.test_bz2.CompressDecompressTest.testCompress
78+
*graalpython.lib-python.3.test.test_bz2.CompressDecompressTest.testCompressEmptyString
79+
*graalpython.lib-python.3.test.test_bz2.CompressDecompressTest.testDecompress
80+
*graalpython.lib-python.3.test.test_bz2.CompressDecompressTest.testDecompressBadData
81+
*graalpython.lib-python.3.test.test_bz2.CompressDecompressTest.testDecompressEmpty
82+
*graalpython.lib-python.3.test.test_bz2.CompressDecompressTest.testDecompressIncomplete
83+
*graalpython.lib-python.3.test.test_bz2.CompressDecompressTest.testDecompressMultiStream
84+
*graalpython.lib-python.3.test.test_bz2.CompressDecompressTest.testDecompressMultiStreamTrailingJunk
85+
*graalpython.lib-python.3.test.test_bz2.CompressDecompressTest.testDecompressToEmptyString
86+
*graalpython.lib-python.3.test.test_bz2.CompressDecompressTest.testDecompressTrailingJunk
87+
*graalpython.lib-python.3.test.test_bz2.OpenTest.test_bad_params
88+
*graalpython.lib-python.3.test.test_bz2.OpenTest.test_binary_modes
89+
*graalpython.lib-python.3.test.test_bz2.OpenTest.test_encoding
90+
*graalpython.lib-python.3.test.test_bz2.OpenTest.test_encoding_error_handler
91+
*graalpython.lib-python.3.test.test_bz2.OpenTest.test_fileobj
92+
*graalpython.lib-python.3.test.test_bz2.OpenTest.test_implicit_binary_modes
93+
*graalpython.lib-python.3.test.test_bz2.OpenTest.test_newline
94+
*graalpython.lib-python.3.test.test_bz2.OpenTest.test_text_modes
95+
*graalpython.lib-python.3.test.test_bz2.OpenTest.test_x_mode
96+
*graalpython.lib-python.3.test.test_bz2.TestMain.test_main
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
*graalpython.lib-python.3.test.test_zipfile64.OtherTests.testMoreThan64kFiles
2+
*graalpython.lib-python.3.test.test_zipfile64.OtherTests.testMoreThan64kFilesAppend
3+
*graalpython.lib-python.3.test.test_zipfile64.TestsWithSourceFile.testDeflated
4+
*graalpython.lib-python.3.test.test_zipfile64.TestsWithSourceFile.testStored

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
@@ -233,7 +233,7 @@ protected boolean patchContext(PythonContext context, Env newEnv) {
233233
protected PythonContext createContext(Env env) {
234234
assert this.isWithThread == null || this.isWithThread == PythonOptions.isWithThread(env) : "conflicting thread options in the same language!";
235235
this.isWithThread = PythonOptions.isWithThread(env);
236-
Python3Core newCore = new Python3Core(new PythonParserImpl(env));
236+
Python3Core newCore = new Python3Core(new PythonParserImpl(env), env.isNativeAccessAllowed());
237237
final PythonContext context = new PythonContext(this, env, newCore);
238238
context.initializeHomeAndPrefixPaths(env, getLanguageHome());
239239

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

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,9 @@
102102
import com.oracle.graal.python.builtins.modules.WeakRefModuleBuiltins;
103103
import com.oracle.graal.python.builtins.modules.ZipImportModuleBuiltins;
104104
import com.oracle.graal.python.builtins.objects.NotImplementedBuiltins;
105+
import com.oracle.graal.python.builtins.modules.bz2.BZ2CompressorBuiltins;
106+
import com.oracle.graal.python.builtins.modules.bz2.BZ2DecompressorBuiltins;
107+
import com.oracle.graal.python.builtins.modules.bz2.BZ2ModuleBuiltins;
105108
import com.oracle.graal.python.builtins.modules.io.BufferedReaderBuiltins;
106109
import com.oracle.graal.python.builtins.modules.io.IOModuleBuiltins;
107110
import com.oracle.graal.python.builtins.modules.zlib.ZLibModuleBuiltins;
@@ -310,7 +313,7 @@ private static String[] initializeCoreFiles() {
310313
c = null;
311314
}
312315

313-
private static PythonBuiltins[] initializeBuiltins() {
316+
private static PythonBuiltins[] initializeBuiltins(boolean nativeAccessAllowed) {
314317
List<PythonBuiltins> builtins = new ArrayList<>(Arrays.asList(
315318
new BuiltinConstructors(),
316319
new BuiltinFunctions(),
@@ -442,6 +445,11 @@ private static PythonBuiltins[] initializeBuiltins() {
442445
builtins.add(new LsprofModuleBuiltins());
443446
builtins.add(LsprofModuleBuiltins.newProfilerBuiltins());
444447
}
448+
if (nativeAccessAllowed) {
449+
builtins.add(new BZ2CompressorBuiltins());
450+
builtins.add(new BZ2DecompressorBuiltins());
451+
builtins.add(new BZ2ModuleBuiltins());
452+
}
445453
if (!ImageInfo.inImageRuntimeCode()) {
446454
ServiceLoader<PythonBuiltins> providers = ServiceLoader.load(PythonBuiltins.class, Python3Core.class.getClassLoader());
447455
for (PythonBuiltins builtin : providers) {
@@ -473,9 +481,9 @@ private static PythonBuiltins[] initializeBuiltins() {
473481

474482
private final PythonObjectFactory objectFactory = PythonObjectFactory.getUncached();
475483

476-
public Python3Core(PythonParser parser) {
484+
public Python3Core(PythonParser parser, boolean isNativeSupportAllowed) {
477485
this.parser = parser;
478-
this.builtins = initializeBuiltins();
486+
this.builtins = initializeBuiltins(isNativeSupportAllowed);
479487
this.coreFiles = initializeCoreFiles();
480488
}
481489

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,8 @@ public enum PythonBuiltinClassType implements TruffleObject {
138138
PLZMADecompressor("LZMADecompressor", "_lzma"),
139139
LsprofProfiler("Profiler", "_lsprof"),
140140
PStruct("Struct", "_struct"),
141+
BZ2Compressor("BZ2Compressor", "_bz2"),
142+
BZ2Decompressor("BZ2Decompressor", "_bz2"),
141143
ZlibCompress("Compress", "zlib"),
142144
ZlibDecompress("Decompress", "zlib"),
143145
PBufferedReader("BufferedReader", "_io"),

0 commit comments

Comments
 (0)