Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
While working on debugging #123 I came across the issue that
open
seemed to be called more than once on the same file. Part of the issue seems to be thatio->open
is being called implicitly on behalf of the user inNWBFile.initialize
. This PR updates the logic to always require that the user callio-open
before making any modifications to the file, e.g, initializing theNWBFile
. This PR makes a few changes:NWBFile.initialize
to more robustly check if a file has been initialized. The current logic requires that a file must not exist on disk before callingNWBFile.initialize
, i.e., if a user callsio->open()
before callingNWBFile.initialize
, the current logic would fail.NWBFile.isInitialized
to check whether the expected file structure exists within the fileHDF5IO.create*
methods to perform the more strict check thatcanModifyObjects()
is true rather than just whether the fileisOpen()
io->open()
directly where it was missingtestWorkflowExamples.cpp
to addREQUIRE
checks . The example previously passed independent of whether the workflow was successful or not because the status of I/O operations was not being checked. Since the AqNWB functions did not raise exceptions (but simply returned aStatus::Failure
) the workflow would run to completion even if the file was not being created at all.