Fixes correctness footer issue in diagnostic test (#20984) #11
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Backend tests | |
on: | |
merge_group: | |
types: [checks_requested] | |
push: | |
branches: | |
- develop | |
- release-* | |
pull_request: | |
branches: | |
- develop | |
- release-* | |
jobs: | |
run_tests: | |
name: Run backend tests | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-22.04] | |
shard: [1, 2, 3, 4, 5] | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Setup Python 3.8 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.8.15' | |
architecture: 'x64' | |
- name: Cache node modules and third_party/static | |
uses: actions/cache@v3 | |
env: | |
cache-name: cache-node-modules | |
with: | |
path: | | |
/home/runner/work/oppia/yarn_cache | |
/home/runner/work/oppia/oppia/third_party/static | |
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('yarn.lock', 'dependencies.json') }} | |
restore-keys: | | |
${{ runner.os }}-build-${{ env.cache-name }}- | |
${{ runner.os }}-build- | |
${{ runner.os }}- | |
- name: Install Oppia dependencies | |
uses: ./.github/actions/install-oppia-dependencies | |
if: startsWith(github.head_ref, 'update-changelog-for-release') == false | |
- name: Install packages for optimized coverage | |
if: startsWith(github.head_ref, 'update-changelog-for-release') == false | |
run: sudo apt-get install -y python-dev-is-python3 gcc | |
- name: Install coverage and configparser | |
if: startsWith(github.head_ref, 'update-changelog-for-release') == false | |
run: pip install coverage configparser | |
- name: Run backend test shard | |
if: startsWith(github.head_ref, 'update-changelog-for-release') == false | |
run: PYTHONIOENCODING=utf-8 python -m scripts.run_backend_tests --generate_coverage_report --generate_time_report --ignore_coverage --exclude_load_tests --test_shard ${{ matrix.shard }} | |
- name: Report failure if failed on oppia/oppia develop branch | |
if: ${{ failure() && github.event_name == 'push' && github.repository == 'oppia/oppia' && github.ref == 'refs/heads/develop'}} | |
uses: ./.github/actions/send-webhook-notification | |
with: | |
message: "A backend test failed on the upstream develop branch." | |
webhook-url: ${{ secrets.BUILD_FAILURE_ROOM_WEBHOOK_URL }} | |
- name: Upload time report | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ format('backend_test_time_shard_{0}', matrix.shard) }} | |
path: backend_test_time_report.json | |
retention-days: 1 | |
- name: Upload coverage report | |
if: startsWith(github.head_ref, 'update-changelog-for-release') == false | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ format('backend_test_coverage_shard_{0}', matrix.shard) }} | |
include-hidden-files: true | |
path: .coverage | |
retention-days: 1 | |
check_combined_coverage: | |
name: Check combined backend test coverage | |
needs: run_tests | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Setup Python 3.8 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.8.15' | |
architecture: 'x64' | |
- name: Cache node modules | |
uses: actions/cache@v3 | |
env: | |
cache-name: cache-node-modules | |
with: | |
path: /home/runner/work/oppia/yarn_cache | |
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('yarn.lock') }} | |
restore-keys: | | |
${{ runner.os }}-build-${{ env.cache-name }}- | |
${{ runner.os }}-build- | |
${{ runner.os }}- | |
# We need this so that we can check coverage of autogenerated code | |
- name: Install Oppia dependencies | |
uses: ./.github/actions/install-oppia-dependencies | |
if: startsWith(github.head_ref, 'update-changelog-for-release') == false | |
- name: Install coverage | |
if: startsWith(github.head_ref, 'update-changelog-for-release') == false | |
run: pip install coverage | |
- name: Download coverage report for shard 1 | |
if: startsWith(github.head_ref, 'update-changelog-for-release') == false | |
uses: actions/download-artifact@v3 | |
with: | |
name: backend_test_coverage_shard_1 | |
path: coverage/coverage_1 | |
- name: Download coverage report for shard 2 | |
if: startsWith(github.head_ref, 'update-changelog-for-release') == false | |
uses: actions/download-artifact@v3 | |
with: | |
name: backend_test_coverage_shard_2 | |
path: coverage/coverage_2 | |
- name: Download coverage report for shard 3 | |
if: startsWith(github.head_ref, 'update-changelog-for-release') == false | |
uses: actions/download-artifact@v3 | |
with: | |
name: backend_test_coverage_shard_3 | |
path: coverage/coverage_3 | |
- name: Download coverage report for shard 4 | |
if: startsWith(github.head_ref, 'update-changelog-for-release') == false | |
uses: actions/download-artifact@v3 | |
with: | |
name: backend_test_coverage_shard_4 | |
path: coverage/coverage_4 | |
- name: Download coverage report for shard 5 | |
if: startsWith(github.head_ref, 'update-changelog-for-release') == false | |
uses: actions/download-artifact@v3 | |
with: | |
name: backend_test_coverage_shard_5 | |
path: coverage/coverage_5 | |
- name: Move coverage reports from artifact folders to coverage folder | |
if: startsWith(github.head_ref, 'update-changelog-for-release') == false | |
shell: bash | |
run: | | |
for i in {1..5}; do cp coverage/coverage_$i/.coverage coverage/.coverage.$i; done | |
- name: Combine coverage reports | |
if: startsWith(github.head_ref, 'update-changelog-for-release') == false | |
shell: bash | |
run: coverage combine coverage/.coverage.* | |
- name: Check coverage | |
if: startsWith(github.head_ref, 'update-changelog-for-release') == false | |
shell: bash | |
run: PYTHONIOENCODING=utf-8 python -m scripts.check_overall_backend_test_coverage | |
- name: Report failure if failed on oppia/oppia develop branch | |
if: ${{ failure() && github.event_name == 'push' && github.repository == 'oppia/oppia' && github.ref == 'refs/heads/develop'}} | |
uses: ./.github/actions/send-webhook-notification | |
with: | |
message: "Backend coverage checks failed on the upstream develop branch." | |
webhook-url: ${{ secrets.BUILD_FAILURE_ROOM_WEBHOOK_URL }} | |
check_backend_test_times: | |
name: Check backend test times | |
needs: run_tests | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Setup Python 3.8 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.8.15' | |
architecture: 'x64' | |
- name: Download time report for shard 1 | |
uses: actions/download-artifact@v3 | |
with: | |
name: backend_test_time_shard_1 | |
path: backend_test_time_reports_artifacts/backend_test_time_1 | |
- name: Download time report for shard 2 | |
uses: actions/download-artifact@v3 | |
with: | |
name: backend_test_time_shard_2 | |
path: backend_test_time_reports_artifacts/backend_test_time_2 | |
- name: Download time report for shard 3 | |
uses: actions/download-artifact@v3 | |
with: | |
name: backend_test_time_shard_3 | |
path: backend_test_time_reports_artifacts/backend_test_time_3 | |
- name: Download time report for shard 4 | |
uses: actions/download-artifact@v3 | |
with: | |
name: backend_test_time_shard_4 | |
path: backend_test_time_reports_artifacts/backend_test_time_4 | |
- name: Download time report for shard 5 | |
uses: actions/download-artifact@v3 | |
with: | |
name: backend_test_time_shard_5 | |
path: backend_test_time_reports_artifacts/backend_test_time_5 | |
- name: Move time reports from artifact folders to backend_test_time_reports folder | |
shell: bash | |
run: | | |
mkdir -p backend_test_time_reports | |
for i in {1..5}; do cp backend_test_time_reports_artifacts/backend_test_time_$i/backend_test_time_report.json backend_test_time_reports/backend_test_time_report_$i.json; done | |
- name: Check test times | |
run: python -m scripts.check_backend_test_times | |
shell: bash | |
- name: Upload test times artifact | |
if: ${{ github.event_name == 'push' && github.repository == 'oppia/oppia' && github.ref == 'refs/heads/develop' }} | |
uses: actions/upload-artifact@v3 | |
with: | |
name: backend_test_times | |
path: backend_test_times.txt | |
retention-days: 7 |