test: run unit-tests on forks
- add verify unit test workflow also - use composite github action for syncing
This commit is contained in:
34
.github/actions/unit-tests/action.yml
vendored
Normal file
34
.github/actions/unit-tests/action.yml
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
name: 'Run unit tests'
|
||||
description: 'shared steps to run unit tests on both Github hosted and self hosted runners.'
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
- name: set settings path
|
||||
shell: bash
|
||||
run: |
|
||||
echo "settings_path=$(python scripts/unit_test_shards_parser.py --shard-name=${{ matrix.shard_name }} --output settings )" >> $GITHUB_ENV
|
||||
|
||||
- name: get unit tests for shard
|
||||
shell: bash
|
||||
run: |
|
||||
echo "unit_test_paths=$(python scripts/unit_test_shards_parser.py --shard-name=${{ matrix.shard_name }} )" >> $GITHUB_ENV
|
||||
|
||||
- name: run tests
|
||||
shell: bash
|
||||
run: |
|
||||
python -Wd -m pytest -p no:randomly --ds=${{ env.settings_path }} ${{ env.unit_test_paths }}
|
||||
|
||||
- name: rename warnings json file
|
||||
if: success()
|
||||
shell: bash
|
||||
run: |
|
||||
cd test_root/log
|
||||
mv pytest_warnings.json pytest_warnings_${{ matrix.shard_name }}.json
|
||||
|
||||
- name: save pytest warnings json file
|
||||
if: success()
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: pytest-warnings-json
|
||||
path: |
|
||||
test_root/log/pytest_warnings*.json
|
||||
49
.github/actions/verify-tests-count/action.yml
vendored
Normal file
49
.github/actions/verify-tests-count/action.yml
vendored
Normal file
@@ -0,0 +1,49 @@
|
||||
name: 'Verify unit tests count'
|
||||
description: 'shared steps to verify unit tests count on both Github hosted and self hosted runners.'
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
- name: collect tests from all modules
|
||||
shell: bash
|
||||
run: |
|
||||
echo "root_cms_unit_tests_count=$(pytest --collect-only --ds=cms.envs.test cms/ -q | head -n -2 | wc -l)" >> $GITHUB_ENV
|
||||
echo "root_lms_unit_tests_count=$(pytest --collect-only --ds=lms.envs.test lms/ openedx/ common/djangoapps/ common/lib/ -q | head -n -2 | wc -l)" >> $GITHUB_ENV
|
||||
|
||||
- name: get GHA unit test paths
|
||||
shell: bash
|
||||
run: |
|
||||
echo "cms_unit_test_paths=$(python scripts/gha_unit_tests_collector.py --cms-only)" >> $GITHUB_ENV
|
||||
echo "lms_unit_test_paths=$(python scripts/gha_unit_tests_collector.py --lms-only)" >> $GITHUB_ENV
|
||||
|
||||
|
||||
- name: collect tests from GHA unit test shards
|
||||
shell: bash
|
||||
run: |
|
||||
echo "cms_unit_tests_count=$(pytest --collect-only --ds=cms.envs.test ${{ env.cms_unit_test_paths }} -q | head -n -2 | wc -l)" >> $GITHUB_ENV
|
||||
echo "lms_unit_tests_count=$(pytest --collect-only --ds=lms.envs.test ${{ env.lms_unit_test_paths }} -q | head -n -2 | wc -l)" >> $GITHUB_ENV
|
||||
|
||||
|
||||
- name: add unit tests count
|
||||
shell: bash
|
||||
run: |
|
||||
echo "root_all_unit_tests_count=$((${{ env.root_cms_unit_tests_count }}+${{ env.root_lms_unit_tests_count }}))" >> $GITHUB_ENV
|
||||
echo "shards_all_unit_tests_count=$((${{ env.cms_unit_tests_count }}+${{ env.lms_unit_tests_count }}))" >> $GITHUB_ENV
|
||||
|
||||
- name: print unit tests count
|
||||
shell: bash
|
||||
run: |
|
||||
echo CMS unit tests from root: ${{ env.root_cms_unit_tests_count }}
|
||||
echo LMS unit tests from root: ${{ env.root_lms_unit_tests_count }}
|
||||
echo CMS unit tests from shards: ${{ env.cms_unit_tests_count }}
|
||||
echo LMS unit tests from shards: ${{ env.lms_unit_tests_count }}
|
||||
echo All root unit tests count: ${{ env.root_all_unit_tests_count }}
|
||||
echo All shards unit tests count: ${{ env.shards_all_unit_tests_count }}
|
||||
|
||||
- name: fail the check
|
||||
shell: bash
|
||||
if: ${{ env.root_all_unit_tests_count != env.shards_all_unit_tests_count }}
|
||||
run: |
|
||||
echo "::error title='Unit test modules in unit-test-shards.json (unit-tests.yml workflow) are outdated'::unit tests running in unit-tests
|
||||
workflow don't match the count for unit tests for entire edx-platform suite, please update the unit-test-shards.json under .github/workflows
|
||||
to add any missing apps and match the count. for more details please take a look at scripts/gha-shards-readme.md"
|
||||
exit 1
|
||||
Reference in New Issue
Block a user