Skip to content

Commit

Permalink
Make actions use docker compose file
Browse files Browse the repository at this point in the history
  • Loading branch information
LukeShirnia committed Apr 26, 2024
1 parent ef209c0 commit f4d4fde
Show file tree
Hide file tree
Showing 5 changed files with 73 additions and 38 deletions.
16 changes: 16 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,14 @@ on:
- main
- v2

env:
REPOSITORY: lukeshirnia/out-of-memory

jobs:
detect-file-changes:
runs-on: ubuntu-latest
outputs:
docker_changes: ${{ steps.changes.outputs.docker_changes }}
oom_investigate: ${{ steps.changes.outputs.oom_investigate }}

steps:
Expand All @@ -19,10 +23,20 @@ jobs:
id: changes
with:
filters: |
docker_changes:
- "Dockerfile"
- "docker-compose.yml"
oom_investigate:
- ".github/workflows/*.yml"
- "tests/**/*"
- "oom_investigate.py"
build-pytest-images:
needs:
- detect-file-changes
uses: ./.github/workflows/build-pytest-images.yml
if: needs.detect-file-changes.outputs.docker_changes == 'true'

black:
needs:
- detect-file-changes
Expand All @@ -38,5 +52,7 @@ jobs:
pytest:
needs:
- detect-file-changes
- build-pytest-images
uses: ./.github/workflows/pytest.yml
if: needs.detect-file-changes.outputs.oom_investigate == 'true'
secrets: inherit
63 changes: 29 additions & 34 deletions .github/workflows/pytest.yml
Original file line number Diff line number Diff line change
@@ -1,51 +1,46 @@
name: Run Unit Tests on Multiple Python Versions

name: Run Unit Tests on Multiple Python Versions and Distributions

on:
workflow_call:

jobs:
pytest_legacy_python:
name: python:${{ matrix.python-version }}
runs-on: ubuntu-20.04
container:
image: python:${{ matrix.python-version }}-buster
test-python-versions:
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
python-version: ["2.7", "3.6"]
python-version: ["python27", "python36", "python310"]
steps:
- name: Checkout Code
uses: actions/checkout@v4

- name: Display Python version
run: python -c "import sys; print(sys.version)"
- name: Checkout code
uses: actions/checkout@v3

- name: Test with pytest
- name: Run pytest
run: |
pip install pytest pytest-cov
pytest tests/
docker run --rm \
-v ${{ github.workspace }}:/app \
${{ env.REPOSITORY }}:${{ matrix.python-version }}-pytest \
pytest -v --ignore=tests/test_system.py
pytest_latest_python:
name: ${{ matrix.os }} ${{ matrix.python-version }}
runs-on: ${{ matrix.os }}
test-systems:
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
os: [ubuntu-latest]
python-version: ["3.11"]
distro: ["amazonlinux", "centos7", "osx"]
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Checkout code
uses: actions/checkout@v3

- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}

- name: Display Python version
run: python -c "import sys; print(sys.version)"
- name: Setup test command
id: setup
run: |
if [ "${{ matrix.distro }}" == "osx" ]; then
echo "::set-output name=command::python -m pytest"
else
echo "::set-output name=command::pytest"
fi
- name: Test with pytest
- name: Run system tests
run: |
pip install pytest pytest-cov
pytest tests/
docker run --rm -v ${{ github.workspace }}:/app \
${{ env.REPOSITORY }}:${{ matrix.distro }}-pytest \
${{ steps.setup.outputs.command }} -v tests/test_system.py -p no:cacheprovider
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,6 @@ RUN if echo ${IMAGE} | grep -q "amazon"; then \
RUN ${PIP} install pytest

# Only install black on Python 3.x as it doesn't exist on 2.x
RUN if [ $(${PYTHON_VERSION}) -ge 3 ]; then ${PIP} install black isort; fi
RUN if [ $PYTHON_VERSION -ge 3 ]; then ${PIP} install black isort; fi

WORKDIR /app
6 changes: 3 additions & 3 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ services:
IMAGE: amazonlinux
PIP: pip3
PYTHON_VERSION: 3
image: amazonlinux
image: amazonlinux-pytest
volumes:
- .:/app

Expand All @@ -50,7 +50,7 @@ services:
IMAGE: centos/python-27-centos7
PIP: pip
PYTHON_VERSION: 2
image: centos7
image: centos7-pytest
volumes:
- .:/app

Expand All @@ -62,6 +62,6 @@ services:
IMAGE: sickcodes/docker-osx
PIP: python -m pip
PYTHON_VERSION: 3
image: osx
image: osx-pytest
volumes:
- .:/app
24 changes: 24 additions & 0 deletions tests/test_system.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import os
import sys

import pytest

# Add the parent directory to the path so we can import the latest version of the script
oom_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
sys.path.insert(0, oom_dir)

from oom_investigate import System

# Ignore DeprecationWarning and PendingDeprecationWarning warnings
pytestmark = pytest.mark.filterwarnings("ignore::DeprecationWarning")
pytestmark = pytest.mark.filterwarnings("ignore::PendingDeprecationWarning")


class TestSystem:
def test_distro_info_imports(self):
# very basic test to check if the distro info is returned
# Designed to run on docker containers for python 2.7, 3.6, 3.10
system = System()
distro_info = system.get_distro_info()
assert distro_info[0] is not None
assert distro_info[1] is not None

0 comments on commit f4d4fde

Please sign in to comment.