Ejemplo n.º 1
0
    def test_aliases(self):
        if sys.version_info[0] < 3:
            raise test.SkipTest(
                'Argparse does not support aliases in Python < 3')
        self.reset_backend()

        self.app = self.make_app(
            APP,
            argument_handler=ArgparseArgumentHandler,
            handlers=[
                Base,
                Aliases,
            ],
        )
        with self.app as app:
            app._meta.argv = ['aliases', 'aliases-cmd1']
            res = app.run()
            self.eq(res, "Inside Aliases.aliases_cmd1")

            app._meta.argv = ['aliases', 'aliases-cmd-1']
            app._setup_arg_handler()
            res = app.run()
            self.eq(res, "Inside Aliases.aliases_cmd1")

            app._meta.argv = ['aliases-controller', 'aliases-cmd1']
            app._setup_arg_handler()
            res = app.run()
            self.eq(res, "Inside Aliases.aliases_cmd1")

            app._meta.argv = ['ac', 'ac1']
            app._setup_arg_handler()
            res = app.run()
            self.eq(res, "Inside Aliases.aliases_cmd1")
Ejemplo n.º 2
0
 def test_controller_default_double_nested(self):
     if not ARGPARSE_SUPPORTS_DEFAULTS:
         raise test.SkipTest(
             'Argparse does not support default commands in Python < 3.4')
     self.app._meta.argv = ['third', 'fifth']
     with self.app as app:
         res = app.run()
         self.eq(res, "Inside Fifth.default")
Ejemplo n.º 3
0
    def test_base_default(self):
        if not ARGPARSE_SUPPORTS_DEFAULTS:
            raise test.SkipTest(
                'Argparse does not support default commands in Python < 3.4')

        with self.app as app:
            res = app.run()
            self.eq(res, "Inside Base.default")
Ejemplo n.º 4
0
 def test_argument_conflict(self):
     try:
         app = self.make_app(base_controller=TestController)
         app.handler.register(ArgumentConflict)
         app.setup()
         app.run()
     except NameError as e:
         # This is a hack due to a Travis-CI Bug:
         # https://github.com/travis-ci/travis-ci/issues/998
         if e.args[0] == "global name 'ngettext' is not defined":
             bug = "https://github.com/travis-ci/travis-ci/issues/998"
             raise test.SkipTest("Travis-CI Bug: %s" % bug)
         else:
             raise
Ejemplo n.º 5
0
    def test_alternative_default(self):
        if not ARGPARSE_SUPPORTS_DEFAULTS:
            raise test.SkipTest(
                'Argparse does not support default commands in Python < 3.4')

        self.reset_backend()
        self.app = self.make_app(
            APP,
            argv=['alternative_default'],
            argument_handler=ArgparseArgumentHandler,
            handlers=[
                Base,
                AlternativeDefault,
            ],
        )
        with self.app as app:
            res = app.run()
            self.eq(res, "Inside AlternativeDefault.alternative_default")
Ejemplo n.º 6
0
    def test_bad_alternative_default_command(self):
        if not ARGPARSE_SUPPORTS_DEFAULTS:
            raise test.SkipTest(
                'Argparse does not support default commands in Python < 3.4')

        self.reset_backend()
        self.app = self.make_app(
            APP,
            argv=['bad_alternative_default'],
            argument_handler=ArgparseArgumentHandler,
            handlers=[
                Base,
                BadAlternativeDefault,
            ],
        )
        try:
            with self.app as app:
                res = app.run()

        except FrameworkError as e:
            res = re.match("(.*)does not exist(.*)bogus_default(.*)",
                           e.__str__())
            self.ok(res)
            raise
Ejemplo n.º 7
0
"""Tests for cement.ext.ext_genshi."""

import sys
import random

from cement.core import exc, foundation, handler, backend, controller
from cement.utils import test

if sys.version_info[0] < 3:
    import configobj
else:
    raise test.SkipTest('Genshi does not support Python 3')  # pragma: no cover


class GenshiExtTestCase(test.CementExtTestCase):
    def setUp(self):
        super(GenshiExtTestCase, self).setUp()
        self.app = self.make_app('tests',
                                 extensions=['genshi'],
                                 output_handler='genshi',
                                 argv=[])

    def test_genshi(self):
        self.app.setup()
        rando = random.random()
        res = self.app.render(dict(foo=rando), 'test_template.genshi')
        genshi_res = "foo equals %s\n" % rando
        self.eq(res, genshi_res)

    @test.raises(exc.FrameworkError)
    def test_genshi_bad_template(self):
Ejemplo n.º 8
0
"""Tests for cement.ext.ext_configobj."""

import os
import sys
from tempfile import mkstemp
from cement.core import handler, backend, log
from cement.utils import test
from cement.utils.misc import rando

if sys.version_info[0] < 3:
    import configobj
else:
    raise test.SkipTest(
        'ConfigObj does not support Python 3')  # pragma: no cover

APP = rando()[:12]

CONFIG = """
[my_section]
my_param = my_value
"""


class ConfigObjExtTestCase(test.CementTestCase):
    def setUp(self):
        _, self.tmppath = mkstemp()
        f = open(self.tmppath, 'w+')
        f.write(CONFIG)
        f.close()
        self.app = self.make_app(APP,
                                 extensions=['configobj'],
Ejemplo n.º 9
0
"""Tests for cement.ext.ext_memcached."""

import sys
from time import sleep
from random import random
from cement.core import handler
from cement.utils import test
from cement.utils.misc import init_defaults

if sys.version_info[0] < 3:
    import pylibmc
else:
    raise test.SkipTest('pylibmc does not support Python 3') # pragma: no cover

class MemcachedExtTestCase(test.CementTestCase):
    def setUp(self):
        self.key = "cement-tests-random-key-%s" % random()
        defaults = init_defaults('tests', 'cache.memcached')
        defaults['cache.memcached']['hosts'] = '127.0.0.1, localhost'
        self.app = self.make_app('tests',
            config_defaults=defaults,
            extensions=['memcached'],
            cache_handler='memcached',
            )
        self.app.setup()

    def tearDown(self):
        self.app.cache.delete(self.key)

    def test_memcache_list_type_config(self):
        defaults = init_defaults('tests', 'cache.memcached')
Ejemplo n.º 10
0
"""Tests for cement.ext.ext_reload_config."""

import platform
from cement.utils import test

system = platform.system()
if not system in ['Linux']:
    raise test.SkipTest('ext_reload_config not supported on %s' % system)

import os
import shutil
import signal
from time import sleep
from cement.utils.misc import rando
from cement.ext import ext_reload_config

APP = rando()[:12]

CONFIG1 = """
[%s]
foo = bar1
""" % APP

CONFIG2 = """
[%s]
foo = bar2
""" % APP

PLUGIN_CONFIG1 = """
[bogus]
enable_plugin = false