summaryrefslogtreecommitdiffstats
path: root/test/objcopy.c
diff options
context:
space:
mode:
authorNeil Fortner <nfortne2@hdfgroup.org>2010-03-05 17:51:45 (GMT)
committerNeil Fortner <nfortne2@hdfgroup.org>2010-03-05 17:51:45 (GMT)
commit187292532027ed6abdbd8be127381491881d5a59 (patch)
tree44f62304f23b9af8ac0f0b5f86d9acc5c00e8a32 /test/objcopy.c
parent179b54da83f293948a531afd6b59e676df7a60e7 (diff)
downloadhdf5-187292532027ed6abdbd8be127381491881d5a59.zip
hdf5-187292532027ed6abdbd8be127381491881d5a59.tar.gz
hdf5-187292532027ed6abdbd8be127381491881d5a59.tar.bz2
[svn-r18376] Purpose: Fix bug 1733
Description: Support for expanding external links was not implemented in H5Ocopy, even though a flag existed for H5Pset_copy_object to enable this. This patch implements this feature. Tested: jam, amani, linew (h5committest); Fedora
Diffstat (limited to 'test/objcopy.c')
-rwxr-xr-xtest/objcopy.c250
1 files changed, 212 insertions, 38 deletions
diff --git a/test/objcopy.c b/test/objcopy.c
index 05da5dd..854006e 100755
--- a/test/objcopy.c
+++ b/test/objcopy.c
@@ -103,8 +103,11 @@ const char *FILENAME[] = {
#define NAME_LINK_SOFT "/g_links/soft_link_to_dataset_simple"
#define NAME_LINK_SOFT2 "/g_links2/soft_link_to_dataset_simple"
#define NAME_LINK_EXTERN "/g_links/external_link_to_dataset_simple"
+#define NAME_LINK_EXTERN2 "/g_links2/external_link_to_dataset_simple"
#define NAME_LINK_SOFT_DANGLE "/g_links/soft_link_to_nowhere"
#define NAME_LINK_SOFT_DANGLE2 "/g_links2/soft_link_to_nowhere"
+#define NAME_LINK_EXTERN_DANGLE "/g_links/external_link_to_nowhere"
+#define NAME_LINK_EXTERN_DANGLE2 "/g_links2/external_link_to_nowhere"
#define NAME_OLD_FORMAT "/dset1"
#define NAME_BUF_SIZE 1024
@@ -5229,21 +5232,32 @@ error:
* Friday, September 30, 2005
*
* Modifications:
+ * Neil Fortner
+ * Tuesday, February 16, 2010
+ * Modified test to test flags for expanding soft and external
+ * links.
*
*-------------------------------------------------------------------------
*/
static int
test_copy_group_links(hid_t fcpl_src, hid_t fcpl_dst, hid_t fapl)
{
- hid_t fid_src = -1, fid_dst = -1; /* File IDs */
+ hid_t fid_src = -1, fid_dst = -1, fid_ext = -1; /* File IDs */
hid_t sid = -1; /* Dataspace ID */
- hid_t did = -1; /* Dataset ID */
+ hid_t did = -1, did2 = -1; /* Dataset ID */
hid_t gid = -1, gid2 = -1; /* Group IDs */
+ hid_t plid = -1; /* Object copy plist ID */
hsize_t dim2d[2];
+ hsize_t dim1d[1];
+ H5L_info_t linfo;
int buf[DIM_SIZE_1][DIM_SIZE_2];
int i, j;
+ unsigned expand_soft;
+ unsigned expand_ext;
+ unsigned copy_options;
char src_filename[NAME_BUF_SIZE];
char dst_filename[NAME_BUF_SIZE];
+ char ext_filename[NAME_BUF_SIZE];
TESTING("H5Ocopy(): group with links");
@@ -5255,6 +5269,7 @@ test_copy_group_links(hid_t fcpl_src, hid_t fcpl_dst, hid_t fapl)
/* Initialize the filenames */
h5_fixname(FILENAME[0], fapl, src_filename, sizeof src_filename);
h5_fixname(FILENAME[1], fapl, dst_filename, sizeof dst_filename);
+ h5_fixname(FILENAME[2], fapl, ext_filename, sizeof ext_filename);
/* Reset file address checking info */
addr_reset();
@@ -5262,11 +5277,16 @@ test_copy_group_links(hid_t fcpl_src, hid_t fcpl_dst, hid_t fapl)
/* create source file */
if((fid_src = H5Fcreate(src_filename, H5F_ACC_TRUNC, fcpl_src, fapl)) < 0) TEST_ERROR
- /* create group at the SRC file */
+ /* create file to hold external dataset */
+ if((fid_ext = H5Fcreate(ext_filename, H5F_ACC_TRUNC, fcpl_src, fapl)) < 0) TEST_ERROR
+
+ /* create groups at the SRC file. Group 2 will hold dangling links. */
if((gid = H5Gcreate2(fid_src, NAME_GROUP_LINK, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) TEST_ERROR
+ if((gid2 = H5Gcreate2(fid_src, NAME_GROUP_LINK2, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) TEST_ERROR
- /* attach attributes to the group */
+ /* attach attributes to the groups */
if(test_copy_attach_attributes(gid, H5T_NATIVE_INT) < 0) TEST_ERROR
+ if(test_copy_attach_attributes(gid2, H5T_NATIVE_INT) < 0) TEST_ERROR
/* Set dataspace dimensions */
dim2d[0]=DIM_SIZE_1;
@@ -5285,57 +5305,162 @@ test_copy_group_links(hid_t fcpl_src, hid_t fcpl_dst, hid_t fapl)
/* close the dataset */
if(H5Dclose(did) < 0) TEST_ERROR
+ /* Now create a 1-D dataset in an external file */
+ /* Set dataspace dimensions */
+ dim1d[0]=DIM_SIZE_2;
+
+ /* create dataspace */
+ if((sid = H5Screate_simple(1, dim1d, NULL)) < 0) TEST_ERROR
+
+ /* add a dataset to the external file */
+ if((did = H5Dcreate2(fid_ext, NAME_DATASET_SIMPLE, H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) TEST_ERROR
+ if(H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) TEST_ERROR
+
+ /* close dataspace */
+ if(H5Sclose(sid) < 0) TEST_ERROR
+
+ /* close the dataset */
+ if(H5Dclose(did) < 0) TEST_ERROR
+
/* make a hard link to the dataset */
if(H5Lcreate_hard(fid_src, NAME_LINK_DATASET, H5L_SAME_LOC, NAME_LINK_HARD, H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
/* make a soft link to the dataset */
if(H5Lcreate_soft(NAME_LINK_DATASET, fid_src, NAME_LINK_SOFT, H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
- /* make a soft link to nowhere */
- if(H5Lcreate_soft("nowhere", fid_src, NAME_LINK_SOFT_DANGLE, H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
+ /* make an external link to the external dataset */
+ if(H5Lcreate_external(ext_filename, NAME_DATASET_SIMPLE, fid_src, NAME_LINK_EXTERN, H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
+
+ /* make a dangling soft link */
+ if(H5Lcreate_soft("nowhere", fid_src, NAME_LINK_SOFT_DANGLE2, H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
/* make a dangling external link */
- if(H5Lcreate_external("filename", "obj_name", fid_src, NAME_LINK_EXTERN, H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
+ if(H5Lcreate_external("no_file", "no_object", fid_src, NAME_LINK_EXTERN_DANGLE2, H5P_DEFAULT, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
- /* close the group */
+ /* close the groups */
if(H5Gclose(gid) < 0) TEST_ERROR
+ if(H5Gclose(gid2) < 0) TEST_ERROR
- /* close the SRC file */
+ /* close the SRC and EXT files */
if(H5Fclose(fid_src) < 0) TEST_ERROR
+ if(H5Fclose(fid_ext) < 0) TEST_ERROR
- /* open the source file with read-only */
- if((fid_src = H5Fopen(src_filename, H5F_ACC_RDONLY, fapl)) < 0) TEST_ERROR
+ /* Create the object copy plist */
+ if((plid = H5Pcreate(H5P_OBJECT_COPY)) < 0) TEST_ERROR
- /* create destination file */
- if((fid_dst = H5Fcreate(dst_filename, H5F_ACC_TRUNC, fcpl_dst, fapl)) < 0) TEST_ERROR
+ /* Loop over all configurations (expand soft/external links) */
+ for(expand_soft=0; expand_soft<=1; expand_soft++) {
+ for(expand_ext=0; expand_ext<=1; expand_ext++) {
+ /* Set the correct copy options on the obj copy plist */
+ copy_options = 0;
+ if(expand_soft)
+ copy_options |= H5O_COPY_EXPAND_SOFT_LINK_FLAG;
+ if(expand_ext)
+ copy_options |= H5O_COPY_EXPAND_EXT_LINK_FLAG;
+ if(H5Pset_copy_object(plid, copy_options) < 0) TEST_ERROR
- /* Create an uncopied object in destination file so that addresses in source and destination files aren't the same */
- if(H5Gclose(H5Gcreate2(fid_dst, NAME_GROUP_UNCOPIED, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) TEST_ERROR
+ /* open the source file with read-only */
+ if((fid_src = H5Fopen(src_filename, H5F_ACC_RDONLY, fapl)) < 0) TEST_ERROR
- /* copy the group from SRC to DST */
- if(H5Ocopy(fid_src, NAME_GROUP_LINK, fid_dst, NAME_GROUP_LINK, H5P_DEFAULT, H5P_DEFAULT) < 0) TEST_ERROR
+ /* create destination file */
+ if((fid_dst = H5Fcreate(dst_filename, H5F_ACC_TRUNC, fcpl_dst, fapl)) < 0) TEST_ERROR
- /* open the group for copy */
- if((gid = H5Gopen2(fid_src, NAME_GROUP_LINK, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
+ /* Create an uncopied object in destination file so that addresses in source and destination files aren't the same */
+ if(H5Gclose(H5Gcreate2(fid_dst, NAME_GROUP_UNCOPIED, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) TEST_ERROR
- /* open the destination group */
- if((gid2 = H5Gopen2(fid_dst, NAME_GROUP_LINK, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
+ /* copy the group from SRC to DST */
+ if(H5Ocopy(fid_src, NAME_GROUP_LINK, fid_dst, NAME_GROUP_LINK, plid, H5P_DEFAULT) < 0) TEST_ERROR
- /* Check if the groups are equal */
- if(compare_groups(gid, gid2, H5P_DEFAULT, -1, 0) != TRUE) TEST_ERROR
+ /* open the group for copy */
+ if((gid = H5Gopen2(fid_src, NAME_GROUP_LINK, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
- /* close the destination group */
- if(H5Gclose(gid2) < 0) TEST_ERROR
+ /* open the destination group */
+ if((gid2 = H5Gopen2(fid_dst, NAME_GROUP_LINK, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
- /* close the source group */
- if(H5Gclose(gid) < 0) TEST_ERROR
+ /* If expand_soft is set to true, verify that the soft link is now a
+ * hard link, and compare the expanded dataset, then delete it and
+ * re-add it as a soft link so compare_groups() works */
+ if(expand_soft) {
+ /* Check link type */
+ if(H5Lget_info(fid_dst, NAME_LINK_SOFT, &linfo, H5P_DEFAULT) < 0) TEST_ERROR
+ if(linfo.type != H5L_TYPE_HARD)
+ FAIL_PUTS_ERROR("Soft link was not expanded to a hard link")
- /* close the SRC file */
- if(H5Fclose(fid_src) < 0) TEST_ERROR
+ /* Compare datasets */
+ if((did = H5Dopen2(fid_src, NAME_LINK_DATASET, H5P_DEFAULT)) < 0) TEST_ERROR
+ if((did2 = H5Dopen2(fid_dst, NAME_LINK_SOFT, H5P_DEFAULT)) < 0) TEST_ERROR
+ if(compare_datasets(did, did2, H5P_DEFAULT, NULL) != TRUE) TEST_ERROR
- /* close the DST file */
- if(H5Fclose(fid_dst) < 0) TEST_ERROR
+ /* Delete expanded dataset, add soft link */
+ if(H5Ldelete(fid_dst, NAME_LINK_SOFT, H5P_DEFAULT) < 0) TEST_ERROR
+ if(H5Lcreate_soft(NAME_LINK_DATASET, fid_dst, NAME_LINK_SOFT, H5P_DEFAULT, H5P_DEFAULT) < 0) TEST_ERROR
+
+ /* Close datasets */
+ if(H5Dclose(did) < 0) TEST_ERROR
+ if(H5Dclose(did2) < 0) TEST_ERROR
+ } /* end if */
+
+ /* If expand_ext is set to true, verify that the external link is
+ * now a hard link, and compare the expanded dataset, then delete it
+ * and re-add it as an external link so compare_groups() works */
+ if(expand_ext) {
+ /* Check link type */
+ if(H5Lget_info(fid_dst, NAME_LINK_EXTERN, &linfo, H5P_DEFAULT) < 0) TEST_ERROR
+ if(linfo.type != H5L_TYPE_HARD)
+ FAIL_PUTS_ERROR("External link was not expanded to a hard link")
+
+ /* Compare datasets */
+ if((fid_ext = H5Fopen(ext_filename, H5F_ACC_RDONLY, fapl)) < 0) TEST_ERROR
+ if((did = H5Dopen2(fid_ext, NAME_DATASET_SIMPLE, H5P_DEFAULT)) < 0) TEST_ERROR
+ if((did2 = H5Dopen2(fid_dst, NAME_LINK_EXTERN, H5P_DEFAULT)) < 0) TEST_ERROR
+ if(compare_datasets(did, did2, H5P_DEFAULT, NULL) != TRUE) TEST_ERROR
+
+ /* Delete expanded dataset, add external link */
+ if(H5Ldelete(fid_dst, NAME_LINK_EXTERN, H5P_DEFAULT) < 0) TEST_ERROR
+ if(H5Lcreate_external(ext_filename, NAME_DATASET_SIMPLE, fid_dst, NAME_LINK_EXTERN, H5P_DEFAULT, H5P_DEFAULT) < 0) TEST_ERROR
+
+ /* Close datasets and external file */
+ if(H5Dclose(did) < 0) TEST_ERROR
+ if(H5Dclose(did2) < 0) TEST_ERROR
+ if(H5Fclose(fid_ext) < 0) TEST_ERROR
+ } /* end if */
+
+ /* Check if the groups are equal */
+ if(compare_groups(gid, gid2, H5P_DEFAULT, -1, 0) != TRUE) TEST_ERROR
+
+ /* close the destination group */
+ if(H5Gclose(gid2) < 0) TEST_ERROR
+
+ /* close the source group */
+ if(H5Gclose(gid) < 0) TEST_ERROR
+
+ /* Now try to copy the group containing the dangling link. They
+ * should always be copied as the same type of link, never expanded
+ * to hard links. */
+ if(H5Ocopy(fid_src, NAME_GROUP_LINK2, fid_dst, NAME_GROUP_LINK2, plid, H5P_DEFAULT) < 0) TEST_ERROR
+
+ /* Open the original and copied groups */
+ if((gid = H5Gopen2(fid_src, NAME_GROUP_LINK2, H5P_DEFAULT)) < 0) TEST_ERROR
+ if((gid2 = H5Gopen2(fid_dst, NAME_GROUP_LINK2, H5P_DEFAULT)) < 0) TEST_ERROR
+
+ /* Compare the groups */
+ if(compare_groups(gid, gid2, H5P_DEFAULT, -1, 0) != TRUE) TEST_ERROR
+
+ /* Close groups */
+ if(H5Gclose(gid2) < 0) TEST_ERROR
+ if(H5Gclose(gid) < 0) TEST_ERROR
+
+ /* close the SRC file */
+ if(H5Fclose(fid_src) < 0) TEST_ERROR
+
+ /* close the DST file */
+ if(H5Fclose(fid_dst) < 0) TEST_ERROR
+ } /* end for */
+ } /* end for */
+
+ /* Close the object copy plist */
+ if(H5Pclose(plid) < 0) TEST_ERROR
PASSED();
return 0;
@@ -5343,11 +5468,14 @@ test_copy_group_links(hid_t fcpl_src, hid_t fcpl_dst, hid_t fapl)
error:
H5E_BEGIN_TRY {
H5Sclose(sid);
+ H5Dclose(did2);
H5Dclose(did);
H5Gclose(gid2);
H5Gclose(gid);
+ H5Fclose(fid_ext);
H5Fclose(fid_dst);
H5Fclose(fid_src);
+ H5Pclose(plid);
} H5E_END_TRY;
return 1;
} /* end test_copy_group_links */
@@ -5516,7 +5644,7 @@ test_copy_ext_link(hid_t fcpl_src, hid_t fcpl_dst, hid_t fapl)
/* Initialize the filenames */
h5_fixname(FILENAME[0], fapl, src_filename, sizeof src_filename);
h5_fixname(FILENAME[1], fapl, dst_filename, sizeof dst_filename);
- h5_fixname(FILENAME[2], fapl, ext_filename, sizeof dst_filename);
+ h5_fixname(FILENAME[2], fapl, ext_filename, sizeof ext_filename);
/* Reset file address checking info */
addr_reset();
@@ -7679,7 +7807,7 @@ error:
static int
test_copy_option(hid_t fcpl_src, hid_t fcpl_dst, hid_t fapl, unsigned flag, hbool_t crt_intermediate_grp, const char* test_desciption)
{
- hid_t fid_src = -1, fid_dst = -1; /* File IDs */
+ hid_t fid_src = -1, fid_dst = -1, fid_ext = -1; /* File IDs */
hid_t sid = -1; /* Dataspace ID */
hid_t did = -1; /* Dataset ID */
hid_t gid=-1, gid2=-1, gid_ref=-1; /* Group IDs */
@@ -7770,6 +7898,45 @@ test_copy_option(hid_t fcpl_src, hid_t fcpl_dst, hid_t fapl, unsigned flag, hboo
if(H5Gclose(gid) < 0) FAIL_STACK_ERROR
} /* end if */
+ if((flag & H5O_COPY_EXPAND_EXT_LINK_FLAG) > 0) {
+ char ext_filename[NAME_BUF_SIZE];
+
+ h5_fixname(FILENAME[2], fapl, ext_filename, sizeof ext_filename);
+
+ /* Create the external file and dataset */
+ if((fid_ext = H5Fcreate(ext_filename, H5F_ACC_TRUNC, fcpl_src, fapl)) < 0) TEST_ERROR
+ if((sid = H5Screate_simple(2, dim2d, NULL)) < 0) TEST_ERROR
+ if((did = H5Dcreate2(fid_ext, NAME_DATASET_SIMPLE, H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) TEST_ERROR
+ if(H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) TEST_ERROR
+ if(H5Dclose(did) < 0) TEST_ERROR
+ if(H5Fclose(fid_ext) < 0) TEST_ERROR
+
+ /* Create group to copy */
+ if(!(flag & H5O_COPY_EXPAND_SOFT_LINK_FLAG)) {
+ if((gid = H5Gcreate2(fid_src, NAME_GROUP_LINK, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) TEST_ERROR
+ } /* end if */
+ else
+ if((gid = H5Gopen2(fid_src, NAME_GROUP_LINK, H5P_DEFAULT)) < 0) TEST_ERROR
+ if(H5Lcreate_external(ext_filename, NAME_DATASET_SIMPLE, fid_src, NAME_LINK_EXTERN, H5P_DEFAULT, H5P_DEFAULT) < 0) TEST_ERROR
+ if(H5Lcreate_external("no_file", "no_object", fid_src, NAME_LINK_EXTERN_DANGLE, H5P_DEFAULT, H5P_DEFAULT) < 0) TEST_ERROR
+ if(H5Gclose(gid) < 0) TEST_ERROR
+
+ /* Create group to compare with */
+ if(!(flag & H5O_COPY_EXPAND_SOFT_LINK_FLAG)) {
+ if((gid = H5Gcreate2(fid_src, NAME_GROUP_LINK2, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) TEST_ERROR
+ } /* end if */
+ else
+ if((gid = H5Gopen2(fid_src, NAME_GROUP_LINK2, H5P_DEFAULT)) < 0) TEST_ERROR
+ if((did = H5Dcreate2(fid_src, NAME_LINK_EXTERN2, H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) TEST_ERROR
+ if(H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) TEST_ERROR
+ if(H5Lcreate_external("no_file", "no_object", fid_src, NAME_LINK_EXTERN_DANGLE2, H5P_DEFAULT, H5P_DEFAULT) < 0) TEST_ERROR
+ if(H5Dclose(did) < 0) TEST_ERROR
+ if(H5Gclose(gid) < 0) TEST_ERROR
+
+ /* Close dataspace */
+ if(H5Sclose(sid) < 0) TEST_ERROR
+ } /* end if */
+
if((flag & H5O_COPY_EXPAND_REFERENCE_FLAG) > 0) {
if((gid_ref = H5Gcreate2(fid_src, NAME_GROUP_REF, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) TEST_ERROR
@@ -7830,12 +7997,14 @@ test_copy_option(hid_t fcpl_src, hid_t fcpl_dst, hid_t fapl, unsigned flag, hboo
/* open the destination group */
if((gid2 = H5Gopen2(fid_dst, "/new_g0/new_g00", H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
- } else if((flag & H5O_COPY_EXPAND_SOFT_LINK_FLAG) > 0) {
+ } else if(((flag & H5O_COPY_EXPAND_SOFT_LINK_FLAG) > 0)
+ || ((flag & H5O_COPY_EXPAND_EXT_LINK_FLAG) > 0)) {
if(H5Ocopy(fid_src, NAME_GROUP_LINK, fid_dst, NAME_GROUP_LINK, pid, H5P_DEFAULT) < 0) TEST_ERROR
- /* Unlink dataset to copy from original location */
- /* (So group comparison works properly) */
- if(H5Ldelete(fid_src, NAME_DATASET_SUB_SUB, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
+ if((flag & H5O_COPY_EXPAND_SOFT_LINK_FLAG) > 0)
+ /* Unlink dataset to copy from original location */
+ /* (So group comparison works properly) */
+ if(H5Ldelete(fid_src, NAME_DATASET_SUB_SUB, H5P_DEFAULT) < 0) FAIL_STACK_ERROR
/* open the group for copy */
if((gid = H5Gopen2(fid_src, NAME_GROUP_LINK2, H5P_DEFAULT)) < 0) FAIL_STACK_ERROR
@@ -7904,6 +8073,7 @@ error:
H5Gclose(gid);
H5Fclose(fid_dst);
H5Fclose(fid_src);
+ H5Fclose(fid_ext);
} H5E_END_TRY;
return 1;
} /* end test_copy_option */
@@ -8043,6 +8213,11 @@ main(void)
"H5Ocopy(): with missing groups");
nerrors += test_copy_option(fcpl_src, fcpl_dst, my_fapl, H5O_COPY_EXPAND_SOFT_LINK_FLAG,
FALSE, "H5Ocopy(): expand soft link");
+ nerrors += test_copy_option(fcpl_src, fcpl_dst, my_fapl, H5O_COPY_EXPAND_EXT_LINK_FLAG,
+ FALSE, "H5Ocopy: expand external link");
+ nerrors += test_copy_option(fcpl_src, fcpl_dst, my_fapl,
+ H5O_COPY_EXPAND_SOFT_LINK_FLAG | H5O_COPY_EXPAND_EXT_LINK_FLAG,
+ FALSE, "H5Ocopy: expand soft and external links");
nerrors += test_copy_option(fcpl_src, fcpl_dst, my_fapl, H5O_COPY_SHALLOW_HIERARCHY_FLAG,
FALSE, "H5Ocopy(): shallow group copy");
nerrors += test_copy_option(fcpl_src, fcpl_dst, my_fapl, H5O_COPY_EXPAND_REFERENCE_FLAG,
@@ -8086,7 +8261,6 @@ main(void)
}
/* TODO: not implemented
- nerrors += test_copy_option(my_fapl, H5O_COPY_EXPAND_EXT_LINK_FLAG, FALSE, "H5Ocopy: expand external link");
nerrors += test_copy_mount(my_fapl);
*/
} /* end for */