def test_views_command_single_view_function_traversal(self):
     from pyramid.registry import Registry
     registry = Registry()
     command = self._makeOne(registry=registry)
     L = []
     command.out = L.append
     def view(): pass
     view.__request_attrs__ = {'context': 'context', 'view_name': 'a'}
     command._find_view = lambda arg1, arg2: view
     command.args = ('/foo/bar/myapp.ini#myapp', '/a')
     result = command.command()
     self.assertEqual(result, None)
     self.assertEqual(L[1], 'URL = /a')
     self.assertEqual(L[3], '    context: context')
     self.assertEqual(L[4], '    view name: a')
     self.assertEqual(L[8], '    pyramid.tests.test_paster.view')
 def setUp(self):
     self.__request = DummyRequest()
     reg = Registry()
     reg.settings = {}
     reg.settings['cache.expire'] = 10
     reg.settings['cache.regions'] = 'session'
     reg.settings['cache.type'] = 'memory'
     self.__config = testing.setUp(registry=reg,
                                   request=self.__request,
                                   hook_zca=False)
     defined_roles = [(Allow, RolesConstants.PII, ('view', 'logout'))]
     edauth.set_roles(defined_roles)
     set_tenant_map({get_unittest_tenant_name(): 'NC'})
     # Set up context security
     dummy_session = create_test_session([RolesConstants.PII])
     self.__config.testing_securitypolicy(dummy_session.get_user())
示例#3
0
 def setUp(self):
     self.__tempfolder = tempfile.TemporaryDirectory()
     # setup request
     self.__request = DummyRequest()
     self.__request.method = 'POST'
     # setup registry
     settings = {
         'smarter_score_batcher.celery_timeout': 30,
         'smarter_score_batcher.celery.celery_always_eager': True
     }
     reg = Registry()
     reg.settings = settings
     self.__config = testing.setUp(registry=reg,
                                   request=self.__request,
                                   hook_zca=False)
     setup_celery(settings, db_connection=False)
示例#4
0
 def test_views_command_single_view_traversal(self):
     from pyramid.registry import Registry
     registry = Registry()
     command = self._makeOne(registry=registry)
     L = []
     command.out = L.append
     view = dummy.DummyView(context='context', view_name='a')
     command._find_view = lambda arg1, arg2: view
     command.args = ('/foo/bar/myapp.ini#myapp', '/a')
     result = command.run()
     self.assertEqual(result, 0)
     self.assertEqual(L[1], 'URL = /a')
     self.assertEqual(L[3], '    context: context')
     self.assertEqual(L[4], '    view name: a')
     self.assertEqual(L[8],
                      '    pyramid.tests.test_scripts.dummy.DummyView')
示例#5
0
 def test_views_command_not_found_url_starts_without_slash(self):
     from pyramid.registry import Registry
     command = self._makeOne()
     registry = Registry()
     L = []
     command.out = L.append
     command._find_view = lambda arg1, arg2: None
     app = DummyApp()
     app.registry = registry
     loadapp = DummyLoadApp(app)
     command.loadapp = (loadapp, )
     command.args = ('/foo/bar/myapp.ini', 'myapp', 'a')
     result = command.command()
     self.assertEqual(result, None)
     self.assertEqual(L[1], 'URL = /a')
     self.assertEqual(L[3], '    Not found.')
示例#6
0
    def test_del_registry(self):
        # see https://github.com/Pylons/pyramid/issues/165
        from pyramid.registry import Registry
        from pyramid.config import Configurator

        request = self._makeOne()
        request.registry = 'abc'
        self.assertEqual(request.registry, 'abc')
        del request.registry
        try:
            registry = Registry('this_test')
            config = Configurator(registry=registry)
            config.begin()
            self.assertTrue(request.registry is registry)
        finally:
            config.end()
示例#7
0
def test_includeme_custom_config():
    from pyramid_celery import includeme
    from pyramid_celery import celery_app
    from pyramid import testing
    from pyramid.registry import Registry
    config = testing.setUp()
    config.registry = Registry()
    config.registry.settings = {}
    includeme(config)
    config.configure_celery('tests/configs/dev.ini')
    assert celery_app.conf['broker_url'] == 'redis://localhost:1337/0'
    assert celery_app.conf['timezone'] == 'America/Los_Angeles'
    assert celery_app.conf['broker_transport_options'] == {
        'visibility_timeout': 18000,
        'max_retries': 5,
    }
