예제 #1
0
 def test_changing_settings_with_setitem(self):
     defaults = {'foo':'bar', 'hello':'world'}
     self.settings = RFSettings(path=self.settings_file,
                                defaults=defaults)
     self.settings['foo'] = 'new value'
     expected = {'foo':'new value', 'hello':'world'}
     self.assertEquals(expected, self.settings._settings)
예제 #2
0
 def test_default_values_are_read_correctly_when_user_settings(self):
     defaults = {'foo':'bar', 'hello':'world'}
     self._write_settings({'foo':'new value'})
     expected = {'foo':'new value', 'hello':'world'}
     self.settings = RFSettings(path=self.settings_file,
                                defaults=defaults)
     self.assertEquals(self.settings._settings, expected)
예제 #3
0
 def test_restoring(self):
     self.settings = RFSettings(path=self.settings_file, defaults={'a':1})
     values = {'foo':'bar', 'hello':'world'}
     self.settings.update(values)
     values['a'] = 1
     self.assertEquals(values, self.settings._settings)
     self.settings.restore()
     self.assertEquals({'a':1}, self.settings._settings)
     self.assertEquals({'a':1}, self._read_settings())
예제 #4
0
 def test_updating_settings_with_dict(self):
     defaults = {'foo':'bar', 'hello':'world'}
     self.settings = RFSettings(path=self.settings_file,
                                defaults=defaults)
     self.assertEquals(self.settings._settings, defaults)
     self.settings.update({'foo':'new value'})
     expected = {'foo':'new value', 'hello':'world'}
     self.assertEquals(self.settings._settings, expected)
     self.assertEquals(self._read_settings(), expected)
예제 #5
0
 def test_default_values_are_read_correctly_when_invalid_settings(self):
     defaults = {'foo':'bar'}
     self._add_invalid_data_to_user_settings_file('invalid syntax =')
     self.settings = RFSettings(path=self.settings_file,
                                defaults=defaults, logger=self.logger.log)
     self.assertEquals(self.settings._settings, defaults)
     log_end = "testsettings.py' is not a valid Python file.\ninvalid syntax (testsettings.py, line 1)"
     self.assertTrue(self.logger.logs[0].startswith('Settings file'))
     self.assertTrue(self.logger.logs[0].endswith(log_end))
예제 #6
0
    def test_updating_settings_with_module_and_not_saving(self):
        defaults = {'foo':'bar', 'hello':'world'}
        self.settings = RFSettings(path=self.settings_file,
                                   defaults=defaults)

        self._write_settings({'foo':'new value'})
        expected = {'foo':'new value', 'hello':'world'}
        self.assertEquals(self.settings._settings, defaults)
        self.settings.update(self.settings_file, save=False)
        self.assertEquals(self.settings._settings, expected)
        self.assertEquals(self._read_settings(), {'foo':'new value'})
예제 #7
0
 def test_loading(self):
     self.settings = RFSettings(path=self.settings_file)
     values = {'foo':'bar', 'hello':'world'}
     self._write_settings(values)
     self.settings.load()
     self.assertEquals(values, self.settings._settings)
예제 #8
0
 def test_saving(self):
     self.settings = RFSettings(path=self.settings_file)
     values = {'foo':'bar', 'hello':'world'}
     self.settings._settings = values
     self.settings.save()
     self.assertEquals(values, self._read_settings())
예제 #9
0
 def test_updating_settings_with_none(self):
     defaults = {'foo':'bar', 'hello':'world'}
     self.settings = RFSettings(path=self.settings_file,
                                defaults=defaults)
     self.settings.update(None)
     self.assertEquals(self.settings._settings, defaults)
예제 #10
0
 def test_getting_settings_with_getitem(self):
     defaults = {'foo':'bar', 'hello':'world'}
     self.settings = RFSettings(path=self.settings_file,
                                defaults=defaults)
     self.assertEquals('bar', self.settings['foo'])
예제 #11
0
 def test_empty_logger_when_invalid_settings(self):
     defaults = {'foo':'bar'}
     self._add_invalid_data_to_user_settings_file('invalid syntax')
     self.settings = RFSettings(path=self.settings_file)
     self.assertEquals(self.settings._settings, {})
예제 #12
0
 def test_default_values_are_read_correctly_when_no_user_settings(self):
     defaults = {'foo':'bar'}
     self.settings = RFSettings(path=self.settings_file,
                                defaults=defaults)
     self.assertEquals(self.settings._settings, defaults)
