Skip to content
Merged
55 changes: 55 additions & 0 deletions .github/test_on_push.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
name: pybamm_cookiecutter

on:
workflow_dispatch:
pull_request:
push:
branches:
- main
jobs:
style:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: 3.12

- name: Check style
run: |
python -m pip install pre-commit
pre-commit run -a
template_test:
needs: style
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-12, macos-14, windows-latest]
python-version: ["3.9", "3.10", "3.11", "3.12"]
name:
Template Tests (${{ matrix.os }} / Python ${{ matrix.python-version }})
steps:
- name: Checkout pybamm_cookiecutter
uses: actions/checkout@v4

- name: Set up Python ${{ matrix.python-version }}
id: setup-python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'

- name: Set up uv
uses: yezz123/setup-uv@v4
with:
uv-venv: ".venv"

- name: Install nox
run: uv pip install nox

- name: Test Template Generation
run: |
nox -s test-generation
8 changes: 8 additions & 0 deletions noxfile.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import nox

# Options to modify nox behaviour
nox.options.default_venv_backend = "uv|virtualenv"
nox.options.reuse_existing_virtualenvs = True

@nox.session(name="docs")
Expand All @@ -18,3 +19,10 @@ def build_docs(session: nox.Session) -> None:
".",
f"{envbindir}/../tmp/html",
)

@nox.session(name="test-generation")
def run_template_generation(session):
"""Run the tests tests for testing template generation"""
session.install("setuptools", silent=False)
session.install("-e", ".[dev]", silent=False)
session.run("pytest", "tests")
3 changes: 2 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,15 @@ classifiers = [
"Typing :: Typed",
]
dynamic = ["version"]
dependencies = ["pybamm"]
dependencies = ["pybamm", "cookiecutter"]

[project.optional-dependencies]
dev = [
"pytest >=6",
"pytest-cov >=3",
"nox",
"pre-commit",
"pytest-cookies",
]
docs = [
"sphinx",
Expand Down
6 changes: 5 additions & 1 deletion src/pybamm_cookiecutter/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@
"""
from __future__ import annotations

import pybamm

from ._version import version as __version__

__all__ : tuple[str] = ("__version__",)
__all__ : list[str] = [
"__version__",
]
5 changes: 0 additions & 5 deletions tests/test_package.py

This file was deleted.

30 changes: 30 additions & 0 deletions tests/test_project_generation.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import pybamm_cookiecutter as m
import pytest
from pytest_cookies.plugin import Cookies

def test_version() -> None:
assert m.__version__

@pytest.fixture
def custom_template(tmpdir):
"""
Generating a project using the template into a tempdir
"""
template = tmpdir.ensure("cookiecutter-template", dir=True)
template.join("cookiecutter.json").write('{"project_name": "pybamm_cookie"}')

repo_dir = template.ensure("{{cookiecutter.project_name}}", dir=True)
repo_dir.join("README.rst").write("{{cookiecutter.project_name}}")

return template


def test_bake_custom_project(cookies: Cookies, custom_template):
"""
Testing if the projects exists in the tempdir
"""
result = cookies.bake(template=str(custom_template))
assert result.exit_code == 0, f"Exited with code {result.exit_code}, expected 0"
assert result.exception is None, result.exception
assert result.project_path.name == "pybamm_cookie"
assert result.project_path.is_dir(), f"Project directory {result.project_path} not found"