[test_all_urls] Add support for distributed URL matching test definition
authorPhilipp Hagemeister <phihag@phihag.de>
Sat, 19 Apr 2014 17:41:06 +0000 (19:41 +0200)
committerPhilipp Hagemeister <phihag@phihag.de>
Sat, 19 Apr 2014 17:41:06 +0000 (19:41 +0200)
test/helper.py
test/test_all_urls.py
youtube_dl/extractor/extremetube.py
youtube_dl/extractor/ign.py
youtube_dl/extractor/yahoo.py

index 8739f816c148729158bf9859a8569e9167846d7f..09873aea33c3815dcd56e8acf992156dbbb5974e 100644 (file)
@@ -74,13 +74,19 @@ class FakeYDL(YoutubeDL):
             old_report_warning(message)
         self.report_warning = types.MethodType(report_warning, self)
 
-def gettestcases():
+
+def gettestcases(include_onlymatching=False):
     for ie in youtube_dl.extractor.gen_extractors():
         t = getattr(ie, '_TEST', None)
         if t:
-            t['name'] = type(ie).__name__[:-len('IE')]
-            yield t
-        for t in getattr(ie, '_TESTS', []):
+            assert not hasattr(ie, '_TESTS'), \
+                '%s has _TEST and _TESTS' % type(ie).__name__
+            tests = [t]
+        else:
+            tests = getattr(ie, '_TESTS', [])
+        for t in tests:
+            if not include_onlymatching and getattr(t, 'only_matching', False):
+                continue
             t['name'] = type(ie).__name__[:-len('IE')]
             yield t
 
index a9c4ed9e3d4f8a2386038ab5ab87d46b805dbb9e..4b56137cebb63287e4410959c091b09b6ffd785b 100644 (file)
@@ -106,7 +106,7 @@ class TestAllURLsMatching(unittest.TestCase):
 
     def test_no_duplicates(self):
         ies = gen_extractors()
-        for tc in gettestcases():
+        for tc in gettestcases(include_onlymatching=True):
             url = tc['url']
             for ie in ies:
                 if type(ie).__name__ in ('GenericIE', tc['name'] + 'IE'):
@@ -176,5 +176,6 @@ class TestAllURLsMatching(unittest.TestCase):
             'https://screen.yahoo.com/smartwatches-latest-wearable-gadgets-163745379-cbs.html',
             ['Yahoo'])
 
+
 if __name__ == '__main__':
     unittest.main()
index d7fc432877842c27b2d44e0c3150b8edcd9dd394..7612a03645065d227b61569ab50c210dbbe04dfd 100644 (file)
@@ -10,7 +10,7 @@ from ..utils import (
 
 class ExtremeTubeIE(InfoExtractor):
     _VALID_URL = r'^(?:https?://)?(?:www\.)?(?P<url>extremetube\.com/.*?video/.+?(?P<videoid>[0-9]+))(?:[/?&]|$)'
-    _TEST = {
+    _TESTS = [{
         u'url': u'http://www.extremetube.com/video/music-video-14-british-euro-brit-european-cumshots-swallow-652431',
         u'file': u'652431.mp4',
         u'md5': u'1fb9228f5e3332ec8c057d6ac36f33e0',
@@ -19,7 +19,10 @@ class ExtremeTubeIE(InfoExtractor):
             u"uploader": u"unknown",
             u"age_limit": 18,
         }
-    }
+    }, {
+        'url': 'http://www.extremetube.com/gay/video/abcde-1234',
+        'only_matching': True,
+    }]
 
     def _real_extract(self, url):
         mobj = re.match(self._VALID_URL, url)
index cfeaa41463a9fdd1d3bf72acb51333e8932fc6f5..1f42c6d3a957674aa7bb2ee4ee3d56dac43cd2f8 100644 (file)
@@ -106,7 +106,7 @@ class OneUPIE(IGNIE):
 
     _DESCRIPTION_RE = r'<div id="vid_summary">(.+?)</div>'
 
-    _TEST = {
+    _TESTS = [{
         'url': 'http://gamevideos.1up.com/video/id/34976',
         'md5': '68a54ce4ebc772e4b71e3123d413163d',
         'info_dict': {
@@ -115,10 +115,7 @@ class OneUPIE(IGNIE):
             'title': 'Sniper Elite V2 - Trailer',
             'description': 'md5:5d289b722f5a6d940ca3136e9dae89cf',
         }
-    }
-
-    # Override IGN tests
-    _TESTS = []
+    }]
 
     def _real_extract(self, url):
         mobj = re.match(self._VALID_URL, url)
index e2cf1ae5603c6ff32480eb0db07ece09b7ff6baf..4671f49ed0dfee9378f1b66405ccde54df649b89 100644 (file)
@@ -104,7 +104,7 @@ class YahooNewsIE(YahooIE):
     IE_NAME = 'yahoo:news'
     _VALID_URL = r'http://news\.yahoo\.com/video/.*?-(?P<id>\d*?)\.html'
 
-    _TEST = {
+    _TESTS = [{
         'url': 'http://news.yahoo.com/video/china-moses-crazy-blues-104538833.html',
         'md5': '67010fdf3a08d290e060a4dd96baa07b',
         'info_dict': {
@@ -113,10 +113,7 @@ class YahooNewsIE(YahooIE):
             'title': 'China Moses Is Crazy About the Blues',
             'description': 'md5:9900ab8cd5808175c7b3fe55b979bed0',
         },
-    }
-
-    # Overwrite YahooIE properties we don't want
-    _TESTS = []
+    }]
 
     def _real_extract(self, url):
         mobj = re.match(self._VALID_URL, url)