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 588fc96 commit 1c004b6
Show file tree
Hide file tree
Showing 5 changed files with 123 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 @@ -6,7 +6,8 @@ __pycache__/
*Untitled*
# C extensions
*.so

*nox_ui.ipynb
*Untitled*
# Distribution / packaging
.Python
build/
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")
5 changes: 4 additions & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,7 @@ shapely

# by setting numpy as requirement, it will be installed before gdal, avoiding
# the gdal_array import error. check #42 and https://github.com/OSGeo/gdal/pull/2281
GDAL[numpy]==3.8.3
GDAL[numpy]==3.8.3


# trigger build
13 changes: 12 additions & 1 deletion ui.ipynb
Original file line number Diff line number Diff line change
@@ -1,5 +1,15 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from sepal_ui.scripts.utils import init_ee\n",
"init_ee()"
]
},
{
"cell_type": "code",
"execution_count": null,
Expand Down Expand Up @@ -96,7 +106,8 @@
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.12"
}
},
"title": "SMFM Biota module"
},
"nbformat": 4,
"nbformat_minor": 4
Expand Down

0 comments on commit 1c004b6

Please sign in to comment.