Browse Source

[test_unicode_literals] Arm unicode_literals check

From now on, the line

from __future__ import unicode_literals

should be contained in every single Python file lest we run into any more 2.x/3.x issues.
Going forward, we're likely to develop on 3.x only and would likely miss subtle bugs otherwise.
master
Philipp Hagemeister 10 years ago
parent
commit
dcddc10a50
23 changed files with 42 additions and 14 deletions
  1. 2
      devscripts/bash-completion.py
  2. 1
      devscripts/check-porn.py
  3. 1
      devscripts/gh-pages/add-version.py
  4. 2
      devscripts/gh-pages/generate-download.py
  5. 4
      devscripts/gh-pages/sign-versions.py
  6. 4
      devscripts/gh-pages/update-copyright.py
  7. 1
      devscripts/gh-pages/update-feed.py
  8. 1
      devscripts/gh-pages/update-sites.py
  9. 2
      devscripts/make_readme.py
  10. 1
      devscripts/prepare_manpage.py
  11. 2
      devscripts/zsh-completion.py
  12. 13
      test/test_unicode_literals.py
  13. 1
      test/test_write_annotations.py
  14. 7
      test/test_write_info_json.py
  15. 1
      test/test_youtube_lists.py
  16. 1
      youtube_dl/__main__.py
  17. 2
      youtube_dl/aes.py
  18. 2
      youtube_dl/extractor/__init__.py
  19. 2
      youtube_dl/extractor/bambuser.py
  20. 1
      youtube_dl/postprocessor/__init__.py
  21. 2
      youtube_dl/postprocessor/common.py
  22. 2
      youtube_dl/postprocessor/xattrpp.py
  23. 1
      youtube_dl/version.py

2
devscripts/bash-completion.py

@ -1,4 +1,6 @@
#!/usr/bin/env python
from __future__ import unicode_literals
import os
from os.path import dirname as dirn
import sys

1
devscripts/check-porn.py

