name: ytld-sub CI (Linux) on: pull_request: branches: - master push: branches: - master jobs: test-lint: runs-on: ubuntu-22.04 permissions: contents: read steps: - uses: actions/checkout@v3 - name: Set up Python uses: actions/setup-python@v4 with: python-version: "3.10" - name: Run linters run: | pip install -e .[lint] make check_lint test-unit: runs-on: ubuntu-22.04 permissions: contents: read steps: - uses: actions/checkout@v3 - name: Set up Python uses: actions/setup-python@v4 with: python-version: "3.10" - name: Run unit tests with coverage run: | pip install -e .[test] sudo apt-get update sudo apt-get install -y ffmpeg coverage run -m pytest --reruns 3 --reruns-delay 5 tests/unit && coverage xml -o /opt/coverage/unit/coverage.xml - name: Save coverage uses: actions/cache@v3 with: path: /opt/coverage/unit key: ${{github.sha}}-coverage-unit test-soundcloud: runs-on: ubuntu-22.04 permissions: contents: read steps: - uses: actions/checkout@v3 - name: Set up Python uses: actions/setup-python@v4 with: python-version: "3.10" - name: Run e2e soundcloud tests with coverage run: | pip install -e .[test] sudo apt-get update sudo apt-get install -y ffmpeg coverage run -m pytest --reruns 3 --reruns-delay 5 tests/e2e/soundcloud && coverage xml -o /opt/coverage/soundcloud/coverage.xml test-bandcamp: runs-on: ubuntu-22.04 permissions: contents: read steps: - uses: actions/checkout@v3 - name: Set up Python uses: actions/setup-python@v4 with: python-version: "3.10" - name: Run e2e soundcloud tests with coverage run: | pip install -e .[test] sudo apt-get update sudo apt-get install -y ffmpeg coverage run -m pytest --reruns 3 --reruns-delay 5 tests/e2e/bandcamp && coverage xml -o /opt/coverage/bandcamp/coverage.xml - name: Save coverage uses: actions/cache@v3 with: path: /opt/coverage/bandcamp key: ${{github.sha}}-coverage-bandcamp test-youtube: runs-on: ubuntu-22.04 permissions: contents: read steps: - uses: actions/checkout@v3 - name: Set up Python uses: actions/setup-python@v4 with: python-version: "3.10" - name: Run e2e youtube tests with coverage run: | pip install -e .[test] sudo apt-get update sudo apt-get install -y ffmpeg coverage run -m pytest --reruns 3 --reruns-delay 5 tests/e2e/youtube && coverage xml -o /opt/coverage/youtube/coverage.xml - name: Save coverage uses: actions/cache@v3 with: path: /opt/coverage/youtube key: ${{github.sha}}-coverage-youtube test-plugins: runs-on: ubuntu-22.04 permissions: contents: read steps: - uses: actions/checkout@v3 - name: Set up Python uses: actions/setup-python@v4 with: python-version: "3.10" - name: Run e2e plugin tests with coverage run: | pip install -e .[test] sudo apt-get update sudo apt-get install -y ffmpeg coverage run -m pytest --reruns 3 --reruns-delay 5 tests/e2e/plugins && coverage xml -o /opt/coverage/plugins/coverage.xml - name: Save coverage uses: actions/cache@v3 with: path: /opt/coverage/plugins key: ${{github.sha}}-coverage-plugins codecov-upload: runs-on: ubuntu-22.04 needs: [ test-unit, test-soundcloud, test-bandcamp, test-youtube, test-plugins ] permissions: contents: read steps: - name: Restore unit test coverage uses: actions/cache@v3 with: path: /opt/coverage/unit key: ${{github.sha}}-coverage-unit - name: Restore soundcloud test coverage uses: actions/cache@v3 with: path: /opt/coverage/soundcloud key: ${{github.sha}}-coverage-soundcloud - name: Restore bandcamp test coverage uses: actions/cache@v3 with: path: /opt/coverage/bandcamp key: ${{github.sha}}-coverage-bandcamp - name: Restore youtube test coverage uses: actions/cache@v3 with: path: /opt/coverage/youtube key: ${{github.sha}}-coverage-youtube - name: Restore plugins test coverage uses: actions/cache@v3 with: path: /opt/coverage/plugins key: ${{github.sha}}-coverage-plugins - name: Upload code coverage to codecov.io uses: codecov/codecov-action@v3 with: token: ${{ secrets.CODECOV_TOKEN }} files: /opt/coverage/unit/coverage.xml,/opt/coverage/soundcloud/coverage.xml,/opt/coverage/bandcamp/coverage.xml,/opt/coverage/youtube/coverage.xml,/opt/coverage/plugins/coverage.xml