예제 #13
0
class TestRFSettings(unittest.TestCase):

    def setUp(self):
        self.logger = Logger()
        self.settings_file = os.path.join(os.path.dirname(__file__), 'data',
                                          'testsettings.py')

    def tearDown(self):
        self.settings.remove()


    def test_default_values_are_read_correctly_when_no_user_settings(self):
        defaults = {'foo':'bar'}
        self.settings = RFSettings(path=self.settings_file,
                                   defaults=defaults)
        self.assertEquals(self.settings._settings, defaults)


    def test_default_values_are_read_correctly_when_invalid_settings(self):
        defaults = {'foo':'bar'}
        self._add_invalid_data_to_user_settings_file('invalid syntax =')
        self.settings = RFSettings(path=self.settings_file,
                                   defaults=defaults, logger=self.logger.log)
        self.assertEquals(self.settings._settings, defaults)
        log_end = "testsettings.py' is not a valid Python file.\ninvalid syntax (testsettings.py, line 1)"
        self.assertTrue(self.logger.logs[0].startswith('Settings file'))
        self.assertTrue(self.logger.logs[0].endswith(log_end))

    def test_empty_logger_when_invalid_settings(self):
        defaults = {'foo':'bar'}
        self._add_invalid_data_to_user_settings_file('invalid syntax')
        self.settings = RFSettings(path=self.settings_file)
        self.assertEquals(self.settings._settings, {})

    def test_default_values_are_read_correctly_when_user_settings(self):
        defaults = {'foo':'bar', 'hello':'world'}
        self._write_settings({'foo':'new value'})
        expected = {'foo':'new value', 'hello':'world'}
        self.settings = RFSettings(path=self.settings_file,
                                   defaults=defaults)
        self.assertEquals(self.settings._settings, expected)

    def test_changing_settings_with_setitem(self):
        defaults = {'foo':'bar', 'hello':'world'}
        self.settings = RFSettings(path=self.settings_file,
                                   defaults=defaults)
        self.settings['foo'] = 'new value'
        expected = {'foo':'new value', 'hello':'world'}
        self.assertEquals(expected, self.settings._settings)

    def test_getting_settings_with_getitem(self):
        defaults = {'foo':'bar', 'hello':'world'}
        self.settings = RFSettings(path=self.settings_file,
                                   defaults=defaults)
        self.assertEquals('bar', self.settings['foo'])

    def test_updating_settings_with_dict(self):
        defaults = {'foo':'bar', 'hello':'world'}
        self.settings = RFSettings(path=self.settings_file,
                                   defaults=defaults)
        self.assertEquals(self.settings._settings, defaults)
        self.settings.update({'foo':'new value'})
        expected = {'foo':'new value', 'hello':'world'}
        self.assertEquals(self.settings._settings, expected)
        self.assertEquals(self._read_settings(), expected)

    def test_updating_settings_with_module(self):
        defaults = {'foo':'bar', 'hello':'world'}
        self.settings = RFSettings(path=self.settings_file,
                                   defaults=defaults)
        self._write_settings({'foo':'new value'})
        expected = {'foo':'new value', 'hello':'world'}
        self.assertEquals(self.settings._settings, defaults)
        self.settings.update(self.settings_file)
        self.assertEquals(self.settings._settings, expected)
        self.assertEquals(self._read_settings(), expected)

    def test_updating_settings_with_module_and_not_saving(self):
        defaults = {'foo':'bar', 'hello':'world'}
        self.settings = RFSettings(path=self.settings_file,
                                   defaults=defaults)

        self._write_settings({'foo':'new value'})
        expected = {'foo':'new value', 'hello':'world'}
        self.assertEquals(self.settings._settings, defaults)
        self.settings.update(self.settings_file, save=False)
        self.assertEquals(self.settings._settings, expected)
        self.assertEquals(self._read_settings(), {'foo':'new value'})

    def test_updating_settings_with_none(self):
        defaults = {'foo':'bar', 'hello':'world'}
        self.settings = RFSettings(path=self.settings_file,
                                   defaults=defaults)
        self.settings.update(None)
        self.assertEquals(self.settings._settings, defaults)

    def test_saving(self):
        self.settings = RFSettings(path=self.settings_file)
        values = {'foo':'bar', 'hello':'world'}
        self.settings._settings = values
        self.settings.save()
        self.assertEquals(values, self._read_settings())

    def test_loading(self):
        self.settings = RFSettings(path=self.settings_file)
        values = {'foo':'bar', 'hello':'world'}
        self._write_settings(values)
        self.settings.load()
        self.assertEquals(values, self.settings._settings)

    def test_restoring(self):
        self.settings = RFSettings(path=self.settings_file, defaults={'a':1})
        values = {'foo':'bar', 'hello':'world'}
        self.settings.update(values)
        values['a'] = 1
        self.assertEquals(values, self.settings._settings)
        self.settings.restore()
        self.assertEquals({'a':1}, self.settings._settings)
        self.assertEquals({'a':1}, self._read_settings())

    def _write_settings(self, dict):
        io = SettingsIO(path=self.settings_file)
        io.write(dict)

    def _read_settings(self):
        io = SettingsIO(path=self.settings_file)
        return io.read()

    def _add_invalid_data_to_user_settings_file(self, data):
        f = open(self.settings_file, 'w')
        f.write(data)
        f.close()