Beispiel #1
0
class ParametersAddConfigurationFileTest(BaseParametersTest):
    def setUp(self):
        super(ParametersAddConfigurationFileTest, self).setUp()

        tmp_fh = tempfile.NamedTemporaryFile(mode = 'w')
        tmp_fh.write(
            '[default]\n'
            'foo = bar\n'
        )

        tmp_fh.seek(0)

        self.addCleanup(tmp_fh.close)

        self.file_name = tmp_fh.name

    def _assert_configuration_readable(self):
        self.p.add_parameter(options = ( '--foo', ))
        self.p.add_parameter(options = ( '--bar', ))

        self.p.add_configuration_file(self.file_name)

        self.assertEqual([ self.file_name ], list(self.p.configuration_files.keys()))
        self.assertIsInstance(self.p.configuration_files[self.file_name], SafeConfigParser)

        self.p.parse()

        self.assertEqual('bar', self.p['default.foo'])
        self.assertIsNone(self.p['default.bar'])

    def test_add_configuration_file(self):
        '''Parameters().add_configuration_file()'''

        self.p = Parameters()

        self._assert_configuration_readable()

    def test_add_configuration_file_with_explicit_read(self):
        '''Parameters().add_configuration_file()—re-read'''

        self.p = Parameters()

        self._assert_configuration_readable()

        with open(self.file_name, 'a') as fh:
            fh.write('bar = foo')

        self.p.read_configuration_files()

        self.assertEqual('bar', self.p['default.foo'])
        self.assertEqual('foo', self.p['default.bar'])

    @unittest.skipUnless(_pyinotify_loaded, 'inotify module not available')
    def test_add_configuration_file_with_inotify(self):
        '''Parameters(inotify = True).add_configuration_file()'''

        self.p = Parameters(inotify = True)

        self._assert_configuration_readable()

        with open(self.file_name, 'a') as fh:
            fh.write('bar = foo')

        time.sleep(1)

        self.assertEqual('bar', self.p['default.foo'])
        self.assertEqual('foo', self.p['default.bar'])