diff options
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | .travis.yml | 3 | ||||
| -rwxr-xr-x | devscripts/install_srelay.sh | 8 | ||||
| -rw-r--r-- | test/test_socks.py | 42 | 
4 files changed, 51 insertions, 3 deletions
diff --git a/.gitignore b/.gitignore index 0e7128551..d5f216b5f 100644 --- a/.gitignore +++ b/.gitignore @@ -36,3 +36,4 @@ test/local_parameters.json  youtube-dl.zsh  .idea  .idea/* +tmp/ diff --git a/.travis.yml b/.travis.yml index cc21fae8f..998995845 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,6 +7,9 @@ python:    - "3.4"    - "3.5"  sudo: false +install: +  - bash ./devscripts/install_srelay.sh +  - export PATH=$PATH:$(pwd)/tmp/srelay-0.4.8b6  script: nosetests test --verbose  notifications:    email: diff --git a/devscripts/install_srelay.sh b/devscripts/install_srelay.sh new file mode 100755 index 000000000..33ce8a3f7 --- /dev/null +++ b/devscripts/install_srelay.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +mkdir -p tmp && cd tmp +wget -N http://downloads.sourceforge.net/project/socks-relay/socks-relay/srelay-0.4.8/srelay-0.4.8b6.tar.gz +tar zxvf srelay-0.4.8b6.tar.gz +cd srelay-0.4.8b6 +./configure +make diff --git a/test/test_socks.py b/test/test_socks.py index 92574c6fd..dc9b8d276 100644 --- a/test/test_socks.py +++ b/test/test_socks.py @@ -8,11 +8,20 @@ import sys  import unittest  sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) -from test.helper import (FakeYDL, get_params) -from youtube_dl.compat import compat_urllib_request +import random +import subprocess +from test.helper import ( +    FakeYDL, +    get_params, +) +from youtube_dl.compat import ( +    compat_str, +    compat_urllib_request, +) -class TestSocks(unittest.TestCase): + +class TestMultipleSocks(unittest.TestCase):      @staticmethod      def _check_params(attrs):          params = get_params() @@ -67,5 +76,32 @@ class TestSocks(unittest.TestCase):              params['secondary_server_ip']) +class TestSocks(unittest.TestCase): +    def setUp(self): +        self.port = random.randint(49152, 65535) +        self.server_process = subprocess.Popen([ +            'srelay', '-f', '-i', '127.0.0.1:%d' % self.port], +            stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + +    def tearDown(self): +        self.server_process.terminate() +        self.server_process.communicate() + +    def _get_ip(self, protocol): +        ydl = FakeYDL({ +            'proxy': '%s://127.0.0.1:%d' % (protocol, self.port), +        }) +        return ydl.urlopen('http://yt-dl.org/ip').read().decode('utf-8') + +    def test_socks4(self): +        self.assertTrue(isinstance(self._get_ip('socks4'), compat_str)) + +    def test_socks4a(self): +        self.assertTrue(isinstance(self._get_ip('socks4a'), compat_str)) + +    def test_socks5(self): +        self.assertTrue(isinstance(self._get_ip('socks5'), compat_str)) + +  if __name__ == '__main__':      unittest.main()  | 
