test(wasm): accept a zstd read when the build has the filter
cargo test --workspace unifies clawhdf5-format/zstd on (another member enables it), so the native interop test read the Zstd dataset that the wasm build refuses. The fixture now records its values plus the error the wasm build must give; the native test accepts either, the Node test of the real wasm package still requires the error. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
This commit is contained in:
@@ -166,9 +166,16 @@ fn check_file(dir: &Path, file: &str, exp: &Value) {
|
|||||||
|
|
||||||
for (path, want) in exp["datasets"].as_object().unwrap() {
|
for (path, want) in exp["datasets"].as_object().unwrap() {
|
||||||
let kind = want["kind"].as_str().unwrap();
|
let kind = want["kind"].as_str().unwrap();
|
||||||
let a = r
|
let a = match (r.read(path, None), want["unavailable"].as_str()) {
|
||||||
.read(path, None)
|
(Ok(a), _) => a,
|
||||||
.unwrap_or_else(|e| panic!("{file}:{path}: {e}"));
|
// A filter this build may lack (zstd: the wasm build has it
|
||||||
|
// off, a workspace build may unify it on) must fail clearly.
|
||||||
|
(Err(e), Some(why)) => {
|
||||||
|
assert!(e.contains(why), "{file}:{path}: {e}");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
(Err(e), None) => panic!("{file}:{path}: {e}"),
|
||||||
|
};
|
||||||
assert_eq!(a.shape, shape(&want["shape"]), "{file}:{path} shape");
|
assert_eq!(a.shape, shape(&want["shape"]), "{file}:{path} shape");
|
||||||
let (got_kind, got) = data_strings(&a.data);
|
let (got_kind, got) = data_strings(&a.data);
|
||||||
assert_eq!(got_kind, kind, "{file}:{path} kind");
|
assert_eq!(got_kind, kind, "{file}:{path} kind");
|
||||||
|
|||||||
@@ -175,10 +175,12 @@ def describe(path):
|
|||||||
walk(key.rstrip("/") + "/" + n, o)
|
walk(key.rstrip("/") + "/" + n, o)
|
||||||
elif obj.dtype.names:
|
elif obj.dtype.names:
|
||||||
expected["errors"][key] = "compound"
|
expected["errors"][key] = "compound"
|
||||||
elif key == "/zstd":
|
|
||||||
expected["errors"][key] = "unsupported filter: 32015"
|
|
||||||
else:
|
else:
|
||||||
expected["datasets"][key] = entry(obj, slab_for(obj))
|
expected["datasets"][key] = entry(obj, slab_for(obj))
|
||||||
|
if key == "/zstd":
|
||||||
|
# Refused by the wasm build (no zstd); a native build
|
||||||
|
# that unifies in clawhdf5-format/zstd reads it.
|
||||||
|
expected["datasets"][key]["unavailable"] = "unsupported filter: 32015"
|
||||||
|
|
||||||
walk("/", f)
|
walk("/", f)
|
||||||
return expected
|
return expected
|
||||||
|
|||||||
@@ -69,6 +69,12 @@ for (const [name, exp] of Object.entries(expected)) {
|
|||||||
for (const [path, want] of Object.entries(exp.datasets)) {
|
for (const [path, want] of Object.entries(exp.datasets)) {
|
||||||
const ctx = `${name}:${path}`;
|
const ctx = `${name}:${path}`;
|
||||||
eq(file.kind(path), "dataset", `${ctx} kind`);
|
eq(file.kind(path), "dataset", `${ctx} kind`);
|
||||||
|
if (want.unavailable) {
|
||||||
|
// The wasm build has no zstd (it links C): a clear error, no data.
|
||||||
|
assert.throws(() => file.read(path), (e) => e.message.includes(want.unavailable), ctx);
|
||||||
|
checks++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
const info = file.info(path);
|
const info = file.info(path);
|
||||||
eq([...info.shape, ...info.elementShape], want.shape, `${ctx} info shape`);
|
eq([...info.shape, ...info.elementShape], want.shape, `${ctx} info shape`);
|
||||||
const r = file.read(path);
|
const r = file.read(path);
|
||||||
|
|||||||
Reference in New Issue
Block a user