def init(): try: cfg.CONF([], project='nectar-osc', default_config_files=['~/.nectar-osc.conf']) except cfg.ConfigFilesNotFoundError: print('generating config file ~/.nectar-osc.conf') conf = cfg.ConfigOpts() generator.register_cli_opts(conf) conf.namespace = ['nectar_osc'] with open(homedir + '/' + '.nectar-osc.conf', 'w') as conf_file: generator.generate(conf, conf_file)
def test_generate(self, mock_log, named_mgr): generator.register_cli_opts(self.conf) namespaces = [i[0] for i in self.opts] self.config(namespace=namespaces) for group in self.groups.values(): self.conf.register_group(group) wrap_width = getattr(self, "wrap_width", None) if wrap_width is not None: self.config(wrap_width=wrap_width) if self.stdout: stdout = self._capture_stdout() else: output_file = self.tempdir.join(self.output_file) self.config(output_file=output_file) mock_eps = [] for name, opts in self.opts: mock_ep = mock.Mock() mock_ep.configure_mock(name=name, obj=opts) mock_eps.append(mock_ep) named_mgr.return_value = mock_eps generator.generate(self.conf) if self.stdout: self.assertEqual(self.expected, stdout.getvalue()) else: content = open(output_file).read() self.assertEqual(self.expected, content) named_mgr.assert_called_once_with( "oslo.config.opts", names=namespaces, on_load_failure_callback=generator.on_load_failure_callback, invoke_on_load=True, ) log_warning = getattr(self, "log_warning", None) if log_warning is not None: mock_log.warning.assert_called_once_with(*log_warning) else: self.assertFalse(mock_log.warning.called)
def test_generate(self, mock_log, raw_opts_loader): generator.register_cli_opts(self.conf) namespaces = [i[0] for i in self.opts] self.config(namespace=namespaces) for group in self.groups.values(): self.conf.register_group(group) wrap_width = getattr(self, 'wrap_width', None) if wrap_width is not None: self.config(wrap_width=wrap_width) if self.stdout: stdout = self._capture_stdout() else: output_file = self.tempdir.join(self.output_file) self.config(output_file=output_file) # We have a static data structure matching what should be # returned by _list_opts() but we're mocking out a lower level # function that needs to return a namespace and a callable to # return options from that namespace. We have to pass opts to # the lambda to cache a reference to the name because the list # comprehension changes the thing pointed to by the name each # time through the loop. raw_opts_loader.return_value = [ (ns, lambda opts=opts: opts) for ns, opts in self.opts ] generator.generate(self.conf) if self.stdout: self.assertEqual(self.expected, stdout.getvalue()) else: with open(output_file, 'r') as f: actual = f.read() self.assertEqual(self.expected, actual) log_warning = getattr(self, 'log_warning', None) if log_warning is not None: mock_log.warning.assert_called_once_with(*log_warning) else: self.assertFalse(mock_log.warning.called)
def test_generate(self, mock_log, named_mgr): generator.register_cli_opts(self.conf) namespaces = [i[0] for i in self.opts] self.config(namespace=namespaces) for group in self.groups.values(): self.conf.register_group(group) wrap_width = getattr(self, 'wrap_width', None) if wrap_width is not None: self.config(wrap_width=wrap_width) if self.stdout: stdout = self._capture_stdout() else: output_file = self.tempdir.join(self.output_file) self.config(output_file=output_file) mock_eps = [] for name, opts in self.opts: mock_ep = mock.Mock() mock_ep.configure_mock(name=name, obj=opts) mock_eps.append(mock_ep) named_mgr.return_value = mock_eps generator.generate(self.conf) if self.stdout: self.assertEqual(self.expected, stdout.getvalue()) else: content = open(output_file).read() self.assertEqual(self.expected, content) named_mgr.assert_called_once_with( 'oslo.config.opts', names=namespaces, on_load_failure_callback=generator.on_load_failure_callback, invoke_on_load=True) log_warning = getattr(self, 'log_warning', None) if log_warning is not None: mock_log.warning.assert_called_once_with(*log_warning) else: self.assertFalse(mock_log.warning.called)
def gen_conf(o_path): CONF.output_file = o_path CONF.namespace = "xx" # print(CONF._namespace) generator.generate(CONF)