示例#8
0
    def test_setup_registry_authorization_policy_dottedname(self):
        from pyramid.registry import Registry
        from pyramid.interfaces import IAuthorizationPolicy

        reg = Registry()
        config = self._makeOne(reg)
        dummy = object()
        config.setup_registry(
            authentication_policy=dummy,
            authorization_policy='tests.test_config',
        )
        config.commit()
        result = reg.getUtility(IAuthorizationPolicy)
        import tests.test_config

        self.assertEqual(result, tests.test_config)
示例#9
0
 def __init__(
     self,
     registry=None,
     package=None,
     settings=None,
     root_factory=None,
     authentication_policy=None,
     authorization_policy=None,
     renderers=None,
     debug_logger=None,
     locale_negotiator=None,
     request_factory=None,
     default_permission=None,
     session_factory=None,
     default_view_mapper=None,
     autocommit=False,
     exceptionresponse_view=default_exceptionresponse_view,
     route_prefix=None,
     introspection=True,
 ):
     if package is None:
         package = caller_package()
     name_resolver = DottedNameResolver(package)
     self.name_resolver = name_resolver
     self.package_name = name_resolver.get_package_name()
     self.package = name_resolver.get_package()
     self.registry = registry
     self.autocommit = autocommit
     self.route_prefix = route_prefix
     self.introspection = introspection
     if registry is None:
         registry = Registry(self.package_name)
         self.registry = registry
         self.setup_registry(
             settings=settings,
             root_factory=root_factory,
             authentication_policy=authentication_policy,
             authorization_policy=authorization_policy,
             renderers=renderers,
             debug_logger=debug_logger,
             locale_negotiator=locale_negotiator,
             request_factory=request_factory,
             default_permission=default_permission,
             session_factory=session_factory,
             default_view_mapper=default_view_mapper,
             exceptionresponse_view=exceptionresponse_view,
         )
示例#10
0
def test_service_decorator():
    with pytest.raises(ValueError, match='.*Invalid scope.*'):
        @service(scope='something else')
        class Test:
            pass

    with pytest.warns(DeprecationWarning, match='.*global.*'):
        @service(scope='global')
        class Test:
            pass

    with pytest.warns(DeprecationWarning, match='.*renamed.*'):
        class Test(BaseService):
            pass

    with pytest.warns(DeprecationWarning, match='.*renamed.*'):
        Test(registry=Registry())
 def test_views_command_single_view_traversal_with_permission(self):
     from pyramid.registry import Registry
     registry = Registry()
     command = self._makeOne(registry=registry)
     L = []
     command.out = L.append
     view = DummyView(context='context', view_name='a')
     view.__permission__ = 'test'
     command._find_view = lambda arg1, arg2: view
     command.args = ('/foo/bar/myapp.ini#myapp', '/a')
     result = command.command()
     self.assertEqual(result, None)
     self.assertEqual(L[1], 'URL = /a')
     self.assertEqual(L[3], '    context: context')
     self.assertEqual(L[4], '    view name: a')
     self.assertEqual(L[8], '    pyramid.tests.test_paster.DummyView')
     self.assertEqual(L[9], '    required permission = test')
    def setUp(self):
        self.__request = DummyRequest()
        reg = Registry()
        # Set up defined roles
        defined_roles = [(Allow, 'TEACHER', ('view', 'logout'))]
        edauth.set_roles(defined_roles)
        self.__tenant_name = get_unittest_tenant_name()
        set_tenant_map({self.__tenant_name: "NC", "tenantName": "WA"})
        self.__config = testing.setUp(registry=reg,
                                      request=self.__request,
                                      hook_zca=False)

        dummy_session = Session()
        dummy_session.set_user_context(
            [RoleRelation("TEACHER", self.__tenant_name, "NC", "228", "242")])
        dummy_session.set_uid('a5ddfe12-740d-4487-9179-de70f6ac33be')
        self.__config.testing_securitypolicy(dummy_session.get_user())
    def setUp(self):
        self.__request = DummyRequest()
        reg = Registry()
        reg.settings = {}
        reg.settings['session.backend.type'] = 'beaker'
        reg.settings['cache.expire'] = 10
        reg.settings['cache.regions'] = 'session'
        reg.settings['cache.type'] = 'memory'
        reg.settings['batch.user.session.timeout'] = 15
        component.provideUtility(SessionBackend(reg.settings), ISessionBackend)

        self.__config = testing.setUp(registry=reg,
                                      request=self.__request,
                                      hook_zca=False)
        self.__policy = EdAuthAuthenticationPolicy('secret',
                                                   callback=None,
                                                   cookie_name='cookieName')
