summaryrefslogtreecommitdiffstats
path: root/test/tfile.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/tfile.c')
-rw-r--r--test/tfile.c80
1 files changed, 50 insertions, 30 deletions
diff --git a/test/tfile.c b/test/tfile.c
index 6b2f832..796a99b 100644
--- a/test/tfile.c
+++ b/test/tfile.c
@@ -6,7 +6,7 @@
* This file is part of HDF5. The full HDF5 copyright notice, including *
* terms governing use, modification, and redistribution, is contained in *
* the COPYING file, which can be found at the root of the source code *
- * distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases. *
+ * distribution tree, or in https://www.hdfgroup.org/licenses. *
* If you do not have access to either file, you may request a copy from *
* help@hdfgroup.org. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
@@ -1666,6 +1666,29 @@ test_file_is_accessible(const char *env_h5_drvr)
is_hdf5 = H5Fis_accessible(filename, fapl_id);
VERIFY(is_hdf5, TRUE, "H5Fis_accessible");
+ /*****************************************/
+ /* Newly created file that is still open */
+ /*****************************************/
+
+ /* On Windows, file locking is mandatory so this check ensures that
+ * H5Fis_accessible() works on files that have an exclusive lock.
+ * Previous versions of this API call created an additional file handle
+ * and attempted to read through it, which will not work when locks
+ * are enforced by the OS.
+ */
+
+ /* Create a file and hold it open */
+ fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl_id);
+ CHECK(fid, H5I_INVALID_HID, "H5Fcreate");
+
+ /* Verify that the file is an HDF5 file */
+ is_hdf5 = H5Fis_accessible(filename, fapl_id);
+ VERIFY(is_hdf5, TRUE, "H5Fis_accessible");
+
+ /* Close file */
+ ret = H5Fclose(fid);
+ CHECK(ret, FAIL, "H5Fclose");
+
/*******************************/
/* Non-default user block size */
/*******************************/
@@ -3134,7 +3157,6 @@ test_rw_noupdate(void)
** test_userblock_alignment() test, to handle common testing
**
** Programmer: Quincey Koziol
-** koziol@hdfgroup.org
** Septmber 10, 2009
**
*****************************************************************/
@@ -3196,7 +3218,6 @@ test_userblock_alignment_helper1(hid_t fcpl, hid_t fapl)
** test_userblock_alignment() test, to handle common testing
**
** Programmer: Quincey Koziol
-** koziol@hdfgroup.org
** Septmber 10, 2009
**
*****************************************************************/
@@ -3266,7 +3287,6 @@ test_userblock_alignment_helper2(hid_t fapl, hbool_t open_rw)
** object [allocation] alignment size set interact properly.
**
** Programmer: Quincey Koziol
-** koziol@hdfgroup.org
** Septmber 8, 2009
**
*****************************************************************/
@@ -3930,7 +3950,7 @@ test_filespace_info(const char *env_h5_drvr)
MESSAGE(5, ("Testing file creation public routines: H5Pget/set_file_space_strategy & "
"H5Pget/set_file_space_page_size\n"));
- contig_addr_vfd = (hbool_t)(HDstrcmp(env_h5_drvr, "split") && HDstrcmp(env_h5_drvr, "multi"));
+ contig_addr_vfd = (hbool_t)(HDstrcmp(env_h5_drvr, "split") != 0 && HDstrcmp(env_h5_drvr, "multi") != 0);
fapl = h5_fileaccess();
h5_fixname(FILESPACE_NAME[0], fapl, filename, sizeof filename);
@@ -4300,7 +4320,7 @@ set_multi_split(hid_t fapl, hsize_t pagesize, hbool_t split)
/* Free memb_name */
for (mt = H5FD_MEM_DEFAULT; mt < H5FD_MEM_NTYPES; mt++)
- free(memb_name[mt]);
+ HDfree(memb_name[mt]);
return 0;
@@ -5799,7 +5819,7 @@ test_libver_bounds_super_create(hid_t fapl, hid_t fcpl, htri_t is_swmr, htri_t n
/* Get the internal file pointer if the create succeeds */
if (fid >= 0) {
f = (H5F_t *)H5VL_object(fid);
- CHECK(f, NULL, "H5VL_object");
+ CHECK_PTR(f, "H5VL_object");
}
/* Retrieve the low/high bounds */
@@ -5974,7 +5994,7 @@ test_libver_bounds_super_open(hid_t fapl, hid_t fcpl, htri_t is_swmr, htri_t non
/* Get the internal file pointer */
f = (H5F_t *)H5VL_object(fid);
- CHECK(f, NULL, "H5VL_object");
+ CHECK_PTR(f, "H5VL_object");
/* The file's superblock version */
super_vers = f->shared->sblock->super_vers;
@@ -6015,7 +6035,7 @@ test_libver_bounds_super_open(hid_t fapl, hid_t fcpl, htri_t is_swmr, htri_t non
/* Get the internal file pointer if the open succeeds */
if (fid >= 0) {
f = (H5F_t *)H5VL_object(fid);
- CHECK(f, NULL, "H5VL_object");
+ CHECK_PTR(f, "H5VL_object");
}
/* Verify the file open succeeds or fails */
@@ -6193,7 +6213,7 @@ test_libver_bounds_obj(hid_t fapl)
/* Get the internal file pointer */
f = (H5F_t *)H5VL_object(fid);
- CHECK(f, NULL, "H5VL_object");
+ CHECK_PTR(f, "H5VL_object");
/* Create a group in the file */
gid = H5Gcreate2(fid, GRP_NAME, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
@@ -6301,7 +6321,7 @@ test_libver_bounds_dataset(hid_t fapl)
/* Get the internal dataset pointer */
dset = (H5D_t *)H5VL_object(did);
- CHECK(dset, NULL, "H5VL_object");
+ CHECK_PTR(dset, "H5VL_object");
/* Verify version for layout and fill value messages */
if (low == H5F_LIBVER_EARLIEST) {
@@ -6349,7 +6369,7 @@ test_libver_bounds_dataset(hid_t fapl)
/* Get the internal dataset pointer */
dset = (H5D_t *)H5VL_object(did);
- CHECK(dset, NULL, "H5VL_object");
+ CHECK_PTR(dset, "H5VL_object");
/* Verify layout message version and chunk indexing type */
VERIFY(dset->shared->layout.version, H5O_LAYOUT_VERSION_4, "H5O_layout_ver_bounds");
@@ -6411,7 +6431,7 @@ test_libver_bounds_dataset(hid_t fapl)
/* Get the internal file pointer */
f = (H5F_t *)H5VL_object(fid);
- CHECK(f, NULL, "H5VL_object");
+ CHECK_PTR(f, "H5VL_object");
/* Create the chunked dataset */
did = H5Dcreate2(fid, DSETC, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT);
@@ -6419,7 +6439,7 @@ test_libver_bounds_dataset(hid_t fapl)
/* Get the internal file pointer */
dset = (H5D_t *)H5VL_object(did);
- CHECK(dset, NULL, "H5VL_object");
+ CHECK_PTR(dset, "H5VL_object");
/* Verify the dataset's layout, fill value and filter pipeline message versions */
/* Also verify the chunk indexing type */
@@ -6540,7 +6560,7 @@ test_libver_bounds_dataspace(hid_t fapl)
sid = H5Dget_space(did);
CHECK(sid, H5I_INVALID_HID, "H5Dget_space");
space = (H5S_t *)H5I_object(sid);
- CHECK(space, NULL, "H5I_object");
+ CHECK_PTR(space, "H5I_object");
/* Verify the dataspace version */
VERIFY(space->extent.version, H5O_sdspace_ver_bounds[low], "H5O_sdspace_ver_bounds");
@@ -6557,7 +6577,7 @@ test_libver_bounds_dataspace(hid_t fapl)
sid_null = H5Dget_space(did_null);
CHECK(sid_null, H5I_INVALID_HID, "H5Dget_space");
space_null = (H5S_t *)H5I_object(sid_null);
- CHECK(space_null, NULL, "H5I_object");
+ CHECK_PTR(space_null, "H5I_object");
/* Verify the dataspace version */
VERIFY(space_null->extent.version, H5O_SDSPACE_VERSION_2, "H5O_sdspace_ver_bounds");
@@ -6635,7 +6655,7 @@ test_libver_bounds_dataspace(hid_t fapl)
/* Get the internal file pointer */
f = (H5F_t *)H5VL_object(fid);
- CHECK(f, NULL, "H5VL_object");
+ CHECK_PTR(f, "H5VL_object");
/* Create the chunked dataset */
did = H5Dcreate2(fid, DSETA, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT);
@@ -6645,7 +6665,7 @@ test_libver_bounds_dataspace(hid_t fapl)
tmp_sid = H5Dget_space(did);
CHECK(tmp_sid, H5I_INVALID_HID, "H5Dget_space");
tmp_space = (H5S_t *)H5I_object(tmp_sid);
- CHECK(tmp_space, NULL, "H5I_object");
+ CHECK_PTR(tmp_space, "H5I_object");
/* Create the compact dataset */
did_compact = H5Dcreate2(fid, DSETB, H5T_NATIVE_INT, sid_compact, H5P_DEFAULT, dcpl_compact,
@@ -6656,7 +6676,7 @@ test_libver_bounds_dataspace(hid_t fapl)
tmp_sid_compact = H5Dget_space(did_compact);
CHECK(tmp_sid_compact, H5I_INVALID_HID, "H5Dget_space");
tmp_space_compact = (H5S_t *)H5I_object(tmp_sid_compact);
- CHECK(tmp_space_compact, NULL, "H5I_object");
+ CHECK_PTR(tmp_space_compact, "H5I_object");
/* Create the contiguous dataset */
did_contig =
@@ -6667,7 +6687,7 @@ test_libver_bounds_dataspace(hid_t fapl)
tmp_sid_contig = H5Dget_space(did_contig);
CHECK(tmp_sid_contig, H5I_INVALID_HID, "H5Dget_space");
tmp_space_contig = (H5S_t *)H5I_object(tmp_sid_contig);
- CHECK(tmp_space_contig, NULL, "H5I_object");
+ CHECK_PTR(tmp_space_contig, "H5I_object");
/* Verify versions for the three dataspaces */
VERIFY(tmp_space->extent.version, H5O_sdspace_ver_bounds[f->shared->low_bound],
@@ -6891,7 +6911,7 @@ test_libver_bounds_datatype_check(hid_t fapl, hid_t tid)
/* Get the internal datatype pointer */
dtype = (H5T_t *)H5I_object(dtid);
- CHECK(dtype, NULL, "H5I_object");
+ CHECK_PTR(dtype, "H5I_object");
/* Verify the datatype message version */
/* H5T_COMPOUND, H5T_ENUM, H5T_ARRAY:
@@ -6965,13 +6985,13 @@ test_libver_bounds_datatype_check(hid_t fapl, hid_t tid)
/* Get the internal file pointer */
f = (H5F_t *)H5VL_object(fid);
- CHECK(f, NULL, "H5VL_object");
+ CHECK_PTR(f, "H5VL_object");
/* Open the committed datatype */
str_tid = H5Topen2(fid, "datatype", H5P_DEFAULT);
CHECK(str_tid, FAIL, "H5Topen2");
str_dtype = (H5T_t *)H5VL_object(str_tid);
- CHECK(str_dtype, NULL, "H5VL_object");
+ CHECK_PTR(str_dtype, "H5VL_object");
/* Verify the committed datatype message version */
VERIFY(str_dtype->shared->version, H5O_dtype_ver_bounds[H5F_LIBVER_EARLIEST],
@@ -6991,7 +7011,7 @@ test_libver_bounds_datatype_check(hid_t fapl, hid_t tid)
/* Get the internal datatype pointer */
dtype = (H5T_t *)H5I_object(dtid);
- CHECK(dtype, NULL, "H5I_object");
+ CHECK_PTR(dtype, "H5I_object");
/* Verify the dataset's datatype message version */
/* H5T_COMPOUND, H5T_ENUM, H5T_ARRAY:
@@ -7124,7 +7144,7 @@ test_libver_bounds_attributes(hid_t fapl)
/* Get the internal attribute pointer */
attr = (H5A_t *)H5VL_object(aid);
- CHECK(attr, NULL, "H5VL_object");
+ CHECK_PTR(attr, "H5VL_object");
/* Verify the attribute version */
if (low == H5F_LIBVER_EARLIEST)
@@ -7143,7 +7163,7 @@ test_libver_bounds_attributes(hid_t fapl)
/* Get the internal attribute pointer */
attr = (H5A_t *)H5VL_object(aid);
- CHECK(attr, NULL, "H5VL_object");
+ CHECK_PTR(attr, "H5VL_object");
/* Verify attribute version */
VERIFY(attr->shared->version, H5O_attr_ver_bounds[low], "H5O_attr_ver_bounds");
@@ -7164,7 +7184,7 @@ test_libver_bounds_attributes(hid_t fapl)
/* Get internal attribute pointer */
attr = (H5A_t *)H5VL_object(aid);
- CHECK(attr, NULL, "H5VL_object");
+ CHECK_PTR(attr, "H5VL_object");
/* Verify attribute version */
if (low == H5F_LIBVER_EARLIEST)
@@ -7229,7 +7249,7 @@ test_libver_bounds_attributes(hid_t fapl)
/* Get the internal attribute pointer */
attr = (H5A_t *)H5VL_object(aid);
- CHECK(attr, NULL, "H5VL_object");
+ CHECK_PTR(attr, "H5VL_object");
/* Verify the attribute version */
if (low == H5F_LIBVER_EARLIEST)
@@ -7291,7 +7311,7 @@ test_libver_bounds_attributes(hid_t fapl)
/* Get the internal file pointer */
f = (H5F_t *)H5VL_object(fid);
- CHECK(f, NULL, "H5VL_object");
+ CHECK_PTR(f, "H5VL_object");
/* Open the group */
gid = H5Gopen2(fid, GRP_NAME, H5P_DEFAULT);
@@ -7303,7 +7323,7 @@ test_libver_bounds_attributes(hid_t fapl)
/* Get the internal attribute pointer */
attr = (H5A_t *)H5VL_object(aid);
- CHECK(attr, NULL, "H5VL_object");
+ CHECK_PTR(attr, "H5VL_object");
/* Verify the attribute message version */
VERIFY(attr->shared->version, H5O_attr_ver_bounds[f->shared->low_bound],