Skip to content

Add unit+integration+graph tests Github action #146

Add unit+integration+graph tests Github action

Add unit+integration+graph tests Github action #146

Workflow file for this run

name: CI
on:
push:
branches:
- master
pull_request:
branches:
- "**"
concurrency:
group: tests-${{ github.head_ref || github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
jobs:
unit-tests:
name: Unit Tests / ${{ matrix.python-version }} (${{ matrix.group }})
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [ "3.8", "3.9", "3.10" ]
group: [ 1, 2, 3, 4, 5 ]
fail-fast: false
defaults:
run:
shell: bash
steps:
- name: Unit Tests - Python ${{ matrix.python-version }} (${{ matrix.group }}) - Setup Environment
uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: ./.github/actions/setup_environment
with:
python-version: ${{ matrix.python-version }}
- name: Run pytest
run: |
source "$(poetry env info --path)/bin/activate"
# Due to race conditions in the tests bringing up and down the node server, have the server available
# For all the tests.
node demisto_sdk/commands/common/markdown_server/mdx-parse-server.js &
node_pid=$!
# poetry run pytest --ignore={demisto_sdk/commands/init/templates,demisto_sdk/tests/integration_tests} --store-durations --junitxml=test-results/junit.xml || pytest_exit_code=$
# mv .test_durations test-results/test_durations
mkdir unit-test-results
poetry run pytest -v --ignore={demisto_sdk/commands/init/templates,demisto_sdk/tests/integration_tests,demisto_sdk/commands/content_graph} --cov=demisto_sdk --cov-report=html --junitxml=unit-test-results/junit.xml --splits 5 --group ${{ matrix.group }} || pytest_exit_code=$?
echo "PYTEST_EXIT_CODE=$pytest_exit_code" >> $GITHUB_ENV
kill $node_pid
- uses: ./.github/actions/test_summary_upload
with:
python-version: ${{ matrix.python-version }}
artifacts_folder_name: unit-test-results
group: ${{ matrix.group }}
integration-tests:
name: Integration Tests / ${{ matrix.python-version }}
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [ "3.8", "3.9", "3.10" ]
fail-fast: false
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Integration Tests - Python ${{ matrix.python-version }} - Setup Environment
uses: ./.github/actions/setup_environment
with:
python-version: ${{ matrix.python-version }}
- name: Run pytest
run: |
source "$(poetry env info --path)/bin/activate"
mkdir integration-test-results
poetry run pytest -v demisto_sdk/tests/integration_tests --cov=demisto_sdk --cov-report=html --junitxml=integration-test-results/junit.xml || pytest_exit_code=$?
echo "PYTEST_EXIT_CODE=$pytest_exit_code" >> $GITHUB_ENV
exit $pytest_exit_code
- name: Upload artifacts
if: always()
uses: actions/upload-artifact@v3
with:
name: integration-tests-artifacts-${{ matrix.python-version }}
path: |
.test_durations
integration-test-results/junit.xml
node_versions_info.json
coverage_html_report
.coverage
- name: Print Summary of pytest results in workflow summary
if: always()
uses: pmeier/pytest-results-action@main
with:
path: integration-test-results/junit.xml
summary: true
display-options: fsEX
fail-on-empty: true
- name: Check if tests have passed
if: always()
run: |
if [[ "$PYTEST_EXIT_CODE" -ne 0 ]]; then
echo "There are integration-tests that failed, pytest finished with exit code $PYTEST_EXIT_CODE, to see the tests summary refer to https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}?pr=${{ github.event.pull_request.number }}"
else
echo "All integration-tests have passed, congratulations!"
fi
exit $PYTEST_EXIT_CODE
graph-tests:
name: Graph Tests - Python ${{ matrix.python-version }} - Setup Environment
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [ "3.8", "3.9", "3.10" ]
fail-fast: false
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: ./.github/actions/setup_environment
uses: ./.github/actions/setup_environment
with:
python-version: ${{ matrix.python-version }}
- name: Run pytest
run: |
source "$(poetry env info --path)/bin/activate"
mkdir graph-test-results
poetry run pytest -v demisto_sdk/commands/content_graph --cov=demisto_sdk --cov-report=html --junitxml=graph-test-results/junit.xml || pytest_exit_code=$?
echo "PYTEST_EXIT_CODE=$pytest_exit_code" >> $GITHUB_ENV
- name: Upload artifacts
if: always()
uses: actions/upload-artifact@v3
with:
name: graph-tests-artifacts-${{ matrix.python-version }}
path: |
test-results/test_durations
graph-test-results/junit.xml
node_versions_info.json
coverage_html_report
.coverage
- name: Print Summary of pytest results in workflow summary
if: always()
uses: pmeier/pytest-results-action@main
with:
path: graph-test-results/junit.xml
summary: true
display-options: fsEX
fail-on-empty: true
- name: Check if tests have passed
if: always()
run: |
if [[ "$PYTEST_EXIT_CODE" -ne 0 ]]; then
echo "There are graph-tests that failed, pytest finished with exit code $PYTEST_EXIT_CODE, to see the tests summary refer to https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}?pr=${{ github.event.pull_request.number }}"
else
echo "All graph-tests have passed, congratulations!"
fi
exit $PYTEST_EXIT_CODE
coverage:
needs: [unit-tests, integration-tests, graph-tests]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python 3.10
uses: actions/setup-python@v4
with:
python-version: "3.10"
- name: Download all artifacts
uses: actions/download-artifact@v2
- name: Run coverage
run: |
pip install coverage
coverage combine **/.coverage
coverage report
coverage xml
- name: Coveralls
uses: coverallsapp/github-action@v2