示例#14
0
    def setUp(self):
        # Register mail utility
        from repoze.sendmail.interfaces import IMailDelivery
        from karl.testing import DummyMailer
        self.mailer = DummyMailer()
        from pyramid.threadlocal import manager
        from pyramid.registry import Registry
        manager.stack[0]['registry'] = Registry('testing')
        karl.testing.registerUtility(self.mailer, IMailDelivery)

        # Register BlogEntryAlert adapter
        from karl.models.interfaces import IProfile
        from karl.content.interfaces import IBlogEntry
        from karl.content.views.adapters import BlogEntryAlert
        from karl.utilities.interfaces import IAlert
        from pyramid.interfaces import IRequest
        karl.testing.registerAdapter(BlogEntryAlert,
                                     (IBlogEntry, IProfile, IRequest), IAlert)

        karl.testing.registerDummySecurityPolicy("a")

        # Create dummy site skel
        from karl.testing import DummyCommunity
        self.community = DummyCommunity()
        self.site = self.community.__parent__.__parent__

        self.profiles = testing.DummyModel()
        self.site["profiles"] = self.profiles
        from karl.testing import DummyProfile
        self.profiles["a"] = DummyProfile()
        self.profiles["b"] = DummyProfile()
        self.profiles["c"] = DummyProfile()
        for profile in self.profiles.values():
            profile["alerts"] = testing.DummyModel()

        self.community.member_names = set([
            "b",
            "c",
        ])
        self.community.moderator_names = set([
            "a",
        ])

        self.blog = self._makeContext()
        self.community["blog"] = self.blog
 def test_views_command_multiview(self):
     from pyramid.registry import Registry
     registry = Registry()
     command = self._makeOne(registry=registry)
     L = []
     command.out = L.append
     view = DummyView(context='context')
     view.__name__ = 'view'
     view.__view_attr__ = 'call'
     multiview = DummyMultiView(view, context='context', view_name='a')
     command._find_view = lambda arg1, arg2: multiview
     command.args = ('/foo/bar/myapp.ini#myapp', '/a')
     result = command.command()
     self.assertEqual(result, None)
     self.assertEqual(L[1], 'URL = /a')
     self.assertEqual(L[3], '    context: context')
     self.assertEqual(L[4], '    view name: a')
     self.assertEqual(L[8], '    pyramid.tests.test_paster.view.call')
示例#16
0
    def setUp(self):
        self.reg = Registry()
        self.reg.settings = {EDWARE_PUBLIC_SECRET: SECRET}
        cache_opts = {
            'cache.type': 'memory',
            'cache.regions': 'public.data,public.filtered_data,public.shortlived,public.very_shortlived'
        }
        CacheManager(**parse_cache_config_options(cache_opts))

        self.__request = DummyRequest()
        # Must set hook_zca to false to work with unittest_with_sqlite
        self.__config = testing.setUp(registry=self.reg, request=self.__request, hook_zca=False)
        defined_roles = [(Allow, RolesConstants.PII, ('view', 'logout'))]
        edauth.set_roles(defined_roles)
        set_tenant_map_public_reports({get_unittest_tenant_name(): 'NC'})
        set_default_min_cell_size(0)
        # so that it works with unittest edcore module
        PublicDBConnection.CONFIG_NAMESPACE = 'edware.db'
    def setUp(self):
        reg = Registry()
        reg.settings = {EDWARE_PUBLIC_SECRET: SECRET}
        cache_opts = {
            'cache.type':
            'memory',
            'cache.regions':
            'public.data,public.filtered_data,public.shortlived,public.very_shortlived'
        }
        CacheManager(**parse_cache_config_options(cache_opts))

        self.__request = DummyRequest()
        self.__config = testing.setUp(registry=reg,
                                      request=self.__request,
                                      hook_zca=False)
        dummy_session = create_test_session(['SUPER_USER'],
                                            uid='272',
                                            tenant='cat')
        self.__config.testing_securitypolicy(dummy_session)
