diff --git a/.github/workflows/unit.yaml b/.github/workflows/unit.yaml new file mode 100644 index 0000000..680e8c7 --- /dev/null +++ b/.github/workflows/unit.yaml @@ -0,0 +1,28 @@ +name: Build +# To test with act: gh act --secret-file $ENV_FILE --workflows .github/workflows/unit.yml +on: + push: + branches: + - main + pull_request: + +env: + EARTHENGINE_TOKEN: ${{ secrets.EARTHENGINE_TOKEN }} + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Set up Python "3.10" + uses: actions/setup-python@v4 + with: + python-version: "3.10" + - name: Install sepal_ui + run: python -m pip install "git+https://github.com/12rambau/sepal_ui.git@sepal_pre_release" + - name: Build with sepal_ui venv + run: module_venv + - name: Install nox + run: python -m pip install nox + - name: set entry point and run tests + run: nox -s test_ui diff --git a/.gitignore b/.gitignore index a1a6131..5d7cd9b 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,8 @@ __pycache__/ *.py[cod] *$py.class - +*nox_ui.ipynb +*Untitled* # C extensions *.so diff --git a/noxfile.py b/noxfile.py new file mode 100644 index 0000000..08bf258 --- /dev/null +++ b/noxfile.py @@ -0,0 +1,77 @@ +"""All the process that can be run using nox. + +The nox run are build in isolated environment that will be stored in .nox. to force the venv update, remove the .nox/xxx folder. +""" + +from pathlib import Path +import nbformat +from nbconvert.preprocessors import ExecutePreprocessor +from jupyter_client.kernelspec import KernelSpecManager +import nox + + +@nox.session(reuse_venv=True) +def lint(session): + """Apply the pre-commits.""" + session.install("pre-commit") + session.run("pre-commit", "run", "--a", *session.posargs) + + +@nox.session(reuse_venv=True) +def app(session): + """Run the application.""" + + entry_point = str(Path("ui.ipynb")) + + # Duplicate the entry point file + session.run("cp", entry_point, "nox_ui.ipynb") + + # change the kernel name in the entry point + session.run("entry_point", "--test", "nox_ui.ipynb") + + session.run("jupyter", "trust", entry_point) + session.run( + "voila", "--show_tracebacks=True", "--template=sepal-ui-base", "nox_ui.ipynb" + ) + + +@nox.session() +def test_ui(session): + """Run the application.""" + + ksm = KernelSpecManager() + kernel_names = list(ksm.get_all_specs()) + print(kernel_names) + + # get the current path + root_folder = Path(__file__).parent + repo_name = root_folder.name + + # Copy the ui.ipynb to test_ui.ipynb + session.run("cp", root_folder / "ui.ipynb", root_folder / "nox_ui.ipynb") + + session.run("entry_point", "--test", root_folder / "nox_ui.ipynb") + + test_notebooks = [root_folder / "nox_ui.ipynb"] + + for notebook in test_notebooks: + with open(notebook) as ff: + nb_in = nbformat.read(ff, nbformat.NO_CONVERT) + + print("Running notebook", notebook) + + try: + ep = ExecutePreprocessor(timeout=600, kernel_name=f"test-{repo_name}") + + nb_out = ep.preprocess(nb_in) + except Exception as e: + print("########### Error running notebook", notebook) + raise e + + +@nox.session(reuse_venv=True) +def jupyter(session): + """Run the application.""" + session.install("-r", "requirements.txt") + session.run("jupyter", "trust", "no_ui.ipynb") + session.run("jupyter", "notebook", "no_ui.ipynb") diff --git a/requirements.txt b/requirements.txt index 7b4f960..e3d5c1e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,3 +6,6 @@ sepal_ui==2.17 # custom libs rasterio numpy + + +# trigger build diff --git a/ui.ipynb b/ui.ipynb index 583fbea..62524fd 100644 --- a/ui.ipynb +++ b/ui.ipynb @@ -148,8 +148,9 @@ } ], "metadata": { + "title": "GuidosToolbox Workbench (GWB) Analysis", "kernelspec": { - "display_name": " (venv) GWB Analysis", + "display_name": " (venv) gwb", "language": "python", "name": "venv-gwb" }, @@ -171,4 +172,4 @@ }, "nbformat": 4, "nbformat_minor": 4 -} +} \ No newline at end of file