Ejemplo n.º 1
0
    def _test_options(self, options):
        """helper to test option types.

        this expects that self.options is set to a single option named
        test. The value of that option is returned.
        """
        result = argparse.Namespace()
        parser = Parser(components=[self], namespace=result)
        parser.parse(options)
        return result.test
Ejemplo n.º 2
0
    def _test_options(self, options):
        """helper to test option types.

        this expects that self.options is set to a single option named
        test. The value of that option is returned.
        """
        result = argparse.Namespace()
        parser = Parser(components=[self], namespace=result)
        parser.parse(options)
        return result.test
Ejemplo n.º 3
0
 def test_default_path_canonicalization(self, config_file):
     """canonicalize default PathOption values."""
     testdir = os.path.expanduser("~/test")
     result = argparse.Namespace()
     parser = Parser(namespace=result)
     parser.add_options([PathOption("--test1", default="~/test"),
                         PathOption(cf=("test", "test2"),
                                    default="~/test"),
                         Common.repository])
     parser.parse(["-C", config_file])
     self.assertEqual(result.test1, testdir)
     self.assertEqual(result.test2, testdir)
Ejemplo n.º 4
0
    def test_wildcard_options(self, config_file):
        """parse wildcard options."""
        result = argparse.Namespace()
        parser = Parser(components=[self], namespace=result)
        parser.parse(argv=["-C", config_file])

        self.assertDictEqual(result.all, {"test1": "test1",
                                          "test2": "test2",
                                          "thing1": "thing1",
                                          "thing2": "thing2"})
        self.assertDictEqual(result.test, {"test1": "test1",
                                           "test2": "test2"})
        self.assertDictEqual(result.unmatched, {})
        self.assertDictEqual(result.no_section, {})
Ejemplo n.º 5
0
    def test_positional_args(self, config_file):
        """get values from positional arguments."""
        result = argparse.Namespace()
        parser = Parser(namespace=result)
        parser.add_options([PositionalArgument("single")])
        parser.parse(["-C", config_file, "single"])
        self.assertEqual(result.single, "single")

        result = argparse.Namespace()
        parser = Parser(namespace=result)
        parser.add_options([PositionalArgument("one"),
                            PositionalArgument("two")])
        parser.parse(["-C", config_file, "one", "two"])
        self.assertEqual(result.one, "one")
        self.assertEqual(result.two, "two")
Ejemplo n.º 6
0
    def _test_dest(self, *args, **kwargs):
        """helper to test that ``dest`` is set properly."""
        args = list(args)
        expected = args.pop(0)
        config_file = args.pop()

        sentinel = object()
        kwargs["default"] = sentinel

        result = argparse.Namespace()
        parser = Parser(namespace=result)
        parser.add_options([Option(*args, **kwargs)])
        parser.parse(["-C", config_file])

        self.assertTrue(hasattr(result, expected))
        self.assertEqual(getattr(result, expected), sentinel)
Ejemplo n.º 7
0
    def test_file_like_path_option(self, config_file):
        """get file-like object from PathOption."""
        result = argparse.Namespace()
        parser = Parser(namespace=result)
        parser.add_options([PathOption("--test", type=argparse.FileType('r'))])

        fd, name = tempfile.mkstemp()
        fh = os.fdopen(fd, "w")
        fh.write("test")
        fh.close()

        try:
            parser.parse(["-C", config_file, "--test", name])
            self.assertEqual(result.test.name, name)
            self.assertEqual(result.test.read(), "test")
        finally:
            os.unlink(name)
Ejemplo n.º 8
0
 def test_repository_macro(self, config_file):
     """fix up <repository> macros."""
     result = argparse.Namespace()
     parser = Parser(namespace=result)
     parser.add_options([PathOption("--test1"),
                         PathOption("--test2"),
                         PathOption(cf=("test", "test_path")),
                         PathOption(cf=("test", "test_path_default"),
                                    default="<repository>/test/default"),
                         Common.repository])
     parser.parse(["-C", config_file, "-Q", "/foo/bar",
                   "--test1", "<repository>/test1",
                   "--test2", "<repository><repository>"])
     self.assertEqual(result.repository, "/foo/bar")
     self.assertEqual(result.test1, "/foo/bar/test1")
     self.assertEqual(result.test2, "/foo/bar/foo/bar")
     self.assertEqual(result.test_path, "/foo/bar/test")
     self.assertEqual(result.test_path_default, "/foo/bar/test/default")
Ejemplo n.º 9
0
 def test_repository_macro(self, config_file):
     """fix up <repository> macros."""
     result = argparse.Namespace()
     parser = Parser(namespace=result)
     parser.add_options([
         PathOption("--test1"),
         RepositoryMacroOption("--test2"),
         PathOption(cf=("test", "test_path")),
         PathOption(cf=("test", "test_path_default"),
                    default="<repository>/test/default"),
         RepositoryMacroOption(cf=("test", "test_macro")),
         RepositoryMacroOption(cf=("test", "test_macro_default"),
                               default="<repository>"), Common.repository
     ])
     parser.parse([
         "-C", config_file, "-Q", "/foo/bar", "--test1",
         "<repository>/test1", "--test2", "<repository><repository>"
     ])
     self.assertEqual(result.repository, "/foo/bar")
     self.assertEqual(result.test1, "/foo/bar/test1")
     self.assertEqual(result.test2, "/foo/bar/foo/bar")
     self.assertEqual(result.test_macro, "/foo/bar")
     self.assertEqual(result.test_macro_default, "/foo/bar")
     self.assertEqual(result.test_path, "/foo/bar/test")
     self.assertEqual(result.test_path_default, "/foo/bar/test/default")