示例#18
0
    def test__find_view_route_multiview_no_view_registered(self):
        from zope.interface import Interface
        from zope.interface import implementer
        from pyramid.interfaces import IRouteRequest
        from pyramid.interfaces import IMultiView
        from pyramid.interfaces import IRootFactory
        from pyramid.registry import Registry

        registry = Registry()

        def view1():  # pragma: no cover
            pass

        def view2():  # pragma: no cover
            pass

        class IMyRoot(Interface):
            pass

        class IMyRoute1(Interface):
            pass

        class IMyRoute2(Interface):
            pass

        registry.registerUtility(IMyRoute1, IRouteRequest, name='a')
        registry.registerUtility(IMyRoute2, IRouteRequest, name='b')

        @implementer(IMyRoot)
        class Factory:
            def __init__(self, request):
                pass

        registry.registerUtility(Factory, IRootFactory)
        routes = [
            dummy.DummyRoute('a', '/a', matchdict={}),
            dummy.DummyRoute('b', '/a', matchdict={}),
        ]
        self._register_mapper(registry, routes)
        command = self._makeOne(registry=registry)
        request = self._makeRequest('/a', registry)
        result = command._find_view(request)
        self.assertTrue(IMultiView.providedBy(result))
示例#19
0
 def test__find_view_traversal(self):
     from zope.interface import providedBy
     from pyramid.interfaces import IRequest
     from pyramid.interfaces import IViewClassifier
     from pyramid.interfaces import IView
     from pyramid.traversal import DefaultRootFactory
     from pyramid.registry import Registry
     registry = Registry()
     def view1(): pass
     request = dummy.DummyRequest({'PATH_INFO':'/a'})
     root = DefaultRootFactory(request)
     root_iface = providedBy(root)
     registry.registerAdapter(view1,
                              (IViewClassifier, IRequest, root_iface),
                              IView, name='a')
     self._register_mapper(registry, [])
     command = self._makeOne(registry=registry)
     result = command._find_view('/a', registry)
     self.assertEqual(result, view1)
 def test_views_command_single_view_traversal_with_predicates(self):
     from pyramid.registry import Registry
     registry = Registry()
     command = self._makeOne(registry=registry)
     L = []
     command.out = L.append
     def predicate(): pass
     predicate.__text__ = "predicate = x"
     view = DummyView(context='context', view_name='a')
     view.__predicates__ = [predicate]
     command._find_view = lambda arg1, arg2: view
     command.args = ('/foo/bar/myapp.ini#myapp', '/a')
     result = command.command()
     self.assertEqual(result, None)
     self.assertEqual(L[1], 'URL = /a')
     self.assertEqual(L[3], '    context: context')
     self.assertEqual(L[4], '    view name: a')
     self.assertEqual(L[8], '    pyramid.tests.test_paster.DummyView')
     self.assertEqual(L[9], '    view predicates (predicate = x)')
示例#21
0
 def test_views_command_single_view_traversal(self):
     from pyramid.registry import Registry
     command = self._makeOne()
     registry = Registry()
     L = []
     command.out = L.append
     view = DummyView(context='context', view_name='a')
     command._find_view = lambda arg1, arg2: view
     app = DummyApp()
     app.registry = registry
     loadapp = DummyLoadApp(app)
     command.loadapp = (loadapp, )
     command.args = ('/foo/bar/myapp.ini', 'myapp', '/a')
     result = command.command()
     self.assertEqual(result, None)
     self.assertEqual(L[1], 'URL = /a')
     self.assertEqual(L[3], '    context: context')
     self.assertEqual(L[4], '    view name: a')
     self.assertEqual(L[8], '    pyramid.tests.test_paster.DummyView')
示例#22
0
    def test_views_command_single_view_traversal_with_permission(self):
        from pyramid.registry import Registry

        registry = Registry()
        command = self._makeOne(registry=registry)
        L = []
        command.out = L.append
        view = dummy.DummyView(context='context', view_name='a')
        view.__permission__ = 'test'
        command._find_view = lambda arg1: view
        command.args.config_uri = '/foo/bar/myapp.ini#myapp'
        command.args.url = '/a'
        result = command.run()
        self.assertEqual(result, 0)
        self.assertEqual(L[1], 'URL = /a')
        self.assertEqual(L[3], '    context: context')
        self.assertEqual(L[4], '    view name: a')
        self.assertEqual(L[8], '    tests.test_scripts.dummy.DummyView')
        self.assertEqual(L[9], '    required permission = test')
