blob: cb6c35065cfe8f8a75617d87ebf71527b534891b [file] [log] [blame]
Max Rasskazova8db7a92015-05-30 02:23:43 +03001#-*- coding: utf-8 -*-
2
Max Rasskazov64f77bf2015-06-02 15:22:48 +03003import logging
Max Rasskazova8db7a92015-05-30 02:23:43 +03004import unittest
5import yaml
6
Max Rasskazov64f77bf2015-06-02 15:22:48 +03007import rsync_url
8
9
10logging.basicConfig(level='INFO')
11logger = logging.getLogger('TestRsyncUrl')
12
Max Rasskazova8db7a92015-05-30 02:23:43 +030013
14class TestRsyncUrl(unittest.TestCase):
15
Max Rasskazov64f77bf2015-06-02 15:22:48 +030016 def log_locals(self, url):
17 if url.match:
18 logger.info('RE: "{}"'.format(url.match.pattern))
19 logger.info('user "{}", host "{}", port "{}", module "{}", '
20 'path "{}"'.format(url.user, url.host, url.port,
21 url.module, url.path))
22
Max Rasskazova8db7a92015-05-30 02:23:43 +030023 def exact_match_num(self, remote, expected_result):
Max Rasskazov64f77bf2015-06-02 15:22:48 +030024 logger.info('"{}" - {}'.format(remote, expected_result))
Max Rasskazova8db7a92015-05-30 02:23:43 +030025 url = rsync_url.RsyncUrl(remote)
Max Rasskazov64f77bf2015-06-02 15:22:48 +030026 self.log_locals(url)
Max Rasskazova8db7a92015-05-30 02:23:43 +030027 matching_regexps = url._get_all_matching_regexps()
28 self.assertEqual(len(matching_regexps), expected_result)
29
30 def classed(self, remote, expected_result):
Max Rasskazov64f77bf2015-06-02 15:22:48 +030031 logger.info('"{}" - {}'.format(remote, expected_result))
Max Rasskazova8db7a92015-05-30 02:23:43 +030032 url = rsync_url.RsyncUrl(remote)
Max Rasskazov64f77bf2015-06-02 15:22:48 +030033 self.log_locals(url)
Max Rasskazova8db7a92015-05-30 02:23:43 +030034 self.assertEqual(url.url_type, expected_result)
35
36 def parsed(self, remote, expected_result):
Max Rasskazov64f77bf2015-06-02 15:22:48 +030037 logger.info('"{}" - {}'.format(remote, expected_result))
Max Rasskazova8db7a92015-05-30 02:23:43 +030038 url = rsync_url.RsyncUrl(remote)
Max Rasskazov64f77bf2015-06-02 15:22:48 +030039 self.log_locals(url)
Max Rasskazova8db7a92015-05-30 02:23:43 +030040 self.assertEqual(
Max Rasskazov64f77bf2015-06-02 15:22:48 +030041 [url.user, url.host, url.path],
Max Rasskazova8db7a92015-05-30 02:23:43 +030042 expected_result
43 )
44
Max Rasskazov64f77bf2015-06-02 15:22:48 +030045 def parsed_rsync(self, remote, expected_result):
46 logger.info('"{}" - {}'.format(remote, expected_result))
47 url = rsync_url.RsyncUrl(remote)
48 self.log_locals(url)
49 self.assertEqual(
50 [url.user, url.host, url.port, url.module, url.path],
51 expected_result
52 )
53
54 def valid(self, remote, expected_result):
55 logger.info('"{}" - {}'.format(remote, expected_result))
56 url = rsync_url.RsyncUrl(remote)
57 self.log_locals(url)
58 self.assertEqual(url.is_valid, expected_result)
59
60 def url(self, remote, expected_result):
61 logger.info('"{}" - {}'.format(remote, expected_result))
62 url = rsync_url.RsyncUrl(remote)
63 self.log_locals(url)
64 self.assertEqual(url.url, expected_result)
Max Rasskazova8db7a92015-05-30 02:23:43 +030065
66testdata = yaml.load(open('test_rsync_url.yaml'))
67
68index = 1
69for remote, tests in testdata.items():
70
71 for test, expected in tests.items():
72
73 print index, test, expected
74
75 def test_function(self, test=test,
76 remote=remote, expected_result=expected):
77 getattr(self, test)(remote, expected_result)
78
79 test_function.__name__ = \
Max Rasskazov64f77bf2015-06-02 15:22:48 +030080 'test_rsync_url_{}_{}_{}'.format(index, tests['classed'], test)
Max Rasskazova8db7a92015-05-30 02:23:43 +030081 test_function.__doc__ = test_function.__name__
82 setattr(TestRsyncUrl, test_function.__name__, test_function)
83 del test_function
84
85 index += 1
86
87
88if __name__ == '__main__':
89 unittest.main()