Skip to content

Commit

Permalink
add noxfile automation and testing
Browse files Browse the repository at this point in the history
  • Loading branch information
mcflugen committed Dec 1, 2023
1 parent 0845269 commit f5c8ada
Show file tree
Hide file tree
Showing 3 changed files with 98 additions and 1 deletion.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.nox/
.tox/
.coverage
.cache
Expand Down
2 changes: 1 addition & 1 deletion gflex/__main__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from gflex.gflex import main

if __name__ == '__main__':
if __name__ == "__main__":
raise SystemExit(main())
96 changes: 96 additions & 0 deletions noxfile.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
import pathlib
import shutil

import nox

PYTHON_VERSION = "3.12"
ROOT = pathlib.Path(__file__).parent


@nox.session(python=PYTHON_VERSION, venv_backend="conda")
def test(session: nox.Session) -> None:
"""Run the tests."""
session.install("-e", ".[testing]")
session.run("pytest", "-vvv")


@nox.session(name="test-cli", python=PYTHON_VERSION, venv_backend="conda")
def test_cli(session: nox.Session) -> None:
"""Test the command line interface."""
session.install(".")
session.run("gflex", "--help")
session.run("gflex", "--version")


@nox.session
def lint(session: nox.Session) -> None:
"""Look for lint."""
session.install("pre-commit")
session.run("pre-commit", "run", "--all-files")


@nox.session
def build(session: nox.Session) -> None:
"""Build sdist and wheel dists."""
session.install("pip")
session.install("build")
session.run("python", "--version")
session.run("pip", "--version")
session.run("python", "-m", "build", "--outdir", "./build/wheelhouse")


@nox.session(name="publish-testpypi")
def publish_testpypi(session):
"""Publish wheelhouse/* to TestPyPI."""
session.run("twine", "check", "build/wheelhouse/*")
session.run(
"twine",
"upload",
"--skip-existing",
"--repository-url",
"https://test.pypi.org/legacy/",
"build/wheelhouse/*.tar.gz",
)


@nox.session(name="publish-pypi")
def publish_pypi(session):
"""Publish wheelhouse/* to PyPI."""
session.run("twine", "check", "build/wheelhouse/*")
session.run(
"twine",
"upload",
"--skip-existing",
"build/wheelhouse/*.tar.gz",
)


@nox.session(python=False)
def clean(session):
"""Remove all .venv's, build files and caches in the directory."""
for folder in _args_to_folders(session.posargs):
with session.chdir(folder):
shutil.rmtree("build", ignore_errors=True)
shutil.rmtree("build/wheelhouse", ignore_errors=True)
shutil.rmtree("gflex.egg-info", ignore_errors=True)
shutil.rmtree(".pytest_cache", ignore_errors=True)
shutil.rmtree(".venv", ignore_errors=True)

for pattern in ["*.py[co]", "__pycache__"]:
_clean_rglob(pattern)


def _args_to_folders(args):
return [ROOT] if not args else [pathlib.Path(f) for f in args]


def _clean_rglob(pattern):
nox_dir = pathlib.Path(".nox")

for p in pathlib.Path(".").rglob(pattern):
if nox_dir in p.parents:
continue
if p.is_dir():
p.rmdir()
else:
p.unlink()

0 comments on commit f5c8ada

Please sign in to comment.