X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=lib%2Ftests%2Ftest_simple_config.py;h=a800629d1c758c894b090e6c3a6512a1a46cde35;hb=b2f8d507dec9fef41165982b235e9e1269322e7a;hp=f288b7f894eb7410fc632a56b7e9c64d0adc5fec;hpb=ad3640d7a4bc4627694df3c277cd83972256c543;p=electrum-nvc.git diff --git a/lib/tests/test_simple_config.py b/lib/tests/test_simple_config.py index f288b7f..a800629 100644 --- a/lib/tests/test_simple_config.py +++ b/lib/tests/test_simple_config.py @@ -1,3 +1,4 @@ +import ast import sys import os import unittest @@ -5,7 +6,8 @@ import tempfile import shutil from StringIO import StringIO -from lib.simple_config import SimpleConfig, read_system_config +from lib.simple_config import (SimpleConfig, read_system_config, + read_user_config) class Test_SimpleConfig(unittest.TestCase): @@ -134,6 +136,24 @@ class Test_SimpleConfig(unittest.TestCase): config.set_key("electrum_path", another_path) self.assertEqual(another_path, config.get("electrum_path")) + def test_user_config_is_not_written_with_read_only_config(self): + """The user config does not contain command-line options or system + options when saved.""" + fake_read_system = lambda : {"something": "b"} + fake_read_user = lambda _: {"something": "a"} + read_user_dir = lambda : self.user_dir + self.options.update({"something": "c"}) + config = SimpleConfig(options=self.options, + read_system_config_function=fake_read_system, + read_user_config_function=fake_read_user, + read_user_dir_function=read_user_dir) + config.save_user_config() + contents = None + with open(os.path.join(self.electrum_dir, "config"), "r") as f: + contents = f.read() + result = ast.literal_eval(contents) + self.assertEqual({"something": "a"}, result) + class TestSystemConfig(unittest.TestCase): @@ -150,6 +170,7 @@ everything = 42 self.thefile = tempfile.mkstemp(suffix=".electrum.test.conf")[1] def tearDown(self): + super(TestSystemConfig, self).tearDown() os.remove(self.thefile) def test_read_system_config_file_does_not_exist(self): @@ -171,3 +192,50 @@ everything = 42 result = read_system_config(self.thefile) self.assertEqual({}, result) + + +class TestUserConfig(unittest.TestCase): + + def setUp(self): + super(TestUserConfig, self).setUp() + self._saved_stdout = sys.stdout + self._stdout_buffer = StringIO() + sys.stdout = self._stdout_buffer + + self.user_dir = tempfile.mkdtemp() + + def tearDown(self): + super(TestUserConfig, self).tearDown() + shutil.rmtree(self.user_dir) + sys.stdout = self._saved_stdout + + def test_no_path_means_no_result(self): + result = read_user_config(None) + self.assertEqual({}, result) + + def test_path_with_reprd_dict(self): + thefile = os.path.join(self.user_dir, "config") + payload = {"gap_limit": 5} + with open(thefile, "w") as f: + f.write(repr(payload)) + + result = read_user_config(self.user_dir) + self.assertEqual(payload, result) + + def test_path_without_config_file(self): + """We pass a path but if does not contain a "config" file.""" + result = read_user_config(self.user_dir) + self.assertEqual({}, result) + + def test_path_with_reprd_object(self): + + class something(object): + pass + + thefile = os.path.join(self.user_dir, "config") + payload = something() + with open(thefile, "w") as f: + f.write(repr(payload)) + + result = read_user_config(self.user_dir) + self.assertEqual({}, result)