Skip to content
Snippets Groups Projects
test_notebooks.py 1.85 KiB
Newer Older
Mads M. Pedersen's avatar
Mads M. Pedersen committed
import os
Mads M. Pedersen's avatar
Mads M. Pedersen committed
import pytest
Mads M. Pedersen's avatar
Mads M. Pedersen committed
import py_wake
from py_wake.flow_map import Grid
Mads M. Pedersen's avatar
Mads M. Pedersen committed
import xarray
Mads M. Pedersen's avatar
Mads M. Pedersen committed
def get_notebooks():
    def get(path):
        return [Notebook(path + f) for f in [f for f in os.listdir(path) if f.endswith('.ipynb')]]
    path = os.path.dirname(py_wake.__file__) + "/../docs/notebooks/"
    return get(path) + get(path + "exercises/")
Mads M. Pedersen's avatar
Mads M. Pedersen committed


Mads M. Pedersen's avatar
Mads M. Pedersen committed
notebooks = get_notebooks()


@pytest.mark.parametrize("notebook", notebooks, ids=[os.path.basename(nb.filename) for nb in notebooks])
Mads M. Pedersen's avatar
Mads M. Pedersen committed
def test_notebooks(notebook):
    import matplotlib.pyplot as plt
    if (str(Path(notebook.filename).relative_to(os.path.dirname(py_wake.__file__) + "/../docs/notebooks/")) in
Mads M. Pedersen's avatar
Mads M. Pedersen committed
            ['Optimization.ipynb']):

    def no_show(*args, **kwargs):
        pass
    plt.show = no_show  # disable plt show that requires the user to close the plot

Mads M. Pedersen's avatar
Mads M. Pedersen committed
        # print(notebook.filename)
        default_resolution = Grid.default_resolution
        Grid.default_resolution = 100
Mads M. Pedersen's avatar
Mads M. Pedersen committed
        plt.rcParams.update({'figure.max_open_warning': 0})
        # with warnings.catch_warnings:
        #    warnings.simplefilter('error')
Mads M. Pedersen's avatar
Mads M. Pedersen committed
        notebook.remove_empty_end_cell()
        notebook.check_pip_header()
        pass
    except Exception as e:
        raise Exception(notebook.filename + " failed") from e
Mads M. Pedersen's avatar
Mads M. Pedersen committed
    finally:
        Grid.default_resolution = default_resolution
        plt.close('all')
Mads M. Pedersen's avatar
Mads M. Pedersen committed
        plt.rcParams.update({'figure.max_open_warning': 20})
Mads M. Pedersen's avatar
Mads M. Pedersen committed
        xarray.set_options(display_expand_data=True)
Mads M. Pedersen's avatar
Mads M. Pedersen committed


if __name__ == '__main__':
Mads M. Pedersen's avatar
Mads M. Pedersen committed
    # print("\n".join([f.filename for f in get_notebooks()]))
    path = os.path.dirname(py_wake.__file__) + "/../docs/notebooks/"
    f = 'RunWindFarmSimulation.ipynb'
    test_notebooks(Notebook(path + f))