Ejemplo n.º 10
0
 def test_default_path_canonicalization(self, config_file):
     """canonicalize default PathOption values."""
     testdir = os.path.expanduser("~/test")
     result = argparse.Namespace()
     parser = Parser(namespace=result)
     parser.add_options([
         PathOption("--test1", default="~/test"),
         PathOption(cf=("test", "test2"), default="~/test"),
         Common.repository
     ])
     parser.parse(["-C", config_file])
     self.assertEqual(result.test1, testdir)
     self.assertEqual(result.test2, testdir)
Ejemplo n.º 11
0
    def _test_dest(self, *args, **kwargs):
        """helper to test that ``dest`` is set properly."""
        args = list(args)
        expected = args.pop(0)
        config_file = args.pop()

        sentinel = object()
        kwargs["default"] = sentinel

        result = argparse.Namespace()
        parser = Parser(namespace=result)
        parser.add_options([Option(*args, **kwargs)])
        parser.parse(["-C", config_file])

        self.assertTrue(hasattr(result, expected))
        self.assertEqual(getattr(result, expected), sentinel)
Ejemplo n.º 12
0
    def test_file_like_path_option(self, config_file):
        """get file-like object from PathOption."""
        result = argparse.Namespace()
        parser = Parser(namespace=result)
        parser.add_options([PathOption("--test", type=argparse.FileType('r'))])

        fd, name = tempfile.mkstemp()
        fh = os.fdopen(fd, "w")
        fh.write("test")
        fh.close()

        try:
            parser.parse(["-C", config_file, "--test", name])
            self.assertEqual(result.test.name, name)
            self.assertEqual(result.test.read(), "test")
        finally:
            os.unlink(name)
Ejemplo n.º 13
0
 def test_duplicate_cli_option(self):
     """add duplicate CLI option."""
     parser = Parser(components=[self])
     self.assertRaises(argparse.ArgumentError, parser.add_options,
                       [Option("--test-option")])
Ejemplo n.º 14
0
 def _test_options(self, options):
     """test helper."""
     result = argparse.Namespace()
     parser = Parser(components=[self], namespace=result)
     parser.parse(options)
     return result
Ejemplo n.º 15
0
 def inner(config_file):
     """do the actual tests, since py2.4 lacks context managers."""
     result = argparse.Namespace()
     parser = Parser(components=[self], namespace=result)
     parser.parse(argv=["-C", config_file] + options)
     return result
Ejemplo n.º 16
0
    def test_reparse(self, config_file):
        """reparse options."""
        result = argparse.Namespace()
        parser = Parser(components=[self], namespace=result)
        parser.parse(["-C", config_file])
        self.assertFalse(result.test_false_boolean)

        parser.parse(["-C", config_file])
        self.assertFalse(result.test_false_boolean)

        parser.reparse()
        self.assertFalse(result.test_false_boolean)

        parser.reparse(["-C", config_file, "--test-false-boolean"])
        self.assertTrue(result.test_false_boolean)

        cfp = ConfigParser.ConfigParser()
        cfp.add_section("test")
        cfp.set("test", "false_boolean", "on")
        parser.parse(["-C", config_file])
        cfp.write(open(config_file, "w"))
        self.assertTrue(result.test_false_boolean)
Ejemplo n.º 17
0
 def test_unknown_options(self, config_file):
     """error on unknown options."""
     parser = Parser(components=[self])
     self.assertRaises(SystemExit, parser.parse,
                       ["-C", config_file, "--not-a-real-option"])
Ejemplo n.º 18
0
 def test_duplicate_cf_option(self):
     """add duplicate config file option."""
     parser = Parser(components=[self])
     self.assertRaises(OptionParserException, parser.add_options,
                       [Option(cf=("test", "option"))])
Ejemplo n.º 19
0
    def test_reparse(self, config_file):
        """reparse options."""
        result = argparse.Namespace()
        parser = Parser(components=[self], namespace=result)
        parser.parse(["-C", config_file])
        self.assertFalse(result.test_false_boolean)

        parser.parse(["-C", config_file])
        self.assertFalse(result.test_false_boolean)

        parser.reparse()
        self.assertFalse(result.test_false_boolean)

        parser.reparse(["-C", config_file, "--test-false-boolean"])
        self.assertTrue(result.test_false_boolean)

        cfp = ConfigParser.ConfigParser()
        cfp.add_section("test")
        cfp.set("test", "false_boolean", "on")
        parser.parse(["-C", config_file])
        cfp.write(open(config_file, "w"))
        self.assertTrue(result.test_false_boolean)
Ejemplo n.º 20
0
 def inner(config_file):
     """do the actual tests, since py2.4 lacks context managers."""
     result = argparse.Namespace()
     parser = Parser(components=[self], namespace=result)
     parser.parse(argv=["-C", config_file] + options)
     return result
Ejemplo n.º 21
0
    def test_positional_args(self, config_file):
        """get values from positional arguments."""
        result = argparse.Namespace()
        parser = Parser(namespace=result)
        parser.add_options([PositionalArgument("single")])
        parser.parse(["-C", config_file, "single"])
        self.assertEqual(result.single, "single")

        result = argparse.Namespace()
        parser = Parser(namespace=result)
        parser.add_options(
            [PositionalArgument("one"),
             PositionalArgument("two")])
        parser.parse(["-C", config_file, "one", "two"])
        self.assertEqual(result.one, "one")
        self.assertEqual(result.two, "two")
Ejemplo n.º 22
0
 def _test_options(self, options):
     """test helper."""
     result = argparse.Namespace()
     parser = Parser(components=[self], namespace=result)
     parser.parse(options)
     return result
Ejemplo n.º 23
0
 def test_duplicate_env_option(self):
     """add duplicate environment option."""
     parser = Parser(components=[self])
     self.assertRaises(OptionParserException, parser.add_options,
                       [Option(env="TEST_OPTION")])