summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonathan Kim <jkm@hdfgroup.org>2013-02-18 19:46:03 (GMT)
committerJonathan Kim <jkm@hdfgroup.org>2013-02-18 19:46:03 (GMT)
commitdbad502865d8817fe0db94dd6d6b9656ee257790 (patch)
tree148ecf43ec73c0f8f66c4d241037c5f8a6db59fb
parentf3da4919c491d84b58be74fd90837c391b37fc7c (diff)
downloadhdf5-dbad502865d8817fe0db94dd6d6b9656ee257790.zip
hdf5-dbad502865d8817fe0db94dd6d6b9656ee257790.tar.gz
hdf5-dbad502865d8817fe0db94dd6d6b9656ee257790.tar.bz2
[svn-r23304] Purpose:
HDFFV-7643 - h5diff - incorrect exit-code returns for extra attribute exist Description: h5diff: Fixed to return correct exit code 1 when detect unique attribute. Prior to this fix, h5diff returned exit code 0 indicating two files are identical. Tested: jam (linux32-LE), koala (linux64-LE), ostrich (linuxppc64-BE), fred (mac64-LE), emu (solaris-BE), Windows (32-LE cmake), cmake (jam)
-rw-r--r--release_docs/RELEASE.txt7
-rw-r--r--tools/h5diff/CMakeLists.txt4
-rw-r--r--tools/h5diff/testfiles/h5diff_706.txt2
-rw-r--r--tools/h5diff/testfiles/h5diff_708.txt2
-rw-r--r--tools/lib/h5diff_attr.c7
5 files changed, 16 insertions, 6 deletions
diff --git a/release_docs/RELEASE.txt b/release_docs/RELEASE.txt
index 9dc895c..ab3dfb3 100644
--- a/release_docs/RELEASE.txt
+++ b/release_docs/RELEASE.txt
@@ -751,9 +751,12 @@ Bug Fixes since HDF5-1.8.0 release
Tools
-----
+ - h5diff: Fixed to return correct exit code 1 when detect unique extra
+ attribute. Prior to this fix, h5diff returned exit code 0 indicating
+ two files are identical. HDFFV-7643 (JKM 2013/02/15)
- h5diff: Improved speed when comparing HDF5 files with lots of
- attributes. Much slower performance was identified with release version
- from 1.8.7 to 1.8.10 compared to 1.8.6. (JKM 2012/10/19)
+ attributes. Much slower performance was identified with release
+ version from 1.8.7 to 1.8.10 compared to 1.8.6. (JKM 2012/10/19)
- h5repack: "h5repack -f NONE file1.h5 out.h5" command failed if
source file contains chunked dataset and a chunk dim is bigger than
the dataset dim. Another issue is that the command changed max dims
diff --git a/tools/h5diff/CMakeLists.txt b/tools/h5diff/CMakeLists.txt
index a8fed57..8eb5ad1 100644
--- a/tools/h5diff/CMakeLists.txt
+++ b/tools/h5diff/CMakeLists.txt
@@ -1092,13 +1092,13 @@ ADD_H5_TEST (h5diff_704 1 -v2 ${ATTR_VERBOSE_LEVEL_FILE1} ${ATTR_VERBOSE_LEVEL_F
ADD_H5_TEST (h5diff_705 1 -v2 ${ATTR_VERBOSE_LEVEL_FILE1} ${ATTR_VERBOSE_LEVEL_FILE2} /dset)
# same attr number , all different attr name
-ADD_H5_TEST (h5diff_706 0 -v2 ${ATTR_VERBOSE_LEVEL_FILE1} ${ATTR_VERBOSE_LEVEL_FILE2} /ntype)
+ADD_H5_TEST (h5diff_706 1 -v2 ${ATTR_VERBOSE_LEVEL_FILE1} ${ATTR_VERBOSE_LEVEL_FILE2} /ntype)
# different attr number , same attr name (intersected)
ADD_H5_TEST (h5diff_707 1 -v2 ${ATTR_VERBOSE_LEVEL_FILE1} ${ATTR_VERBOSE_LEVEL_FILE2} /g2)
# different attr number , all different attr name
-ADD_H5_TEST (h5diff_708 0 -v2 ${ATTR_VERBOSE_LEVEL_FILE1} ${ATTR_VERBOSE_LEVEL_FILE2} /g3)
+ADD_H5_TEST (h5diff_708 1 -v2 ${ATTR_VERBOSE_LEVEL_FILE1} ${ATTR_VERBOSE_LEVEL_FILE2} /g3)
# when no attributes exist in both objects
ADD_H5_TEST (h5diff_709 0 -v2 ${ATTR_VERBOSE_LEVEL_FILE1} ${ATTR_VERBOSE_LEVEL_FILE2} /g4)
diff --git a/tools/h5diff/testfiles/h5diff_706.txt b/tools/h5diff/testfiles/h5diff_706.txt
index 38eeac5..5825150 100644
--- a/tools/h5diff/testfiles/h5diff_706.txt
+++ b/tools/h5diff/testfiles/h5diff_706.txt
@@ -10,4 +10,4 @@ datatype: </ntype> and </ntype>
x integer1
x integer4
Attributes status: 0 common, 3 only in obj1, 3 only in obj2
-EXIT CODE: 0
+EXIT CODE: 1
diff --git a/tools/h5diff/testfiles/h5diff_708.txt b/tools/h5diff/testfiles/h5diff_708.txt
index add386b..a10a8b7 100644
--- a/tools/h5diff/testfiles/h5diff_708.txt
+++ b/tools/h5diff/testfiles/h5diff_708.txt
@@ -14,4 +14,4 @@ group : </g3> and </g3>
x integer10
x integer3
Attributes status: 0 common, 3 only in obj1, 2 only in obj2
-EXIT CODE: 0
+EXIT CODE: 1
diff --git a/tools/lib/h5diff_attr.c b/tools/lib/h5diff_attr.c
index 130a0d8..4899200 100644
--- a/tools/lib/h5diff_attr.c
+++ b/tools/lib/h5diff_attr.c
@@ -350,6 +350,13 @@ hsize_t diff_attr(hid_t loc1_id,
if( build_match_list_attrs(loc1_id, loc2_id, &match_list_attrs, options) < 0)
goto error;
+ /* if detect any unique extra attr */
+ if(match_list_attrs->nattrs_only1 || match_list_attrs->nattrs_only2)
+ {
+ /* exit will be 1 */
+ options->contents = 0;
+ }
+
for(u = 0; u < (unsigned)match_list_attrs->nattrs; u++)
{
if( (match_list_attrs->attrs[u].exist[0]) && (match_list_attrs->attrs[u].exist[1]) )