mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-30 22:25:19 +00:00 
			
		
		
		
	[test] Use pytest instead of nosetests (#482)
				
					
				
			`nosetests` is no longer being maintained : https://github.com/nose-devs/nose/issues/1099 and will stop working in py 3.10 as can be seen in #480
This commit is contained in:
		
							
								
								
									
										8
									
								
								.github/workflows/core.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								.github/workflows/core.yml
									
									
									
									
										vendored
									
									
								
							| @@ -23,11 +23,9 @@ jobs: | |||||||
|       uses: actions/setup-python@v2 |       uses: actions/setup-python@v2 | ||||||
|       with: |       with: | ||||||
|         python-version: ${{ matrix.python-version }} |         python-version: ${{ matrix.python-version }} | ||||||
|     - name: Install nose |     - name: Install pytest | ||||||
|       run: pip install nose |       run: pip install pytest | ||||||
|     - name: Run tests |     - name: Run tests | ||||||
|       continue-on-error: False |       continue-on-error: False | ||||||
|       env: |       run: ./devscripts/run_tests.${{ matrix.run-tests-ext }} core | ||||||
|         YTDL_TEST_SET: core |  | ||||||
|       run: ./devscripts/run_tests.${{ matrix.run-tests-ext }} |  | ||||||
|   # Linter is in quick-test |   # Linter is in quick-test | ||||||
|   | |||||||
							
								
								
									
										8
									
								
								.github/workflows/download.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								.github/workflows/download.yml
									
									
									
									
										vendored
									
									
								
							| @@ -21,10 +21,8 @@ jobs: | |||||||
|       uses: actions/setup-python@v2 |       uses: actions/setup-python@v2 | ||||||
|       with: |       with: | ||||||
|         python-version: ${{ matrix.python-version }} |         python-version: ${{ matrix.python-version }} | ||||||
|     - name: Install nose |     - name: Install pytest | ||||||
|       run: pip install nose |       run: pip install pytest | ||||||
|     - name: Run tests |     - name: Run tests | ||||||
|       continue-on-error: true |       continue-on-error: true | ||||||
|       env: |       run: ./devscripts/run_tests.${{ matrix.run-tests-ext }} download | ||||||
|         YTDL_TEST_SET: download |  | ||||||
|       run: ./devscripts/run_tests.${{ matrix.run-tests-ext }} |  | ||||||
|   | |||||||
							
								
								
									
										8
									
								
								.github/workflows/quick-test.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								.github/workflows/quick-test.yml
									
									
									
									
										vendored
									
									
								
							| @@ -12,11 +12,9 @@ jobs: | |||||||
|       with: |       with: | ||||||
|         python-version: 3.9 |         python-version: 3.9 | ||||||
|     - name: Install test requirements |     - name: Install test requirements | ||||||
|       run: pip install nose pycryptodome |       run: pip install pytest pycryptodome | ||||||
|     - name: Run tests |     - name: Run tests | ||||||
|       env: |       run: ./devscripts/run_tests.sh core | ||||||
|         YTDL_TEST_SET: core |  | ||||||
|       run: ./devscripts/run_tests.sh |  | ||||||
|   flake8: |   flake8: | ||||||
|     name: Linter |     name: Linter | ||||||
|     if: "!contains(github.event.head_commit.message, 'ci skip all')" |     if: "!contains(github.event.head_commit.message, 'ci skip all')" | ||||||
| @@ -30,4 +28,4 @@ jobs: | |||||||
|     - name: Install flake8 |     - name: Install flake8 | ||||||
|       run: pip install flake8 |       run: pip install flake8 | ||||||
|     - name: Run flake8 |     - name: Run flake8 | ||||||
|       run: flake8 . |       run: flake8 . | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -45,6 +45,7 @@ cookies.txt | |||||||
| # Python | # Python | ||||||
| *.pyc | *.pyc | ||||||
| *.pyo | *.pyo | ||||||
|  | .pytest_cache | ||||||
| wine-py2exe/ | wine-py2exe/ | ||||||
| py2exe.log | py2exe.log | ||||||
| build/ | build/ | ||||||
| @@ -79,6 +80,7 @@ README.txt | |||||||
| *.tar.gz | *.tar.gz | ||||||
| *.zsh | *.zsh | ||||||
| *.spec | *.spec | ||||||
|  | test/testdata/player-*.js | ||||||
|  |  | ||||||
| # Binary | # Binary | ||||||
| /youtube-dl | /youtube-dl | ||||||
|   | |||||||
| @@ -81,16 +81,17 @@ To run the test, simply invoke your favorite test runner, or execute a test file | |||||||
|     python -m unittest discover |     python -m unittest discover | ||||||
|     python test/test_download.py |     python test/test_download.py | ||||||
|     nosetests |     nosetests | ||||||
|  |     pytest | ||||||
|  |  | ||||||
| See item 6 of [new extractor tutorial](#adding-support-for-a-new-site) for how to run extractor specific test cases. | See item 6 of [new extractor tutorial](#adding-support-for-a-new-site) for how to run extractor specific test cases. | ||||||
|  |  | ||||||
| If you want to create a build of youtube-dl yourself, you'll need | If you want to create a build of youtube-dl yourself, you'll need | ||||||
|  |  | ||||||
| * python | * python3 | ||||||
| * make (only GNU make is supported) | * make (only GNU make is supported) | ||||||
| * pandoc | * pandoc | ||||||
| * zip | * zip | ||||||
| * nosetests | * pytest | ||||||
|  |  | ||||||
| ### Adding support for a new site | ### Adding support for a new site | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										18
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								Makefile
									
									
									
									
									
								
							| @@ -13,7 +13,7 @@ pypi-files: AUTHORS Changelog.md LICENSE README.md README.txt supportedsites com | |||||||
| .PHONY: all clean install test tar pypi-files completions ot offlinetest codetest supportedsites | .PHONY: all clean install test tar pypi-files completions ot offlinetest codetest supportedsites | ||||||
|  |  | ||||||
| clean-test: | clean-test: | ||||||
| 	rm -rf *.dump *.part* *.ytdl *.info.json *.mp4 *.m4a *.flv *.mp3 *.avi *.mkv *.webm *.3gp *.wav *.ape *.swf *.jpg *.png *.frag *.frag.urls *.frag.aria2 | 	rm -rf *.dump *.part* *.ytdl *.info.json *.mp4 *.m4a *.flv *.mp3 *.avi *.mkv *.webm *.3gp *.wav *.ape *.swf *.jpg *.png *.frag *.frag.urls *.frag.aria2 test/testdata/player-*.js | ||||||
| clean-dist: | clean-dist: | ||||||
| 	rm -rf yt-dlp.1.temp.md yt-dlp.1 README.txt MANIFEST build/ dist/ .coverage cover/ yt-dlp.tar.gz completions/ yt_dlp/extractor/lazy_extractors.py *.spec CONTRIBUTING.md.tmp yt-dlp yt-dlp.exe yt_dlp.egg-info/ AUTHORS .mailmap | 	rm -rf yt-dlp.1.temp.md yt-dlp.1 README.txt MANIFEST build/ dist/ .coverage cover/ yt-dlp.tar.gz completions/ yt_dlp/extractor/lazy_extractors.py *.spec CONTRIBUTING.md.tmp yt-dlp yt-dlp.exe yt_dlp.egg-info/ AUTHORS .mailmap | ||||||
| clean-cache: | clean-cache: | ||||||
| @@ -49,23 +49,11 @@ codetest: | |||||||
| 	flake8 . | 	flake8 . | ||||||
|  |  | ||||||
| test: | test: | ||||||
| 	#nosetests --with-coverage --cover-package=yt_dlp --cover-html --verbose --processes 4 test | 	$(PYTHON) -m pytest | ||||||
| 	nosetests --verbose test |  | ||||||
| 	$(MAKE) codetest | 	$(MAKE) codetest | ||||||
|  |  | ||||||
| # Keep this list in sync with devscripts/run_tests.sh |  | ||||||
| offlinetest: codetest | offlinetest: codetest | ||||||
| 	$(PYTHON) -m nose --verbose test \ | 	$(PYTHON) -m pytest -k "not download" | ||||||
| 		--exclude test_age_restriction.py \ |  | ||||||
| 		--exclude test_download.py \ |  | ||||||
| 		--exclude test_iqiyi_sdk_interpreter.py \ |  | ||||||
| 		--exclude test_overwrites.py \ |  | ||||||
| 		--exclude test_socks.py \ |  | ||||||
| 		--exclude test_subtitles.py \ |  | ||||||
| 		--exclude test_write_annotations.py \ |  | ||||||
| 		--exclude test_youtube_lists.py \ |  | ||||||
| 		--exclude test_youtube_signature.py \ |  | ||||||
| 		--exclude test_post_hooks.py |  | ||||||
|  |  | ||||||
| yt-dlp: yt_dlp/*.py yt_dlp/*/*.py | yt-dlp: yt_dlp/*.py yt_dlp/*/*.py | ||||||
| 	mkdir -p zip | 	mkdir -p zip | ||||||
|   | |||||||
| @@ -215,7 +215,7 @@ You can also build the executable without any version info or metadata by using: | |||||||
| Note that pyinstaller [does not support](https://github.com/pyinstaller/pyinstaller#requirements-and-tested-platforms) Python installed from the Windows store without using a virtual environment | Note that pyinstaller [does not support](https://github.com/pyinstaller/pyinstaller#requirements-and-tested-platforms) Python installed from the Windows store without using a virtual environment | ||||||
|  |  | ||||||
| **For Unix**: | **For Unix**: | ||||||
| You will need the required build tools: `python`, `make` (GNU), `pandoc`, `zip`, `nosetests`   | You will need the required build tools: `python`, `make` (GNU), `pandoc`, `zip`, `pytest`   | ||||||
| Then simply run `make`. You can also run `make yt-dlp` instead to compile only the binary without updating any of the additional files | Then simply run `make`. You can also run `make yt-dlp` instead to compile only the binary without updating any of the additional files | ||||||
|  |  | ||||||
| **Note**: In either platform, `devscripts\update-version.py` can be used to automatically update the version number | **Note**: In either platform, `devscripts\update-version.py` can be used to automatically update the version number | ||||||
|   | |||||||
| @@ -1,17 +1,16 @@ | |||||||
|  | @setlocal | ||||||
| @echo off | @echo off | ||||||
|  | cd /d %~dp0.. | ||||||
|  |  | ||||||
| rem Keep this list in sync with the `offlinetest` target in Makefile | if ["%~1"]==[""] ( | ||||||
| set DOWNLOAD_TESTS="age_restriction^|download^|iqiyi_sdk_interpreter^|socks^|subtitles^|write_annotations^|youtube_lists^|youtube_signature^|post_hooks" |     set "test_set=" | ||||||
|  | ) else if ["%~1"]==["core"] ( | ||||||
| if "%YTDL_TEST_SET%" == "core" ( |     set "test_set=-k "not download"" | ||||||
|     set test_set="-I test_("%DOWNLOAD_TESTS%")\.py" | ) else if ["%~1"]==["download"] ( | ||||||
|     set multiprocess_args="" |     set "test_set=-k download" | ||||||
| ) else if "%YTDL_TEST_SET%" == "download" ( |  | ||||||
|     set test_set="-I test_(?!"%DOWNLOAD_TESTS%").+\.py" |  | ||||||
|     set multiprocess_args="--processes=4 --process-timeout=540" |  | ||||||
| ) else ( | ) else ( | ||||||
|     echo YTDL_TEST_SET is not set or invalid |     echo.Invalid test type "%~1". Use "core" ^| "download" | ||||||
|     exit /b 1 |     exit /b 1 | ||||||
| ) | ) | ||||||
|  |  | ||||||
| nosetests test --verbose %test_set:"=% %multiprocess_args:"=% | pytest %test_set% | ||||||
|   | |||||||
| @@ -1,22 +1,15 @@ | |||||||
| #!/bin/bash | #!/bin/sh | ||||||
|  |  | ||||||
| # Keep this list in sync with the `offlinetest` target in Makefile | if [ -z $1 ]; then | ||||||
| DOWNLOAD_TESTS="age_restriction|download|iqiyi_sdk_interpreter|overwrites|socks|subtitles|write_annotations|youtube_lists|youtube_signature|post_hooks" |     test_set='test' | ||||||
|  | elif [ $1 = 'core' ]; then | ||||||
|  |     test_set='not download' | ||||||
|  | elif [ $1 = 'download' ]; then | ||||||
|  |     test_set='download' | ||||||
|  | else | ||||||
|  |     echo 'Invalid test type "'$1'". Use "core" | "download"' | ||||||
|  |     exit 1 | ||||||
|  | fi | ||||||
|  |  | ||||||
| test_set="" | echo python3 -m pytest -k $test_set | ||||||
| multiprocess_args="" | python3 -m pytest -k "$test_set" | ||||||
|  |  | ||||||
| case "$YTDL_TEST_SET" in |  | ||||||
|     core) |  | ||||||
|         test_set="-I test_($DOWNLOAD_TESTS)\.py" |  | ||||||
|     ;; |  | ||||||
|     download) |  | ||||||
|         test_set="-I test_(?!$DOWNLOAD_TESTS).+\.py" |  | ||||||
|         multiprocess_args="--processes=4 --process-timeout=540" |  | ||||||
|     ;; |  | ||||||
|     *) |  | ||||||
|         break |  | ||||||
|     ;; |  | ||||||
| esac |  | ||||||
|  |  | ||||||
| nosetests test --verbose $test_set $multiprocess_args |  | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								pytest.ini
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								pytest.ini
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | [pytest] | ||||||
|  | addopts = -ra -v --strict-markers | ||||||
|  | markers = | ||||||
|  |     download | ||||||
| @@ -22,6 +22,14 @@ from yt_dlp.utils import ( | |||||||
| ) | ) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | if "pytest" in sys.modules: | ||||||
|  |     import pytest | ||||||
|  |     is_download_test = pytest.mark.download | ||||||
|  | else: | ||||||
|  |     def is_download_test(testClass): | ||||||
|  |         return testClass | ||||||
|  |  | ||||||
|  |  | ||||||
| def get_params(override=None): | def get_params(override=None): | ||||||
|     PARAMETERS_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), |     PARAMETERS_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), | ||||||
|                                    "parameters.json") |                                    "parameters.json") | ||||||
|   | |||||||
| @@ -35,13 +35,13 @@ class InfoExtractorTestRequestHandler(compat_http_server.BaseHTTPRequestHandler) | |||||||
|             assert False |             assert False | ||||||
|  |  | ||||||
|  |  | ||||||
| class TestIE(InfoExtractor): | class DummyIE(InfoExtractor): | ||||||
|     pass |     pass | ||||||
|  |  | ||||||
|  |  | ||||||
| class TestInfoExtractor(unittest.TestCase): | class TestInfoExtractor(unittest.TestCase): | ||||||
|     def setUp(self): |     def setUp(self): | ||||||
|         self.ie = TestIE(FakeYDL()) |         self.ie = DummyIE(FakeYDL()) | ||||||
|  |  | ||||||
|     def test_ie_key(self): |     def test_ie_key(self): | ||||||
|         self.assertEqual(get_info_extractor(YoutubeIE.ie_key()), YoutubeIE) |         self.assertEqual(get_info_extractor(YoutubeIE.ie_key()), YoutubeIE) | ||||||
|   | |||||||
| @@ -7,8 +7,7 @@ import sys | |||||||
| import unittest | import unittest | ||||||
| sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | ||||||
|  |  | ||||||
| from test.helper import try_rm | from test.helper import try_rm, is_download_test | ||||||
|  |  | ||||||
|  |  | ||||||
| from yt_dlp import YoutubeDL | from yt_dlp import YoutubeDL | ||||||
|  |  | ||||||
| @@ -32,6 +31,7 @@ def _download_restricted(url, filename, age): | |||||||
|     return res |     return res | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @is_download_test | ||||||
| class TestAgeRestriction(unittest.TestCase): | class TestAgeRestriction(unittest.TestCase): | ||||||
|     def _assert_restricted(self, url, filename, age, old_age=None): |     def _assert_restricted(self, url, filename, age, old_age=None): | ||||||
|         self.assertTrue(_download_restricted(url, filename, old_age)) |         self.assertTrue(_download_restricted(url, filename, old_age)) | ||||||
|   | |||||||
| @@ -10,12 +10,13 @@ sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | |||||||
|  |  | ||||||
| from test.helper import ( | from test.helper import ( | ||||||
|     assertGreaterEqual, |     assertGreaterEqual, | ||||||
|  |     expect_info_dict, | ||||||
|     expect_warnings, |     expect_warnings, | ||||||
|     get_params, |     get_params, | ||||||
|     gettestcases, |     gettestcases, | ||||||
|     expect_info_dict, |     is_download_test, | ||||||
|     try_rm, |  | ||||||
|     report_warning, |     report_warning, | ||||||
|  |     try_rm, | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -64,6 +65,7 @@ def _file_md5(fn): | |||||||
| defs = gettestcases() | defs = gettestcases() | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @is_download_test | ||||||
| class TestDownload(unittest.TestCase): | class TestDownload(unittest.TestCase): | ||||||
|     # Parallel testing in nosetests. See |     # Parallel testing in nosetests. See | ||||||
|     # http://nose.readthedocs.org/en/latest/doc_tests/test_multiprocess/multiprocess.html |     # http://nose.readthedocs.org/en/latest/doc_tests/test_multiprocess/multiprocess.html | ||||||
|   | |||||||
| @@ -8,7 +8,7 @@ import sys | |||||||
| import unittest | import unittest | ||||||
| sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | ||||||
|  |  | ||||||
| from test.helper import FakeYDL | from test.helper import FakeYDL, is_download_test | ||||||
| from yt_dlp.extractor import IqiyiIE | from yt_dlp.extractor import IqiyiIE | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -31,6 +31,7 @@ class WarningLogger(object): | |||||||
|         pass |         pass | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @is_download_test | ||||||
| class TestIqiyiSDKInterpreter(unittest.TestCase): | class TestIqiyiSDKInterpreter(unittest.TestCase): | ||||||
|     def test_iqiyi_sdk_interpreter(self): |     def test_iqiyi_sdk_interpreter(self): | ||||||
|         ''' |         ''' | ||||||
|   | |||||||
| @@ -7,7 +7,7 @@ import sys | |||||||
| import unittest | import unittest | ||||||
| sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | ||||||
|  |  | ||||||
| from test.helper import get_params, try_rm | from test.helper import get_params, try_rm, is_download_test | ||||||
| import yt_dlp.YoutubeDL | import yt_dlp.YoutubeDL | ||||||
| from yt_dlp.utils import DownloadError | from yt_dlp.utils import DownloadError | ||||||
|  |  | ||||||
| @@ -22,6 +22,7 @@ TEST_ID = 'gr51aVj-mLg' | |||||||
| EXPECTED_NAME = 'gr51aVj-mLg' | EXPECTED_NAME = 'gr51aVj-mLg' | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @is_download_test | ||||||
| class TestPostHooks(unittest.TestCase): | class TestPostHooks(unittest.TestCase): | ||||||
|     def setUp(self): |     def setUp(self): | ||||||
|         self.stored_name_1 = None |         self.stored_name_1 = None | ||||||
|   | |||||||
| @@ -14,6 +14,7 @@ import subprocess | |||||||
| from test.helper import ( | from test.helper import ( | ||||||
|     FakeYDL, |     FakeYDL, | ||||||
|     get_params, |     get_params, | ||||||
|  |     is_download_test, | ||||||
| ) | ) | ||||||
| from yt_dlp.compat import ( | from yt_dlp.compat import ( | ||||||
|     compat_str, |     compat_str, | ||||||
| @@ -21,6 +22,7 @@ from yt_dlp.compat import ( | |||||||
| ) | ) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @is_download_test | ||||||
| class TestMultipleSocks(unittest.TestCase): | class TestMultipleSocks(unittest.TestCase): | ||||||
|     @staticmethod |     @staticmethod | ||||||
|     def _check_params(attrs): |     def _check_params(attrs): | ||||||
| @@ -76,6 +78,7 @@ class TestMultipleSocks(unittest.TestCase): | |||||||
|             params['secondary_server_ip']) |             params['secondary_server_ip']) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @is_download_test | ||||||
| class TestSocks(unittest.TestCase): | class TestSocks(unittest.TestCase): | ||||||
|     _SKIP_SOCKS_TEST = True |     _SKIP_SOCKS_TEST = True | ||||||
|  |  | ||||||
|   | |||||||
| @@ -7,7 +7,7 @@ import sys | |||||||
| import unittest | import unittest | ||||||
| sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | ||||||
|  |  | ||||||
| from test.helper import FakeYDL, md5 | from test.helper import FakeYDL, md5, is_download_test | ||||||
|  |  | ||||||
|  |  | ||||||
| from yt_dlp.extractor import ( | from yt_dlp.extractor import ( | ||||||
| @@ -30,6 +30,7 @@ from yt_dlp.extractor import ( | |||||||
| ) | ) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @is_download_test | ||||||
| class BaseTestSubtitles(unittest.TestCase): | class BaseTestSubtitles(unittest.TestCase): | ||||||
|     url = None |     url = None | ||||||
|     IE = None |     IE = None | ||||||
| @@ -55,6 +56,7 @@ class BaseTestSubtitles(unittest.TestCase): | |||||||
|         return dict((l, sub_info['data']) for l, sub_info in subtitles.items()) |         return dict((l, sub_info['data']) for l, sub_info in subtitles.items()) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @is_download_test | ||||||
| class TestYoutubeSubtitles(BaseTestSubtitles): | class TestYoutubeSubtitles(BaseTestSubtitles): | ||||||
|     url = 'QRS8MkLhQmM' |     url = 'QRS8MkLhQmM' | ||||||
|     IE = YoutubeIE |     IE = YoutubeIE | ||||||
| @@ -111,6 +113,7 @@ class TestYoutubeSubtitles(BaseTestSubtitles): | |||||||
|         self.assertFalse(subtitles) |         self.assertFalse(subtitles) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @is_download_test | ||||||
| class TestDailymotionSubtitles(BaseTestSubtitles): | class TestDailymotionSubtitles(BaseTestSubtitles): | ||||||
|     url = 'http://www.dailymotion.com/video/xczg00' |     url = 'http://www.dailymotion.com/video/xczg00' | ||||||
|     IE = DailymotionIE |     IE = DailymotionIE | ||||||
| @@ -134,6 +137,7 @@ class TestDailymotionSubtitles(BaseTestSubtitles): | |||||||
|         self.assertFalse(subtitles) |         self.assertFalse(subtitles) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @is_download_test | ||||||
| class TestTedSubtitles(BaseTestSubtitles): | class TestTedSubtitles(BaseTestSubtitles): | ||||||
|     url = 'http://www.ted.com/talks/dan_dennett_on_our_consciousness.html' |     url = 'http://www.ted.com/talks/dan_dennett_on_our_consciousness.html' | ||||||
|     IE = TEDIE |     IE = TEDIE | ||||||
| @@ -149,6 +153,7 @@ class TestTedSubtitles(BaseTestSubtitles): | |||||||
|             self.assertTrue(subtitles.get(lang) is not None, 'Subtitles for \'%s\' not extracted' % lang) |             self.assertTrue(subtitles.get(lang) is not None, 'Subtitles for \'%s\' not extracted' % lang) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @is_download_test | ||||||
| class TestVimeoSubtitles(BaseTestSubtitles): | class TestVimeoSubtitles(BaseTestSubtitles): | ||||||
|     url = 'http://vimeo.com/76979871' |     url = 'http://vimeo.com/76979871' | ||||||
|     IE = VimeoIE |     IE = VimeoIE | ||||||
| @@ -170,6 +175,7 @@ class TestVimeoSubtitles(BaseTestSubtitles): | |||||||
|         self.assertFalse(subtitles) |         self.assertFalse(subtitles) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @is_download_test | ||||||
| class TestWallaSubtitles(BaseTestSubtitles): | class TestWallaSubtitles(BaseTestSubtitles): | ||||||
|     url = 'http://vod.walla.co.il/movie/2705958/the-yes-men' |     url = 'http://vod.walla.co.il/movie/2705958/the-yes-men' | ||||||
|     IE = WallaIE |     IE = WallaIE | ||||||
| @@ -191,6 +197,7 @@ class TestWallaSubtitles(BaseTestSubtitles): | |||||||
|         self.assertFalse(subtitles) |         self.assertFalse(subtitles) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @is_download_test | ||||||
| class TestCeskaTelevizeSubtitles(BaseTestSubtitles): | class TestCeskaTelevizeSubtitles(BaseTestSubtitles): | ||||||
|     url = 'http://www.ceskatelevize.cz/ivysilani/10600540290-u6-uzasny-svet-techniky' |     url = 'http://www.ceskatelevize.cz/ivysilani/10600540290-u6-uzasny-svet-techniky' | ||||||
|     IE = CeskaTelevizeIE |     IE = CeskaTelevizeIE | ||||||
| @@ -212,6 +219,7 @@ class TestCeskaTelevizeSubtitles(BaseTestSubtitles): | |||||||
|         self.assertFalse(subtitles) |         self.assertFalse(subtitles) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @is_download_test | ||||||
| class TestLyndaSubtitles(BaseTestSubtitles): | class TestLyndaSubtitles(BaseTestSubtitles): | ||||||
|     url = 'http://www.lynda.com/Bootstrap-tutorials/Using-exercise-files/110885/114408-4.html' |     url = 'http://www.lynda.com/Bootstrap-tutorials/Using-exercise-files/110885/114408-4.html' | ||||||
|     IE = LyndaIE |     IE = LyndaIE | ||||||
| @@ -224,6 +232,7 @@ class TestLyndaSubtitles(BaseTestSubtitles): | |||||||
|         self.assertEqual(md5(subtitles['en']), '09bbe67222259bed60deaa26997d73a7') |         self.assertEqual(md5(subtitles['en']), '09bbe67222259bed60deaa26997d73a7') | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @is_download_test | ||||||
| class TestNPOSubtitles(BaseTestSubtitles): | class TestNPOSubtitles(BaseTestSubtitles): | ||||||
|     url = 'http://www.npo.nl/nos-journaal/28-08-2014/POW_00722860' |     url = 'http://www.npo.nl/nos-journaal/28-08-2014/POW_00722860' | ||||||
|     IE = NPOIE |     IE = NPOIE | ||||||
| @@ -236,6 +245,7 @@ class TestNPOSubtitles(BaseTestSubtitles): | |||||||
|         self.assertEqual(md5(subtitles['nl']), 'fc6435027572b63fb4ab143abd5ad3f4') |         self.assertEqual(md5(subtitles['nl']), 'fc6435027572b63fb4ab143abd5ad3f4') | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @is_download_test | ||||||
| class TestMTVSubtitles(BaseTestSubtitles): | class TestMTVSubtitles(BaseTestSubtitles): | ||||||
|     url = 'http://www.cc.com/video-clips/p63lk0/adam-devine-s-house-party-chasing-white-swans' |     url = 'http://www.cc.com/video-clips/p63lk0/adam-devine-s-house-party-chasing-white-swans' | ||||||
|     IE = ComedyCentralIE |     IE = ComedyCentralIE | ||||||
| @@ -251,6 +261,7 @@ class TestMTVSubtitles(BaseTestSubtitles): | |||||||
|         self.assertEqual(md5(subtitles['en']), '78206b8d8a0cfa9da64dc026eea48961') |         self.assertEqual(md5(subtitles['en']), '78206b8d8a0cfa9da64dc026eea48961') | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @is_download_test | ||||||
| class TestNRKSubtitles(BaseTestSubtitles): | class TestNRKSubtitles(BaseTestSubtitles): | ||||||
|     url = 'http://tv.nrk.no/serie/ikke-gjoer-dette-hjemme/DMPV73000411/sesong-2/episode-1' |     url = 'http://tv.nrk.no/serie/ikke-gjoer-dette-hjemme/DMPV73000411/sesong-2/episode-1' | ||||||
|     IE = NRKTVIE |     IE = NRKTVIE | ||||||
| @@ -263,6 +274,7 @@ class TestNRKSubtitles(BaseTestSubtitles): | |||||||
|         self.assertEqual(md5(subtitles['no']), '544fa917d3197fcbee64634559221cc2') |         self.assertEqual(md5(subtitles['no']), '544fa917d3197fcbee64634559221cc2') | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @is_download_test | ||||||
| class TestRaiPlaySubtitles(BaseTestSubtitles): | class TestRaiPlaySubtitles(BaseTestSubtitles): | ||||||
|     IE = RaiPlayIE |     IE = RaiPlayIE | ||||||
|  |  | ||||||
| @@ -283,6 +295,7 @@ class TestRaiPlaySubtitles(BaseTestSubtitles): | |||||||
|         self.assertEqual(md5(subtitles['it']), '4b3264186fbb103508abe5311cfcb9cd') |         self.assertEqual(md5(subtitles['it']), '4b3264186fbb103508abe5311cfcb9cd') | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @is_download_test | ||||||
| class TestVikiSubtitles(BaseTestSubtitles): | class TestVikiSubtitles(BaseTestSubtitles): | ||||||
|     url = 'http://www.viki.com/videos/1060846v-punch-episode-18' |     url = 'http://www.viki.com/videos/1060846v-punch-episode-18' | ||||||
|     IE = VikiIE |     IE = VikiIE | ||||||
| @@ -295,6 +308,7 @@ class TestVikiSubtitles(BaseTestSubtitles): | |||||||
|         self.assertEqual(md5(subtitles['en']), '53cb083a5914b2d84ef1ab67b880d18a') |         self.assertEqual(md5(subtitles['en']), '53cb083a5914b2d84ef1ab67b880d18a') | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @is_download_test | ||||||
| class TestThePlatformSubtitles(BaseTestSubtitles): | class TestThePlatformSubtitles(BaseTestSubtitles): | ||||||
|     # from http://www.3playmedia.com/services-features/tools/integrations/theplatform/ |     # from http://www.3playmedia.com/services-features/tools/integrations/theplatform/ | ||||||
|     # (see http://theplatform.com/about/partners/type/subtitles-closed-captioning/) |     # (see http://theplatform.com/about/partners/type/subtitles-closed-captioning/) | ||||||
| @@ -309,6 +323,7 @@ class TestThePlatformSubtitles(BaseTestSubtitles): | |||||||
|         self.assertEqual(md5(subtitles['en']), '97e7670cbae3c4d26ae8bcc7fdd78d4b') |         self.assertEqual(md5(subtitles['en']), '97e7670cbae3c4d26ae8bcc7fdd78d4b') | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @is_download_test | ||||||
| class TestThePlatformFeedSubtitles(BaseTestSubtitles): | class TestThePlatformFeedSubtitles(BaseTestSubtitles): | ||||||
|     url = 'http://feed.theplatform.com/f/7wvmTC/msnbc_video-p-test?form=json&pretty=true&range=-40&byGuid=n_hardball_5biden_140207' |     url = 'http://feed.theplatform.com/f/7wvmTC/msnbc_video-p-test?form=json&pretty=true&range=-40&byGuid=n_hardball_5biden_140207' | ||||||
|     IE = ThePlatformFeedIE |     IE = ThePlatformFeedIE | ||||||
| @@ -321,6 +336,7 @@ class TestThePlatformFeedSubtitles(BaseTestSubtitles): | |||||||
|         self.assertEqual(md5(subtitles['en']), '48649a22e82b2da21c9a67a395eedade') |         self.assertEqual(md5(subtitles['en']), '48649a22e82b2da21c9a67a395eedade') | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @is_download_test | ||||||
| class TestRtveSubtitles(BaseTestSubtitles): | class TestRtveSubtitles(BaseTestSubtitles): | ||||||
|     url = 'http://www.rtve.es/alacarta/videos/los-misterios-de-laura/misterios-laura-capitulo-32-misterio-del-numero-17-2-parte/2428621/' |     url = 'http://www.rtve.es/alacarta/videos/los-misterios-de-laura/misterios-laura-capitulo-32-misterio-del-numero-17-2-parte/2428621/' | ||||||
|     IE = RTVEALaCartaIE |     IE = RTVEALaCartaIE | ||||||
| @@ -335,6 +351,7 @@ class TestRtveSubtitles(BaseTestSubtitles): | |||||||
|         self.assertEqual(md5(subtitles['es']), '69e70cae2d40574fb7316f31d6eb7fca') |         self.assertEqual(md5(subtitles['es']), '69e70cae2d40574fb7316f31d6eb7fca') | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @is_download_test | ||||||
| class TestDemocracynowSubtitles(BaseTestSubtitles): | class TestDemocracynowSubtitles(BaseTestSubtitles): | ||||||
|     url = 'http://www.democracynow.org/shows/2015/7/3' |     url = 'http://www.democracynow.org/shows/2015/7/3' | ||||||
|     IE = DemocracynowIE |     IE = DemocracynowIE | ||||||
|   | |||||||
| @@ -8,7 +8,7 @@ import sys | |||||||
| import unittest | import unittest | ||||||
| sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | ||||||
|  |  | ||||||
| from test.helper import get_params, try_rm | from test.helper import get_params, try_rm, is_download_test | ||||||
|  |  | ||||||
|  |  | ||||||
| import io | import io | ||||||
| @@ -38,6 +38,7 @@ ANNOTATIONS_FILE = TEST_ID + '.annotations.xml' | |||||||
| EXPECTED_ANNOTATIONS = ['Speech bubble', 'Note', 'Title', 'Spotlight', 'Label'] | EXPECTED_ANNOTATIONS = ['Speech bubble', 'Note', 'Title', 'Spotlight', 'Label'] | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @is_download_test | ||||||
| class TestAnnotations(unittest.TestCase): | class TestAnnotations(unittest.TestCase): | ||||||
|     def setUp(self): |     def setUp(self): | ||||||
|         # Clear old files |         # Clear old files | ||||||
|   | |||||||
| @@ -7,7 +7,7 @@ import sys | |||||||
| import unittest | import unittest | ||||||
| sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | ||||||
|  |  | ||||||
| from test.helper import FakeYDL | from test.helper import FakeYDL, is_download_test | ||||||
|  |  | ||||||
|  |  | ||||||
| from yt_dlp.extractor import ( | from yt_dlp.extractor import ( | ||||||
| @@ -17,6 +17,7 @@ from yt_dlp.extractor import ( | |||||||
| ) | ) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @is_download_test | ||||||
| class TestYoutubeLists(unittest.TestCase): | class TestYoutubeLists(unittest.TestCase): | ||||||
|     def assertIsPlaylist(self, info): |     def assertIsPlaylist(self, info): | ||||||
|         """Make sure the info has '_type' set to 'playlist'""" |         """Make sure the info has '_type' set to 'playlist'""" | ||||||
|   | |||||||
| @@ -12,7 +12,7 @@ import io | |||||||
| import re | import re | ||||||
| import string | import string | ||||||
|  |  | ||||||
| from test.helper import FakeYDL | from test.helper import FakeYDL, is_download_test | ||||||
| from yt_dlp.extractor import YoutubeIE | from yt_dlp.extractor import YoutubeIE | ||||||
| from yt_dlp.compat import compat_str, compat_urlretrieve | from yt_dlp.compat import compat_str, compat_urlretrieve | ||||||
|  |  | ||||||
| @@ -65,6 +65,7 @@ _TESTS = [ | |||||||
| ] | ] | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @is_download_test | ||||||
| class TestPlayerInfo(unittest.TestCase): | class TestPlayerInfo(unittest.TestCase): | ||||||
|     def test_youtube_extract_player_info(self): |     def test_youtube_extract_player_info(self): | ||||||
|         PLAYER_URLS = ( |         PLAYER_URLS = ( | ||||||
| @@ -87,6 +88,7 @@ class TestPlayerInfo(unittest.TestCase): | |||||||
|             self.assertEqual(player_id, expected_player_id) |             self.assertEqual(player_id, expected_player_id) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @is_download_test | ||||||
| class TestSignature(unittest.TestCase): | class TestSignature(unittest.TestCase): | ||||||
|     def setUp(self): |     def setUp(self): | ||||||
|         TEST_DIR = os.path.dirname(os.path.abspath(__file__)) |         TEST_DIR = os.path.dirname(os.path.abspath(__file__)) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 pukkandan
					pukkandan