Пример #1
0
    def test_debug(self):
        # Hack: we can modify this from inside the callback.
        confdict = {}
        def callback(option, opt_str, value, parser):
            section = parser.values.config.collapse_named_section('sect')
            # It would actually be better if debug was True here.
            # We check for an unintended change, not ideal behaviour.
            self.assertFalse(section.debug)
            confdict['sect'] = section

        parser = commandline.OptionParser(option_list=[
                optparse.Option('-a', action='callback', callback=callback)])
        parser = helpers.mangle_parser(parser)
        values = parser.get_default_values()
        values._config = mk_config([{
                    'sect': basics.HardCodedConfigSection({'class': sect})}])

        values, args = parser.parse_args(['-a', '--debug'], values)
        self.assertFalse(args)
        self.assertTrue(values.debug)
        self.assertTrue(confdict['sect'].debug)

        values = parser.get_default_values()
        values._config = mk_config([{
                    'sect': basics.HardCodedConfigSection({'class': sect})}])
        values, args = parser.parse_args(['-a'], values)
        self.assertFalse(args)
        self.assertFalse(values.debug)
        self.assertFalse(confdict['sect'].debug)
Пример #2
0
    def test_bool_type(self):
        parser = helpers.mangle_parser(commandline.OptionParser())
        parser.add_option("--testing", action='store', type='bool',
            default=None)

        for raw_val in ("n", "no", "false"):
            for allowed in (raw_val.upper(), raw_val.lower()):
                values, args = parser.parse_args(['--testing=' + allowed])
                self.assertEqual(values.testing, False,
                    msg="for --testing=%s, got %r, expected False" %
                        (allowed, values.testing))

        for raw_val in ("y", "yes", "true"):
            for allowed in (raw_val.upper(), raw_val.lower()):
                values, args = parser.parse_args(['--testing=' + allowed])
                self.assertEqual(values.testing, True,
                    msg="for --testing=%s, got %r, expected False" %
                        (allowed, values.testing))

        try:
            parser.parse_args(["--testing=invalid"])
        except helpers.Error:
            pass
        else:
            self.fail("no error message thrown for --testing=invalid")
Пример #3
0
    def test_bool_type(self):
        parser = helpers.mangle_parser(commandline.ArgumentParser())
        parser.add_argument(
            "--testing", action=commandline.StoreBool, default=None)

        for raw_val in ("n", "no", "false"):
            for allowed in (raw_val.upper(), raw_val.lower()):
                namespace = parser.parse_args(['--testing=' + allowed])
                self.assertEqual(
                    namespace.testing, False,
                    msg="for --testing=%s, got %r, expected False" %
                        (allowed, namespace.testing))

        for raw_val in ("y", "yes", "true"):
            for allowed in (raw_val.upper(), raw_val.lower()):
                namespace = parser.parse_args(['--testing=' + allowed])
                self.assertEqual(
                    namespace.testing, True,
                    msg="for --testing=%s, got %r, expected False" %
                        (allowed, namespace.testing))

        try:
            parser.parse_args(["--testing=invalid"])
        except helpers.Error:
            pass
        else:
            self.fail("no error message thrown for --testing=invalid")
Пример #4
0
    def test_config_callback(self):
        @configurable(typename='foon')
        def test():
            return 'foon!'
        parser = helpers.mangle_parser(commandline.OptionParser())
        parser.add_option('--spork', action='callback',
                          callback=commandline.config_callback,
                          type='string', callback_args=('foon',))
        parser.add_option('--foon', action='callback',
                          callback=commandline.config_callback,
                          type='string', callback_args=('foon', 'utensil'))
        values = parser.get_default_values()
        values._config = mk_config([{
                    'afoon': basics.HardCodedConfigSection({'class': test})}])

        values, args = parser.parse_args(['--spork', 'afoon'], values)
        self.assertEqual('foon!', values.spork)

        try:
            parser.parse_args(['--spork', 'nofoon'], values)
        except helpers.Error, e:
            self.assertEqual(
                "'nofoon' is not a valid foon for --spork "
                "(valid values: 'afoon')",
                str(e))
