logo

youtube-dl

[mirror] Download/Watch videos from video hostersgit clone https://hacktivis.me/git/mirror/youtube-dl.git

ci.yml (20578B)


  1. name: CI
  2. env:
  3. all-cpython-versions: 2.6, 2.7, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12
  4. main-cpython-versions: 2.7, 3.2, 3.5, 3.9, 3.11
  5. pypy-versions: pypy-2.7, pypy-3.6, pypy-3.7
  6. cpython-versions: main
  7. test-set: core
  8. # Python beta version to be built using pyenv before setup-python support
  9. # Must also be included in all-cpython-versions
  10. next: 3.13
  11. on:
  12. push:
  13. # push inputs aren't known to GitHub
  14. inputs:
  15. cpython-versions:
  16. type: string
  17. default: all
  18. test-set:
  19. type: string
  20. default: core
  21. pull_request:
  22. # pull_request inputs aren't known to GitHub
  23. inputs:
  24. cpython-versions:
  25. type: string
  26. default: main
  27. test-set:
  28. type: string
  29. default: both
  30. workflow_dispatch:
  31. inputs:
  32. cpython-versions:
  33. type: choice
  34. description: CPython versions (main = 2.7, 3.2, 3.5, 3.9, 3.11)
  35. options:
  36. - all
  37. - main
  38. required: true
  39. default: main
  40. test-set:
  41. type: choice
  42. description: core, download
  43. options:
  44. - both
  45. - core
  46. - download
  47. required: true
  48. default: both
  49. permissions:
  50. contents: read
  51. jobs:
  52. select:
  53. name: Select tests from inputs
  54. runs-on: ubuntu-latest
  55. outputs:
  56. cpython-versions: ${{ steps.run.outputs.cpython-versions }}
  57. test-set: ${{ steps.run.outputs.test-set }}
  58. own-pip-versions: ${{ steps.run.outputs.own-pip-versions }}
  59. steps:
  60. # push and pull_request inputs aren't known to GitHub (pt3)
  61. - name: Set push defaults
  62. if: ${{ github.event_name == 'push' }}
  63. env:
  64. cpython-versions: all
  65. test-set: core
  66. run: |
  67. echo "cpython-versions=${{env.cpython-versions}}" >> "$GITHUB_ENV"
  68. echo "test_set=${{env.test_set}}" >> "$GITHUB_ENV"
  69. - name: Get pull_request inputs
  70. if: ${{ github.event_name == 'pull_request' }}
  71. env:
  72. cpython-versions: main
  73. test-set: both
  74. run: |
  75. echo "cpython-versions=${{env.cpython-versions}}" >> "$GITHUB_ENV"
  76. echo "test_set=${{env.test_set}}" >> "$GITHUB_ENV"
  77. - name: Make version array
  78. id: run
  79. run: |
  80. # Make a JSON Array from comma/space-separated string (no extra escaping)
  81. json_list() { \
  82. ret=""; IFS="${IFS},"; set -- $*; \
  83. for a in "$@"; do \
  84. ret=$(printf '%s"%s"' "${ret}${ret:+, }" "$a"); \
  85. done; \
  86. printf '[%s]' "$ret"; }
  87. tests="${{ inputs.test-set || env.test-set }}"
  88. [ $tests = both ] && tests="core download"
  89. printf 'test-set=%s\n' "$(json_list $tests)" >> "$GITHUB_OUTPUT"
  90. versions="${{ inputs.cpython-versions || env.cpython-versions }}"
  91. if [ "$versions" = all ]; then \
  92. versions="${{ env.all-cpython-versions }}"; else \
  93. versions="${{ env.main-cpython-versions }}"; \
  94. fi
  95. printf 'cpython-versions=%s\n' \
  96. "$(json_list ${versions}${versions:+, }${{ env.pypy-versions }})" >> "$GITHUB_OUTPUT"
  97. # versions with a special get-pip.py in a per-version subdirectory
  98. printf 'own-pip-versions=%s\n' \
  99. "$(json_list 2.6, 2.7, 3.2, 3.3, 3.4, 3.5, 3.6)" >> "$GITHUB_OUTPUT"
  100. tests:
  101. name: Run tests
  102. needs: select
  103. permissions:
  104. contents: read
  105. packages: write
  106. runs-on: ${{ matrix.os }}
  107. env:
  108. PIP: python -m pip
  109. PIP_DISABLE_PIP_VERSION_CHECK: true
  110. PIP_NO_PYTHON_VERSION_WARNING: true
  111. strategy:
  112. fail-fast: true
  113. matrix:
  114. os: [ubuntu-20.04]
  115. python-version: ${{ fromJSON(needs.select.outputs.cpython-versions) }}
  116. python-impl: [cpython]
  117. ytdl-test-set: ${{ fromJSON(needs.select.outputs.test-set) }}
  118. run-tests-ext: [sh]
  119. include:
  120. - os: windows-2019
  121. python-version: 3.4
  122. python-impl: cpython
  123. ytdl-test-set: ${{ contains(needs.select.outputs.test-set, 'core') && 'core' || 'nocore' }}
  124. run-tests-ext: bat
  125. - os: windows-2019
  126. python-version: 3.4
  127. python-impl: cpython
  128. ytdl-test-set: ${{ contains(needs.select.outputs.test-set, 'download') && 'download' || 'nodownload' }}
  129. run-tests-ext: bat
  130. # jython
  131. - os: ubuntu-20.04
  132. python-version: 2.7
  133. python-impl: jython
  134. ytdl-test-set: ${{ contains(needs.select.outputs.test-set, 'core') && 'core' || 'nocore' }}
  135. run-tests-ext: sh
  136. - os: ubuntu-20.04
  137. python-version: 2.7
  138. python-impl: jython
  139. ytdl-test-set: ${{ contains(needs.select.outputs.test-set, 'download') && 'download' || 'nodownload' }}
  140. run-tests-ext: sh
  141. steps:
  142. - name: Prepare Linux
  143. if: ${{ startswith(matrix.os, 'ubuntu') }}
  144. shell: bash
  145. run: |
  146. # apt in runner, if needed, may not be up-to-date
  147. sudo apt-get update
  148. - name: Checkout
  149. uses: actions/checkout@v3
  150. #-------- Python 3 -----
  151. - name: Set up supported Python ${{ matrix.python-version }}
  152. id: setup-python
  153. if: ${{ matrix.python-impl == 'cpython' && matrix.python-version != '2.6' && matrix.python-version != '2.7' && matrix.python-version != env.next }}
  154. # wrap broken actions/setup-python@v4
  155. # NB may run apt-get install in Linux
  156. uses: ytdl-org/setup-python@v1
  157. env:
  158. # Temporary workaround for Python 3.5 failures - May 2024
  159. PIP_TRUSTED_HOST: "pypi.python.org pypi.org files.pythonhosted.org"
  160. with:
  161. python-version: ${{ matrix.python-version }}
  162. cache-build: true
  163. allow-build: info
  164. - name: Locate supported Python ${{ matrix.python-version }}
  165. if: ${{ env.pythonLocation }}
  166. shell: bash
  167. run: |
  168. echo "PYTHONHOME=${pythonLocation}" >> "$GITHUB_ENV"
  169. export expected="${{ steps.setup-python.outputs.python-path }}"
  170. dirname() { printf '%s\n' \
  171. 'import os, sys' \
  172. 'print(os.path.dirname(sys.argv[1]))' \
  173. | ${expected} - "$1"; }
  174. expd="$(dirname "$expected")"
  175. export python="$(command -v python)"
  176. [ "$expd" = "$(dirname "$python")" ] || echo "PATH=$expd:${PATH}" >> "$GITHUB_ENV"
  177. [ -x "$python" ] || printf '%s\n' \
  178. 'import os' \
  179. 'exp = os.environ["expected"]' \
  180. 'python = os.environ["python"]' \
  181. 'exps = os.path.split(exp)' \
  182. 'if python and (os.path.dirname(python) == exp[0]):' \
  183. ' exit(0)' \
  184. 'exps[1] = "python" + os.path.splitext(exps[1])[1]' \
  185. 'python = os.path.join(*exps)' \
  186. 'try:' \
  187. ' os.symlink(exp, python)' \
  188. 'except AttributeError:' \
  189. ' os.rename(exp, python)' \
  190. | ${expected} -
  191. printf '%s\n' \
  192. 'import sys' \
  193. 'print(sys.path)' \
  194. | ${expected} -
  195. #-------- Python next (was 3.12) -
  196. - name: Set up CPython 3.next environment
  197. if: ${{ matrix.python-impl == 'cpython' && matrix.python-version == env.next }}
  198. shell: bash
  199. run: |
  200. PYENV_ROOT=$HOME/.local/share/pyenv
  201. echo "PYENV_ROOT=${PYENV_ROOT}" >> "$GITHUB_ENV"
  202. - name: Cache Python 3.next
  203. id: cachenext
  204. if: ${{ matrix.python-impl == 'cpython' && matrix.python-version == env.next }}
  205. uses: actions/cache@v3
  206. with:
  207. key: python-${{ env.next }}
  208. path: |
  209. ${{ env.PYENV_ROOT }}
  210. - name: Build and set up Python 3.next
  211. if: ${{ matrix.python-impl == 'cpython' && matrix.python-version == env.next && ! steps.cachenext.outputs.cache-hit }}
  212. # dl and build locally
  213. shell: bash
  214. run: |
  215. # Install build environment
  216. sudo apt-get install -y build-essential llvm libssl-dev tk-dev \
  217. libncursesw5-dev libreadline-dev libsqlite3-dev \
  218. libffi-dev xz-utils zlib1g-dev libbz2-dev liblzma-dev
  219. # Download PyEnv from its GitHub repository.
  220. export PYENV_ROOT=${{ env.PYENV_ROOT }}
  221. export PATH=$PYENV_ROOT/bin:$PATH
  222. git clone "https://github.com/pyenv/pyenv.git" "$PYENV_ROOT"
  223. pyenv install ${{ env.next }}
  224. - name: Locate Python 3.next
  225. if: ${{ matrix.python-impl == 'cpython' && matrix.python-version == env.next }}
  226. shell: bash
  227. run: |
  228. PYTHONHOME="$(echo "${{ env.PYENV_ROOT }}/versions/${{ env.next }}."*)"
  229. test -n "$PYTHONHOME"
  230. echo "PYTHONHOME=$PYTHONHOME" >> "$GITHUB_ENV"
  231. echo "PATH=${PYTHONHOME}/bin:$PATH" >> "$GITHUB_ENV"
  232. #-------- Python 2.7 --
  233. - name: Set up Python 2.7
  234. if: ${{ matrix.python-impl == 'cpython' && matrix.python-version == '2.7' }}
  235. # install 2.7
  236. shell: bash
  237. run: |
  238. sudo apt-get install -y python2 python-is-python2
  239. echo "PYTHONHOME=/usr" >> "$GITHUB_ENV"
  240. #-------- Python 2.6 --
  241. - name: Set up Python 2.6 environment
  242. if: ${{ matrix.python-impl == 'cpython' && matrix.python-version == '2.6' }}
  243. shell: bash
  244. run: |
  245. openssl_name=openssl-1.0.2u
  246. echo "openssl_name=${openssl_name}" >> "$GITHUB_ENV"
  247. openssl_dir=$HOME/.local/opt/$openssl_name
  248. echo "openssl_dir=${openssl_dir}" >> "$GITHUB_ENV"
  249. PYENV_ROOT=$HOME/.local/share/pyenv
  250. echo "PYENV_ROOT=${PYENV_ROOT}" >> "$GITHUB_ENV"
  251. sudo apt-get install -y openssl ca-certificates
  252. - name: Cache Python 2.6
  253. id: cache26
  254. if: ${{ matrix.python-version == '2.6' }}
  255. uses: actions/cache@v3
  256. with:
  257. key: python-2.6.9
  258. path: |
  259. ${{ env.openssl_dir }}
  260. ${{ env.PYENV_ROOT }}
  261. - name: Build and set up Python 2.6
  262. if: ${{ matrix.python-impl == 'cpython' && matrix.python-version == '2.6' && ! steps.cache26.outputs.cache-hit }}
  263. # dl and build locally
  264. shell: bash
  265. run: |
  266. # Install build environment
  267. sudo apt-get install -y build-essential llvm libssl-dev tk-dev \
  268. libncursesw5-dev libreadline-dev libsqlite3-dev \
  269. libffi-dev xz-utils zlib1g-dev libbz2-dev liblzma-dev
  270. # Download and install OpenSSL 1.0.2, back in time
  271. openssl_name=${{ env.openssl_name }}
  272. openssl_targz=${openssl_name}.tar.gz
  273. openssl_dir=${{ env.openssl_dir }}
  274. openssl_inc=$openssl_dir/include
  275. openssl_lib=$openssl_dir/lib
  276. openssl_ssl=$openssl_dir/ssl
  277. curl -L "https://www.openssl.org/source/$openssl_targz" -o $openssl_targz
  278. tar -xf $openssl_targz
  279. ( cd $openssl_name; \
  280. ./config --prefix=$openssl_dir --openssldir=${openssl_dir}/ssl \
  281. --libdir=lib -Wl,-rpath=${openssl_dir}/lib shared zlib-dynamic && \
  282. make && \
  283. make install )
  284. rm -rf $openssl_name
  285. rmdir $openssl_ssl/certs && ln -s /etc/ssl/certs $openssl_ssl/certs
  286. # Download PyEnv from its GitHub repository.
  287. export PYENV_ROOT=${{ env.PYENV_ROOT }}
  288. export PATH=$PYENV_ROOT/bin:$PATH
  289. git clone "https://github.com/pyenv/pyenv.git" "$PYENV_ROOT"
  290. # Prevent pyenv build trying (and failing) to update pip
  291. export GET_PIP=get-pip-2.6.py
  292. echo 'import sys; sys.exit(0)' > ${GET_PIP}
  293. GET_PIP=$(realpath $GET_PIP)
  294. # Build and install Python
  295. export CFLAGS="-I$openssl_inc"
  296. export LDFLAGS="-L$openssl_lib"
  297. export LD_LIBRARY_PATH="$openssl_lib"
  298. pyenv install 2.6.9
  299. - name: Locate Python 2.6
  300. if: ${{ matrix.python-impl == 'cpython' && matrix.python-version == '2.6' }}
  301. shell: bash
  302. run: |
  303. PYTHONHOME="${{ env.PYENV_ROOT }}/versions/2.6.9"
  304. echo "PYTHONHOME=$PYTHONHOME" >> "$GITHUB_ENV"
  305. echo "PATH=${PYTHONHOME}/bin:$PATH" >> "$GITHUB_ENV"
  306. echo "LD_LIBRARY_PATH=${{ env.openssl_dir }}/lib${LD_LIBRARY_PATH:+:}${LD_LIBRARY_PATH}" >> "$GITHUB_ENV"
  307. #-------- Jython ------
  308. - name: Set up Java 8
  309. if: ${{ matrix.python-impl == 'jython' }}
  310. uses: actions/setup-java@v3
  311. with:
  312. java-version: 8
  313. distribution: 'zulu'
  314. - name: Setup Jython environment
  315. if: ${{ matrix.python-impl == 'jython' }}
  316. shell: bash
  317. run: |
  318. echo "JYTHON_ROOT=${HOME}/jython" >> "$GITHUB_ENV"
  319. echo "PIP=pip" >> "$GITHUB_ENV"
  320. - name: Cache Jython
  321. id: cachejy
  322. if: ${{ matrix.python-impl == 'jython' && matrix.python-version == '2.7' }}
  323. uses: actions/cache@v3
  324. with:
  325. # 2.7.3 now available, may solve SNI issue
  326. key: jython-2.7.1
  327. path: |
  328. ${{ env.JYTHON_ROOT }}
  329. - name: Install Jython
  330. if: ${{ matrix.python-impl == 'jython' && matrix.python-version == '2.7' && ! steps.cachejy.outputs.cache-hit }}
  331. shell: bash
  332. run: |
  333. JYTHON_ROOT="${{ env.JYTHON_ROOT }}"
  334. curl -L "https://repo1.maven.org/maven2/org/python/jython-installer/2.7.1/jython-installer-2.7.1.jar" -o jython-installer.jar
  335. java -jar jython-installer.jar -s -d "${JYTHON_ROOT}"
  336. echo "${JYTHON_ROOT}/bin" >> "$GITHUB_PATH"
  337. - name: Set up cached Jython
  338. if: ${{ steps.cachejy.outputs.cache-hit }}
  339. shell: bash
  340. run: |
  341. JYTHON_ROOT="${{ env.JYTHON_ROOT }}"
  342. echo "${JYTHON_ROOT}/bin" >> $GITHUB_PATH
  343. - name: Install supporting Python 2.7 if possible
  344. if: ${{ steps.cachejy.outputs.cache-hit }}
  345. shell: bash
  346. run: |
  347. sudo apt-get install -y python2.7 || true
  348. #-------- pip ---------
  349. - name: Set up supported Python ${{ matrix.python-version }} pip
  350. if: ${{ (matrix.python-version != '3.2' && steps.setup-python.outputs.python-path) || matrix.python-version == '2.7' }}
  351. # This step may run in either Linux or Windows
  352. shell: bash
  353. run: |
  354. echo "$PATH"
  355. echo "$PYTHONHOME"
  356. # curl is available on both Windows and Linux, -L follows redirects, -O gets name
  357. python -m ensurepip || python -m pip --version || { \
  358. get_pip="${{ contains(needs.select.outputs.own-pip-versions, matrix.python-version) && format('{0}/', matrix.python-version) || '' }}"; \
  359. curl -L -O "https://bootstrap.pypa.io/pip/${get_pip}get-pip.py"; \
  360. python get-pip.py; }
  361. - name: Set up Python 2.6 pip
  362. if: ${{ matrix.python-version == '2.6' }}
  363. shell: bash
  364. run: |
  365. python -m pip --version || { \
  366. curl -L -O "https://bootstrap.pypa.io/pip/2.6/get-pip.py"; \
  367. curl -L -O "https://files.pythonhosted.org/packages/ac/95/a05b56bb975efa78d3557efa36acaf9cf5d2fd0ee0062060493687432e03/pip-9.0.3-py2.py3-none-any.whl"; \
  368. python get-pip.py --no-setuptools --no-wheel pip-9.0.3-py2.py3-none-any.whl; }
  369. # work-around to invoke pip module on 2.6: https://bugs.python.org/issue2751
  370. echo "PIP=python -m pip.__main__" >> "$GITHUB_ENV"
  371. - name: Set up other Python ${{ matrix.python-version }} pip
  372. if: ${{ matrix.python-version == '3.2' && steps.setup-python.outputs.python-path }}
  373. shell: bash
  374. run: |
  375. python -m pip --version || { \
  376. curl -L -O "https://bootstrap.pypa.io/pip/3.2/get-pip.py"; \
  377. curl -L -O "https://files.pythonhosted.org/packages/b2/d0/cd115fe345dd6f07ec1c780020a7dfe74966fceeb171e0f20d1d4905b0b7/pip-7.1.2-py2.py3-none-any.whl"; \
  378. python get-pip.py --no-setuptools --no-wheel pip-7.1.2-py2.py3-none-any.whl; }
  379. #-------- unittest ----
  380. - name: Upgrade Unittest for Python 2.6
  381. if: ${{ matrix.python-version == '2.6' }}
  382. shell: bash
  383. run: |
  384. # Work around deprecation of support for non-SNI clients at PyPI CDN (see https://status.python.org/incidents/hzmjhqsdjqgb)
  385. $PIP -qq show unittest2 || { \
  386. for u in "65/26/32b8464df2a97e6dd1b656ed26b2c194606c16fe163c695a992b36c11cdf/six-1.13.0-py2.py3-none-any.whl" \
  387. "f2/94/3af39d34be01a24a6e65433d19e107099374224905f1e0cc6bbe1fd22a2f/argparse-1.4.0-py2.py3-none-any.whl" \
  388. "c7/a3/c5da2a44c85bfbb6eebcfc1dde24933f8704441b98fdde6528f4831757a6/linecache2-1.0.0-py2.py3-none-any.whl" \
  389. "17/0a/6ac05a3723017a967193456a2efa0aa9ac4b51456891af1e2353bb9de21e/traceback2-1.4.0-py2.py3-none-any.whl" \
  390. "72/20/7f0f433060a962200b7272b8c12ba90ef5b903e218174301d0abfd523813/unittest2-1.1.0-py2.py3-none-any.whl"; do \
  391. curl -L -O "https://files.pythonhosted.org/packages/${u}"; \
  392. $PIP install ${u##*/}; \
  393. done; }
  394. # make tests use unittest2
  395. for test in ./test/test_*.py ./test/helper.py; do
  396. sed -r -i -e '/^import unittest$/s/test/test2 as unittest/' "$test"
  397. done
  398. #-------- nose --------
  399. - name: Install nose for Python ${{ matrix.python-version }}
  400. if: ${{ (matrix.python-version != '3.2' && steps.setup-python.outputs.python-path) || (matrix.python-impl == 'cpython' && (matrix.python-version == '2.7' || matrix.python-version == env.next)) }}
  401. shell: bash
  402. run: |
  403. echo "$PATH"
  404. echo "$PYTHONHOME"
  405. # Use PyNose for recent Pythons instead of Nose
  406. py3ver="${{ matrix.python-version }}"
  407. py3ver=${py3ver#3.}
  408. [ "$py3ver" != "${{ matrix.python-version }}" ] && py3ver=${py3ver%.*} || py3ver=0
  409. [ "$py3ver" -ge 9 ] && nose=pynose || nose=nose
  410. $PIP -qq show $nose || $PIP install $nose
  411. - name: Install nose for other Python 2
  412. if: ${{ matrix.python-impl == 'jython' || (matrix.python-impl == 'cpython' && matrix.python-version == '2.6') }}
  413. shell: bash
  414. run: |
  415. # Work around deprecation of support for non-SNI clients at PyPI CDN (see https://status.python.org/incidents/hzmjhqsdjqgb)
  416. $PIP -qq show nose || { \
  417. curl -L -O "https://files.pythonhosted.org/packages/99/4f/13fb671119e65c4dce97c60e67d3fd9e6f7f809f2b307e2611f4701205cb/nose-1.3.7-py2-none-any.whl"; \
  418. $PIP install nose-1.3.7-py2-none-any.whl; }
  419. - name: Install nose for other Python 3
  420. if: ${{ matrix.python-version == '3.2' && steps.setup-python.outputs.python-path }}
  421. shell: bash
  422. run: |
  423. $PIP -qq show nose || { \
  424. curl -L -O "https://files.pythonhosted.org/packages/15/d8/dd071918c040f50fa1cf80da16423af51ff8ce4a0f2399b7bf8de45ac3d9/nose-1.3.7-py3-none-any.whl"; \
  425. $PIP install nose-1.3.7-py3-none-any.whl; }
  426. - name: Set up nosetest test
  427. if: ${{ contains(needs.select.outputs.test-set, matrix.ytdl-test-set ) }}
  428. shell: bash
  429. run: |
  430. # set PYTHON_VER
  431. PYTHON_VER=${{ matrix.python-version }}
  432. [ "${PYTHON_VER#*-}" != "$PYTHON_VER" ] || PYTHON_VER="${{ matrix.python-impl }}-${PYTHON_VER}"
  433. echo "PYTHON_VER=$PYTHON_VER" >> "$GITHUB_ENV"
  434. echo "PYTHON_IMPL=${{ matrix.python-impl }}" >> "$GITHUB_ENV"
  435. # define a test to validate the Python version used by nosetests
  436. printf '%s\n' \
  437. 'from __future__ import unicode_literals' \
  438. 'import sys, os, platform' \
  439. 'try:' \
  440. ' import unittest2 as unittest' \
  441. 'except ImportError:' \
  442. ' import unittest' \
  443. 'class TestPython(unittest.TestCase):' \
  444. ' def setUp(self):' \
  445. ' self.ver = os.environ["PYTHON_VER"].split("-")' \
  446. ' def test_python_ver(self):' \
  447. ' self.assertEqual(["%d" % v for v in sys.version_info[:2]], self.ver[-1].split(".")[:2])' \
  448. ' self.assertTrue(sys.version.startswith(self.ver[-1]))' \
  449. ' self.assertIn(self.ver[0], ",".join((sys.version, platform.python_implementation())).lower())' \
  450. ' def test_python_impl(self):' \
  451. ' self.assertIn(platform.python_implementation().lower(), (os.environ["PYTHON_IMPL"], self.ver[0]))' \
  452. > test/test_python.py
  453. #-------- TESTS -------
  454. - name: Run tests
  455. if: ${{ contains(needs.select.outputs.test-set, matrix.ytdl-test-set ) }}
  456. continue-on-error: ${{ matrix.ytdl-test-set == 'download' || matrix.python-impl == 'jython' }}
  457. env:
  458. YTDL_TEST_SET: ${{ matrix.ytdl-test-set }}
  459. run: |
  460. ./devscripts/run_tests.${{ matrix.run-tests-ext }}
  461. flake8:
  462. name: Linter
  463. runs-on: ubuntu-latest
  464. steps:
  465. - uses: actions/checkout@v3
  466. - name: Set up Python
  467. uses: actions/setup-python@v4
  468. with:
  469. python-version: 3.9
  470. - name: Install flake8
  471. run: pip install flake8
  472. - name: Run flake8
  473. run: flake8 .