Skip to content

Commit

Permalink
Regression testing is expanded (#54)
Browse files Browse the repository at this point in the history
* Added a github action to build and install.

* Test on more python versions.

* Test the devel branch

* Added a missing requirement to fix tests

* Test on Windows and MacOS too
  • Loading branch information
openvmp authored Jan 13, 2024
1 parent 7f7b5f3 commit ed8fbf9
Show file tree
Hide file tree
Showing 4 changed files with 74 additions and 13 deletions.
57 changes: 57 additions & 0 deletions .github/workflows/python-build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: Python modules

on:
push:
branches: ["main", "devel"]
pull_request:
branches: ["main", "devel"]

permissions:
contents: read

jobs:
build:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
python-version: ["3.9", "3.10", "3.11"]
runs-on: ${{ matrix.os }}

steps:
- uses: actions/checkout@v3
- name: Set up Python 3.10
uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python-version }}
- uses: actions/cache@v3
id: cache
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.*') }}
restore-keys: |
${{ runner.os }}-pip-
# - name: Install dependencies
# run: |
# python -m pip install --upgrade pip build
# # python -m pip install -r partcad/requirements.txt
# # python -m pip install -r partcad-cli/requirements.txt
- name: Prepare environments
run: |
python -m pip install --upgrade pip build
mkdir .venv
python -m venv .venv/build
(. .venv/build/bin/activate && python -m pip install --upgrade pip build; deactivate)
python -m venv .venv/build-cli
(. .venv/build-cli/bin/activate && python -m pip install --upgrade pip build; deactivate)
python -m venv .venv/install
(. .venv/install/bin/activate && python -m pip install --upgrade pip build; deactivate)
- name: Test building and packaging
run: |
(. .venv/build/bin/activate && cd partcad && python -m build; deactivate)
(. .venv/build-cli/bin/activate && python -m pip install partcad/dist/partcad-[0-9].[0-9]*.[0-9]*-py3-none-any.whl; deactivate)
(. .venv/build-cli/bin/activate && cd partcad-cli && python -m build; deactivate)
- name: Test installation
run: |
(. .venv/install/bin/activate && python -m pip install partcad/dist/partcad-[0-9].[0-9]*.[0-9]*-py3-none-any.whl; deactivate)
(. .venv/install/bin/activate && python -m pip install partcad-cli/dist/partcad_cli-[0-9].[0-9]*.[0-9]*-py3-none-any.whl; deactivate)
Original file line number Diff line number Diff line change
@@ -1,27 +1,29 @@
# This workflow will install Python dependencies, run tests and lint with a single version of Python
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python

name: Python application
name: Python modules

on:
push:
branches: ["main"]
branches: ["main", "devel"]
pull_request:
branches: ["main"]
branches: ["main", "devel"]

permissions:
contents: read

jobs:
test:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
python-version: ["3.9", "3.10", "3.11"]
runs-on: ${{ matrix.os }}

steps:
- uses: actions/checkout@v3
- name: Set up Python 3.10
uses: actions/setup-python@v3
with:
python-version: "3.10"
python-version: ${{ matrix.python-version }}
- uses: actions/cache@v3
id: cache
with:
Expand All @@ -33,9 +35,10 @@ jobs:
run: |
python -m pip install --upgrade pip
pip install pytest
pip install ./partcad
pip install ./partcad-cli
#if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
pip install -r partcad/requirements.txt
# pip install -r partcad-cli/requirements.txt
- name: Test with pytest
env:
PYTHONPATH: partcad/src
run: |
pytest
1 change: 1 addition & 0 deletions partcad/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,4 @@ ruamel.yaml>=0.18.5
packaging>=23.1
setuptools
jinja2
requests
4 changes: 2 additions & 2 deletions partcad/src/partcad/project_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@
import json
import logging
import os
import pkg_resources
from packaging.specifiers import SpecifierSet
import sys
import yaml

DEFAULT_CONFIG_FILENAME = "partcad.yaml"
Expand Down Expand Up @@ -60,7 +60,7 @@ def __init__(self, import_config_name, config_path=DEFAULT_CONFIG_FILENAME):
# default: None
if "partcad" in self.config_obj:
partcad_requirements = SpecifierSet(self.config_obj["partcad"])
partcad_version = pkg_resources.get_distribution("partcad").version
partcad_version = sys.modules["partcad"].__version__
if partcad_version not in partcad_requirements:
# TODO(clairbee): add better error and exception handling
raise Exception(
Expand Down

0 comments on commit ed8fbf9

Please sign in to comment.