From d8630a02d93d6c1ecceb61745f74bf1b1985ef90 Mon Sep 17 00:00:00 2001 From: Lex Berezhny Date: Tue, 4 Jun 2019 16:48:12 -0400 Subject: [PATCH] Strings setting works like Server from CLI --- lbrynet/conf.py | 23 +++++++++++++---------- tests/unit/test_conf.py | 8 +++++++- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/lbrynet/conf.py b/lbrynet/conf.py index 78602187d..634bc768e 100644 --- a/lbrynet/conf.py +++ b/lbrynet/conf.py @@ -192,7 +192,17 @@ class MaxKeyFee(Setting[dict]): ) -class Servers(Setting[list]): +class ListSetting(Setting[list]): + + def contribute_to_argparse(self, parser: ArgumentParser): + parser.add_argument( + self.cli_name, + help=self.doc, + action='append' + ) + + +class Servers(ListSetting): def validate(self, val): assert isinstance(val, (tuple, list)), \ @@ -225,15 +235,8 @@ class Servers(Setting[list]): return [f"{host}:{port}" for host, port in value] return value - def contribute_to_argparse(self, parser: ArgumentParser): - parser.add_argument( - self.cli_name, - help=self.doc, - action='append' - ) - -class Strings(Setting[list]): +class Strings(ListSetting): def validate(self, val): assert isinstance(val, (tuple, list)), \ @@ -268,7 +271,7 @@ class ArgumentAccess: def load(self, args): for setting in self.configuration.get_settings(): value = getattr(args, setting.name, NOT_SET) - if value != NOT_SET and not (isinstance(setting, Servers) and value is None): + if value != NOT_SET and not (isinstance(setting, ListSetting) and value is None): self.args[setting.name] = setting.deserialize(value) def __contains__(self, item: str): diff --git a/tests/unit/test_conf.py b/tests/unit/test_conf.py index 4c37e921b..328705391 100644 --- a/tests/unit/test_conf.py +++ b/tests/unit/test_conf.py @@ -4,7 +4,7 @@ import types import tempfile import unittest import argparse -from lbrynet.conf import Config, BaseConfig, String, Integer, Toggle, Servers, NOT_SET +from lbrynet.conf import Config, BaseConfig, String, Integer, Toggle, Servers, Strings, NOT_SET from lbrynet.error import InvalidCurrencyError @@ -14,6 +14,7 @@ class TestConfig(BaseConfig): test_false_toggle = Toggle('toggle help', False) test_true_toggle = Toggle('toggle help', True) servers = Servers('servers help', [('localhost', 80)]) + strings = Strings('cheese', ['string']) class ConfigurationTests(unittest.TestCase): @@ -54,6 +55,7 @@ class ConfigurationTests(unittest.TestCase): self.assertTrue(c.test_true_toggle) self.assertFalse(c.test_false_toggle) self.assertEqual(c.servers, [('localhost', 80)]) + self.assertEqual(c.strings, ['string']) args = parser.parse_args(['--test-str', 'blah']) c = TestConfig.create_from_arguments(args) @@ -80,6 +82,10 @@ class ConfigurationTests(unittest.TestCase): c = TestConfig.create_from_arguments(args) self.assertEqual(c.servers, [('localhost', 1), ('192.168.0.1', 2)]) + args = parser.parse_args(['--strings=cheddar', '--strings=mozzarella']) + c = TestConfig.create_from_arguments(args) + self.assertEqual(c.strings, ['cheddar', 'mozzarella']) + def test_environment(self): c = TestConfig() self.assertEqual(c.test_str, 'the default')