示例#23
0
    def test__find_view_route_multiview_no_view_registered(self):
        from zope.interface import Interface
        from zope.interface import implements
        from pyramid.interfaces import IRouteRequest
        from pyramid.interfaces import IMultiView
        from pyramid.interfaces import IRootFactory
        from pyramid.registry import Registry
        registry = Registry()

        def view1():
            pass

        def view2():
            pass

        class IMyRoot(Interface):
            pass

        class IMyRoute1(Interface):
            pass

        class IMyRoute2(Interface):
            pass

        registry.registerUtility(IMyRoute1, IRouteRequest, name='a')
        registry.registerUtility(IMyRoute2, IRouteRequest, name='b')

        class Factory(object):
            implements(IMyRoot)

            def __init__(self, request):
                pass

        registry.registerUtility(Factory, IRootFactory)
        routes = [
            DummyRoute('a', '/a', matchdict={}),
            DummyRoute('b', '/a', matchdict={})
        ]
        self._register_mapper(registry, routes)
        command = self._makeOne()
        result = command._find_view('/a', registry)
        self.failUnless(IMultiView.providedBy(result))
示例#24
0
def setup_thelma(thelma_settings):
    # Create source DB session.
    src_db_string = "postgresql+psycopg2://%s:%s@%s:%s/%s" \
                       % (DB_USER, DB_PWD, SOURCE_DB_HOST,
                          SOURCE_DB_PORT, SOURCE_DB_NAME)
    src_engine = create_engine(src_db_string)
    src_session_maker = sessionmaker(bind=src_engine)
    src_sess = src_session_maker()
    # Initialize TheLMA and create target DB session.
    reg = Registry('thelma')
    config = create_config(thelma_settings, registry=reg)
    config.setup_registry(settings=thelma_settings)
    config.begin()
    config.load_zcml('configure.zcml')
    repo_mgr = config.get_registered_utility(IRepositoryManager)
    repo_mgr.initialize_all()
    tgt_engine = get_engine(REPOSITORY_TYPES.RDB)
    tgt_session_maker = sessionmaker(bind=tgt_engine)
    tgt_sess = tgt_session_maker()
    return src_sess, tgt_sess
示例#25
0
def test_ini_logging():
    from celery import signals
    from pyramid_celery import includeme
    from pyramid import testing
    from pyramid.registry import Registry
    config = testing.setUp()
    config.registry = Registry()
    config.registry.settings = {}
    includeme(config)
    config.configure_celery('tests/configs/dev.ini')

    with mock.patch('pyramid_celery.setup_logging') as setup_logging:
        signals.setup_logging.send(
            sender=None,
            loglevel='INFO',
            logfile=None,
            format='',
            colorize=False,
        )
        setup_logging.assert_called_with('tests/configs/dev.ini')
示例#26
0
    def setUp(self):
        import ptah.scripts
        import pyramid.paster
        self.original_get_app = ptah.scripts.get_app
        self.original_global_registries = ptah.scripts.global_registries

        self.app = app = object()
        self.registry = registry = Registry()

        class DummyGetApp(object):

            last = registry

            def __call__(self, *a, **kw):
                self.a = a
                self.kw = kw
                return app

        pyramid.paster.get_app = DummyGetApp()
        ptah.scripts.global_registries = DummyGetApp()
 def test_single_route_no_views_registered(self):
     from zope.interface import Interface
     from pyramid.registry import Registry
     from pyramid.interfaces import IRouteRequest
     registry = Registry()
     def view():pass
     class IMyRoute(Interface):
         pass
     registry.registerUtility(IMyRoute, IRouteRequest, name='a')
     command = self._makeOne()
     route = DummyRoute('a', '/a')
     mapper = DummyMapper(route)
     command._get_mapper = lambda *arg: mapper
     L = []
     command.out = L.append
     command.bootstrap = (DummyBootstrap(registry=registry),)
     result = command.command()
     self.assertEqual(result, None)
     self.assertEqual(len(L), 3)
     self.assertEqual(L[-1].split()[:3], ['a', '/a', 'None'])
