Skip to content

Commit 62d085e

Browse files
committed
restore out-of-bounds tests & improve range notation
1 parent 5636fd8 commit 62d085e

File tree

3 files changed

+16
-9
lines changed

3 files changed

+16
-9
lines changed

Lib/test/test_zstd.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -200,16 +200,16 @@ def test_simple_compress_bad_args(self):
200200
self.assertRaises(TypeError, ZstdCompressor, zstd_dict={1: 2, 3: 4})
201201

202202
# valid range for compression level is [-(1<<17), 22]
203-
msg = 'compression level {} not in valid range -131072 <= level <= 22'
203+
msg = 'illegal compression level {}; the valid range is [-131072, 22]'
204204
with self.assertRaisesRegex(ValueError, msg.format(C_INT_MAX)):
205205
ZstdCompressor(C_INT_MAX)
206206
with self.assertRaisesRegex(ValueError, msg.format(C_INT_MIN)):
207207
ZstdCompressor(C_INT_MIN)
208-
msg = 'compression level not in valid range -131072 <= level <= 22'
208+
msg = 'illegal compression level; the valid range is [-131072, 22]'
209209
with self.assertRaisesRegex(ValueError, msg):
210210
ZstdCompressor(level=-(2**1000))
211211
with self.assertRaisesRegex(ValueError, msg):
212-
ZstdCompressor(level=(2**1000))
212+
ZstdCompressor(level=2**1000)
213213

214214
with self.assertRaises(ValueError):
215215
ZstdCompressor(options={CompressionParameter.window_log: 100})
@@ -305,7 +305,7 @@ def test_compress_parameters(self):
305305
with self.assertRaisesRegex(
306306
ValueError,
307307
"compression parameter 'window_log' received an illegal value 100; "
308-
r'the valid range is \d+ <= value <= \d+',
308+
r'the valid range is \[\d+, \d+\]',
309309
):
310310
compress(b'', options=option)
311311

@@ -439,10 +439,17 @@ def test_decompress_parameters(self):
439439

440440
d1 = d.copy()
441441
# larger than signed int
442+
d1[DecompressionParameter.window_log_max] = 2**1000
443+
with self.assertRaises(OverflowError):
444+
ZstdDecompressor(None, d1)
445+
# smaller than signed int
446+
d1[DecompressionParameter.window_log_max] = -(2**1000)
447+
with self.assertRaises(OverflowError):
448+
ZstdDecompressor(None, d1)
449+
442450
d1[DecompressionParameter.window_log_max] = C_INT_MAX
443451
with self.assertRaises(ValueError):
444452
ZstdDecompressor(None, d1)
445-
# smaller than signed int
446453
d1[DecompressionParameter.window_log_max] = C_INT_MIN
447454
with self.assertRaises(ValueError):
448455
ZstdDecompressor(None, d1)
@@ -452,7 +459,7 @@ def test_decompress_parameters(self):
452459
with self.assertRaisesRegex(
453460
ValueError,
454461
"decompression parameter 'window_log_max' received an illegal value 100; "
455-
r'the valid range is \d+ <= value <= \d+',
462+
r'the valid range is \[\d+, \d+\]',
456463
):
457464
decompress(b'', options=options)
458465

Modules/_zstd/_zstdmodule.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ set_parameter_error(int is_compress, int key_v, int value_v)
154154
/* Error message */
155155
PyErr_Format(PyExc_ValueError,
156156
"%s parameter '%s' received an illegal value %d; "
157-
"the valid range is %d <= value <= %d",
157+
"the valid range is [%d, %d]",
158158
type, name, value_v, bounds.lowerBound, bounds.upperBound);
159159
}
160160

Modules/_zstd/compressor.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ _zstd_set_c_level(ZstdCompressor *self, int level)
5656
int max_level = ZSTD_maxCLevel();
5757
if (level < min_level || level > max_level) {
5858
PyErr_Format(PyExc_ValueError,
59-
"compression level %d not in valid range %d <= level <= %d",
59+
"illegal compression level %d; the valid range is [%d, %d]",
6060
level, min_level, max_level);
6161
return -1;
6262
}
@@ -378,7 +378,7 @@ _zstd_ZstdCompressor_new_impl(PyTypeObject *type, PyObject *level,
378378
if (level_v == -1 && PyErr_Occurred()) {
379379
if (PyErr_ExceptionMatches(PyExc_OverflowError)) {
380380
PyErr_Format(PyExc_ValueError,
381-
"compression level not in valid range %d <= level <= %d",
381+
"illegal compression level; the valid range is [%d, %d]",
382382
ZSTD_minCLevel(), ZSTD_maxCLevel());
383383
}
384384
goto error;

0 commit comments

Comments
 (0)