Skip to content

Commit

Permalink
feat: rebuild environment. Add ui tests and workflows
Browse files Browse the repository at this point in the history
  • Loading branch information
dfguerrerom committed Jun 25, 2024
1 parent a805497 commit b8867b8
Show file tree
Hide file tree
Showing 5 changed files with 113 additions and 3 deletions.
28 changes: 28 additions & 0 deletions .github/workflows/unit.yaml
Original file line number Diff line number Diff line change
@@ -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
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
__pycache__/
*.py[cod]
*$py.class

*nox_ui.ipynb
*Untitled*
# C extensions
*.so

Expand Down
77 changes: 77 additions & 0 deletions noxfile.py
Original file line number Diff line number Diff line change
@@ -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")
3 changes: 3 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,6 @@ sepal_ui==2.17
# custom libs
rasterio
numpy


# trigger build
5 changes: 3 additions & 2 deletions ui.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -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"
},
Expand All @@ -171,4 +172,4 @@
},
"nbformat": 4,
"nbformat_minor": 4
}
}

0 comments on commit b8867b8

Please sign in to comment.