示例#28
0
 def test__find_view_route_multiview(self):
     from zope.interface import Interface
     from zope.interface import implementer
     from pyramid.interfaces import IRouteRequest
     from pyramid.interfaces import IViewClassifier
     from pyramid.interfaces import IView
     from pyramid.interfaces import IMultiView
     from pyramid.interfaces import IRootFactory
     from pyramid.registry import Registry
     registry = Registry()
     def view1():pass
     def view2():pass
     class IMyRoot(Interface):
         pass
     class IMyRoute1(Interface):
         pass
     class IMyRoute2(Interface):
         pass
     registry.registerAdapter(view1,
                              (IViewClassifier, IMyRoute1, IMyRoot),
                              IView, '')
     registry.registerAdapter(view2,
                              (IViewClassifier, IMyRoute2, IMyRoot),
                              IView, '')
     registry.registerUtility(IMyRoute1, IRouteRequest, name='a')
     registry.registerUtility(IMyRoute2, IRouteRequest, name='b')
     @implementer(IMyRoot)
     class Factory(object):
         def __init__(self, request):
             pass
     registry.registerUtility(Factory, IRootFactory)
     routes = [dummy.DummyRoute('a', '/a', matchdict={}),
               dummy.DummyRoute('b', '/a', matchdict={})]
     self._register_mapper(registry, routes)
     command = self._makeOne(registry=registry)
     request = self._makeRequest('/a', registry)
     result = command._find_view(request)
     self.assertTrue(IMultiView.providedBy(result))
     self.assertEqual(len(result.views), 2)
     self.assertTrue((None, view1, None) in result.views)
     self.assertTrue((None, view2, None) in result.views)
 def setUp(self):
     self.reg = Registry()
     self.__temp_dir = tempfile.TemporaryDirectory()
     self.__work_zone_dir = os.path.join(self.__temp_dir.name, 'work_zone')
     self.__raw_data_base_dir = os.path.join(self.__temp_dir.name,
                                             'raw_data')
     self.__item_level_base_dir = os.path.join(self.__temp_dir.name,
                                               'item_level')
     self.reg.settings = {
         'extract.work_zone_base_dir': self.__work_zone_dir,
         'hpz.file_upload_base_url': 'http://somehost:82/files',
         'extract.available_grades': '3,4,5,6,7,8,11',
         'extract.raw_data_base_dir': self.__raw_data_base_dir,
         'extract.item_level_base_dir': self.__item_level_base_dir
     }
     settings = {'extract.celery.CELERY_ALWAYS_EAGER': True}
     setup_celery(settings)
     cache_opts = {
         'cache.type': 'memory',
         'cache.regions':
         'public.data,public.filtered_data,public.shortlived'
     }
     CacheManager(**parse_cache_config_options(cache_opts))
     # Set up user context
     self.__request = DummyRequest()
     # Must set hook_zca to false to work with unittest_with_sqlite
     self.__config = testing.setUp(registry=self.reg,
                                   request=self.__request,
                                   hook_zca=False)
     defined_roles = [
         (Allow, RolesConstants.SAR_EXTRACTS, ('view', 'logout')),
         (Allow, RolesConstants.AUDIT_XML_EXTRACTS, ('view', 'logout')),
         (Allow, RolesConstants.ITEM_LEVEL_EXTRACTS, ('view', 'logout'))
     ]
     edauth.set_roles(defined_roles)
     dummy_session = create_test_session([
         RolesConstants.SAR_EXTRACTS, RolesConstants.AUDIT_XML_EXTRACTS,
         RolesConstants.ITEM_LEVEL_EXTRACTS
     ])
     self.__config.testing_securitypolicy(dummy_session.get_user())
     set_tenant_map({get_unittest_tenant_name(): 'NC'})
示例#30
0
    def test_views_command_single_view_function_traversal(self):
        from pyramid.registry import Registry

        registry = Registry()
        command = self._makeOne(registry=registry)
        L = []
        command.out = L.append

        def view():  # pragma: no cover
            pass

        view.__request_attrs__ = {'context': 'context', 'view_name': 'a'}
        command._find_view = lambda arg1: view
        command.args.config_uri = '/foo/bar/myapp.ini#myapp'
        command.args.url = '/a'
        result = command.run()
        self.assertEqual(result, 0)
        self.assertEqual(L[1], 'URL = /a')
        self.assertEqual(L[3], '    context: context')
        self.assertEqual(L[4], '    view name: a')
        self.assertEqual(L[8], '    tests.test_scripts.test_pviews.view')