diff --git a/meshmode/__init__.py b/meshmode/__init__.py index 1c38d87894841834007489ac2a4eea5175ba1428..9512b4a25aec6e3450e0a0bd2fc7ecc72452ca41 100644 --- a/meshmode/__init__.py +++ b/meshmode/__init__.py @@ -26,8 +26,11 @@ THE SOFTWARE. __doc__ = """ .. exception:: Error .. exception:: DataUnavailable +.. exception:: FileExistsError """ +import six + class Error(RuntimeError): pass @@ -35,3 +38,10 @@ class Error(RuntimeError): class DataUnavailable(Error): pass + + +if six.PY3: + from builtins import FileExistsError +else: + class FileExistsError(OSError): + pass diff --git a/meshmode/discretization/visualization.py b/meshmode/discretization/visualization.py index 72abb0475facfa548f901cd0e77d607ddfa0a03d..2352081e6555fc9dd2b63b69c81d870c7f9e103d 100644 --- a/meshmode/discretization/visualization.py +++ b/meshmode/discretization/visualization.py @@ -336,11 +336,12 @@ class Visualizer(object): vector_format=VF_LIST_OF_COMPONENTS)) import os + from meshmode import FileExistsError if os.path.exists(file_name): if overwrite: os.remove(file_name) else: - raise RuntimeError("output file '%s' already exists" % file_name) + raise FileExistsError("output file '%s' already exists" % file_name) with open(file_name, "w") as outf: AppendedDataXMLGenerator(compressor)(grid).write(outf) @@ -437,11 +438,12 @@ def write_nodal_adjacency_vtk_file(file_name, mesh, dtype=np.uint8)) import os + from meshmode import FileExistsError if os.path.exists(file_name): if overwrite: os.remove(file_name) else: - raise RuntimeError("output file '%s' already exists" % file_name) + raise FileExistsError("output file '%s' already exists" % file_name) with open(file_name, "w") as outf: AppendedDataXMLGenerator(compressor)(grid).write(outf) diff --git a/meshmode/mesh/visualization.py b/meshmode/mesh/visualization.py index d9191c577e7448a192b0713fe440e6462a575015..53da2663ca76b5499456279a4cabb45cc963141c 100644 --- a/meshmode/mesh/visualization.py +++ b/meshmode/mesh/visualization.py @@ -226,11 +226,12 @@ def write_vertex_vtk_file(mesh, file_name, cell_types=cell_types) import os + from meshmode import FileExistsError if os.path.exists(file_name): if overwrite: os.remove(file_name) else: - raise RuntimeError("output file '%s' already exists" % file_name) + raise FileExistsError("output file '%s' already exists" % file_name) with open(file_name, "w") as outf: AppendedDataXMLGenerator(compressor)(grid).write(outf) diff --git a/test/test_meshmode.py b/test/test_meshmode.py index 05bbe5ad1f6bf0fa80e12ebbca4ba457ad39c044..e97d8efa036f378272b7f94588f1e867265d9a35 100644 --- a/test/test_meshmode.py +++ b/test/test_meshmode.py @@ -1045,28 +1045,19 @@ def test_vtk_overwrite(ctx_getter): def _try_write_vtk(writer, obj): import os + from meshmode import FileExistsError + filename = "test_vtk_overwrite.vtu" if os.path.exists(filename): os.remove(filename) writer(filename, []) - try: + with pytest.raises(FileExistsError): writer(filename, []) - runtime_error = False - except RuntimeError: - print("file cannot be overwritten") - runtime_error = True - assert runtime_error - - try: - writer(filename, [], overwrite=True) - print("file overwritten") - runtime_error = False - except RuntimeError: - runtime_error = True - assert not runtime_error - - os.remove(filename) + + writer(filename, [], overwrite=True) + if os.path.exists(filename): + os.remove(filename) ctx = ctx_getter() queue = cl.CommandQueue(ctx)