|
@@ -1,73 +1,349 @@
|
|
name: CI
|
|
name: CI
|
|
-on: [push, pull_request]
|
|
|
|
|
|
+
|
|
|
|
+env:
|
|
|
|
+ # add 3.10+ after patching nose (https://github.com/nose-devs/nose/issues/1099)
|
|
|
|
+ # or switching to fork of https://github.com/mdmintz/pynose
|
|
|
|
+ all-cpython-versions: 2.6, 2.7, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9
|
|
|
|
+ main-cpython-versions: 2.7, 3.2, 3.5, 3.9
|
|
|
|
+ pypy-versions: pypy-2.7, pypy-3.6, pypy-3.7
|
|
|
|
+ cpython-versions: all
|
|
|
|
+ # test-set: both
|
|
|
|
+ test-set: core
|
|
|
|
+
|
|
|
|
+on:
|
|
|
|
+ push:
|
|
|
|
+ pull_request:
|
|
|
|
+ workflow_dispatch:
|
|
|
|
+ inputs:
|
|
|
|
+ cpython-versions:
|
|
|
|
+ type: choice
|
|
|
|
+ description: CPython versions (main = 2.7, 3.2, 3.5, 3.9)
|
|
|
|
+ options:
|
|
|
|
+ - all
|
|
|
|
+ - main
|
|
|
|
+ required: true
|
|
|
|
+ default: main
|
|
|
|
+ test-set:
|
|
|
|
+ type: choice
|
|
|
|
+ description: core, download
|
|
|
|
+ options:
|
|
|
|
+ - both
|
|
|
|
+ - core
|
|
|
|
+ - download
|
|
|
|
+ required: true
|
|
|
|
+ default: core
|
|
|
|
+
|
|
|
|
+permissions:
|
|
|
|
+ contents: read
|
|
|
|
+
|
|
jobs:
|
|
jobs:
|
|
|
|
+ select:
|
|
|
|
+ name: Select tests from inputs
|
|
|
|
+ runs-on: ubuntu-latest
|
|
|
|
+ outputs:
|
|
|
|
+ cpython-versions: ${{ steps.run.outputs.cpython-versions }}
|
|
|
|
+ test-set: ${{ steps.run.outputs.test-set }}
|
|
|
|
+ own-pip-versions: ${{ steps.run.outputs.own-pip-versions }}
|
|
|
|
+ steps:
|
|
|
|
+ - id: run
|
|
|
|
+ run: |
|
|
|
|
+ # Make a JSON Array from comma/space-separated string (no extra escaping)
|
|
|
|
+ json_list() { \
|
|
|
|
+ ret=""; IFS="${IFS},"; set -- $*; \
|
|
|
|
+ for a in "$@"; do \
|
|
|
|
+ ret=$(printf '%s"%s"' "${ret}${ret:+, }" "$a"); \
|
|
|
|
+ done; \
|
|
|
|
+ printf '[%s]' "$ret"; }
|
|
|
|
+ tests="${{ inputs.test-set || env.test-set }}"
|
|
|
|
+ [ $tests = both ] && tests="core download"
|
|
|
|
+ printf 'test-set=%s\n' "$(json_list $tests)" >> "$GITHUB_OUTPUT"
|
|
|
|
+ versions="${{ inputs.cpython-versions || env.cpython-versions }}"
|
|
|
|
+ if [ "$versions" = all ]; then \
|
|
|
|
+ versions="${{ env.all-cpython-versions }}"; else \
|
|
|
|
+ versions="${{ env.main-cpython-versions }}"; \
|
|
|
|
+ fi
|
|
|
|
+ printf 'cpython-versions=%s\n' \
|
|
|
|
+ "$(json_list ${versions}${versions:+, }${{ env.pypy-versions }})" >> "$GITHUB_OUTPUT"
|
|
|
|
+ # versions with a special get-pip.py in a per-version subdirectory
|
|
|
|
+ printf 'own-pip-versions=%s\n' \
|
|
|
|
+ "$(json_list 2.6, 2.7, 3.2, 3.3, 3.4, 3.5, 3.6)" >> "$GITHUB_OUTPUT"
|
|
|
|
+
|
|
tests:
|
|
tests:
|
|
- name: Tests
|
|
|
|
|
|
+ name: Run tests
|
|
|
|
+ needs: select
|
|
|
|
+ permissions:
|
|
|
|
+ contents: read
|
|
|
|
+ packages: write
|
|
runs-on: ${{ matrix.os }}
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
strategy:
|
|
fail-fast: true
|
|
fail-fast: true
|
|
matrix:
|
|
matrix:
|
|
os: [ubuntu-20.04]
|
|
os: [ubuntu-20.04]
|
|
- python-version: [2.6, 2.7, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, pypy-2.7, pypy-3.6, pypy-3.7]
|
|
|
|
|
|
+ # outside steps, use github.env...., not env....
|
|
|
|
+ python-version: ${{ fromJSON(needs.select.outputs.cpython-versions) }}
|
|
python-impl: [cpython]
|
|
python-impl: [cpython]
|
|
- ytdl-test-set: [core, download]
|
|
|
|
|
|
+ ytdl-test-set: ${{ fromJSON(needs.select.outputs.test-set) }}
|
|
run-tests-ext: [sh]
|
|
run-tests-ext: [sh]
|
|
include:
|
|
include:
|
|
- # python 3.2 is only available on windows via setup-python
|
|
|
|
- os: windows-2019
|
|
- os: windows-2019
|
|
python-version: 3.2
|
|
python-version: 3.2
|
|
python-impl: cpython
|
|
python-impl: cpython
|
|
- ytdl-test-set: core
|
|
|
|
|
|
+ ytdl-test-set: ${{ contains(needs.select.outputs.test-set, 'core') && 'core' || 'nocore' }}
|
|
run-tests-ext: bat
|
|
run-tests-ext: bat
|
|
- os: windows-2019
|
|
- os: windows-2019
|
|
python-version: 3.2
|
|
python-version: 3.2
|
|
python-impl: cpython
|
|
python-impl: cpython
|
|
- ytdl-test-set: download
|
|
|
|
|
|
+ ytdl-test-set: ${{ contains(needs.select.outputs.test-set, 'download') && 'download' || 'nodownload' }}
|
|
run-tests-ext: bat
|
|
run-tests-ext: bat
|
|
# jython
|
|
# jython
|
|
- os: ubuntu-20.04
|
|
- os: ubuntu-20.04
|
|
python-impl: jython
|
|
python-impl: jython
|
|
- ytdl-test-set: core
|
|
|
|
|
|
+ ytdl-test-set: ${{ contains(needs.select.outputs.test-set, 'core') && 'core' || 'nocore' }}
|
|
run-tests-ext: sh
|
|
run-tests-ext: sh
|
|
- os: ubuntu-20.04
|
|
- os: ubuntu-20.04
|
|
python-impl: jython
|
|
python-impl: jython
|
|
- ytdl-test-set: download
|
|
|
|
|
|
+ ytdl-test-set: ${{ contains(needs.select.outputs.test-set, 'download') && 'download' || 'nodownload' }}
|
|
run-tests-ext: sh
|
|
run-tests-ext: sh
|
|
steps:
|
|
steps:
|
|
- - uses: actions/checkout@v3
|
|
|
|
|
|
+ - name: Checkout
|
|
|
|
+ uses: actions/checkout@v3
|
|
|
|
+ #-------- Python 3 -----
|
|
- name: Set up supported Python ${{ matrix.python-version }}
|
|
- name: Set up supported Python ${{ matrix.python-version }}
|
|
|
|
+ id: setup-python
|
|
|
|
+ if: ${{ matrix.python-impl == 'cpython' && matrix.python-version != '2.6' && matrix.python-version != '2.7'}}
|
|
# wrap broken actions/setup-python@v4
|
|
# wrap broken actions/setup-python@v4
|
|
uses: ytdl-org/setup-python@v1
|
|
uses: ytdl-org/setup-python@v1
|
|
with:
|
|
with:
|
|
python-version: ${{ matrix.python-version }}
|
|
python-version: ${{ matrix.python-version }}
|
|
cache-build: true
|
|
cache-build: true
|
|
allow-build: info
|
|
allow-build: info
|
|
|
|
+ - name: Locate supported Python ${{ matrix.python-version }}
|
|
|
|
+ if: ${{ env.pythonLocation }}
|
|
|
|
+ shell: bash
|
|
|
|
+ run: |
|
|
|
|
+ echo "PYTHONHOME=${pythonLocation}" >> "$GITHUB_ENV"
|
|
|
|
+ export expected="${{ steps.setup-python.outputs.python-path }}"
|
|
|
|
+ dirname() { printf '%s\n' \
|
|
|
|
+ 'import os, sys' \
|
|
|
|
+ 'print(os.path.dirname(sys.argv[1]))' \
|
|
|
|
+ | ${expected} - "$1"; }
|
|
|
|
+ expd="$(dirname "$expected")"
|
|
|
|
+ export python="$(command -v python)"
|
|
|
|
+ [ "$expd" = "$(dirname "$python")" ] || echo "PATH=$expd:${PATH}" >> "$GITHUB_ENV"
|
|
|
|
+ [ -x "$python" ] || printf '%s\n' \
|
|
|
|
+ 'import os' \
|
|
|
|
+ 'exp = os.environ["expected"]' \
|
|
|
|
+ 'python = os.environ["python"]' \
|
|
|
|
+ 'exps = os.path.split(exp)' \
|
|
|
|
+ 'if python and (os.path.dirname(python) == exp[0]):' \
|
|
|
|
+ ' exit(0)' \
|
|
|
|
+ 'exps[1] = "python" + os.path.splitext(exps[1])[1]' \
|
|
|
|
+ 'python = os.path.join(*exps)' \
|
|
|
|
+ 'try:' \
|
|
|
|
+ ' os.symlink(exp, python)' \
|
|
|
|
+ 'except AttributeError:' \
|
|
|
|
+ ' os.rename(exp, python)' \
|
|
|
|
+ | ${expected} -
|
|
|
|
+ printf '%s\n' \
|
|
|
|
+ 'import sys' \
|
|
|
|
+ 'print(sys.path)' \
|
|
|
|
+ | ${expected} -
|
|
|
|
+ #-------- Python 2.7 --
|
|
|
|
+ - name: Set up Python 2.7
|
|
|
|
+ if: ${{ matrix.python-version == '2.7' }}
|
|
|
|
+ # install 2.7
|
|
|
|
+ run: |
|
|
|
|
+ sudo apt-get install -y python2 python-is-python2
|
|
|
|
+ echo "PYTHONHOME=/usr" >> "$GITHUB_ENV"
|
|
|
|
+ #-------- Python 2.6 --
|
|
|
|
+ - name: Set up Python 2.6 environment
|
|
|
|
+ if: ${{ matrix.python-version == '2.6' }}
|
|
|
|
+ run: |
|
|
|
|
+ openssl_name=openssl-1.0.2u
|
|
|
|
+ echo "openssl_name=${openssl_name}" >> "$GITHUB_ENV"
|
|
|
|
+ openssl_dir=$HOME/.local/opt/$openssl_name
|
|
|
|
+ echo "openssl_dir=${openssl_dir}" >> "$GITHUB_ENV"
|
|
|
|
+ PYENV_ROOT=$HOME/.local/share/pyenv
|
|
|
|
+ echo "PYENV_ROOT=${PYENV_ROOT}" >> "$GITHUB_ENV"
|
|
|
|
+ sudo apt-get install -y openssl ca-certificates
|
|
|
|
+ - name: Cache Python 2.6
|
|
|
|
+ id: cache26
|
|
|
|
+ if: ${{ matrix.python-version == '2.6' }}
|
|
|
|
+ uses: actions/cache@v3
|
|
|
|
+ with:
|
|
|
|
+ key: python-2.6.9
|
|
|
|
+ path: |
|
|
|
|
+ ${{ env.openssl_dir }}
|
|
|
|
+ ${{ env.PYENV_ROOT }}
|
|
|
|
+ - name: Build and set up Python 2.6
|
|
|
|
+ if: ${{ matrix.python-version == '2.6' && ! steps.cache26.outputs.cache-hit }}
|
|
|
|
+ # dl and build locally
|
|
|
|
+ run: |
|
|
|
|
+ # Install build environment
|
|
|
|
+ sudo apt-get install -y build-essential llvm libssl-dev tk-dev \
|
|
|
|
+ libncursesw5-dev libreadline-dev libsqlite3-dev \
|
|
|
|
+ libffi-dev xz-utils zlib1g-dev libbz2-dev liblzma-dev
|
|
|
|
+ # Download and install OpenSSL 1.0.2, back in time
|
|
|
|
+ openssl_name=${{ env.openssl_name }}
|
|
|
|
+ openssl_targz=${openssl_name}.tar.gz
|
|
|
|
+ openssl_dir=${{ env.openssl_dir }}
|
|
|
|
+ openssl_inc=$openssl_dir/include
|
|
|
|
+ openssl_lib=$openssl_dir/lib
|
|
|
|
+ openssl_ssl=$openssl_dir/ssl
|
|
|
|
+ curl -L "https://www.openssl.org/source/$openssl_targz" -o $openssl_targz
|
|
|
|
+ tar -xf $openssl_targz
|
|
|
|
+ ( cd $openssl_name; \
|
|
|
|
+ ./config --prefix=$openssl_dir --openssldir=${openssl_dir}/ssl \
|
|
|
|
+ --libdir=lib -Wl,-rpath=${openssl_dir}/lib shared zlib-dynamic && \
|
|
|
|
+ make && \
|
|
|
|
+ make install )
|
|
|
|
+ rm -rf $openssl_name
|
|
|
|
+ rmdir $openssl_ssl/certs && ln -s /etc/ssl/certs $openssl_ssl/certs
|
|
|
|
+
|
|
|
|
+ # Download PyEnv from its GitHub repository.
|
|
|
|
+ export PYENV_ROOT=${{ env.PYENV_ROOT }}
|
|
|
|
+ export PATH=$PYENV_ROOT/bin:$PATH
|
|
|
|
+ git clone https://github.com/pyenv/pyenv.git $PYENV_ROOT
|
|
|
|
+ eval "$(pyenv init --path)"
|
|
|
|
+
|
|
|
|
+ # Prevent pyenv build trying (and failing) to update pip
|
|
|
|
+ export GET_PIP=get-pip-2.6.py
|
|
|
|
+ echo 'import sys; sys.exit(0)' > ${GET_PIP}
|
|
|
|
+ GET_PIP=$(realpath $GET_PIP)
|
|
|
|
+
|
|
|
|
+ # Build and install Python
|
|
|
|
+ export CFLAGS="-I$openssl_inc"
|
|
|
|
+ export LDFLAGS="-L$openssl_lib"
|
|
|
|
+ export LD_LIBRARY_PATH="$openssl_lib"
|
|
|
|
+ pyenv install 2.6.9
|
|
|
|
+ echo "PYTHONHOME=${PYENV_ROOT}" >> "$GITHUB_ENV"
|
|
|
|
+ echo "PATH=$PYENV_ROOT/bin:$PATH" >> "$GITHUB_ENV"
|
|
|
|
+ - name: Set up cached Python 2.6
|
|
|
|
+ if: ${{ steps.cache26.outputs.cache-hit }}
|
|
|
|
+ run: |
|
|
|
|
+ export PYENV_ROOT
|
|
|
|
+ export PATH=$PYENV_ROOT/bin:$PATH
|
|
|
|
+ eval "$(pyenv init --path)"
|
|
|
|
+ pyenv local 2.6.9
|
|
|
|
+ echo "PYTHONHOME=${PYENV_ROOT}" >> "$GITHUB_ENV"
|
|
|
|
+ echo "PATH=$PYENV_ROOT/bin:$PATH" >> "$GITHUB_ENV"
|
|
|
|
+ #-------- Jython ------
|
|
- name: Set up Java 8
|
|
- name: Set up Java 8
|
|
if: ${{ matrix.python-impl == 'jython' }}
|
|
if: ${{ matrix.python-impl == 'jython' }}
|
|
uses: actions/setup-java@v2
|
|
uses: actions/setup-java@v2
|
|
with:
|
|
with:
|
|
java-version: 8
|
|
java-version: 8
|
|
distribution: 'zulu'
|
|
distribution: 'zulu'
|
|
- - name: Install Jython
|
|
|
|
|
|
+ - name: Setup Jython environment
|
|
if: ${{ matrix.python-impl == 'jython' }}
|
|
if: ${{ matrix.python-impl == 'jython' }}
|
|
run: |
|
|
run: |
|
|
- wget https://repo1.maven.org/maven2/org/python/jython-installer/2.7.1/jython-installer-2.7.1.jar -O jython-installer.jar
|
|
|
|
- java -jar jython-installer.jar -s -d "$HOME/jython"
|
|
|
|
- echo "$HOME/jython/bin" >> $GITHUB_PATH
|
|
|
|
- - name: Install nose
|
|
|
|
- if: ${{ matrix.python-impl != 'jython' }}
|
|
|
|
- run: pip install nose
|
|
|
|
|
|
+ echo "JYTHON_ROOT=${HOME}/jython" >> "$GITHUB_ENV"
|
|
|
|
+ - name: Cache Jython
|
|
|
|
+ id: cachejy
|
|
|
|
+ if: ${{ matrix.python-impl == 'jython' }}
|
|
|
|
+ uses: actions/cache@v3
|
|
|
|
+ with:
|
|
|
|
+ # 2.7.3 now available, may solve SNI issue
|
|
|
|
+ key: jython-2.7.1
|
|
|
|
+ path: |
|
|
|
|
+ ${{ env.JYTHON_ROOT }}
|
|
|
|
+ - name: Install Jython
|
|
|
|
+ if: ${{ matrix.python-impl == 'jython' && ! steps.cachejy.outputs.cache-hit }}
|
|
|
|
+ run: |
|
|
|
|
+ JYTHON_ROOT="${{ env.JYTHON_ROOT }}"
|
|
|
|
+ curl -L "https://repo1.maven.org/maven2/org/python/jython-installer/2.7.1/jython-installer-2.7.1.jar" -o jython-installer.jar
|
|
|
|
+ java -jar jython-installer.jar -s -d "${JYTHON_ROOT}"
|
|
|
|
+ echo "${JYTHON_ROOT}/bin" >> $GITHUB_PATH
|
|
|
|
+ - name: Set up cached Jython
|
|
|
|
+ if: ${{ steps.cachejy.outputs.cache-hit }}
|
|
|
|
+ run: |
|
|
|
|
+ JYTHON_ROOT="${{ env.JYTHON_ROOT }}"
|
|
|
|
+ echo "${JYTHON_ROOT}/bin" >> $GITHUB_PATH
|
|
|
|
+ #-------- pip ---------
|
|
|
|
+ - name: Set up supported Python ${{ matrix.python-version }} pip
|
|
|
|
+ if: ${{ (matrix.python-version != '3.2' && steps.setup-python.outputs.python-path) || matrix.python-version == '2.6' || matrix.python-version == '2.7' }}
|
|
|
|
+ # This step may run in either Linux or Windows
|
|
|
|
+ shell: bash
|
|
|
|
+ run: |
|
|
|
|
+ echo "$PATH"
|
|
|
|
+ echo "$PYTHONHOME"
|
|
|
|
+ # curl is available on both Windows and Linux, -L follows redirects, -O gets name
|
|
|
|
+ python -m ensurepip || python -m pip --version || { \
|
|
|
|
+ get_pip="${{ contains(needs.select.outputs.own-pip-versions, matrix.python-version) && format('{0}/', matrix.python-version) || '' }}"; \
|
|
|
|
+ curl -L -O "https://bootstrap.pypa.io/pip/${get_pip}get-pip.py"; \
|
|
|
|
+ python get-pip.py; }
|
|
|
|
+ - name: Set up other Python ${{ matrix.python-version }} pip
|
|
|
|
+ if: ${{ matrix.python-version == '3.2' && steps.setup-python.outputs.python-path }}
|
|
|
|
+ shell: bash
|
|
|
|
+ run: |
|
|
|
|
+ # https://files.pythonhosted.org/packages/8a/e9/8468cd68b582b06ef554be0b96b59f59779627131aad48f8a5bce4b13450/wheel-0.29.0-py2.py3-none-any.whl
|
|
|
|
+ # https://files.pythonhosted.org/packages/06/4b/86a670fd21f7849adb092e40883c48dcd0d66b8a878fc8d63b7f0ea04213/setuptools-29.0.1-py2.py3-none-any.whl
|
|
|
|
+ python -m pip --version || { \
|
|
|
|
+ curl -L -O "https://bootstrap.pypa.io/pip/3.2/get-pip.py"; \
|
|
|
|
+ curl -L -O "https://files.pythonhosted.org/packages/b2/d0/cd115fe345dd6f07ec1c780020a7dfe74966fceeb171e0f20d1d4905b0b7/pip-7.1.2-py2.py3-none-any.whl"; \
|
|
|
|
+ python -v get-pip.py --no-setuptools --no-wheel pip-7.1.2-py2.py3-none-any.whl; }
|
|
|
|
+
|
|
|
|
+ #-------- nose --------
|
|
|
|
+ - name: Install nose for Python ${{ matrix.python-version }}
|
|
|
|
+ if: ${{ (matrix.python-version != '3.2' && steps.setup-python.outputs.python-path) || matrix.python-version == '2.6' || matrix.python-version == '2.7' }}
|
|
|
|
+ shell: bash
|
|
|
|
+ run: |
|
|
|
|
+ echo "$PATH"
|
|
|
|
+ echo "$PYTHONHOME"
|
|
|
|
+ python --version
|
|
|
|
+ python -m pip --version
|
|
|
|
+ python -m pip nose --version || python -m pip install nose
|
|
|
|
+ - name: Install nose for other Python ${{ matrix.python-version }}
|
|
|
|
+ if: ${{ matrix.python-version == '3.2' && steps.setup-python.outputs.python-path }}
|
|
|
|
+ shell: bash
|
|
|
|
+ run: |
|
|
|
|
+ python -m pip nose --version || { \
|
|
|
|
+ curl -L -O "https://files.pythonhosted.org/packages/15/d8/dd071918c040f50fa1cf80da16423af51ff8ce4a0f2399b7bf8de45ac3d9/nose-1.3.7-py3-none-any.whl"; \
|
|
|
|
+ python --version; \
|
|
|
|
+ printf '%s\n' \
|
|
|
|
+ 'import sys' \
|
|
|
|
+ 'print(sys.path)' \
|
|
|
|
+ | python -; \
|
|
|
|
+ python -m pip --version; \
|
|
|
|
+ python -m pip install nose-1.3.7-py3-none-any.whl; }
|
|
- name: Install nose (Jython)
|
|
- name: Install nose (Jython)
|
|
if: ${{ matrix.python-impl == 'jython' }}
|
|
if: ${{ matrix.python-impl == 'jython' }}
|
|
- # Working around deprecation of support for non-SNI clients at PyPI CDN (see https://status.python.org/incidents/hzmjhqsdjqgb)
|
|
|
|
|
|
+ # Work around deprecation of support for non-SNI clients at PyPI CDN (see https://status.python.org/incidents/hzmjhqsdjqgb)
|
|
run: |
|
|
run: |
|
|
- wget https://files.pythonhosted.org/packages/99/4f/13fb671119e65c4dce97c60e67d3fd9e6f7f809f2b307e2611f4701205cb/nose-1.3.7-py2-none-any.whl
|
|
|
|
- pip install nose-1.3.7-py2-none-any.whl
|
|
|
|
|
|
+ pip nose --version || { \
|
|
|
|
+ curl -L -O "https://files.pythonhosted.org/packages/99/4f/13fb671119e65c4dce97c60e67d3fd9e6f7f809f2b307e2611f4701205cb/nose-1.3.7-py2-none-any.whl"; \
|
|
|
|
+ pip --version; \
|
|
|
|
+ pip install nose-1.3.7-py2-none-any.whl; }
|
|
|
|
+ - name: Set up nosetest test
|
|
|
|
+ if: ${{ contains(needs.select.outputs.test-set, matrix.ytdl-test-set ) }}
|
|
|
|
+ shell: bash
|
|
|
|
+ run: |
|
|
|
|
+ # define a test to validate the Python version used by nosetests
|
|
|
|
+ printf '%s\n' \
|
|
|
|
+ 'from __future__ import unicode_literals' \
|
|
|
|
+ 'import sys, os, platform, unittest' \
|
|
|
|
+ 'class TestPython(unittest.TestCase):' \
|
|
|
|
+ ' def setUp(self):' \
|
|
|
|
+ ' self.ver = os.environ["PYTHON_VER"].split("-")' \
|
|
|
|
+ ' def test_python_ver(self):' \
|
|
|
|
+ ' self.assertEqual(sys.version[:3], self.ver[-1])' \
|
|
|
|
+ ' self.assertTrue(sys.version.startswith(self.ver[-1]))' \
|
|
|
|
+ ' self.assertIn(self.ver[0], sys.version.lower())' \
|
|
|
|
+ ' def test_python_impl(self):' \
|
|
|
|
+ ' self.assertIn(platform.python_implementation().lower(), (os.environ["PYTHON_IMPL"], self.ver[0]))' \
|
|
|
|
+ > test/test_python.py
|
|
|
|
+ #-------- TESTS -------
|
|
- name: Run tests
|
|
- name: Run tests
|
|
|
|
+ if: ${{ contains(needs.select.outputs.test-set, matrix.ytdl-test-set ) }}
|
|
continue-on-error: ${{ matrix.ytdl-test-set == 'download' || matrix.python-impl == 'jython' }}
|
|
continue-on-error: ${{ matrix.ytdl-test-set == 'download' || matrix.python-impl == 'jython' }}
|
|
env:
|
|
env:
|
|
YTDL_TEST_SET: ${{ matrix.ytdl-test-set }}
|
|
YTDL_TEST_SET: ${{ matrix.ytdl-test-set }}
|
|
- run: ./devscripts/run_tests.${{ matrix.run-tests-ext }}
|
|
|
|
|
|
+ PYTHON_VER: ${{ matrix.python-version }}
|
|
|
|
+ PYTHON_IMPL: ${{ matrix.python-impl }}
|
|
|
|
+
|
|
|
|
+ run: |
|
|
|
|
+ ./devscripts/run_tests.${{ matrix.run-tests-ext }}
|
|
|
|
+
|
|
flake8:
|
|
flake8:
|
|
name: Linter
|
|
name: Linter
|
|
runs-on: ubuntu-latest
|
|
runs-on: ubuntu-latest
|
|
@@ -81,3 +357,4 @@ jobs:
|
|
run: pip install flake8
|
|
run: pip install flake8
|
|
- name: Run flake8
|
|
- name: Run flake8
|
|
run: flake8 .
|
|
run: flake8 .
|
|
|
|
+
|