diff --git a/client/djrandom_client/client.py b/client/djrandom_client/client.py index ce005cc5ef51d31cc8467dd3af6be7e7171b63c9..3a15226a8ce6d759243a00cc9e5c4fb21a297b4b 100644 --- a/client/djrandom_client/client.py +++ b/client/djrandom_client/client.py @@ -15,13 +15,16 @@ from djrandom_client import utils from djrandom_client import throttle # Detect platform and selectively enable inotify/fsevents watchers. -watcher_support = True -if platform.system() == 'Darwin': - import djrandom_client.osx_watcher as watcher -elif platform.system() == 'Linux': - import djrandom_client.linux_watcher as watcher -else: - watcher_support = False +watcher_support = False +try: + if platform.system() == 'Darwin': + import djrandom_client.osx_watcher as watcher + watcher_support = True + elif platform.system() == 'Linux': + import djrandom_client.linux_watcher as watcher + watcher_support = True +except ImportError: + pass log = logging.getLogger(__name__) diff --git a/client/djrandom_client/test/test_client.py b/client/djrandom_client/test/test_client.py index 90b1ed6f2e804d73a03ea21095400ac201411062..55a38eca1784fa098c3e0f655a9b960a351ae81b 100644 --- a/client/djrandom_client/test/test_client.py +++ b/client/djrandom_client/test/test_client.py @@ -114,6 +114,7 @@ class ClientWithConfigFileTest(ClientRunner, mox.MoxTestBase): client.run_client, CompareTuple(mox.IsA(str), mox.IsA(str), + [], 'KEY', None, 10, True)) @@ -145,6 +146,7 @@ class ClientOptionsTest(ClientRunner, mox.MoxTestBase): client.run_client, CompareTuple(mox.IsA(str), mox.IsA(str), + [], 'KEY', None, 0, True)) @@ -157,6 +159,7 @@ class ClientOptionsTest(ClientRunner, mox.MoxTestBase): client.run_client, CompareTuple('http://server/receiver', '/my/music', + [], 'KEY', True, 10, False)) @@ -165,24 +168,6 @@ class ClientOptionsTest(ClientRunner, mox.MoxTestBase): '--music_dir=/my/music', '--bwlimit=10', '--once', '--no_realtime_watch']) - def test_music_path_expands_tilde(self): - utils.check_version().AndReturn(False) - - def music_dir_does_not_start_with_tilde(music_dir): - return not music_dir.startswith('~') - - daemonize.daemonize(mox.IgnoreArg(), - client.run_client, - CompareTuple('http://server/receiver', - mox.Func(music_dir_does_not_start_with_tilde), - 'KEY', - True, 10, False)) - - self.mox.ReplayAll() - self._Run(['--api_key=KEY', '--server_url=http://server/receiver', - '--music_dir=~/music', '--bwlimit=10', - '--once', '--no_realtime_watch']) - class RunClientTest(mox.MoxTestBase): @@ -195,7 +180,7 @@ class RunClientTest(mox.MoxTestBase): uploader = self.mox.CreateMock(upload.Uploader) self.mox.StubOutWithMock(upload, 'Uploader', use_mock_anything=True) - upload.Uploader('http://server/receiver', 'KEY').AndReturn(uploader) + upload.Uploader('http://server/receiver', 'KEY', []).AndReturn(uploader) uploader.setDaemon(True) uploader.queue = 'queue!' @@ -213,6 +198,7 @@ class RunClientTest(mox.MoxTestBase): client.run_client( 'http://server/receiver', '/my/music', + [], 'KEY', True, 150, diff --git a/client/djrandom_client/test/test_upload.py b/client/djrandom_client/test/test_upload.py index 64f1c40df8ea85ec9305b4c3fde383450748829f..b0f1a3092e0cb3a64f7b0ba4cf31b19770bb55f5 100644 --- a/client/djrandom_client/test/test_upload.py +++ b/client/djrandom_client/test/test_upload.py @@ -53,7 +53,8 @@ class UploadTest(mox.MoxTestBase): self.opener = self.mox.CreateMockAnything() self.mox.StubOutWithMock(urllib2, 'build_opener') - urllib2.build_opener(throttle.ThrottledHTTPHandler + urllib2.build_opener(throttle.ThrottledHTTPHandler, + throttle.ThrottledHTTPSHandler ).AndReturn(self.opener) self.test_file = os.path.join(self.tmpdir, 'testfile') diff --git a/client/djrandom_client/test/test_utils.py b/client/djrandom_client/test/test_utils.py index 1f4abcb5cfed19799d335d3f59ba418c41182793..df64b0f7e43959f637f6f4fb8587ebf869c84ee2 100644 --- a/client/djrandom_client/test/test_utils.py +++ b/client/djrandom_client/test/test_utils.py @@ -36,9 +36,8 @@ var_b = b ''') parser = self.mox.CreateMockAnything() - parser.set_default('var_a', 'a') - parser.set_default('var_b', 'b') - parser.set_default('var_c', '42') + parser.set_defaults( + var_a='a', var_b='b', var_c='42') self.mox.ReplayAll() utils.read_config_defaults(parser, cfg_file) @@ -48,9 +47,12 @@ var_b = b with open(cfg_file, 'w') as fd: fd.write('this is not a config\n') + parser = self.mox.CreateMockAnything() + self.mox.ReplayAll() + self.assertRaises(utils.SyntaxError, utils.read_config_defaults, - None, cfg_file) + parser, cfg_file) def test_read_config_file_missing(self): utils.read_config_defaults( diff --git a/client/djrandom_client/utils.py b/client/djrandom_client/utils.py index 427822acbb19b9c62f93cabae022ec61f59d00d1..07c1d33a2d20a0d1fd968a550e7971d35bd6165e 100644 --- a/client/djrandom_client/utils.py +++ b/client/djrandom_client/utils.py @@ -31,8 +31,10 @@ def _unquote(s): def read_config_defaults(parser, path): + _multivalued_opts = set(['exclude']) if not os.path.exists(path): return + defaults = {} with open(path, 'r') as fd: for linenum, line in enumerate(fd): line = line.strip() @@ -42,7 +44,12 @@ def read_config_defaults(parser, path): raise SyntaxError('%s, line %d: Syntax Error' % ( path, 1 + linenum)) var, value = map(lambda x: x.strip(), line.split('=', 1)) - parser.set_default(var, _unquote(value)) + value = _unquote(value) + if var in _multivalued_opts: + defaults.setdefault(var, []).append(value) + else: + defaults[var] = value + parser.set_defaults(**defaults) def _split_version_string(s): diff --git a/client/djrandom_client/version.py b/client/djrandom_client/version.py index bcddf3af0a3786d28bc0d65b3e23f99222293cc2..09e82fd65d33e7118abcad132c1875e1c9e2c0d9 100644 --- a/client/djrandom_client/version.py +++ b/client/djrandom_client/version.py @@ -1 +1 @@ -VERSION = '0.2.5' +VERSION = '0.2.6'