diff --git a/.github/workflows/linux.yaml b/.github/workflows/linux.yaml new file mode 100644 index 0000000..1db3b1e --- /dev/null +++ b/.github/workflows/linux.yaml @@ -0,0 +1,35 @@ +name: linux-tests + +on: [push, pull_request] + +jobs: + build: + + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest] + # Python 3.3 and 3.4 have been removed since github won't provide these anymore + # As of 2023/01/09, we have removed python 3.5 and 3.6 as they don't work anymore with linux on github + # As of 2023/08/30, we have removed python 2.7 since github actions won't provide it anymore + python-version: [3.7, 3.8, 3.9, "3.10", "3.11", "3.12", 'pypy-3.6', 'pypy-3.7', 'pypy-3.8', 'pypy-3.10'] + + steps: + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v3 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: | + python -m pip install --upgrade pip + python -m pip install --upgrade setuptools + if [ -f npbackup/requirements.txt ]; then pip install -r npbackup/requirements.txt; fi + - name: Generate Report + env: + RUNNING_ON_GITHUB_ACTIONS: true + run: | + pip install pytest coverage + python -m coverage run -m pytest -vvs tests + - name: Upload Coverage to Codecov + uses: codecov/codecov-action@v3 diff --git a/.github/workflows/windows.yaml b/.github/workflows/windows.yaml new file mode 100644 index 0000000..444ddd6 --- /dev/null +++ b/.github/workflows/windows.yaml @@ -0,0 +1,38 @@ +name: windows-tests + +# The default shell here is Powershell +# Don't run with python 3.3 as using python -m to run flake8 or pytest will fail. +# Hence, without python -m, pytest will not have it's PYTHONPATH set to current dir and imports will fail +# Don't run with python 3.4 as github cannot install it (pip install --upgrade pip fails) + +on: [push, pull_request] + +jobs: + build: + + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [windows-latest] + # As of 2023/08/30, we have removed python 2.7 since github actions won't provide it anymore + python-version: [3.5, 3.6, 3.7, 3.8, 3.9, "3.10", "3.11", "3.12", 'pypy-3.6', 'pypy-3.7', 'pypy-3.8', 'pypy-3.10'] + + steps: + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v3 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: | + python -m pip install --upgrade pip + python -m pip install --upgrade setuptools + if (Test-Path "npbackup/requirements.txt") { pip install -r npbackup/requirements.txt } + - name: Generate Report + env: + RUNNING_ON_GITHUB_ACTIONS: true + run: | + pip install pytest coverage + python -m coverage run -m pytest -vvs tests + - name: Upload Coverage to Codecov + uses: codecov/codecov-action@v3 diff --git a/tests/test_restic_metrics.py b/tests/test_restic_metrics.py index fabe21d..5a8ec58 100644 --- a/tests/test_restic_metrics.py +++ b/tests/test_restic_metrics.py @@ -93,6 +93,16 @@ expected_results_V2 = [ r'restic_total_duration_seconds{instance="test",backup_job="some_nas",action="backup"} (\d+)', ] + +def running_on_github_actions(): + """ + This is set in github actions workflow with + env: + RUNNING_ON_GITHUB_ACTIONS: true + """ + return os.environ.get("RUNNING_ON_GITHUB_ACTIONS").lower() == "true" + + def test_restic_str_output_2_metrics(): instance = "test" backup_job = "some_nas" @@ -159,6 +169,11 @@ def test_restic_json_output(): def test_real_restic_output(): + # Don't do the real tests on github actions, since we don't have + # the binaries there. + # TODO: Add download/unzip restic binaries so we can run these tests + if running_on_github_actions(): + return labels = { "instance": "test", "backup_job": "some_nas"