@ -1,4 +1,5 @@
#!/usr/bin/env python
from __future__ import unicode_literals
"""
This script employs a VERY basic heuristic ('porn' in webpage.lower()) to check

1
devscripts/gh-pages/add-version.py

@ -1,4 +1,5 @@
#!/usr/bin/env python3
from __future__ import unicode_literals
import json
import sys

2
devscripts/gh-pages/generate-download.py

@ -1,4 +1,6 @@
#!/usr/bin/env python3
from __future__ import unicode_literals
import hashlib
import urllib.request
import json

4
devscripts/gh-pages/sign-versions.py

@ -1,4 +1,5 @@
#!/usr/bin/env python3
from __future__ import unicode_literals, with_statement
import rsa
import json
@ -29,4 +30,5 @@ signature = hexlify(rsa.pkcs1.sign(json.dumps(versions_info, sort_keys=True).enc
print('signature: ' + signature)
versions_info['signature'] = signature
json.dump(versions_info, open('update/versions.json', 'w'), indent=4, sort_keys=True)
with open('update/versions.json', 'w') as versionsf:
json.dump(versions_info, versionsf, indent=4, sort_keys=True)

4
devscripts/gh-pages/update-copyright.py

@ -1,7 +1,7 @@
#!/usr/bin/env python
# coding: utf-8
from __future__ import with_statement
from __future__ import with_statement, unicode_literals
import datetime
import glob
@ -13,7 +13,7 @@ year = str(datetime.datetime.now().year)
for fn in glob.glob('*.html*'):
with io.open(fn, encoding='utf-8') as f:
content = f.read()
newc = re.sub(u'(?P<copyright>Copyright © 2006-)(?P<year>[0-9]{4})', u'Copyright © 2006-' + year, content)
newc = re.sub(r'(?P<copyright>Copyright © 2006-)(?P<year>[0-9]{4})', 'Copyright © 2006-' + year, content)
if content != newc:
tmpFn = fn + '.part'
with io.open(tmpFn, 'wt', encoding='utf-8') as outf:

1
devscripts/gh-pages/update-feed.py

@ -1,4 +1,5 @@
#!/usr/bin/env python3
from __future__ import unicode_literals
import datetime
import io

1
devscripts/gh-pages/update-sites.py

@ -1,4 +1,5 @@
#!/usr/bin/env python3
from __future__ import unicode_literals
import sys
import os

2
devscripts/make_readme.py

@ -1,3 +1,5 @@
from __future__ import unicode_literals
import io
import sys
import re

1
devscripts/prepare_manpage.py

@ -1,3 +1,4 @@
from __future__ import unicode_literals
import io
import os.path

2
devscripts/zsh-completion.py

@ -1,4 +1,6 @@
#!/usr/bin/env python
from __future__ import unicode_literals
import os
from os.path import dirname as dirn
import sys

13
test/test_unicode_literals.py

@ -9,14 +9,13 @@ rootDir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
IGNORED_FILES = [
'setup.py', # http://bugs.python.org/issue13943
'conf.py',
'buildserver.py',
]
class TestUnicodeLiterals(unittest.TestCase):
def test_all_files(self):
print('Skipping this test (not yet fully implemented)')
return
for dirpath, _, filenames in os.walk(rootDir):
for basename in filenames:
if not basename.endswith('.py'):
@ -30,10 +29,10 @@ class TestUnicodeLiterals(unittest.TestCase):
if "'" not in code and '"' not in code:
continue
imps = 'from __future__ import unicode_literals'
self.assertTrue(
imps in code,
' %s missing in %s' % (imps, fn))
self.assertRegexpMatches(
code,
r'(?:#.*\n*)?from __future__ import (?:[a-z_]+,\s*)*unicode_literals',
'unicode_literals import missing in %s' % fn)
m = re.search(r'(?<=\s)u[\'"](?!\)|,|$)', code)
if m is not None:

1
test/test_write_annotations.py

@ -1,5 +1,6 @@
#!/usr/bin/env python
# coding: utf-8
from __future__ import unicode_literals
# Allow direct execution
import os

7
test/test_write_info_json.py

@ -1,5 +1,6 @@
#!/usr/bin/env python
# coding: utf-8
from __future__ import unicode_literals
# Allow direct execution
import os
@ -32,7 +33,7 @@ params = get_params({
TEST_ID = 'BaW_jenozKc'
INFO_JSON_FILE = TEST_ID + '.info.json'
DESCRIPTION_FILE = TEST_ID + '.mp4.description'
EXPECTED_DESCRIPTION = u'''test chars: "'/\ä↭𝕐
EXPECTED_DESCRIPTION = '''test chars: "'/\ä↭𝕐
test URL: https://github.com/rg3/youtube-dl/issues/1892
This is a test video for youtube-dl.
@ -53,11 +54,11 @@ class TestInfoJSON(unittest.TestCase):
self.assertTrue(os.path.exists(INFO_JSON_FILE))
with io.open(INFO_JSON_FILE, 'r', encoding='utf-8') as jsonf:
jd = json.load(jsonf)
self.assertEqual(jd['upload_date'], u'20121002')
self.assertEqual(jd['upload_date'], '20121002')
self.assertEqual(jd['description'], EXPECTED_DESCRIPTION)
self.assertEqual(jd['id'], TEST_ID)
self.assertEqual(jd['extractor'], 'youtube')
self.assertEqual(jd['title'], u'''youtube-dl test video "'/\ä↭𝕐''')
self.assertEqual(jd['title'], '''youtube-dl test video "'/\ä↭𝕐''')
self.assertEqual(jd['uploader'], 'Philipp Hagemeister')
self.assertTrue(os.path.exists(DESCRIPTION_FILE))

1
test/test_youtube_lists.py

@ -1,4 +1,5 @@
#!/usr/bin/env python
from __future__ import unicode_literals
# Allow direct execution
import os

1
youtube_dl/__main__.py

@ -1,4 +1,5 @@
#!/usr/bin/env python
from __future__ import unicode_literals
# Execute with
# $ python youtube_dl/__main__.py (2.6+)

2
youtube_dl/aes.py

@ -1,3 +1,5 @@
from __future__ import unicode_literals
__all__ = ['aes_encrypt', 'key_expansion', 'aes_ctr_decrypt', 'aes_cbc_decrypt', 'aes_decrypt_text']
import base64

2
youtube_dl/extractor/__init__.py

@ -1,3 +1,5 @@
from __future__ import unicode_literals
from .abc import ABCIE
from .academicearth import AcademicEarthCourseIE
from .addanime import AddAnimeIE

2
youtube_dl/extractor/bambuser.py

@ -18,7 +18,7 @@ class BambuserIE(InfoExtractor):
_TEST = {
'url': 'http://bambuser.com/v/4050584',
# MD5 seems to be flaky, see https://travis-ci.org/rg3/youtube-dl/jobs/14051016#L388
# u'md5': 'fba8f7693e48fd4e8641b3fd5539a641',
# 'md5': 'fba8f7693e48fd4e8641b3fd5539a641',
'info_dict': {
'id': '4050584',
'ext': 'flv',

1
youtube_dl/postprocessor/__init__.py

@ -1,3 +1,4 @@
from __future__ import unicode_literals
from .atomicparsley import AtomicParsleyPP
from .ffmpeg import (

2
youtube_dl/postprocessor/common.py

@ -1,3 +1,5 @@
from __future__ import unicode_literals
from ..utils import PostProcessingError

2
youtube_dl/postprocessor/xattrpp.py

@ -1,3 +1,5 @@
from __future__ import unicode_literals
import os
import subprocess
import sys

1
youtube_dl/version.py

@ -1,2 +1,3 @@
from __future__ import unicode_literals
__version__ = '2014.11.26'
Loading…
Cancel
Save