hbmartin commited on
Commit
e707f93
·
1 Parent(s): 3ffc2f4

test for RegexMatchError

Browse files
pytube/cipher.py CHANGED
@@ -34,7 +34,7 @@ def get_initial_function_name(js: str) -> str:
34
  Function name from regex match
35
  """
36
 
37
- pattern = [
38
  r"\b[cs]\s*&&\s*[adf]\.set\([^,]+\s*,\s*encodeURIComponent\s*\(\s*(?P<sig>[a-zA-Z0-9$]+)\(", # noqa: E501
39
  r"\b[a-zA-Z0-9]+\s*&&\s*[a-zA-Z0-9]+\.set\([^,]+\s*,\s*encodeURIComponent\s*\(\s*(?P<sig>[a-zA-Z0-9$]+)\(", # noqa: E501
40
  r'(?P<sig>[a-zA-Z0-9$]+)\s*=\s*function\(\s*a\s*\)\s*{\s*a\s*=\s*a\.split\(\s*""\s*\)', # noqa: E501
@@ -49,8 +49,8 @@ def get_initial_function_name(js: str) -> str:
49
  ]
50
 
51
  logger.debug("finding initial function name")
52
- for p in pattern:
53
- regex = re.compile(p)
54
  results = regex.search(js)
55
  if results:
56
  logger.debug("finished regex search, matched: {pattern}".format(pattern=p))
 
34
  Function name from regex match
35
  """
36
 
37
+ function_patterns = [
38
  r"\b[cs]\s*&&\s*[adf]\.set\([^,]+\s*,\s*encodeURIComponent\s*\(\s*(?P<sig>[a-zA-Z0-9$]+)\(", # noqa: E501
39
  r"\b[a-zA-Z0-9]+\s*&&\s*[a-zA-Z0-9]+\.set\([^,]+\s*,\s*encodeURIComponent\s*\(\s*(?P<sig>[a-zA-Z0-9$]+)\(", # noqa: E501
40
  r'(?P<sig>[a-zA-Z0-9$]+)\s*=\s*function\(\s*a\s*\)\s*{\s*a\s*=\s*a\.split\(\s*""\s*\)', # noqa: E501
 
49
  ]
50
 
51
  logger.debug("finding initial function name")
52
+ for pattern in function_patterns:
53
+ regex = re.compile(pattern)
54
  results = regex.search(js)
55
  if results:
56
  logger.debug("finished regex search, matched: {pattern}".format(pattern=p))
pytube/exceptions.py CHANGED
@@ -1,6 +1,5 @@
1
  # -*- coding: utf-8 -*-
2
  """Library specific exception definitions."""
3
- import sys
4
  from typing import Union, Pattern
5
 
6
 
@@ -27,7 +26,7 @@ class RegexMatchError(ExtractError):
27
  :param str pattern:
28
  Pattern that failed to match
29
  """
30
- super(ExtractError, self).__init__(
31
  "{caller}: could not find match for {pattern}".format(
32
  caller=caller, pattern=pattern
33
  )
@@ -48,11 +47,8 @@ class VideoUnavailable(PytubeError):
48
  :param str video_id:
49
  A YouTube video identifier.
50
  """
51
- super(PytubeError, self).__init__(
52
- "{video_id} is unavailable".format(video_id=video_id)
53
- )
54
 
55
- self.exc_info = sys.exc_info()
56
  self.video_id = video_id
57
 
58
 
 
1
  # -*- coding: utf-8 -*-
2
  """Library specific exception definitions."""
 
3
  from typing import Union, Pattern
4
 
5
 
 
26
  :param str pattern:
27
  Pattern that failed to match
28
  """
29
+ super().__init__(
30
  "{caller}: could not find match for {pattern}".format(
31
  caller=caller, pattern=pattern
32
  )
 
47
  :param str video_id:
48
  A YouTube video identifier.
49
  """
50
+ super().__init__("{video_id} is unavailable".format(video_id=video_id))
 
 
51
 
 
52
  self.video_id = video_id
53
 
54
 
tests/test_exceptions.py CHANGED
@@ -1,9 +1,17 @@
1
  # -*- coding: utf-8 -*-
2
- from pytube.exceptions import VideoUnavailable
3
 
4
 
5
- def test_is_expected():
6
  try:
7
  raise VideoUnavailable(video_id="YLnZklYFe7E")
8
  except VideoUnavailable as e:
9
  assert e.video_id == "YLnZklYFe7E"
 
 
 
 
 
 
 
 
 
1
  # -*- coding: utf-8 -*-
2
+ from pytube.exceptions import VideoUnavailable, RegexMatchError
3
 
4
 
5
+ def test_video_unavailable():
6
  try:
7
  raise VideoUnavailable(video_id="YLnZklYFe7E")
8
  except VideoUnavailable as e:
9
  assert e.video_id == "YLnZklYFe7E"
10
+ assert str(e) == "YLnZklYFe7E is unavailable"
11
+
12
+
13
+ def test_regex_match_error():
14
+ try:
15
+ raise RegexMatchError(caller="hello", pattern="*")
16
+ except RegexMatchError as e:
17
+ assert str(e) == "hello: could not find match for *"
tests/test_extract.py CHANGED
@@ -80,4 +80,4 @@ def test_mime_type_codec():
80
 
81
  def test_mime_type_codec_with_no_match_should_error():
82
  with pytest.raises(RegexMatchError):
83
- mime_type, mime_subtype = extract.mime_type_codec("audio/webm")
 
80
 
81
  def test_mime_type_codec_with_no_match_should_error():
82
  with pytest.raises(RegexMatchError):
83
+ extract.mime_type_codec("audio/webm")