diff options
| -rwxr-xr-x | devscripts/run_tests.sh | 4 | ||||
| -rw-r--r-- | test/test_download.py | 11 | 
2 files changed, 11 insertions, 4 deletions
| diff --git a/devscripts/run_tests.sh b/devscripts/run_tests.sh index 7f4c1e083..c60807215 100755 --- a/devscripts/run_tests.sh +++ b/devscripts/run_tests.sh @@ -3,6 +3,7 @@  DOWNLOAD_TESTS="age_restriction|download|subtitles|write_annotations|iqiyi_sdk_interpreter"  test_set="" +multiprocess_args=""  case "$YTDL_TEST_SET" in      core) @@ -10,10 +11,11 @@ case "$YTDL_TEST_SET" in      ;;      download)          test_set="-I test_(?!$DOWNLOAD_TESTS).+\.py" +        multiprocess_args="--processes=4 --process-timeout=540"      ;;      *)          break      ;;  esac -nosetests test --verbose $test_set +nosetests test --verbose $test_set $multiprocess_args diff --git a/test/test_download.py b/test/test_download.py index 463952989..30034f978 100644 --- a/test/test_download.py +++ b/test/test_download.py @@ -65,6 +65,10 @@ defs = gettestcases()  class TestDownload(unittest.TestCase): +    # Parallel testing in nosetests. See +    # http://nose.readthedocs.org/en/latest/doc_tests/test_multiprocess/multiprocess.html +    _multiprocess_shared_ = True +      maxDiff = None      def setUp(self): @@ -73,7 +77,7 @@ class TestDownload(unittest.TestCase):  # Dynamically generate tests -def generator(test_case): +def generator(test_case, tname):      def test_template(self):          ie = youtube_dl.extractor.get_info_extractor(test_case['name']) @@ -102,6 +106,7 @@ def generator(test_case):                  return          params = get_params(test_case.get('params', {})) +        params['outtmpl'] = tname + '_' + params['outtmpl']          if is_playlist and 'playlist' not in test_case:              params.setdefault('extract_flat', 'in_playlist')              params.setdefault('skip_download', True) @@ -146,7 +151,7 @@ def generator(test_case):                          raise                      if try_num == RETRIES: -                        report_warning('Failed due to network errors, skipping...') +                        report_warning('%s failed due to network errors, skipping...' % tname)                          return                      print('Retrying: {0} failed tries\n\n##########\n\n'.format(try_num)) @@ -221,12 +226,12 @@ def generator(test_case):  # And add them to TestDownload  for n, test_case in enumerate(defs): -    test_method = generator(test_case)      tname = 'test_' + str(test_case['name'])      i = 1      while hasattr(TestDownload, tname):          tname = 'test_%s_%d' % (test_case['name'], i)          i += 1 +    test_method = generator(test_case, tname)      test_method.__name__ = str(tname)      setattr(TestDownload, test_method.__name__, test_method)      del test_method | 
