fix(tools): h5rs diff compares soft links by target, like h5diff
An OBJ that was a soft link was resolved and its target object compared, so two files whose /g/s both point at /z differed when /z did: exit 1, where h5diff (without --follow-symlinks) compares the links' target paths and exits 0. A soft link is now compared as a link wherever it is, OBJ included. --follow-symlinks compares the objects soft links lead to instead, walks into soft-linked groups, resolves relative targets against the link's group, and treats two dangling links as the same; exit codes equal h5diff's on 14 cases. External links are never followed (documented). Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
This commit is contained in:
+11
-9
@@ -128,15 +128,17 @@
|
||||
- `h5rs stat FILE` reports h5stat's object, link, rank, layout, filter,
|
||||
attribute, raw-data and file-size figures (equal to h5stat's on the test
|
||||
files); metadata space is one figure, not broken down.
|
||||
- `h5rs diff [-r] [-q] [-d D] [-p R] A B [OBJ1 [OBJ2]]` compares objects,
|
||||
kinds, datatypes, shapes, attributes, values and link targets; exit
|
||||
status 0/1/2 as h5diff's. Every path is compared, including every name
|
||||
of a hard-linked object and the members of a hard-linked group; with a
|
||||
`-d`/`-p` tolerance, integers are compared exactly in integer
|
||||
arithmetic (no loss above 2^53), and a `-p` below the f64 epsilon
|
||||
compares exactly, as h5diff's. Objects
|
||||
that cannot be compared count as a difference (h5diff exits 0 for them),
|
||||
and NaN equals NaN.
|
||||
- `h5rs diff [-r] [-q] [-d D] [-p R] [--follow-symlinks] A B [OBJ1 [OBJ2]]`
|
||||
compares objects, kinds, datatypes, shapes, attributes, values and link
|
||||
targets; exit status 0/1/2 as h5diff's. Soft links are compared by
|
||||
target path, as h5diff's default, or with `--follow-symlinks` by the
|
||||
objects they lead to (external links are never followed). Every path is
|
||||
compared, including every name of a hard-linked object and the members
|
||||
of a hard-linked group; with a `-d`/`-p` tolerance, integers are
|
||||
compared exactly in integer arithmetic (no loss above 2^53), and a `-p`
|
||||
below the f64 epsilon compares exactly, as h5diff's. Objects that cannot
|
||||
be compared count as a difference (h5diff exits 0 for them), and NaN
|
||||
equals NaN.
|
||||
- `h5rs check [--data] FILE` is a structural validator: it walks every
|
||||
object, parses every header message, verifies the checksums of every
|
||||
version 2+ structure it meets (superblock, object headers and
|
||||
|
||||
Reference in New Issue
Block a user