Skip to content

Commit 9bdeb5d

Browse files
committed
Fix nondecoded reference loads in test_byecoded_datasets.
1 parent 9ec31fb commit 9bdeb5d

File tree

1 file changed

+19
-11
lines changed

1 file changed

+19
-11
lines changed

lib/iris/tests/unit/fileformats/netcdf/test_bytecoding_datasets.py

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,14 @@ class TestRead:
304304
def readmode(self, request):
305305
return request.param
306306

307+
def undecoded_testvar(self, ds_encoded, varname: str):
308+
path = ds_encoded.filepath()
309+
ds_encoded.close()
310+
ds = DatasetWrapper(path)
311+
v = ds.variables[varname]
312+
v.set_auto_chartostring(False)
313+
return v
314+
307315
def test_encodings(self, encoding, tempdir, readmode):
308316
# Create a dataset with the variable
309317
path = tempdir / f"test_read_encodings_{encoding!s}_{readmode}.nc"
@@ -337,9 +345,9 @@ def test_encodings(self, encoding, tempdir, readmode):
337345
assert np.all(truncated_result == result)
338346
result = truncated_result
339347
else:
340-
# Test "raw" read --> byte array
341-
with DECODE_TO_STRINGS_ON_READ.context(False):
342-
result = v[:]
348+
# Close and re-open as "regular" dataset -- just to check the raw content
349+
v = self.undecoded_testvar(ds_encoded, "vxs")
350+
result = v[:]
343351
expected = write_bytes
344352

345353
check_array_matching(result, expected)
@@ -364,8 +372,8 @@ def test_scalar(self, tempdir, readmode):
364372
expected = np.array(data_string)
365373
else:
366374
# Test "raw" read --> byte array
367-
with DECODE_TO_STRINGS_ON_READ.context(False):
368-
result = v[:]
375+
v = self.undecoded_testvar(ds_encoded, "v0_scalar")
376+
result = v[:]
369377
expected = data_bytes
370378

371379
check_array_matching(result, expected)
@@ -401,17 +409,17 @@ def test_multidim(self, tempdir, readmode):
401409
expected = np.array(test_strings)
402410
else:
403411
# Test "raw" read --> byte array
404-
with DECODE_TO_STRINGS_ON_READ.context(False):
405-
result = v[:]
412+
v = self.undecoded_testvar(ds_encoded, "vyxn")
413+
result = v[:]
406414
expected = test_bytes
407415

408416
check_array_matching(result, expected)
409417

410418
def test_read_encoding_failure(self, tempdir, readmode):
411419
path = tempdir / f"test_read_encoding_failure_{readmode}.nc"
412420
strlen = 10
413-
ds = make_encoded_dataset(path, strlen=strlen, encoding="ascii")
414-
v = ds.variables["vxs"]
421+
ds_encoded = make_encoded_dataset(path, strlen=strlen, encoding="ascii")
422+
v = ds_encoded.variables["vxs"]
415423
test_utf8_bytes = make_bytearray(
416424
samples_3_nonascii, bytewidth=strlen, encoding="utf-8"
417425
)
@@ -425,8 +433,8 @@ def test_read_encoding_failure(self, tempdir, readmode):
425433
with pytest.raises(ValueError, match=msg):
426434
v[:]
427435
else:
428-
with DECODE_TO_STRINGS_ON_READ.context(False):
429-
result = v[:] # this ought to be ok!
436+
v = self.undecoded_testvar(ds_encoded, "vxs")
437+
result = v[:] # this ought to be ok!
430438

431439
assert np.all(result == test_utf8_bytes)
432440

0 commit comments

Comments
 (0)