Пример #5
0
class ModifyConfigTest(TestCase, helpers.MainMixin):

    parser = helpers.mangle_parser(ModifyParser())

    def parse(self, *args, **kwargs):
        """Overridden to allow the load_config call."""
        values = self.parser.get_default_values()
        # optparse needs a list (it does make a copy, but it uses [:]
        # to do it, which is a noop on a tuple).
        options, args = self.parser.parse_args(list(args), values)
        self.assertFalse(args)
        return options

    def test_empty_config(self):
        self.assertError(
            'Configuration already loaded. If moving the option earlier on '
            'the commandline does not fix this report it as a bug.',
            '--trigger', '--empty-config')
        self.assertTrue(self.parse('--empty-config', '--trigger'))

    def test_modify_config(self):
        self.assertError(
            'Configuration already loaded. If moving the option earlier on '
            'the commandline does not fix this report it as a bug.',
            '--empty-config', '--trigger',
            '--new-config', 'foo', 'class', 'sect')
        values = self.parse(
            '--empty-config', '--new-config',
            'foo', 'class', 'pkgcore.test.util.test_commandline.sect',
            '--trigger')
        self.assertTrue(values.config.collapse_named_section('foo'))
        values = self.parse(
            '--empty-config', '--new-config',
            'foo', 'class', 'pkgcore.test.util.test_commandline.missing',
            '--add-config', 'foo', 'class',
            'pkgcore.test.util.test_commandline.sect',
            '--trigger')
        self.assertTrue(values.config.collapse_named_section('foo'))
        self.assertError(
            "'class' is already set (to 'first')",
            '--empty-config',
            '--new-config', 'foo', 'class', 'first',
            '--new-config', 'foo', 'class', 'foon',
            '--trigger')
        values = self.parse(
            '--empty-config',
            '--add-config', 'foo', 'inherit', 'missing',
            '--trigger')
        self.assertRaises(
            errors.ConfigurationError,
            values.config.collapse_named_section, 'foo')
Пример #6
0
    def test_config_callback(self):
        @configurable(typename='foon')
        def test():
            return 'foon!'

        parser = helpers.mangle_parser(commandline.OptionParser())
        parser.add_option('--spork',
                          action='callback',
                          callback=commandline.config_callback,
                          type='string',
                          callback_args=('foon', ))
        parser.add_option('--foon',
                          action='callback',
                          callback=commandline.config_callback,
                          type='string',
                          callback_args=('foon', 'utensil'))
        values = parser.get_default_values()
        values._config = mk_config([{
            'afoon':
            basics.HardCodedConfigSection({'class': test})
        }])

        values, args = parser.parse_args(['--spork', 'afoon'], values)
        self.assertEqual('foon!', values.spork)

        try:
            parser.parse_args(['--spork', 'nofoon'], values)
        except helpers.Error as e:
            self.assertEqual(
                "'nofoon' is not a valid foon for --spork "
                "(valid values: 'afoon')", str(e))
        else:
            self.fail('no exception raised')

        try:
            parser.parse_args(['--foon', 'nofoon'], values)
        except helpers.Error as e:
            self.assertEqual(
                "'nofoon' is not a valid utensil for --foon "
                "(valid values: 'afoon')", str(e))
        else:
            self.fail('no exception raised')
Пример #7
0
 def test_empty_sequence(self):
     parser = helpers.mangle_parser(commandline.OptionParser(option_list=[
                 optparse.Option('--seq', action='append')]))
     options, values = parser.parse_args([])
     self.assertEqual([], list(options.seq))
Пример #8
0
 def test_empty_sequence(self):
     parser = helpers.mangle_parser(commandline.OptionParser(
         option_list=[optparse.Option('--seq', action='append')]))
     options, values = parser.parse_args([])
     self.assertEqual([], list(options.seq))