{
    "file_diffs": [
        {
            "old_file_content": "from zope.interface import implementer, providedBy\nfrom zope.deprecation import deprecated\n\nfrom pyramid.interfaces import (\n    ISecurityPolicy,\n    IAuthenticationPolicy,\n    IAuthorizationPolicy,\n    ISecuredView,\n    IView,\n    IViewClassifier,\n)\n\nfrom pyramid.threadlocal import get_current_registry\n\nEveryone = 'system.Everyone'\nAuthenticated = 'system.Authenticated'\nAllow = 'Allow'\nDeny = 'Deny'\n\n\nclass AllPermissionsList(object):\n    \"\"\" Stand in 'permission list' to represent all permissions \"\"\"\n\n    def __iter__(self):\n        return iter(())\n\n    def __contains__(self, other):\n        return True\n\n    def __eq__(self, other):\n        return isinstance(other, self.__class__)\n\n\nALL_PERMISSIONS = AllPermissionsList()\nDENY_ALL = (Deny, Everyone, ALL_PERMISSIONS)\n\nNO_PERMISSION_REQUIRED = '__no_permission_required__'\n\n\ndef _get_security_policy(request):\n    return request.registry.queryUtility(ISecurityPolicy)\n\n\ndef _get_authentication_policy(request):\n    return request.registry.queryUtility(IAuthenticationPolicy)\n\n\ndef remember(request, userid, **kw):\n    \"\"\"\n    Returns a sequence of header tuples (e.g. ``[('Set-Cookie', 'foo=abc')]``)\n    on this request's response.\n    These headers are suitable for 'remembering' a set of credentials\n    implied by the data passed as ``userid`` and ``*kw`` using the\n    current :term:`security policy`.  Common usage might look\n    like so within the body of a view function (``response`` is\n    assumed to be a :term:`WebOb` -style :term:`response` object\n    computed previously by the view code):\n\n    .. code-block:: python\n\n       from pyramid.security import remember\n       headers = remember(request, 'chrism', password='123', max_age='86400')\n       response = request.response\n       response.headerlist.extend(headers)\n       return response\n\n    If no :term:`security policy` is in use, this function will\n    always return an empty sequence. If used, the composition and\n    meaning of ``**kw`` must be agreed upon by the calling code and\n    the effective security policy.\n\n    .. versionchanged:: 1.6\n        Deprecated the ``principal`` argument in favor of ``userid`` to clarify\n        its relationship to the authentication policy.\n\n    .. versionchanged:: 1.10\n        Removed the deprecated ``principal`` argument.\n    \"\"\"\n    policy = _get_security_policy(request)\n    if policy is None:\n        return []\n    return policy.remember(request, userid, **kw)\n\n\ndef forget(request, **kw):\n    \"\"\"\n    Return a sequence of header tuples (e.g. ``[('Set-Cookie',\n    'foo=abc')]``) suitable for 'forgetting' the set of credentials\n    possessed by the currently authenticated user.  A common usage\n    might look like so within the body of a view function\n    (``response`` is assumed to be an :term:`WebOb` -style\n    :term:`response` object computed previously by the view code):\n\n    .. code-block:: python\n\n       from pyramid.security import forget\n       headers = forget(request)\n       response.headerlist.extend(headers)\n       return response\n\n    If no :term:`security policy` is in use, this function will\n    always return an empty sequence.\n    \"\"\"\n    policy = _get_security_policy(request)\n    if policy is None:\n        return []\n    return policy.forget(request, **kw)\n\n\ndef principals_allowed_by_permission(context, permission):\n    \"\"\"\n    .. deprecated:: 2.0\n\n        The new security policy has removed the concept of principals.  See\n        :ref:`upgrading_auth` for more information.\n\n    Provided a ``context`` (a resource object), and a ``permission``\n    string, if an :term:`authorization policy` is\n    in effect, return a sequence of :term:`principal` ids that possess\n    the permission in the ``context``.  If no authorization policy is\n    in effect, this will return a sequence with the single value\n    :mod:`pyramid.security.Everyone` (the special principal\n    identifier representing all principals).\n\n    .. note::\n\n       Even if an :term:`authorization policy` is in effect,\n       some (exotic) authorization policies may not implement the\n       required machinery for this function; those will cause a\n       :exc:`NotImplementedError` exception to be raised when this\n       function is invoked.\n\n    \"\"\"\n    reg = get_current_registry()\n    policy = reg.queryUtility(IAuthorizationPolicy)\n    if policy is None:\n        return [Everyone]\n    return policy.principals_allowed_by_permission(context, permission)\n\n\ndeprecated(\n    'principals_allowed_by_permission',\n    'The new security policy has removed the concept of principals.  See '\n    'https://docs.pylonsproject.org/projects/pyramid/en/latest'\n    '/whatsnew-2.0.html#upgrading-authentication-authorization '\n    'for more information.',\n)\n\n\ndef view_execution_permitted(context, request, name=''):\n    \"\"\" If the view specified by ``context`` and ``name`` is protected\n    by a :term:`permission`, check the permission associated with the\n    view using the effective authentication/authorization policies and\n    the ``request``.  Return a boolean result.  If no\n    :term:`authorization policy` is in effect, or if the view is not\n    protected by a permission, return ``True``. If no view can view found,\n    an exception will be raised.\n\n    .. versionchanged:: 1.4a4\n       An exception is raised if no view is found.\n\n    \"\"\"\n    reg = request.registry\n    provides = [IViewClassifier] + [providedBy(x) for x in (request, context)]\n    # XXX not sure what to do here about using _find_views or analogue;\n    # for now let's just keep it as-is\n    view = reg.adapters.lookup(provides, ISecuredView, name=name)\n    if view is None:\n        view = reg.adapters.lookup(provides, IView, name=name)\n        if view is None:\n            raise TypeError(\n                'No registered view satisfies the constraints. '\n                'It would not make sense to claim that this view '\n                '\"is\" or \"is not\" permitted.'\n            )\n        return Allowed(\n            'Allowed: view name %r in context %r (no permission defined)'\n            % (name, context)\n        )\n    return view.__permitted__(context, request)\n\n\nclass PermitsResult(int):\n    def __new__(cls, s, *args):\n        \"\"\"\n        Create a new instance.\n\n        :param fmt: A format string explaining the reason for denial.\n        :param args: Arguments are stored and used with the format string\n                      to generate the ``msg``.\n\n        \"\"\"\n        inst = int.__new__(cls, cls.boolval)\n        inst.s = s\n        inst.args = args\n        return inst\n\n    @property\n    def msg(self):\n        \"\"\" A string indicating why the result was generated.\"\"\"\n        return self.s % self.args\n\n    def __str__(self):\n        return self.msg\n\n    def __repr__(self):\n        return '<%s instance at %s with msg %r>' % (\n            self.__class__.__name__,\n            id(self),\n            self.msg,\n        )\n\n\nclass Denied(PermitsResult):\n    \"\"\"\n    An instance of ``Denied`` is returned when a security-related\n    API or other :app:`Pyramid` code denies an action unrelated to\n    an ACL check.  It evaluates equal to all boolean false types.  It\n    has an attribute named ``msg`` describing the circumstances for\n    the deny.\n\n    \"\"\"\n\n    boolval = 0\n\n\nclass Allowed(PermitsResult):\n    \"\"\"\n    An instance of ``Allowed`` is returned when a security-related\n    API or other :app:`Pyramid` code allows an action unrelated to\n    an ACL check.  It evaluates equal to all boolean true types.  It\n    has an attribute named ``msg`` describing the circumstances for\n    the allow.\n\n    \"\"\"\n\n    boolval = 1\n\n\nclass ACLPermitsResult(PermitsResult):\n    def __new__(cls, ace, acl, permission, principals, context):\n        \"\"\"\n        Create a new instance.\n\n        :param ace: The :term:`ACE` that matched, triggering the result.\n        :param acl: The :term:`ACL` containing ``ace``.\n        :param permission: The required :term:`permission`.\n        :param principals: The list of :term:`principals <principal>` provided.\n        :param context: The :term:`context` providing the :term:`lineage`\n                        searched.\n\n        \"\"\"\n        fmt = (\n            '%s permission %r via ACE %r in ACL %r on context %r for '\n            'principals %r'\n        )\n        inst = PermitsResult.__new__(\n            cls, fmt, cls.__name__, permission, ace, acl, context, principals\n        )\n        inst.permission = permission\n        inst.ace = ace\n        inst.acl = acl\n        inst.principals = principals\n        inst.context = context\n        return inst\n\n\nclass ACLDenied(ACLPermitsResult, Denied):\n    \"\"\"\n    An instance of ``ACLDenied`` is a specialization of\n    :class:`pyramid.security.Denied` that represents that a security check\n    made explicitly against ACL was denied.  It evaluates equal to all\n    boolean false types.  It also has the following attributes: ``acl``,\n    ``ace``, ``permission``, ``principals``, and ``context``.  These\n    attributes indicate the security values involved in the request.  Its\n    ``__str__`` method prints a summary of these attributes for debugging\n    purposes. The same summary is available as the ``msg`` attribute.\n\n    \"\"\"\n\n\nclass ACLAllowed(ACLPermitsResult, Allowed):\n    \"\"\"\n    An instance of ``ACLAllowed`` is a specialization of\n    :class:`pyramid.security.Allowed` that represents that a security check\n    made explicitly against ACL was allowed.  It evaluates equal to all\n    boolean true types.  It also has the following attributes: ``acl``,\n    ``ace``, ``permission``, ``principals``, and ``context``.  These\n    attributes indicate the security values involved in the request.  Its\n    ``__str__`` method prints a summary of these attributes for debugging\n    purposes. The same summary is available as the ``msg`` attribute.\n\n    \"\"\"\n\n\nclass SecurityAPIMixin:\n    \"\"\" Mixin for Request class providing auth-related properties. \"\"\"\n\n    @property\n    def authenticated_identity(self):\n        \"\"\"\n        Return an opaque object identifying the current user or ``None`` if no\n        user is authenticated or there is no :term:`security policy` in effect.\n\n        \"\"\"\n        policy = _get_security_policy(self)\n        if policy is None:\n            return None\n        return policy.identify(self)\n\n    @property\n    def authenticated_userid(self):\n        \"\"\"\n        Return the :term:`userid` of the currently authenticated user or\n        ``None`` if there is no :term:`security policy` in effect or there is\n        no currently authenticated user.\n\n        .. versionchanged:: 2.0\n\n           This property delegates to the effective :term:`security policy`,\n           ignoring old-style :term:`authentication policy`.\n\n        \"\"\"\n        policy = _get_security_policy(self)\n        if policy is None:\n            return None\n        return policy.authenticated_userid(self)\n\n    def has_permission(self, permission, context=None):\n        \"\"\" Given a permission and an optional context, returns an instance of\n        :data:`pyramid.security.Allowed` if the permission is granted to this\n        request with the provided context, or the context already associated\n        with the request.  Otherwise, returns an instance of\n        :data:`pyramid.security.Denied`.  This method delegates to the current\n        security policy.  Returns\n        :data:`pyramid.security.Allowed` unconditionally if no security\n        policy has been registered for this request.  If ``context`` is not\n        supplied or is supplied as ``None``, the context used is the\n        ``request.context`` attribute.\n\n        :param permission: Does this request have the given permission?\n        :type permission: str\n        :param context: A resource object or ``None``\n        :type context: object\n        :returns: Either :class:`pyramid.security.Allowed` or\n                  :class:`pyramid.security.Denied`.\n\n        \"\"\"\n        if context is None:\n            context = self.context\n        policy = _get_security_policy(self)\n        if policy is None:\n            return Allowed('No security policy in use.')\n        return policy.permits(self, context, permission)\n\n\nclass AuthenticationAPIMixin(object):\n    \"\"\" Mixin for Request class providing compatibility properties. \"\"\"\n\n    @property\n    def unauthenticated_userid(self):\n        \"\"\"\n        .. deprecated:: 2.0\n\n            ``unauthenticated_userid`` does not have an equivalent in the new\n            security system.  Use :attr:`.authenticated_userid` or\n            :attr:`.authenticated_identity` instead.\n            See :ref:`upgrading_auth` for more information.\n\n        Return an object which represents the *claimed* (not verified) user\n        id of the credentials present in the request. ``None`` if there is no\n        :term:`authentication policy` in effect or there is no user data\n        associated with the current request.  This differs from\n        :attr:`~pyramid.request.Request.authenticated_userid`, because the\n        effective authentication policy will not ensure that a record\n        associated with the userid exists in persistent storage.\n\n        \"\"\"\n        authn = _get_authentication_policy(self)\n        security = _get_security_policy(self)\n        if authn is not None:\n            return authn.unauthenticated_userid(self)\n        elif security is not None:\n            return security.authenticated_userid(self)\n        else:\n            return None\n\n    @property\n    def effective_principals(self):\n        \"\"\"\n        .. deprecated:: 2.0\n\n            The new security policy has removed the concept of principals.  See\n            :ref:`upgrading_auth` for more information.\n\n        Return the list of 'effective' :term:`principal` identifiers\n        for the ``request``. If no :term:`authentication policy` is in effect,\n        this will return a one-element list containing the\n        :data:`pyramid.security.Everyone` principal.\n\n        \"\"\"\n        policy = _get_authentication_policy(self)\n        if policy is None:\n            return [Everyone]\n        return policy.effective_principals(self)\n\n    effective_principals = deprecated(\n        effective_principals,\n        'The new security policy has removed the concept of principals.  See '\n        'https://docs.pylonsproject.org/projects/pyramid/en/latest'\n        '/whatsnew-2.0.html#upgrading-authentication-authorization '\n        'for more information.',\n    )\n\n\n@implementer(ISecurityPolicy)\nclass LegacySecurityPolicy:\n    \"\"\"\n    A :term:`security policy` which provides a backwards compatibility shim for\n    the :term:`authentication policy` and the :term:`authorization policy`.\n\n    \"\"\"\n\n    def _get_authn_policy(self, request):\n        return request.registry.getUtility(IAuthenticationPolicy)\n\n    def _get_authz_policy(self, request):\n        return request.registry.getUtility(IAuthorizationPolicy)\n\n    def identify(self, request):\n        return self.authenticated_userid(request)\n\n    def authenticated_userid(self, request):\n        authn = self._get_authn_policy(request)\n        return authn.authenticated_userid(request)\n\n    def remember(self, request, userid, **kw):\n        authn = self._get_authn_policy(request)\n        return authn.remember(request, userid, **kw)\n\n    def forget(self, request, **kw):\n        authn = self._get_authn_policy(request)\n        # XXX log warning if varkwargs were passed?\n        return authn.forget(request)\n\n    def permits(self, request, context, permission):\n        authn = self._get_authn_policy(request)\n        authz = self._get_authz_policy(request)\n        principals = authn.effective_principals(request)\n        return authz.permits(context, principals, permission)\n",
            "new_file_content": "from zope.interface import implementer, providedBy\nfrom zope.deprecation import deprecated\n\nfrom pyramid.interfaces import (\n    ISecurityPolicy,\n    IAuthenticationPolicy,\n    IAuthorizationPolicy,\n    ISecuredView,\n    IView,\n    IViewClassifier,\n)\n\nfrom pyramid.threadlocal import get_current_registry\n\nEveryone = 'system.Everyone'\nAuthenticated = 'system.Authenticated'\nAllow = 'Allow'\nDeny = 'Deny'\n\n\nclass AllPermissionsList(object):\n    \"\"\" Stand in 'permission list' to represent all permissions \"\"\"\n\n    def __iter__(self):\n        return iter(())\n\n    def __contains__(self, other):\n        return True\n\n    def __eq__(self, other):\n        return isinstance(other, self.__class__)\n\n\nALL_PERMISSIONS = AllPermissionsList()\nDENY_ALL = (Deny, Everyone, ALL_PERMISSIONS)\n\nNO_PERMISSION_REQUIRED = '__no_permission_required__'\n\n\ndef _get_security_policy(request):\n    return request.registry.queryUtility(ISecurityPolicy)\n\n\ndef _get_authentication_policy(request):\n    return request.registry.queryUtility(IAuthenticationPolicy)\n\n\ndef remember(request, userid, **kw):\n    \"\"\"\n    Returns a sequence of header tuples (e.g. ``[('Set-Cookie', 'foo=abc')]``)\n    on this request's response.\n    These headers are suitable for 'remembering' a set of credentials\n    implied by the data passed as ``userid`` and ``*kw`` using the\n    current :term:`security policy`.  Common usage might look\n    like so within the body of a view function (``response`` is\n    assumed to be a :term:`WebOb` -style :term:`response` object\n    computed previously by the view code):\n\n    .. code-block:: python\n\n       from pyramid.security import remember\n       headers = remember(request, 'chrism', password='123', max_age='86400')\n       response = request.response\n       response.headerlist.extend(headers)\n       return response\n\n    If no :term:`security policy` is in use, this function will\n    always return an empty sequence. If used, the composition and\n    meaning of ``**kw`` must be agreed upon by the calling code and\n    the effective security policy.\n\n    .. versionchanged:: 1.6\n        Deprecated the ``principal`` argument in favor of ``userid`` to clarify\n        its relationship to the authentication policy.\n\n    .. versionchanged:: 1.10\n        Removed the deprecated ``principal`` argument.\n    \"\"\"\n    policy = _get_security_policy(request)\n    if policy is None:\n        return []\n    return policy.remember(request, userid, **kw)\n\n\ndef forget(request, **kw):\n    \"\"\"\n    Return a sequence of header tuples (e.g. ``[('Set-Cookie',\n    'foo=abc')]``) suitable for 'forgetting' the set of credentials\n    possessed by the currently authenticated user.  A common usage\n    might look like so within the body of a view function\n    (``response`` is assumed to be an :term:`WebOb` -style\n    :term:`response` object computed previously by the view code):\n\n    .. code-block:: python\n\n       from pyramid.security import forget\n       headers = forget(request)\n       response.headerlist.extend(headers)\n       return response\n\n    If no :term:`security policy` is in use, this function will\n    always return an empty sequence.\n    \"\"\"\n    policy = _get_security_policy(request)\n    if policy is None:\n        return []\n    return policy.forget(request, **kw)\n\n\ndef principals_allowed_by_permission(context, permission):\n    \"\"\"\n    .. deprecated:: 2.0\n\n        The new security policy has removed the concept of principals.  See\n        :ref:`upgrading_auth` for more information.\n\n    Provided a ``context`` (a resource object), and a ``permission``\n    string, if an :term:`authorization policy` is\n    in effect, return a sequence of :term:`principal` ids that possess\n    the permission in the ``context``.  If no authorization policy is\n    in effect, this will return a sequence with the single value\n    :mod:`pyramid.security.Everyone` (the special principal\n    identifier representing all principals).\n\n    .. note::\n\n       Even if an :term:`authorization policy` is in effect,\n       some (exotic) authorization policies may not implement the\n       required machinery for this function; those will cause a\n       :exc:`NotImplementedError` exception to be raised when this\n       function is invoked.\n\n    \"\"\"\n    reg = get_current_registry()\n    policy = reg.queryUtility(IAuthorizationPolicy)\n    if policy is None:\n        return [Everyone]\n    return policy.principals_allowed_by_permission(context, permission)\n\n\ndeprecated(\n    'principals_allowed_by_permission',\n    'The new security policy has removed the concept of principals.  See '\n    'https://docs.pylonsproject.org/projects/pyramid/en/latest'\n    '/whatsnew-2.0.html#upgrading-authentication-authorization '\n    'for more information.',\n)\n\n\ndef view_execution_permitted(context, request, name=''):\n    \"\"\" If the view specified by ``context`` and ``name`` is protected\n    by a :term:`permission`, check the permission associated with the\n    view using the effective authentication/authorization policies and\n    the ``request``.  Return a boolean result.  If no\n    :term:`authorization policy` is in effect, or if the view is not\n    protected by a permission, return ``True``. If no view can view found,\n    an exception will be raised.\n\n    .. versionchanged:: 1.4a4\n       An exception is raised if no view is found.\n\n    \"\"\"\n    reg = request.registry\n    provides = [IViewClassifier] + [providedBy(x) for x in (request, context)]\n    # XXX not sure what to do here about using _find_views or analogue;\n    # for now let's just keep it as-is\n    view = reg.adapters.lookup(provides, ISecuredView, name=name)\n    if view is None:\n        view = reg.adapters.lookup(provides, IView, name=name)\n        if view is None:\n            raise TypeError(\n                'No registered view satisfies the constraints. '\n                'It would not make sense to claim that this view '\n                '\"is\" or \"is not\" permitted.'\n            )\n        return Allowed(\n            'Allowed: view name %r in context %r (no permission defined)'\n            % (name, context)\n        )\n    return view.__permitted__(context, request)\n\n\nclass PermitsResult(int):\n    def __new__(cls, s, *args):\n        \"\"\"\n        Create a new instance.\n\n        :param fmt: A format string explaining the reason for denial.\n        :param args: Arguments are stored and used with the format string\n                      to generate the ``msg``.\n\n        \"\"\"\n        inst = int.__new__(cls, cls.boolval)\n        inst.s = s\n        inst.args = args\n        return inst\n\n    @property\n    def msg(self):\n        \"\"\" A string indicating why the result was generated.\"\"\"\n        return self.s % self.args\n\n    def __str__(self):\n        return self.msg\n\n    def __repr__(self):\n        return '<%s instance at %s with msg %r>' % (\n            self.__class__.__name__,\n            id(self),\n            self.msg,\n        )\n\n\nclass Denied(PermitsResult):\n    \"\"\"\n    An instance of ``Denied`` is returned when a security-related\n    API or other :app:`Pyramid` code denies an action unrelated to\n    an ACL check.  It evaluates equal to all boolean false types.  It\n    has an attribute named ``msg`` describing the circumstances for\n    the deny.\n\n    \"\"\"\n\n    boolval = 0\n\n\nclass Allowed(PermitsResult):\n    \"\"\"\n    An instance of ``Allowed`` is returned when a security-related\n    API or other :app:`Pyramid` code allows an action unrelated to\n    an ACL check.  It evaluates equal to all boolean true types.  It\n    has an attribute named ``msg`` describing the circumstances for\n    the allow.\n\n    \"\"\"\n\n    boolval = 1\n\n\nclass ACLPermitsResult(PermitsResult):\n    def __new__(cls, ace, acl, permission, principals, context):\n        \"\"\"\n        Create a new instance.\n\n        :param ace: The :term:`ACE` that matched, triggering the result.\n        :param acl: The :term:`ACL` containing ``ace``.\n        :param permission: The required :term:`permission`.\n        :param principals: The list of :term:`principals <principal>` provided.\n        :param context: The :term:`context` providing the :term:`lineage`\n                        searched.\n\n        \"\"\"\n        fmt = (\n            '%s permission %r via ACE %r in ACL %r on context %r for '\n            'principals %r'\n        )\n        inst = PermitsResult.__new__(\n            cls, fmt, cls.__name__, permission, ace, acl, context, principals\n        )\n        inst.permission = permission\n        inst.ace = ace\n        inst.acl = acl\n        inst.principals = principals\n        inst.context = context\n        return inst\n\n\nclass ACLDenied(ACLPermitsResult, Denied):\n    \"\"\"\n    An instance of ``ACLDenied`` is a specialization of\n    :class:`pyramid.security.Denied` that represents that a security check\n    made explicitly against ACL was denied.  It evaluates equal to all\n    boolean false types.  It also has the following attributes: ``acl``,\n    ``ace``, ``permission``, ``principals``, and ``context``.  These\n    attributes indicate the security values involved in the request.  Its\n    ``__str__`` method prints a summary of these attributes for debugging\n    purposes. The same summary is available as the ``msg`` attribute.\n\n    \"\"\"\n\n\nclass ACLAllowed(ACLPermitsResult, Allowed):\n    \"\"\"\n    An instance of ``ACLAllowed`` is a specialization of\n    :class:`pyramid.security.Allowed` that represents that a security check\n    made explicitly against ACL was allowed.  It evaluates equal to all\n    boolean true types.  It also has the following attributes: ``acl``,\n    ``ace``, ``permission``, ``principals``, and ``context``.  These\n    attributes indicate the security values involved in the request.  Its\n    ``__str__`` method prints a summary of these attributes for debugging\n    purposes. The same summary is available as the ``msg`` attribute.\n\n    \"\"\"\n\n\nclass SecurityAPIMixin:\n    \"\"\" Mixin for Request class providing auth-related properties. \"\"\"\n\n    @property\n    def authenticated_identity(self):\n        \"\"\"\n        Return an opaque object identifying the current user or ``None`` if no\n        user is authenticated or there is no :term:`security policy` in effect.\n\n        \"\"\"\n        policy = _get_security_policy(self)\n        if policy is None:\n            return None\n        return policy.identify(self)\n\n    @property\n    def authenticated_userid(self):\n        \"\"\"\n        Return the :term:`userid` of the currently authenticated user or\n        ``None`` if there is no :term:`security policy` in effect or there is\n        no currently authenticated user.\n\n        .. versionchanged:: 2.0\n\n           This property delegates to the effective :term:`security policy`,\n           ignoring old-style :term:`authentication policy`.\n\n        \"\"\"\n        policy = _get_security_policy(self)\n        if policy is None:\n            return None\n        return policy.authenticated_userid(self)\n\n    def has_permission(self, permission, context=None):\n        \"\"\" Given a permission and an optional context, returns an instance of\n        :data:`pyramid.security.Allowed` if the permission is granted to this\n        request with the provided context, or the context already associated\n        with the request.  Otherwise, returns an instance of\n        :data:`pyramid.security.Denied`.  This method delegates to the current\n        security policy.  Returns\n        :data:`pyramid.security.Allowed` unconditionally if no security\n        policy has been registered for this request.  If ``context`` is not\n        supplied or is supplied as ``None``, the context used is the\n        ``request.context`` attribute.\n\n        :param permission: Does this request have the given permission?\n        :type permission: str\n        :param context: A resource object or ``None``\n        :type context: object\n        :returns: Either :class:`pyramid.security.Allowed` or\n                  :class:`pyramid.security.Denied`.\n\n        \"\"\"\n        if context is None:\n            context = self.context\n        policy = _get_security_policy(self)\n        if policy is None:\n            return Allowed('No security policy in use.')\n        return policy.permits(self, context, permission)\n\n\nclass AuthenticationAPIMixin(object):\n    \"\"\" Mixin for Request class providing compatibility properties. \"\"\"\n\n    @property\n    def unauthenticated_userid(self):\n        \"\"\"\n        .. deprecated:: 2.0\n\n            ``unauthenticated_userid`` does not have an equivalent in the new\n            security system.  Use :attr:`.authenticated_userid` or\n            :attr:`.authenticated_identity` instead.\n            See :ref:`upgrading_auth` for more information.\n\n        Return an object which represents the *claimed* (not verified) user\n        id of the credentials present in the request. ``None`` if there is no\n        :term:`authentication policy` in effect or there is no user data\n        associated with the current request.  This differs from\n        :attr:`~pyramid.request.Request.authenticated_userid`, because the\n        effective authentication policy will not ensure that a record\n        associated with the userid exists in persistent storage.\n\n        \"\"\"\n        authn = _get_authentication_policy(self)\n        security = _get_security_policy(self)\n        if authn is not None:\n            return authn.unauthenticated_userid(self)\n        elif security is not None:\n            return security.authenticated_userid(self)\n        else:\n            return None\n\n    @property\n    def effective_principals(self):\n        \"\"\"\n        .. deprecated:: 2.0\n\n            The new security policy has removed the concept of principals.  See\n            :ref:`upgrading_auth` for more information.\n\n        Return the list of 'effective' :term:`principal` identifiers\n        for the ``request``. If no :term:`authentication policy` is in effect,\n        this will return a one-element list containing the\n        :data:`pyramid.security.Everyone` principal.\n\n        \"\"\"\n        policy = _get_authentication_policy(self)\n        if policy is None:\n            return [Everyone]\n        return policy.effective_principals(self)\n\n    effective_principals = deprecated(\n        effective_principals,\n        'The new security policy has removed the concept of principals.  See '\n        'https://docs.pylonsproject.org/projects/pyramid/en/latest'\n        '/whatsnew-2.0.html#upgrading-authentication-authorization '\n        'for more information.',\n    )\n\n\n@implementer(ISecurityPolicy)\nclass LegacySecurityPolicy:\n    \"\"\"\n    A :term:`security policy` which provides a backwards compatibility shim for\n    the :term:`authentication policy` and the :term:`authorization policy`.\n\n    \"\"\"\n\n    def _get_authn_policy(self, request):\n        return request.registry.getUtility(IAuthenticationPolicy)\n\n    def _get_authz_policy(self, request):\n        return request.registry.getUtility(IAuthorizationPolicy)\n\n    def identify(self, request):\n        return self.authenticated_userid(request)\n\n    def authenticated_userid(self, request):\n        authn = self._get_authn_policy(request)\n        return authn.authenticated_userid(request)\n\n    def remember(self, request, userid, **kw):\n        authn = self._get_authn_policy(request)\n        return authn.remember(request, userid, **kw)\n\n    def forget(self, request, **kw):\n        if kw:\n            raise ValueError(\n                'Legacy authentication policies do not support keyword '\n                'arguments for `forget`'\n            )\n        authn = self._get_authn_policy(request)\n        return authn.forget(request)\n\n    def permits(self, request, context, permission):\n        authn = self._get_authn_policy(request)\n        authz = self._get_authz_policy(request)\n        principals = authn.effective_principals(request)\n        return authz.permits(context, principals, permission)\n",
            "header": {
                "file": {
                    "path": "src/pyramid/security.py"
                },
                "misc_line": null
            },
            "index_line": {
                "old_commit_hash": "f07bc0bfe",
                "new_commit_hash": "e3a978c52",
                "mode": "100644"
            },
            "is_binary_file": false,
            "binary_line": null,
            "minus_file": {
                "path": "a/src/pyramid/security.py"
            },
            "plus_file": {
                "path": "b/src/pyramid/security.py"
            },
            "hunks": [
                {
                    "descriptor": {
                        "old_range": {
                            "start": 439,
                            "length": 8
                        },
                        "new_range": {
                            "start": 439,
                            "length": 12
                        },
                        "section": "class LegacySecurityPolicy:"
                    },
                    "line_group": {
                        "all_lines": [
                            {
                                "content": "        return authn.remember(request, userid, **kw)",
                                "type": "context"
                            },
                            {
                                "content": "",
                                "type": "context"
                            },
                            {
                                "content": "    def forget(self, request, **kw):",
                                "type": "context"
                            },
                            {
                                "content": "        if kw:",
                                "type": "added"
                            },
                            {
                                "content": "            raise ValueError(",
                                "type": "added"
                            },
                            {
                                "content": "                'Legacy authentication policies do not support keyword '",
                                "type": "added"
                            },
                            {
                                "content": "                'arguments for `forget`'",
                                "type": "added"
                            },
                            {
                                "content": "            )",
                                "type": "added"
                            },
                            {
                                "content": "        authn = self._get_authn_policy(request)",
                                "type": "context"
                            },
                            {
                                "content": "        # XXX log warning if varkwargs were passed?",
                                "type": "deleted"
                            },
                            {
                                "content": "        return authn.forget(request)",
                                "type": "context"
                            },
                            {
                                "content": "",
                                "type": "context"
                            },
                            {
                                "content": "    def permits(self, request, context, permission):",
                                "type": "context"
                            }
                        ]
                    },
                    "modified_entities": [
                        {
                            "file_name": "src/pyramid/security.py",
                            "type": "class",
                            "name": "LegacySecurityPolicy",
                            "content": "class LegacySecurityPolicy:\n    \"\"\"\n    A :term:`security policy` which provides a backwards compatibility shim for\n    the :term:`authentication policy` and the :term:`authorization policy`.\n\n    \"\"\"\n\n    def _get_authn_policy(self, request):\n        return request.registry.getUtility(IAuthenticationPolicy)\n\n    def _get_authz_policy(self, request):\n        return request.registry.getUtility(IAuthorizationPolicy)\n\n    def identify(self, request):\n        return self.authenticated_userid(request)\n\n    def authenticated_userid(self, request):\n        authn = self._get_authn_policy(request)\n        return authn.authenticated_userid(request)\n\n    def remember(self, request, userid, **kw):\n        authn = self._get_authn_policy(request)\n        return authn.remember(request, userid, **kw)\n\n    def forget(self, request, **kw):\n        authn = self._get_authn_policy(request)\n        # XXX log warning if varkwargs were passed?\n        return authn.forget(request)\n\n    def permits(self, request, context, permission):\n        authn = self._get_authn_policy(request)\n        authz = self._get_authz_policy(request)\n        principals = authn.effective_principals(request)\n        return authz.permits(context, principals, permission)",
                            "ast_type_str": "ClassDef",
                            "start_lineno": 417,
                            "end_lineno": 450,
                            "parent": null
                        },
                        {
                            "file_name": "src/pyramid/security.py",
                            "type": "method",
                            "name": "LegacySecurityPolicy.forget",
                            "content": "class LegacySecurityPolicy:\n    \"\"\"\n    A :term:`security policy` which provides a backwards compatibility shim for\n    the :term:`authentication policy` and the :term:`authorization policy`.\n\n    \"\"\"\n\n    def _get_authn_policy(self, request):\n        return request.registry.getUtility(IAuthenticationPolicy)\n\n    def _get_authz_policy(self, request):\n        return request.registry.getUtility(IAuthorizationPolicy)\n\n    def identify(self, request):\n        return self.authenticated_userid(request)\n\n    def authenticated_userid(self, request):\n        authn = self._get_authn_policy(request)\n        return authn.authenticated_userid(request)\n\n    def remember(self, request, userid, **kw):\n        authn = self._get_authn_policy(request)\n        return authn.remember(request, userid, **kw)\n\n    def forget(self, request, **kw):\n        authn = self._get_authn_policy(request)\n        # XXX log warning if varkwargs were passed?\n        return authn.forget(request)\n\n    def permits(self, request, context, permission):\n        authn = self._get_authn_policy(request)\n        authz = self._get_authz_policy(request)\n        principals = authn.effective_principals(request)\n        return authz.permits(context, principals, permission)",
                            "ast_type_str": "ClassDef",
                            "start_lineno": 441,
                            "end_lineno": 444,
                            "parent": {
                                "file_name": "src/pyramid/security.py",
                                "type": "class",
                                "name": "LegacySecurityPolicy",
                                "content": "class LegacySecurityPolicy:\n    \"\"\"\n    A :term:`security policy` which provides a backwards compatibility shim for\n    the :term:`authentication policy` and the :term:`authorization policy`.\n\n    \"\"\"\n\n    def _get_authn_policy(self, request):\n        return request.registry.getUtility(IAuthenticationPolicy)\n\n    def _get_authz_policy(self, request):\n        return request.registry.getUtility(IAuthorizationPolicy)\n\n    def identify(self, request):\n        return self.authenticated_userid(request)\n\n    def authenticated_userid(self, request):\n        authn = self._get_authn_policy(request)\n        return authn.authenticated_userid(request)\n\n    def remember(self, request, userid, **kw):\n        authn = self._get_authn_policy(request)\n        return authn.remember(request, userid, **kw)\n\n    def forget(self, request, **kw):\n        authn = self._get_authn_policy(request)\n        # XXX log warning if varkwargs were passed?\n        return authn.forget(request)\n\n    def permits(self, request, context, permission):\n        authn = self._get_authn_policy(request)\n        authz = self._get_authz_policy(request)\n        principals = authn.effective_principals(request)\n        return authz.permits(context, principals, permission)",
                                "ast_type_str": "ClassDef",
                                "start_lineno": 417,
                                "end_lineno": 450,
                                "parent": null
                            }
                        }
                    ],
                    "added_entities": [],
                    "deleted_entities": []
                }
            ]
        },
        {
            "old_file_content": "import unittest\n\nfrom pyramid import testing\n\n\nclass TestAllPermissionsList(unittest.TestCase):\n    def setUp(self):\n        testing.setUp()\n\n    def tearDown(self):\n        testing.tearDown()\n\n    def _getTargetClass(self):\n        from pyramid.security import AllPermissionsList\n\n        return AllPermissionsList\n\n    def _makeOne(self):\n        return self._getTargetClass()()\n\n    def test_equality_w_self(self):\n        thing = self._makeOne()\n        self.assertTrue(thing.__eq__(thing))\n\n    def test_equality_w_other_instances_of_class(self):\n        thing = self._makeOne()\n        other = self._makeOne()\n        self.assertTrue(thing.__eq__(other))\n\n    def test_equality_miss(self):\n        thing = self._makeOne()\n        other = object()\n        self.assertFalse(thing.__eq__(other))\n\n    def test_contains_w_string(self):\n        thing = self._makeOne()\n        self.assertTrue('anything' in thing)\n\n    def test_contains_w_object(self):\n        thing = self._makeOne()\n        self.assertTrue(object() in thing)\n\n    def test_iterable(self):\n        thing = self._makeOne()\n        self.assertEqual(list(thing), [])\n\n    def test_singleton(self):\n        from pyramid.security import ALL_PERMISSIONS\n\n        self.assertEqual(ALL_PERMISSIONS.__class__, self._getTargetClass())\n\n\nclass TestAllowed(unittest.TestCase):\n    def _getTargetClass(self):\n        from pyramid.security import Allowed\n\n        return Allowed\n\n    def _makeOne(self, *arg, **kw):\n        klass = self._getTargetClass()\n        return klass(*arg, **kw)\n\n    def test_it(self):\n        allowed = self._makeOne('hello')\n        self.assertEqual(allowed.msg, 'hello')\n        self.assertEqual(allowed, True)\n        self.assertTrue(allowed)\n        self.assertEqual(str(allowed), 'hello')\n        self.assertTrue('<Allowed instance at ' in repr(allowed))\n        self.assertTrue(\"with msg 'hello'>\" in repr(allowed))\n\n\nclass TestDenied(unittest.TestCase):\n    def _getTargetClass(self):\n        from pyramid.security import Denied\n\n        return Denied\n\n    def _makeOne(self, *arg, **kw):\n        klass = self._getTargetClass()\n        return klass(*arg, **kw)\n\n    def test_it(self):\n        denied = self._makeOne('hello')\n        self.assertEqual(denied.msg, 'hello')\n        self.assertEqual(denied, False)\n        self.assertFalse(denied)\n        self.assertEqual(str(denied), 'hello')\n        self.assertTrue('<Denied instance at ' in repr(denied))\n        self.assertTrue(\"with msg 'hello'>\" in repr(denied))\n\n\nclass TestACLAllowed(unittest.TestCase):\n    def _getTargetClass(self):\n        from pyramid.security import ACLAllowed\n\n        return ACLAllowed\n\n    def _makeOne(self, *arg, **kw):\n        klass = self._getTargetClass()\n        return klass(*arg, **kw)\n\n    def test_it(self):\n        from pyramid.security import Allowed\n\n        msg = (\n            \"ACLAllowed permission 'permission' via ACE 'ace' in ACL 'acl' \"\n            \"on context 'ctx' for principals 'principals'\"\n        )\n        allowed = self._makeOne(\n            'ace', 'acl', 'permission', 'principals', 'ctx'\n        )\n        self.assertIsInstance(allowed, Allowed)\n        self.assertTrue(msg in allowed.msg)\n        self.assertEqual(allowed, True)\n        self.assertTrue(allowed)\n        self.assertEqual(str(allowed), msg)\n        self.assertTrue('<ACLAllowed instance at ' in repr(allowed))\n        self.assertTrue(\"with msg %r>\" % msg in repr(allowed))\n\n\nclass TestACLDenied(unittest.TestCase):\n    def _getTargetClass(self):\n        from pyramid.security import ACLDenied\n\n        return ACLDenied\n\n    def _makeOne(self, *arg, **kw):\n        klass = self._getTargetClass()\n        return klass(*arg, **kw)\n\n    def test_it(self):\n        from pyramid.security import Denied\n\n        msg = (\n            \"ACLDenied permission 'permission' via ACE 'ace' in ACL 'acl' \"\n            \"on context 'ctx' for principals 'principals'\"\n        )\n        denied = self._makeOne('ace', 'acl', 'permission', 'principals', 'ctx')\n        self.assertIsInstance(denied, Denied)\n        self.assertTrue(msg in denied.msg)\n        self.assertEqual(denied, False)\n        self.assertFalse(denied)\n        self.assertEqual(str(denied), msg)\n        self.assertTrue('<ACLDenied instance at ' in repr(denied))\n        self.assertTrue(\"with msg %r>\" % msg in repr(denied))\n\n\nclass TestPrincipalsAllowedByPermission(unittest.TestCase):\n    def setUp(self):\n        testing.setUp()\n\n    def tearDown(self):\n        testing.tearDown()\n\n    def _callFUT(self, *arg):\n        from pyramid.security import principals_allowed_by_permission\n\n        return principals_allowed_by_permission(*arg)\n\n    def test_no_authorization_policy(self):\n        from pyramid.security import Everyone\n\n        context = DummyContext()\n        result = self._callFUT(context, 'view')\n        self.assertEqual(result, [Everyone])\n\n\nclass TestRemember(unittest.TestCase):\n    def setUp(self):\n        testing.setUp()\n\n    def tearDown(self):\n        testing.tearDown()\n\n    def _callFUT(self, *arg, **kwarg):\n        from pyramid.security import remember\n\n        return remember(*arg, **kwarg)\n\n    def test_no_security_policy(self):\n        request = _makeRequest()\n        result = self._callFUT(request, 'me')\n        self.assertEqual(result, [])\n\n    def test_with_security_policy(self):\n        request = _makeRequest()\n        registry = request.registry\n        _registerSecurityPolicy(registry, 'yo')\n        result = self._callFUT(request, 'me')\n        self.assertEqual(result, [('X-Pyramid-Test', 'me')])\n\n    def test_with_missing_arg(self):\n        request = _makeRequest()\n        registry = request.registry\n        _registerSecurityPolicy(registry, 'yo')\n        self.assertRaises(TypeError, lambda: self._callFUT(request))\n\n\nclass TestForget(unittest.TestCase):\n    def setUp(self):\n        testing.setUp()\n\n    def tearDown(self):\n        testing.tearDown()\n\n    def _callFUT(self, *arg):\n        from pyramid.security import forget\n\n        return forget(*arg)\n\n    def test_no_security_policy(self):\n        request = _makeRequest()\n        result = self._callFUT(request)\n        self.assertEqual(result, [])\n\n    def test_with_security_policy(self):\n        request = _makeRequest()\n        _registerSecurityPolicy(request.registry, 'yo')\n        result = self._callFUT(request)\n        self.assertEqual(result, [('X-Pyramid-Test', 'logout')])\n\n\nclass TestViewExecutionPermitted(unittest.TestCase):\n    def setUp(self):\n        testing.setUp()\n\n    def tearDown(self):\n        testing.tearDown()\n\n    def _callFUT(self, *arg, **kw):\n        from pyramid.security import view_execution_permitted\n\n        return view_execution_permitted(*arg, **kw)\n\n    def _registerSecuredView(self, view_name, allow=True):\n        from pyramid.threadlocal import get_current_registry\n        from zope.interface import Interface\n        from pyramid.interfaces import ISecuredView\n        from pyramid.interfaces import IViewClassifier\n\n        class Checker(object):\n            def __permitted__(self, context, request):\n                self.context = context\n                self.request = request\n                return allow\n\n        checker = Checker()\n        reg = get_current_registry()\n        reg.registerAdapter(\n            checker,\n            (IViewClassifier, Interface, Interface),\n            ISecuredView,\n            view_name,\n        )\n        return checker\n\n    def test_no_permission(self):\n        from zope.interface import Interface\n        from pyramid.threadlocal import get_current_registry\n        from pyramid.interfaces import ISettings\n        from pyramid.interfaces import IView\n        from pyramid.interfaces import IViewClassifier\n\n        settings = dict(debug_authorization=True)\n        reg = get_current_registry()\n        reg.registerUtility(settings, ISettings)\n        context = DummyContext()\n        request = testing.DummyRequest({})\n\n        class DummyView(object):\n            pass\n\n        view = DummyView()\n        reg.registerAdapter(\n            view, (IViewClassifier, Interface, Interface), IView, ''\n        )\n        result = self._callFUT(context, request, '')\n        msg = result.msg\n        self.assertTrue(\"Allowed: view name '' in context\" in msg)\n        self.assertTrue('(no permission defined)' in msg)\n        self.assertEqual(result, True)\n\n    def test_no_view_registered(self):\n        from pyramid.threadlocal import get_current_registry\n        from pyramid.interfaces import ISettings\n\n        settings = dict(debug_authorization=True)\n        reg = get_current_registry()\n        reg.registerUtility(settings, ISettings)\n        context = DummyContext()\n        request = testing.DummyRequest({})\n        self.assertRaises(TypeError, self._callFUT, context, request, '')\n\n    def test_with_permission(self):\n        from zope.interface import Interface\n        from zope.interface import directlyProvides\n        from pyramid.interfaces import IRequest\n\n        class IContext(Interface):\n            pass\n\n        context = DummyContext()\n        directlyProvides(context, IContext)\n        self._registerSecuredView('', True)\n        request = testing.DummyRequest({})\n        directlyProvides(request, IRequest)\n        result = self._callFUT(context, request, '')\n        self.assertTrue(result)\n\n\nclass TestAuthenticatedIdentity(unittest.TestCase):\n    def setUp(self):\n        testing.setUp()\n\n    def tearDown(self):\n        testing.tearDown()\n\n    def test_identity_no_security_policy(self):\n        request = _makeRequest()\n        self.assertEquals(request.authenticated_identity, None)\n\n    def test_identity(self):\n        request = _makeRequest()\n        _registerSecurityPolicy(request.registry, 'yo')\n        self.assertEqual(request.authenticated_identity, 'yo')\n\n\nclass TestAuthenticatedUserId(unittest.TestCase):\n    def setUp(self):\n        testing.setUp()\n\n    def tearDown(self):\n        testing.tearDown()\n\n    def test_no_authentication_policy(self):\n        request = _makeRequest()\n        self.assertEqual(request.authenticated_userid, None)\n\n    def test_with_authentication_policy(self):\n        request = _makeRequest()\n        _registerAuthenticationPolicy(request.registry, 'yo')\n        _registerSecurityPolicy(request.registry, 'wat')\n        self.assertEqual(request.authenticated_userid, 'wat')\n\n    def test_with_security_policy(self):\n        request = _makeRequest()\n        _registerSecurityPolicy(request.registry, '123')\n        self.assertEqual(request.authenticated_userid, '123')\n\n\nclass TestUnAuthenticatedUserId(unittest.TestCase):\n    def setUp(self):\n        testing.setUp()\n\n    def tearDown(self):\n        testing.tearDown()\n\n    def test_no_authentication_policy(self):\n        request = _makeRequest()\n        self.assertEqual(request.unauthenticated_userid, None)\n\n    def test_with_authentication_policy(self):\n        request = _makeRequest()\n        _registerAuthenticationPolicy(request.registry, 'yo')\n        _registerSecurityPolicy(request.registry, 'wat')\n        self.assertEqual(request.unauthenticated_userid, 'yo')\n\n    def test_with_security_policy(self):\n        request = _makeRequest()\n        _registerSecurityPolicy(request.registry, 'yo')\n        self.assertEqual(request.unauthenticated_userid, 'yo')\n\n\nclass TestEffectivePrincipals(unittest.TestCase):\n    def setUp(self):\n        testing.setUp()\n\n    def tearDown(self):\n        testing.tearDown()\n\n    def test_no_authentication_policy(self):\n        from pyramid.security import Everyone\n\n        request = _makeRequest()\n        self.assertEqual(request.effective_principals, [Everyone])\n\n    def test_with_authentication_policy(self):\n        request = _makeRequest()\n        _registerAuthenticationPolicy(request.registry, 'yo')\n        self.assertEqual(request.effective_principals, 'yo')\n\n\nclass TestHasPermission(unittest.TestCase):\n    def setUp(self):\n        testing.setUp()\n\n    def tearDown(self):\n        testing.tearDown()\n\n    def _makeOne(self):\n        from pyramid.security import SecurityAPIMixin\n        from pyramid.registry import Registry\n\n        mixin = SecurityAPIMixin()\n        mixin.registry = Registry()\n        mixin.context = object()\n        return mixin\n\n    def test_no_security_policy(self):\n        request = self._makeOne()\n        result = request.has_permission('view')\n        self.assertTrue(result)\n        self.assertEqual(result.msg, 'No security policy in use.')\n\n    def test_with_security_registered(self):\n        request = self._makeOne()\n        _registerSecurityPolicy(request.registry, 'yo')\n        self.assertEqual(request.has_permission('view', context=None), 'yo')\n\n    def test_with_no_context_passed(self):\n        request = self._makeOne()\n        self.assertTrue(request.has_permission('view'))\n\n    def test_with_no_context_passed_or_on_request(self):\n        request = self._makeOne()\n        del request.context\n        self.assertRaises(AttributeError, request.has_permission, 'view')\n\n\nclass TestLegacySecurityPolicy(unittest.TestCase):\n    def setUp(self):\n        testing.setUp()\n\n    def tearDown(self):\n        testing.tearDown()\n\n    def test_identity(self):\n        from pyramid.security import LegacySecurityPolicy\n\n        request = _makeRequest()\n        policy = LegacySecurityPolicy()\n        _registerAuthenticationPolicy(request.registry, 'userid')\n\n        self.assertEqual(policy.identify(request), 'userid')\n\n    def test_remember(self):\n        from pyramid.security import LegacySecurityPolicy\n\n        request = _makeRequest()\n        policy = LegacySecurityPolicy()\n        _registerAuthenticationPolicy(request.registry, None)\n\n        self.assertEqual(\n            policy.remember(request, 'userid'), [('X-Pyramid-Test', 'userid')]\n        )\n\n    def test_forget(self):\n        from pyramid.security import LegacySecurityPolicy\n\n        request = _makeRequest()\n        policy = LegacySecurityPolicy()\n        _registerAuthenticationPolicy(request.registry, None)\n\n        self.assertEqual(\n            policy.forget(request), [('X-Pyramid-Test', 'logout')]\n        )\n\n    def test_permits(self):\n        from pyramid.security import LegacySecurityPolicy\n\n        request = _makeRequest()\n        policy = LegacySecurityPolicy()\n        _registerAuthenticationPolicy(request.registry, ['p1', 'p2'])\n        _registerAuthorizationPolicy(request.registry, True)\n\n        self.assertTrue(policy.permits(request, request.context, 'permission'))\n\n\n_TEST_HEADER = 'X-Pyramid-Test'\n\n\nclass DummyContext:\n    def __init__(self, *arg, **kw):\n        self.__dict__.update(kw)\n\n\nclass DummySecurityPolicy:\n    def __init__(self, result):\n        self.result = result\n\n    def identify(self, request):\n        return self.result\n\n    def authenticated_userid(self, request):\n        return self.result\n\n    def permits(self, request, context, permission):\n        return self.result\n\n    def remember(self, request, userid, **kw):\n        headers = [(_TEST_HEADER, userid)]\n        self._header_remembered = headers[0]\n        return headers\n\n    def forget(self, request, **kw):\n        headers = [(_TEST_HEADER, 'logout')]\n        self._header_forgotten = headers[0]\n        return headers\n\n\nclass DummyAuthenticationPolicy:\n    def __init__(self, result):\n        self.result = result\n\n    def effective_principals(self, request):\n        return self.result\n\n    def unauthenticated_userid(self, request):\n        return self.result\n\n    def authenticated_userid(self, request):\n        return self.result\n\n    def remember(self, request, userid, **kw):\n        headers = [(_TEST_HEADER, userid)]\n        self._header_remembered = headers[0]\n        return headers\n\n    def forget(self, request):\n        headers = [(_TEST_HEADER, 'logout')]\n        self._header_forgotten = headers[0]\n        return headers\n\n\nclass DummyAuthorizationPolicy:\n    def __init__(self, result):\n        self.result = result\n\n    def permits(self, context, principals, permission):\n        return self.result\n\n    def principals_allowed_by_permission(self, context, permission):\n        return self.result\n\n\ndef _registerSecurityPolicy(reg, result):\n    from pyramid.interfaces import ISecurityPolicy\n\n    policy = DummySecurityPolicy(result)\n    reg.registerUtility(policy, ISecurityPolicy)\n    return policy\n\n\ndef _registerAuthenticationPolicy(reg, result):\n    from pyramid.interfaces import IAuthenticationPolicy\n\n    policy = DummyAuthenticationPolicy(result)\n    reg.registerUtility(policy, IAuthenticationPolicy)\n    return policy\n\n\ndef _registerAuthorizationPolicy(reg, result):\n    from pyramid.interfaces import IAuthorizationPolicy\n\n    policy = DummyAuthorizationPolicy(result)\n    reg.registerUtility(policy, IAuthorizationPolicy)\n    return policy\n\n\ndef _makeRequest():\n    from pyramid.registry import Registry\n\n    request = testing.DummyRequest(environ={})\n    request.registry = Registry()\n    request.context = object()\n    return request\n",
            "new_file_content": "import unittest\n\nfrom pyramid import testing\n\n\nclass TestAllPermissionsList(unittest.TestCase):\n    def setUp(self):\n        testing.setUp()\n\n    def tearDown(self):\n        testing.tearDown()\n\n    def _getTargetClass(self):\n        from pyramid.security import AllPermissionsList\n\n        return AllPermissionsList\n\n    def _makeOne(self):\n        return self._getTargetClass()()\n\n    def test_equality_w_self(self):\n        thing = self._makeOne()\n        self.assertTrue(thing.__eq__(thing))\n\n    def test_equality_w_other_instances_of_class(self):\n        thing = self._makeOne()\n        other = self._makeOne()\n        self.assertTrue(thing.__eq__(other))\n\n    def test_equality_miss(self):\n        thing = self._makeOne()\n        other = object()\n        self.assertFalse(thing.__eq__(other))\n\n    def test_contains_w_string(self):\n        thing = self._makeOne()\n        self.assertTrue('anything' in thing)\n\n    def test_contains_w_object(self):\n        thing = self._makeOne()\n        self.assertTrue(object() in thing)\n\n    def test_iterable(self):\n        thing = self._makeOne()\n        self.assertEqual(list(thing), [])\n\n    def test_singleton(self):\n        from pyramid.security import ALL_PERMISSIONS\n\n        self.assertEqual(ALL_PERMISSIONS.__class__, self._getTargetClass())\n\n\nclass TestAllowed(unittest.TestCase):\n    def _getTargetClass(self):\n        from pyramid.security import Allowed\n\n        return Allowed\n\n    def _makeOne(self, *arg, **kw):\n        klass = self._getTargetClass()\n        return klass(*arg, **kw)\n\n    def test_it(self):\n        allowed = self._makeOne('hello')\n        self.assertEqual(allowed.msg, 'hello')\n        self.assertEqual(allowed, True)\n        self.assertTrue(allowed)\n        self.assertEqual(str(allowed), 'hello')\n        self.assertTrue('<Allowed instance at ' in repr(allowed))\n        self.assertTrue(\"with msg 'hello'>\" in repr(allowed))\n\n\nclass TestDenied(unittest.TestCase):\n    def _getTargetClass(self):\n        from pyramid.security import Denied\n\n        return Denied\n\n    def _makeOne(self, *arg, **kw):\n        klass = self._getTargetClass()\n        return klass(*arg, **kw)\n\n    def test_it(self):\n        denied = self._makeOne('hello')\n        self.assertEqual(denied.msg, 'hello')\n        self.assertEqual(denied, False)\n        self.assertFalse(denied)\n        self.assertEqual(str(denied), 'hello')\n        self.assertTrue('<Denied instance at ' in repr(denied))\n        self.assertTrue(\"with msg 'hello'>\" in repr(denied))\n\n\nclass TestACLAllowed(unittest.TestCase):\n    def _getTargetClass(self):\n        from pyramid.security import ACLAllowed\n\n        return ACLAllowed\n\n    def _makeOne(self, *arg, **kw):\n        klass = self._getTargetClass()\n        return klass(*arg, **kw)\n\n    def test_it(self):\n        from pyramid.security import Allowed\n\n        msg = (\n            \"ACLAllowed permission 'permission' via ACE 'ace' in ACL 'acl' \"\n            \"on context 'ctx' for principals 'principals'\"\n        )\n        allowed = self._makeOne(\n            'ace', 'acl', 'permission', 'principals', 'ctx'\n        )\n        self.assertIsInstance(allowed, Allowed)\n        self.assertTrue(msg in allowed.msg)\n        self.assertEqual(allowed, True)\n        self.assertTrue(allowed)\n        self.assertEqual(str(allowed), msg)\n        self.assertTrue('<ACLAllowed instance at ' in repr(allowed))\n        self.assertTrue(\"with msg %r>\" % msg in repr(allowed))\n\n\nclass TestACLDenied(unittest.TestCase):\n    def _getTargetClass(self):\n        from pyramid.security import ACLDenied\n\n        return ACLDenied\n\n    def _makeOne(self, *arg, **kw):\n        klass = self._getTargetClass()\n        return klass(*arg, **kw)\n\n    def test_it(self):\n        from pyramid.security import Denied\n\n        msg = (\n            \"ACLDenied permission 'permission' via ACE 'ace' in ACL 'acl' \"\n            \"on context 'ctx' for principals 'principals'\"\n        )\n        denied = self._makeOne('ace', 'acl', 'permission', 'principals', 'ctx')\n        self.assertIsInstance(denied, Denied)\n        self.assertTrue(msg in denied.msg)\n        self.assertEqual(denied, False)\n        self.assertFalse(denied)\n        self.assertEqual(str(denied), msg)\n        self.assertTrue('<ACLDenied instance at ' in repr(denied))\n        self.assertTrue(\"with msg %r>\" % msg in repr(denied))\n\n\nclass TestPrincipalsAllowedByPermission(unittest.TestCase):\n    def setUp(self):\n        testing.setUp()\n\n    def tearDown(self):\n        testing.tearDown()\n\n    def _callFUT(self, *arg):\n        from pyramid.security import principals_allowed_by_permission\n\n        return principals_allowed_by_permission(*arg)\n\n    def test_no_authorization_policy(self):\n        from pyramid.security import Everyone\n\n        context = DummyContext()\n        result = self._callFUT(context, 'view')\n        self.assertEqual(result, [Everyone])\n\n\nclass TestRemember(unittest.TestCase):\n    def setUp(self):\n        testing.setUp()\n\n    def tearDown(self):\n        testing.tearDown()\n\n    def _callFUT(self, *arg, **kwarg):\n        from pyramid.security import remember\n\n        return remember(*arg, **kwarg)\n\n    def test_no_security_policy(self):\n        request = _makeRequest()\n        result = self._callFUT(request, 'me')\n        self.assertEqual(result, [])\n\n    def test_with_security_policy(self):\n        request = _makeRequest()\n        registry = request.registry\n        _registerSecurityPolicy(registry, 'yo')\n        result = self._callFUT(request, 'me')\n        self.assertEqual(result, [('X-Pyramid-Test', 'me')])\n\n    def test_with_missing_arg(self):\n        request = _makeRequest()\n        registry = request.registry\n        _registerSecurityPolicy(registry, 'yo')\n        self.assertRaises(TypeError, lambda: self._callFUT(request))\n\n\nclass TestForget(unittest.TestCase):\n    def setUp(self):\n        testing.setUp()\n\n    def tearDown(self):\n        testing.tearDown()\n\n    def _callFUT(self, *arg):\n        from pyramid.security import forget\n\n        return forget(*arg)\n\n    def test_no_security_policy(self):\n        request = _makeRequest()\n        result = self._callFUT(request)\n        self.assertEqual(result, [])\n\n    def test_with_security_policy(self):\n        request = _makeRequest()\n        _registerSecurityPolicy(request.registry, 'yo')\n        result = self._callFUT(request)\n        self.assertEqual(result, [('X-Pyramid-Test', 'logout')])\n\n\nclass TestViewExecutionPermitted(unittest.TestCase):\n    def setUp(self):\n        testing.setUp()\n\n    def tearDown(self):\n        testing.tearDown()\n\n    def _callFUT(self, *arg, **kw):\n        from pyramid.security import view_execution_permitted\n\n        return view_execution_permitted(*arg, **kw)\n\n    def _registerSecuredView(self, view_name, allow=True):\n        from pyramid.threadlocal import get_current_registry\n        from zope.interface import Interface\n        from pyramid.interfaces import ISecuredView\n        from pyramid.interfaces import IViewClassifier\n\n        class Checker(object):\n            def __permitted__(self, context, request):\n                self.context = context\n                self.request = request\n                return allow\n\n        checker = Checker()\n        reg = get_current_registry()\n        reg.registerAdapter(\n            checker,\n            (IViewClassifier, Interface, Interface),\n            ISecuredView,\n            view_name,\n        )\n        return checker\n\n    def test_no_permission(self):\n        from zope.interface import Interface\n        from pyramid.threadlocal import get_current_registry\n        from pyramid.interfaces import ISettings\n        from pyramid.interfaces import IView\n        from pyramid.interfaces import IViewClassifier\n\n        settings = dict(debug_authorization=True)\n        reg = get_current_registry()\n        reg.registerUtility(settings, ISettings)\n        context = DummyContext()\n        request = testing.DummyRequest({})\n\n        class DummyView(object):\n            pass\n\n        view = DummyView()\n        reg.registerAdapter(\n            view, (IViewClassifier, Interface, Interface), IView, ''\n        )\n        result = self._callFUT(context, request, '')\n        msg = result.msg\n        self.assertTrue(\"Allowed: view name '' in context\" in msg)\n        self.assertTrue('(no permission defined)' in msg)\n        self.assertEqual(result, True)\n\n    def test_no_view_registered(self):\n        from pyramid.threadlocal import get_current_registry\n        from pyramid.interfaces import ISettings\n\n        settings = dict(debug_authorization=True)\n        reg = get_current_registry()\n        reg.registerUtility(settings, ISettings)\n        context = DummyContext()\n        request = testing.DummyRequest({})\n        self.assertRaises(TypeError, self._callFUT, context, request, '')\n\n    def test_with_permission(self):\n        from zope.interface import Interface\n        from zope.interface import directlyProvides\n        from pyramid.interfaces import IRequest\n\n        class IContext(Interface):\n            pass\n\n        context = DummyContext()\n        directlyProvides(context, IContext)\n        self._registerSecuredView('', True)\n        request = testing.DummyRequest({})\n        directlyProvides(request, IRequest)\n        result = self._callFUT(context, request, '')\n        self.assertTrue(result)\n\n\nclass TestAuthenticatedIdentity(unittest.TestCase):\n    def setUp(self):\n        testing.setUp()\n\n    def tearDown(self):\n        testing.tearDown()\n\n    def test_identity_no_security_policy(self):\n        request = _makeRequest()\n        self.assertEquals(request.authenticated_identity, None)\n\n    def test_identity(self):\n        request = _makeRequest()\n        _registerSecurityPolicy(request.registry, 'yo')\n        self.assertEqual(request.authenticated_identity, 'yo')\n\n\nclass TestAuthenticatedUserId(unittest.TestCase):\n    def setUp(self):\n        testing.setUp()\n\n    def tearDown(self):\n        testing.tearDown()\n\n    def test_no_authentication_policy(self):\n        request = _makeRequest()\n        self.assertEqual(request.authenticated_userid, None)\n\n    def test_with_authentication_policy(self):\n        request = _makeRequest()\n        _registerAuthenticationPolicy(request.registry, 'yo')\n        _registerSecurityPolicy(request.registry, 'wat')\n        self.assertEqual(request.authenticated_userid, 'wat')\n\n    def test_with_security_policy(self):\n        request = _makeRequest()\n        _registerSecurityPolicy(request.registry, '123')\n        self.assertEqual(request.authenticated_userid, '123')\n\n\nclass TestUnAuthenticatedUserId(unittest.TestCase):\n    def setUp(self):\n        testing.setUp()\n\n    def tearDown(self):\n        testing.tearDown()\n\n    def test_no_authentication_policy(self):\n        request = _makeRequest()\n        self.assertEqual(request.unauthenticated_userid, None)\n\n    def test_with_authentication_policy(self):\n        request = _makeRequest()\n        _registerAuthenticationPolicy(request.registry, 'yo')\n        _registerSecurityPolicy(request.registry, 'wat')\n        self.assertEqual(request.unauthenticated_userid, 'yo')\n\n    def test_with_security_policy(self):\n        request = _makeRequest()\n        _registerSecurityPolicy(request.registry, 'yo')\n        self.assertEqual(request.unauthenticated_userid, 'yo')\n\n\nclass TestEffectivePrincipals(unittest.TestCase):\n    def setUp(self):\n        testing.setUp()\n\n    def tearDown(self):\n        testing.tearDown()\n\n    def test_no_authentication_policy(self):\n        from pyramid.security import Everyone\n\n        request = _makeRequest()\n        self.assertEqual(request.effective_principals, [Everyone])\n\n    def test_with_authentication_policy(self):\n        request = _makeRequest()\n        _registerAuthenticationPolicy(request.registry, 'yo')\n        self.assertEqual(request.effective_principals, 'yo')\n\n\nclass TestHasPermission(unittest.TestCase):\n    def setUp(self):\n        testing.setUp()\n\n    def tearDown(self):\n        testing.tearDown()\n\n    def _makeOne(self):\n        from pyramid.security import SecurityAPIMixin\n        from pyramid.registry import Registry\n\n        mixin = SecurityAPIMixin()\n        mixin.registry = Registry()\n        mixin.context = object()\n        return mixin\n\n    def test_no_security_policy(self):\n        request = self._makeOne()\n        result = request.has_permission('view')\n        self.assertTrue(result)\n        self.assertEqual(result.msg, 'No security policy in use.')\n\n    def test_with_security_registered(self):\n        request = self._makeOne()\n        _registerSecurityPolicy(request.registry, 'yo')\n        self.assertEqual(request.has_permission('view', context=None), 'yo')\n\n    def test_with_no_context_passed(self):\n        request = self._makeOne()\n        self.assertTrue(request.has_permission('view'))\n\n    def test_with_no_context_passed_or_on_request(self):\n        request = self._makeOne()\n        del request.context\n        self.assertRaises(AttributeError, request.has_permission, 'view')\n\n\nclass TestLegacySecurityPolicy(unittest.TestCase):\n    def setUp(self):\n        testing.setUp()\n\n    def tearDown(self):\n        testing.tearDown()\n\n    def test_identity(self):\n        from pyramid.security import LegacySecurityPolicy\n\n        request = _makeRequest()\n        policy = LegacySecurityPolicy()\n        _registerAuthenticationPolicy(request.registry, 'userid')\n\n        self.assertEqual(policy.identify(request), 'userid')\n\n    def test_remember(self):\n        from pyramid.security import LegacySecurityPolicy\n\n        request = _makeRequest()\n        policy = LegacySecurityPolicy()\n        _registerAuthenticationPolicy(request.registry, None)\n\n        self.assertEqual(\n            policy.remember(request, 'userid'), [('X-Pyramid-Test', 'userid')]\n        )\n\n    def test_forget(self):\n        from pyramid.security import LegacySecurityPolicy\n\n        request = _makeRequest()\n        policy = LegacySecurityPolicy()\n        _registerAuthenticationPolicy(request.registry, None)\n\n        self.assertEqual(\n            policy.forget(request), [('X-Pyramid-Test', 'logout')]\n        )\n\n    def test_forget_with_kwargs(self):\n        from pyramid.security import LegacySecurityPolicy\n\n        policy = LegacySecurityPolicy()\n        self.assertRaises(ValueError, lambda: policy.forget(None, foo='bar'))\n\n    def test_permits(self):\n        from pyramid.security import LegacySecurityPolicy\n\n        request = _makeRequest()\n        policy = LegacySecurityPolicy()\n        _registerAuthenticationPolicy(request.registry, ['p1', 'p2'])\n        _registerAuthorizationPolicy(request.registry, True)\n\n        self.assertTrue(policy.permits(request, request.context, 'permission'))\n\n\n_TEST_HEADER = 'X-Pyramid-Test'\n\n\nclass DummyContext:\n    def __init__(self, *arg, **kw):\n        self.__dict__.update(kw)\n\n\nclass DummySecurityPolicy:\n    def __init__(self, result):\n        self.result = result\n\n    def identify(self, request):\n        return self.result\n\n    def authenticated_userid(self, request):\n        return self.result\n\n    def permits(self, request, context, permission):\n        return self.result\n\n    def remember(self, request, userid, **kw):\n        headers = [(_TEST_HEADER, userid)]\n        self._header_remembered = headers[0]\n        return headers\n\n    def forget(self, request, **kw):\n        headers = [(_TEST_HEADER, 'logout')]\n        self._header_forgotten = headers[0]\n        return headers\n\n\nclass DummyAuthenticationPolicy:\n    def __init__(self, result):\n        self.result = result\n\n    def effective_principals(self, request):\n        return self.result\n\n    def unauthenticated_userid(self, request):\n        return self.result\n\n    def authenticated_userid(self, request):\n        return self.result\n\n    def remember(self, request, userid, **kw):\n        headers = [(_TEST_HEADER, userid)]\n        self._header_remembered = headers[0]\n        return headers\n\n    def forget(self, request):\n        headers = [(_TEST_HEADER, 'logout')]\n        self._header_forgotten = headers[0]\n        return headers\n\n\nclass DummyAuthorizationPolicy:\n    def __init__(self, result):\n        self.result = result\n\n    def permits(self, context, principals, permission):\n        return self.result\n\n    def principals_allowed_by_permission(self, context, permission):\n        return self.result\n\n\ndef _registerSecurityPolicy(reg, result):\n    from pyramid.interfaces import ISecurityPolicy\n\n    policy = DummySecurityPolicy(result)\n    reg.registerUtility(policy, ISecurityPolicy)\n    return policy\n\n\ndef _registerAuthenticationPolicy(reg, result):\n    from pyramid.interfaces import IAuthenticationPolicy\n\n    policy = DummyAuthenticationPolicy(result)\n    reg.registerUtility(policy, IAuthenticationPolicy)\n    return policy\n\n\ndef _registerAuthorizationPolicy(reg, result):\n    from pyramid.interfaces import IAuthorizationPolicy\n\n    policy = DummyAuthorizationPolicy(result)\n    reg.registerUtility(policy, IAuthorizationPolicy)\n    return policy\n\n\ndef _makeRequest():\n    from pyramid.registry import Registry\n\n    request = testing.DummyRequest(environ={})\n    request.registry = Registry()\n    request.context = object()\n    return request\n",
            "header": {
                "file": {
                    "path": "tests/test_security.py"
                },
                "misc_line": null
            },
            "index_line": {
                "old_commit_hash": "715d99804",
                "new_commit_hash": "1c969e305",
                "mode": "100644"
            },
            "is_binary_file": false,
            "binary_line": null,
            "minus_file": {
                "path": "a/tests/test_security.py"
            },
            "plus_file": {
                "path": "b/tests/test_security.py"
            },
            "hunks": [
                {
                    "descriptor": {
                        "old_range": {
                            "start": 466,
                            "length": 6
                        },
                        "new_range": {
                            "start": 466,
                            "length": 12
                        },
                        "section": "class TestLegacySecurityPolicy(unittest.TestCase):"
                    },
                    "line_group": {
                        "all_lines": [
                            {
                                "content": "            policy.forget(request), [('X-Pyramid-Test', 'logout')]",
                                "type": "context"
                            },
                            {
                                "content": "        )",
                                "type": "context"
                            },
                            {
                                "content": "",
                                "type": "context"
                            },
                            {
                                "content": "    def test_forget_with_kwargs(self):",
                                "type": "added"
                            },
                            {
                                "content": "        from pyramid.security import LegacySecurityPolicy",
                                "type": "added"
                            },
                            {
                                "content": "",
                                "type": "added"
                            },
                            {
                                "content": "        policy = LegacySecurityPolicy()",
                                "type": "added"
                            },
                            {
                                "content": "        self.assertRaises(ValueError, lambda: policy.forget(None, foo='bar'))",
                                "type": "added"
                            },
                            {
                                "content": "",
                                "type": "added"
                            },
                            {
                                "content": "    def test_permits(self):",
                                "type": "context"
                            },
                            {
                                "content": "        from pyramid.security import LegacySecurityPolicy",
                                "type": "context"
                            },
                            {
                                "content": "",
                                "type": "context"
                            },
                            {
                                "content": "",
                                "type": "context"
                            }
                        ]
                    },
                    "modified_entities": [
                        {
                            "file_name": "tests/test_security.py",
                            "type": "class",
                            "name": "TestLegacySecurityPolicy",
                            "content": "class TestLegacySecurityPolicy(unittest.TestCase):\n    def setUp(self):\n        testing.setUp()\n\n    def tearDown(self):\n        testing.tearDown()\n\n    def test_identity(self):\n        from pyramid.security import LegacySecurityPolicy\n\n        request = _makeRequest()\n        policy = LegacySecurityPolicy()\n        _registerAuthenticationPolicy(request.registry, 'userid')\n\n        self.assertEqual(policy.identify(request), 'userid')\n\n    def test_remember(self):\n        from pyramid.security import LegacySecurityPolicy\n\n        request = _makeRequest()\n        policy = LegacySecurityPolicy()\n        _registerAuthenticationPolicy(request.registry, None)\n\n        self.assertEqual(\n            policy.remember(request, 'userid'), [('X-Pyramid-Test', 'userid')]\n        )\n\n    def test_forget(self):\n        from pyramid.security import LegacySecurityPolicy\n\n        request = _makeRequest()\n        policy = LegacySecurityPolicy()\n        _registerAuthenticationPolicy(request.registry, None)\n\n        self.assertEqual(\n            policy.forget(request), [('X-Pyramid-Test', 'logout')]\n        )\n\n    def test_forget_with_kwargs(self):\n        from pyramid.security import LegacySecurityPolicy\n\n        policy = LegacySecurityPolicy()\n        self.assertRaises(ValueError, lambda: policy.forget(None, foo='bar'))\n\n    def test_permits(self):\n        from pyramid.security import LegacySecurityPolicy\n\n        request = _makeRequest()\n        policy = LegacySecurityPolicy()\n        _registerAuthenticationPolicy(request.registry, ['p1', 'p2'])\n        _registerAuthorizationPolicy(request.registry, True)\n\n        self.assertTrue(policy.permits(request, request.context, 'permission'))",
                            "ast_type_str": "ClassDef",
                            "start_lineno": 431,
                            "end_lineno": 483,
                            "parent": null
                        }
                    ],
                    "added_entities": [
                        {
                            "file_name": "tests/test_security.py",
                            "type": "method",
                            "name": "TestLegacySecurityPolicy.test_forget_with_kwargs",
                            "content": "class TestLegacySecurityPolicy(unittest.TestCase):\n    def setUp(self):\n        testing.setUp()\n\n    def tearDown(self):\n        testing.tearDown()\n\n    def test_identity(self):\n        from pyramid.security import LegacySecurityPolicy\n\n        request = _makeRequest()\n        policy = LegacySecurityPolicy()\n        _registerAuthenticationPolicy(request.registry, 'userid')\n\n        self.assertEqual(policy.identify(request), 'userid')\n\n    def test_remember(self):\n        from pyramid.security import LegacySecurityPolicy\n\n        request = _makeRequest()\n        policy = LegacySecurityPolicy()\n        _registerAuthenticationPolicy(request.registry, None)\n\n        self.assertEqual(\n            policy.remember(request, 'userid'), [('X-Pyramid-Test', 'userid')]\n        )\n\n    def test_forget(self):\n        from pyramid.security import LegacySecurityPolicy\n\n        request = _makeRequest()\n        policy = LegacySecurityPolicy()\n        _registerAuthenticationPolicy(request.registry, None)\n\n        self.assertEqual(\n            policy.forget(request), [('X-Pyramid-Test', 'logout')]\n        )\n\n    def test_forget_with_kwargs(self):\n        from pyramid.security import LegacySecurityPolicy\n\n        policy = LegacySecurityPolicy()\n        self.assertRaises(ValueError, lambda: policy.forget(None, foo='bar'))\n\n    def test_permits(self):\n        from pyramid.security import LegacySecurityPolicy\n\n        request = _makeRequest()\n        policy = LegacySecurityPolicy()\n        _registerAuthenticationPolicy(request.registry, ['p1', 'p2'])\n        _registerAuthorizationPolicy(request.registry, True)\n\n        self.assertTrue(policy.permits(request, request.context, 'permission'))",
                            "ast_type_str": "ClassDef",
                            "start_lineno": 469,
                            "end_lineno": 473,
                            "parent": {
                                "file_name": "tests/test_security.py",
                                "type": "class",
                                "name": "TestLegacySecurityPolicy",
                                "content": "class TestLegacySecurityPolicy(unittest.TestCase):\n    def setUp(self):\n        testing.setUp()\n\n    def tearDown(self):\n        testing.tearDown()\n\n    def test_identity(self):\n        from pyramid.security import LegacySecurityPolicy\n\n        request = _makeRequest()\n        policy = LegacySecurityPolicy()\n        _registerAuthenticationPolicy(request.registry, 'userid')\n\n        self.assertEqual(policy.identify(request), 'userid')\n\n    def test_remember(self):\n        from pyramid.security import LegacySecurityPolicy\n\n        request = _makeRequest()\n        policy = LegacySecurityPolicy()\n        _registerAuthenticationPolicy(request.registry, None)\n\n        self.assertEqual(\n            policy.remember(request, 'userid'), [('X-Pyramid-Test', 'userid')]\n        )\n\n    def test_forget(self):\n        from pyramid.security import LegacySecurityPolicy\n\n        request = _makeRequest()\n        policy = LegacySecurityPolicy()\n        _registerAuthenticationPolicy(request.registry, None)\n\n        self.assertEqual(\n            policy.forget(request), [('X-Pyramid-Test', 'logout')]\n        )\n\n    def test_forget_with_kwargs(self):\n        from pyramid.security import LegacySecurityPolicy\n\n        policy = LegacySecurityPolicy()\n        self.assertRaises(ValueError, lambda: policy.forget(None, foo='bar'))\n\n    def test_permits(self):\n        from pyramid.security import LegacySecurityPolicy\n\n        request = _makeRequest()\n        policy = LegacySecurityPolicy()\n        _registerAuthenticationPolicy(request.registry, ['p1', 'p2'])\n        _registerAuthorizationPolicy(request.registry, True)\n\n        self.assertTrue(policy.permits(request, request.context, 'permission'))",
                                "ast_type_str": "ClassDef",
                                "start_lineno": 431,
                                "end_lineno": 483,
                                "parent": null
                            }
                        }
                    ],
                    "deleted_entities": []
                }
            ]
        }
    ],
    "old_commit_hash": "d699c9ace8028bf74e1c6c3ea085fdf9beeb2586^",
    "new_commit_hash": "d699c9ace8028bf74e1c6c3ea085fdf9beeb2586",
    "commit_message": "Raise error on kwargs in `LegacySecurityPolicy.forget`.",
    "commit_date": "2019-12-14T19:12:28-06:00",
    "metadata": {}
}
{
    "repo_name": "pyramid",
    "new_commit_hash": "d699c9ace8028bf74e1c6c3ea085fdf9beeb2586",
    "test_file_codes": [
        "import unittest\n\nfrom pyramid import testing\n\n\nclass TestAllPermissionsList(unittest.TestCase):\n    def setUp(self):\n        testing.setUp()\n\n    def tearDown(self):\n        testing.tearDown()\n\n    def _getTargetClass(self):\n        from pyramid.security import AllPermissionsList\n\n        return AllPermissionsList\n\n    def _makeOne(self):\n        return self._getTargetClass()()\n\n    def test_equality_w_self(self):\n        thing = self._makeOne()\n        self.assertTrue(thing.__eq__(thing))\n\n    def test_equality_w_other_instances_of_class(self):\n        thing = self._makeOne()\n        other = self._makeOne()\n        self.assertTrue(thing.__eq__(other))\n\n    def test_equality_miss(self):\n        thing = self._makeOne()\n        other = object()\n        self.assertFalse(thing.__eq__(other))\n\n    def test_contains_w_string(self):\n        thing = self._makeOne()\n        self.assertTrue('anything' in thing)\n\n    def test_contains_w_object(self):\n        thing = self._makeOne()\n        self.assertTrue(object() in thing)\n\n    def test_iterable(self):\n        thing = self._makeOne()\n        self.assertEqual(list(thing), [])\n\n    def test_singleton(self):\n        from pyramid.security import ALL_PERMISSIONS\n\n        self.assertEqual(ALL_PERMISSIONS.__class__, self._getTargetClass())\n\n\nclass TestAllowed(unittest.TestCase):\n    def _getTargetClass(self):\n        from pyramid.security import Allowed\n\n        return Allowed\n\n    def _makeOne(self, *arg, **kw):\n        klass = self._getTargetClass()\n        return klass(*arg, **kw)\n\n    def test_it(self):\n        allowed = self._makeOne('hello')\n        self.assertEqual(allowed.msg, 'hello')\n        self.assertEqual(allowed, True)\n        self.assertTrue(allowed)\n        self.assertEqual(str(allowed), 'hello')\n        self.assertTrue('<Allowed instance at ' in repr(allowed))\n        self.assertTrue(\"with msg 'hello'>\" in repr(allowed))\n\n\nclass TestDenied(unittest.TestCase):\n    def _getTargetClass(self):\n        from pyramid.security import Denied\n\n        return Denied\n\n    def _makeOne(self, *arg, **kw):\n        klass = self._getTargetClass()\n        return klass(*arg, **kw)\n\n    def test_it(self):\n        denied = self._makeOne('hello')\n        self.assertEqual(denied.msg, 'hello')\n        self.assertEqual(denied, False)\n        self.assertFalse(denied)\n        self.assertEqual(str(denied), 'hello')\n        self.assertTrue('<Denied instance at ' in repr(denied))\n        self.assertTrue(\"with msg 'hello'>\" in repr(denied))\n\n\nclass TestACLAllowed(unittest.TestCase):\n    def _getTargetClass(self):\n        from pyramid.security import ACLAllowed\n\n        return ACLAllowed\n\n    def _makeOne(self, *arg, **kw):\n        klass = self._getTargetClass()\n        return klass(*arg, **kw)\n\n    def test_it(self):\n        from pyramid.security import Allowed\n\n        msg = (\n            \"ACLAllowed permission 'permission' via ACE 'ace' in ACL 'acl' \"\n            \"on context 'ctx' for principals 'principals'\"\n        )\n        allowed = self._makeOne(\n            'ace', 'acl', 'permission', 'principals', 'ctx'\n        )\n        self.assertIsInstance(allowed, Allowed)\n        self.assertTrue(msg in allowed.msg)\n        self.assertEqual(allowed, True)\n        self.assertTrue(allowed)\n        self.assertEqual(str(allowed), msg)\n        self.assertTrue('<ACLAllowed instance at ' in repr(allowed))\n        self.assertTrue(\"with msg %r>\" % msg in repr(allowed))\n\n\nclass TestACLDenied(unittest.TestCase):\n    def _getTargetClass(self):\n        from pyramid.security import ACLDenied\n\n        return ACLDenied\n\n    def _makeOne(self, *arg, **kw):\n        klass = self._getTargetClass()\n        return klass(*arg, **kw)\n\n    def test_it(self):\n        from pyramid.security import Denied\n\n        msg = (\n            \"ACLDenied permission 'permission' via ACE 'ace' in ACL 'acl' \"\n            \"on context 'ctx' for principals 'principals'\"\n        )\n        denied = self._makeOne('ace', 'acl', 'permission', 'principals', 'ctx')\n        self.assertIsInstance(denied, Denied)\n        self.assertTrue(msg in denied.msg)\n        self.assertEqual(denied, False)\n        self.assertFalse(denied)\n        self.assertEqual(str(denied), msg)\n        self.assertTrue('<ACLDenied instance at ' in repr(denied))\n        self.assertTrue(\"with msg %r>\" % msg in repr(denied))\n\n\nclass TestPrincipalsAllowedByPermission(unittest.TestCase):\n    def setUp(self):\n        testing.setUp()\n\n    def tearDown(self):\n        testing.tearDown()\n\n    def _callFUT(self, *arg):\n        from pyramid.security import principals_allowed_by_permission\n\n        return principals_allowed_by_permission(*arg)\n\n    def test_no_authorization_policy(self):\n        from pyramid.security import Everyone\n\n        context = DummyContext()\n        result = self._callFUT(context, 'view')\n        self.assertEqual(result, [Everyone])\n\n\nclass TestRemember(unittest.TestCase):\n    def setUp(self):\n        testing.setUp()\n\n    def tearDown(self):\n        testing.tearDown()\n\n    def _callFUT(self, *arg, **kwarg):\n        from pyramid.security import remember\n\n        return remember(*arg, **kwarg)\n\n    def test_no_security_policy(self):\n        request = _makeRequest()\n        result = self._callFUT(request, 'me')\n        self.assertEqual(result, [])\n\n    def test_with_security_policy(self):\n        request = _makeRequest()\n        registry = request.registry\n        _registerSecurityPolicy(registry, 'yo')\n        result = self._callFUT(request, 'me')\n        self.assertEqual(result, [('X-Pyramid-Test', 'me')])\n\n    def test_with_missing_arg(self):\n        request = _makeRequest()\n        registry = request.registry\n        _registerSecurityPolicy(registry, 'yo')\n        self.assertRaises(TypeError, lambda: self._callFUT(request))\n\n\nclass TestForget(unittest.TestCase):\n    def setUp(self):\n        testing.setUp()\n\n    def tearDown(self):\n        testing.tearDown()\n\n    def _callFUT(self, *arg):\n        from pyramid.security import forget\n\n        return forget(*arg)\n\n    def test_no_security_policy(self):\n        request = _makeRequest()\n        result = self._callFUT(request)\n        self.assertEqual(result, [])\n\n    def test_with_security_policy(self):\n        request = _makeRequest()\n        _registerSecurityPolicy(request.registry, 'yo')\n        result = self._callFUT(request)\n        self.assertEqual(result, [('X-Pyramid-Test', 'logout')])\n\n\nclass TestViewExecutionPermitted(unittest.TestCase):\n    def setUp(self):\n        testing.setUp()\n\n    def tearDown(self):\n        testing.tearDown()\n\n    def _callFUT(self, *arg, **kw):\n        from pyramid.security import view_execution_permitted\n\n        return view_execution_permitted(*arg, **kw)\n\n    def _registerSecuredView(self, view_name, allow=True):\n        from pyramid.threadlocal import get_current_registry\n        from zope.interface import Interface\n        from pyramid.interfaces import ISecuredView\n        from pyramid.interfaces import IViewClassifier\n\n        class Checker(object):\n            def __permitted__(self, context, request):\n                self.context = context\n                self.request = request\n                return allow\n\n        checker = Checker()\n        reg = get_current_registry()\n        reg.registerAdapter(\n            checker,\n            (IViewClassifier, Interface, Interface),\n            ISecuredView,\n            view_name,\n        )\n        return checker\n\n    def test_no_permission(self):\n        from zope.interface import Interface\n        from pyramid.threadlocal import get_current_registry\n        from pyramid.interfaces import ISettings\n        from pyramid.interfaces import IView\n        from pyramid.interfaces import IViewClassifier\n\n        settings = dict(debug_authorization=True)\n        reg = get_current_registry()\n        reg.registerUtility(settings, ISettings)\n        context = DummyContext()\n        request = testing.DummyRequest({})\n\n        class DummyView(object):\n            pass\n\n        view = DummyView()\n        reg.registerAdapter(\n            view, (IViewClassifier, Interface, Interface), IView, ''\n        )\n        result = self._callFUT(context, request, '')\n        msg = result.msg\n        self.assertTrue(\"Allowed: view name '' in context\" in msg)\n        self.assertTrue('(no permission defined)' in msg)\n        self.assertEqual(result, True)\n\n    def test_no_view_registered(self):\n        from pyramid.threadlocal import get_current_registry\n        from pyramid.interfaces import ISettings\n\n        settings = dict(debug_authorization=True)\n        reg = get_current_registry()\n        reg.registerUtility(settings, ISettings)\n        context = DummyContext()\n        request = testing.DummyRequest({})\n        self.assertRaises(TypeError, self._callFUT, context, request, '')\n\n    def test_with_permission(self):\n        from zope.interface import Interface\n        from zope.interface import directlyProvides\n        from pyramid.interfaces import IRequest\n\n        class IContext(Interface):\n            pass\n\n        context = DummyContext()\n        directlyProvides(context, IContext)\n        self._registerSecuredView('', True)\n        request = testing.DummyRequest({})\n        directlyProvides(request, IRequest)\n        result = self._callFUT(context, request, '')\n        self.assertTrue(result)\n\n\nclass TestAuthenticatedIdentity(unittest.TestCase):\n    def setUp(self):\n        testing.setUp()\n\n    def tearDown(self):\n        testing.tearDown()\n\n    def test_identity_no_security_policy(self):\n        request = _makeRequest()\n        self.assertEquals(request.authenticated_identity, None)\n\n    def test_identity(self):\n        request = _makeRequest()\n        _registerSecurityPolicy(request.registry, 'yo')\n        self.assertEqual(request.authenticated_identity, 'yo')\n\n\nclass TestAuthenticatedUserId(unittest.TestCase):\n    def setUp(self):\n        testing.setUp()\n\n    def tearDown(self):\n        testing.tearDown()\n\n    def test_no_authentication_policy(self):\n        request = _makeRequest()\n        self.assertEqual(request.authenticated_userid, None)\n\n    def test_with_authentication_policy(self):\n        request = _makeRequest()\n        _registerAuthenticationPolicy(request.registry, 'yo')\n        _registerSecurityPolicy(request.registry, 'wat')\n        self.assertEqual(request.authenticated_userid, 'wat')\n\n    def test_with_security_policy(self):\n        request = _makeRequest()\n        _registerSecurityPolicy(request.registry, '123')\n        self.assertEqual(request.authenticated_userid, '123')\n\n\nclass TestUnAuthenticatedUserId(unittest.TestCase):\n    def setUp(self):\n        testing.setUp()\n\n    def tearDown(self):\n        testing.tearDown()\n\n    def test_no_authentication_policy(self):\n        request = _makeRequest()\n        self.assertEqual(request.unauthenticated_userid, None)\n\n    def test_with_authentication_policy(self):\n        request = _makeRequest()\n        _registerAuthenticationPolicy(request.registry, 'yo')\n        _registerSecurityPolicy(request.registry, 'wat')\n        self.assertEqual(request.unauthenticated_userid, 'yo')\n\n    def test_with_security_policy(self):\n        request = _makeRequest()\n        _registerSecurityPolicy(request.registry, 'yo')\n        self.assertEqual(request.unauthenticated_userid, 'yo')\n\n\nclass TestEffectivePrincipals(unittest.TestCase):\n    def setUp(self):\n        testing.setUp()\n\n    def tearDown(self):\n        testing.tearDown()\n\n    def test_no_authentication_policy(self):\n        from pyramid.security import Everyone\n\n        request = _makeRequest()\n        self.assertEqual(request.effective_principals, [Everyone])\n\n    def test_with_authentication_policy(self):\n        request = _makeRequest()\n        _registerAuthenticationPolicy(request.registry, 'yo')\n        self.assertEqual(request.effective_principals, 'yo')\n\n\nclass TestHasPermission(unittest.TestCase):\n    def setUp(self):\n        testing.setUp()\n\n    def tearDown(self):\n        testing.tearDown()\n\n    def _makeOne(self):\n        from pyramid.security import SecurityAPIMixin\n        from pyramid.registry import Registry\n\n        mixin = SecurityAPIMixin()\n        mixin.registry = Registry()\n        mixin.context = object()\n        return mixin\n\n    def test_no_security_policy(self):\n        request = self._makeOne()\n        result = request.has_permission('view')\n        self.assertTrue(result)\n        self.assertEqual(result.msg, 'No security policy in use.')\n\n    def test_with_security_registered(self):\n        request = self._makeOne()\n        _registerSecurityPolicy(request.registry, 'yo')\n        self.assertEqual(request.has_permission('view', context=None), 'yo')\n\n    def test_with_no_context_passed(self):\n        request = self._makeOne()\n        self.assertTrue(request.has_permission('view'))\n\n    def test_with_no_context_passed_or_on_request(self):\n        request = self._makeOne()\n        del request.context\n        self.assertRaises(AttributeError, request.has_permission, 'view')\n\n\nclass TestLegacySecurityPolicy(unittest.TestCase):\n    def setUp(self):\n        testing.setUp()\n\n    def tearDown(self):\n        testing.tearDown()\n\n    def test_identity(self):\n        from pyramid.security import LegacySecurityPolicy\n\n        request = _makeRequest()\n        policy = LegacySecurityPolicy()\n        _registerAuthenticationPolicy(request.registry, 'userid')\n\n        self.assertEqual(policy.identify(request), 'userid')\n\n    def test_remember(self):\n        from pyramid.security import LegacySecurityPolicy\n\n        request = _makeRequest()\n        policy = LegacySecurityPolicy()\n        _registerAuthenticationPolicy(request.registry, None)\n\n        self.assertEqual(\n            policy.remember(request, 'userid'), [('X-Pyramid-Test', 'userid')]\n        )\n\n    def test_forget(self):\n        from pyramid.security import LegacySecurityPolicy\n\n        request = _makeRequest()\n        policy = LegacySecurityPolicy()\n        _registerAuthenticationPolicy(request.registry, None)\n\n        self.assertEqual(\n            policy.forget(request), [('X-Pyramid-Test', 'logout')]\n        )\n\n    def test_forget_with_kwargs(self):\n        from pyramid.security import LegacySecurityPolicy\n\n        policy = LegacySecurityPolicy()\n        self.assertRaises(ValueError, lambda: policy.forget(None, foo='bar'))\n\n    def test_permits(self):\n        from pyramid.security import LegacySecurityPolicy\n\n        request = _makeRequest()\n        policy = LegacySecurityPolicy()\n        _registerAuthenticationPolicy(request.registry, ['p1', 'p2'])\n        _registerAuthorizationPolicy(request.registry, True)\n\n        self.assertTrue(policy.permits(request, request.context, 'permission'))\n\n\n_TEST_HEADER = 'X-Pyramid-Test'\n\n\nclass DummyContext:\n    def __init__(self, *arg, **kw):\n        self.__dict__.update(kw)\n\n\nclass DummySecurityPolicy:\n    def __init__(self, result):\n        self.result = result\n\n    def identify(self, request):\n        return self.result\n\n    def authenticated_userid(self, request):\n        return self.result\n\n    def permits(self, request, context, permission):\n        return self.result\n\n    def remember(self, request, userid, **kw):\n        headers = [(_TEST_HEADER, userid)]\n        self._header_remembered = headers[0]\n        return headers\n\n    def forget(self, request, **kw):\n        headers = [(_TEST_HEADER, 'logout')]\n        self._header_forgotten = headers[0]\n        return headers\n\n\nclass DummyAuthenticationPolicy:\n    def __init__(self, result):\n        self.result = result\n\n    def effective_principals(self, request):\n        return self.result\n\n    def unauthenticated_userid(self, request):\n        return self.result\n\n    def authenticated_userid(self, request):\n        return self.result\n\n    def remember(self, request, userid, **kw):\n        headers = [(_TEST_HEADER, userid)]\n        self._header_remembered = headers[0]\n        return headers\n\n    def forget(self, request):\n        headers = [(_TEST_HEADER, 'logout')]\n        self._header_forgotten = headers[0]\n        return headers\n\n\nclass DummyAuthorizationPolicy:\n    def __init__(self, result):\n        self.result = result\n\n    def permits(self, context, principals, permission):\n        return self.result\n\n    def principals_allowed_by_permission(self, context, permission):\n        return self.result\n\n\ndef _registerSecurityPolicy(reg, result):\n    from pyramid.interfaces import ISecurityPolicy\n\n    policy = DummySecurityPolicy(result)\n    reg.registerUtility(policy, ISecurityPolicy)\n    return policy\n\n\ndef _registerAuthenticationPolicy(reg, result):\n    from pyramid.interfaces import IAuthenticationPolicy\n\n    policy = DummyAuthenticationPolicy(result)\n    reg.registerUtility(policy, IAuthenticationPolicy)\n    return policy\n\n\ndef _registerAuthorizationPolicy(reg, result):\n    from pyramid.interfaces import IAuthorizationPolicy\n\n    policy = DummyAuthorizationPolicy(result)\n    reg.registerUtility(policy, IAuthorizationPolicy)\n    return policy\n\n\ndef _makeRequest():\n    from pyramid.registry import Registry\n\n    request = testing.DummyRequest(environ={})\n    request.registry = Registry()\n    request.context = object()\n    return request\n"
    ],
    "test_file_names": [
        "test_1.py"
    ],
    "setup_res_code": 0,
    "setup_res_stdout": "",
    "setup_res_stderr": "Using CPython 3.8.20\nCreating virtual environment at: .venv\nActivate with: source .venv/bin/activate\nResolved 11 packages in 867ms\nPrepared 1 package in 884ms\nInstalled 11 packages in 20ms\n + hupper==1.12.1\n + pastedeploy==3.1.0\n + plaster==1.1.2\n + plaster-pastedeploy==1.0.1\n + pyramid==2.0.dev0 (from file:///home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586)\n + setuptools==75.3.0\n + translationstring==1.4\n + venusian==3.1.1\n + webob==1.8.9\n + zope-deprecation==5.0\n + zope-interface==7.2\nResolved 20 packages in 51ms\nInstalled 9 packages in 34ms\n + beautifulsoup4==4.12.3\n + coverage==7.6.1\n + nose==1.3.7\n + soupsieve==2.6\n + waitress==3.0.0\n + webtest==3.0.1\n + zope-component==6.0\n + zope-event==5.0\n + zope-hookable==7.0\nResolved 16 packages in 7ms\nInstalled 16 packages in 10ms\n + cachetools==5.5.0\n + chardet==5.2.0\n + colorama==0.4.6\n + distlib==0.3.9\n + exceptiongroup==1.2.2\n + filelock==3.16.1\n + iniconfig==2.0.0\n + packaging==24.2\n + platformdirs==4.3.6\n + pluggy==1.5.0\n + pyproject-api==1.8.0\n + pytest==8.3.4\n + tomli==2.2.1\n + tox==4.23.2\n + typing-extensions==4.12.2\n + virtualenv==20.29.0\n",
    "new_commit_res_code": 1,
    "new_commit_res_stdout": "============================= test session starts ==============================\nplatform linux -- Python 3.8.20, pytest-8.3.4, pluggy-1.5.0\nrootdir: /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586\nconfigfile: pyproject.toml\ncollected 841 items\n\nr2e_tests/test_1.py .......................................              [  4%]\nr2e_tests/test_config/test_actions.py .................................. [  8%]\n............                                                             [ 10%]\nr2e_tests/test_config/test_adapters.py .FF..............F...             [ 12%]\nr2e_tests/test_config/test_assets.py ....F.F...F...FF.FF................ [ 16%]\n.....................................F.F................................ [ 25%]\n                                                                         [ 25%]\nr2e_tests/test_config/test_factories.py ..........F.F..F.F               [ 27%]\nr2e_tests/test_config/test_i18n.py FFFF..FF.FFF.F                        [ 29%]\nr2e_tests/test_config/test_init.py .............................F..F.... [ 33%]\n....F......F...................F................F..F.FF...FFF...         [ 41%]\nr2e_tests/test_config/test_predicates.py .......................         [ 43%]\nr2e_tests/test_config/test_rendering.py ...                              [ 44%]\nr2e_tests/test_config/test_routes.py ............F................       [ 47%]\nr2e_tests/test_config/test_security.py ..............                    [ 49%]\nr2e_tests/test_config/test_settings.py ........................          [ 52%]\nr2e_tests/test_config/test_testing.py ....F....F..                       [ 53%]\nr2e_tests/test_config/test_tweens.py F.........F..F...................   [ 57%]\nr2e_tests/test_config/test_views.py ..........F.........F............F.. [ 61%]\nF.........F....................F....................F........F.......... [ 70%]\n.........F................FF.....FFF.................................... [ 78%]\n............................................................F.......F.   [ 87%]\nr2e_tests/test_scripts/test_common.py ..                                 [ 87%]\nr2e_tests/test_scripts/test_pdistreport.py ..                            [ 87%]\nr2e_tests/test_scripts/test_prequest.py ...................              [ 90%]\nr2e_tests/test_scripts/test_proutes.py ...F.......FFFF.F.FF.F..F..FF.    [ 93%]\nr2e_tests/test_scripts/test_pserve.py .F.......                          [ 94%]\nr2e_tests/test_scripts/test_pshell.py .................                  [ 96%]\nr2e_tests/test_scripts/test_ptweens.py .....                             [ 97%]\nr2e_tests/test_scripts/test_pviews.py ..........FFFF..FFFFFF.            [100%]\n\n=================================== FAILURES ===================================\n__ AdaptersConfiguratorMixinTests.test_add_resource_url_adapter_dotted_names ___\n\nself = <r2e_tests.test_config.test_adapters.AdaptersConfiguratorMixinTests testMethod=test_add_resource_url_adapter_dotted_names>\n\n    def test_add_resource_url_adapter_dotted_names(self):\n        from pyramid.interfaces import IResourceURL\n    \n        config = self._makeOne(autocommit=True)\n        config.add_resource_url_adapter(\n            'tests.test_config.test_adapters.DummyResourceURL',\n            'tests.test_config.test_adapters.DummyIface',\n        )\n        iface = DummyIface()\n>       adapter = config.registry.getMultiAdapter((iface, iface), IResourceURL)\n\nr2e_tests/test_config/test_adapters.py:332: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nself = <Registry r2e_tests.test_config>\nobjects = (<r2e_tests.test_config.test_adapters.DummyIface object at 0x7950e4519a90>, <r2e_tests.test_config.test_adapters.DummyIface object at 0x7950e4519a90>)\ninterface = <InterfaceClass pyramid.interfaces.IResourceURL>, name = ''\n\n    def getMultiAdapter(self, objects, interface, name=''):\n        adapter = self.adapters.queryMultiAdapter(objects, interface, name)\n        if adapter is None:\n>           raise ComponentLookupError(objects, interface, name)\nE           zope.interface.interfaces.ComponentLookupError: ((<r2e_tests.test_config.test_adapters.DummyIface object at 0x7950e4519a90>, <r2e_tests.test_config.test_adapters.DummyIface object at 0x7950e4519a90>), <InterfaceClass pyramid.interfaces.IResourceURL>, '')\n\n.venv/lib/python3.8/site-packages/zope/interface/registry.py:379: ComponentLookupError\n_ AdaptersConfiguratorMixinTests.test_add_resource_url_adapter_introspectables _\n\nself = <r2e_tests.test_config.test_adapters.AdaptersConfiguratorMixinTests testMethod=test_add_resource_url_adapter_introspectables>\n\n    def test_add_resource_url_adapter_introspectables(self):\n        config = self._makeOne()\n        config.add_resource_url_adapter(DummyResourceURL, DummyIface)\n        actions = config.action_state.actions\n        self.assertEqual(len(actions), 1)\n        intrs = actions[0]['introspectables']\n        self.assertEqual(len(intrs), 1)\n        intr = intrs[0]\n        self.assertEqual(intr.type_name, 'resource url adapter')\n        self.assertEqual(\n            intr.discriminator, ('resource url adapter', DummyIface)\n        )\n        self.assertEqual(intr.category_name, 'resource url adapters')\n>       self.assertEqual(\n            intr.title,\n            \"resource url adapter for resource iface \"\n            \"<class 'tests.test_config.test_adapters.DummyIface'>\",\n        )\nE       AssertionError: \"reso[30 chars]iface <class 'r2e_tests.test_config.test_adapters.DummyIface'>\" != \"reso[30 chars]iface <class 'tests.test_config.test_adapters.DummyIface'>\"\nE       - resource url adapter for resource iface <class 'r2e_tests.test_config.test_adapters.DummyIface'>\nE       ?                                                 ----\nE       + resource url adapter for resource iface <class 'tests.test_config.test_adapters.DummyIface'>\n\nr2e_tests/test_config/test_adapters.py:377: AssertionError\n________ AdaptersConfiguratorMixinTests.test_add_traverser_dotted_names ________\n\nself = <r2e_tests.test_config.test_adapters.AdaptersConfiguratorMixinTests testMethod=test_add_traverser_dotted_names>\n\n    def test_add_traverser_dotted_names(self):\n        from pyramid.interfaces import ITraverser\n    \n        config = self._makeOne(autocommit=True)\n        config.add_traverser(\n            'tests.test_config.test_adapters.DummyTraverser',\n            'tests.test_config.test_adapters.DummyIface',\n        )\n        iface = DummyIface()\n>       traverser = config.registry.getAdapter(iface, ITraverser)\n\nr2e_tests/test_config/test_adapters.py:286: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nself = <Registry r2e_tests.test_config>\nobject = <r2e_tests.test_config.test_adapters.DummyIface object at 0x7950e419fdc0>\ninterface = <InterfaceClass pyramid.interfaces.ITraverser>, name = ''\n\n    def getAdapter(self, object, interface, name=''):\n        adapter = self.adapters.queryAdapter(object, interface, name)\n        if adapter is None:\n>           raise ComponentLookupError(object, interface, name)\nE           zope.interface.interfaces.ComponentLookupError: (<r2e_tests.test_config.test_adapters.DummyIface object at 0x7950e419fdc0>, <InterfaceClass pyramid.interfaces.ITraverser>, '')\n\n.venv/lib/python3.8/site-packages/zope/interface/registry.py:368: ComponentLookupError\n___ TestAssetsConfiguratorMixin.test_override_asset_directory_with_directory ___\n\nself = <r2e_tests.test_config.test_assets.TestAssetsConfiguratorMixin testMethod=test_override_asset_directory_with_directory>\n\n    def test_override_asset_directory_with_directory(self):\n        from pyramid.config.assets import PackageAssetSource\n    \n        config = self._makeOne(autocommit=True)\n        override = DummyUnderOverride()\n        config.override_asset(\n            'tests.test_config.pkgs.asset:templates/',\n            'tests.test_config.pkgs.asset.subpackage:templates/',\n            _override=override,\n        )\n        from tests.test_config.pkgs import asset\n        from tests.test_config.pkgs.asset import subpackage\n    \n        self.assertEqual(override.package, asset)\n        self.assertEqual(override.path, 'templates/')\n        source = override.source\n        self.assertTrue(isinstance(source, PackageAssetSource))\n        self.assertEqual(source.package, subpackage)\n        self.assertEqual(source.prefix, 'templates/')\n    \n        resource_name = 'bar.pt'\n        expected = os.path.join(\n            here, 'pkgs', 'asset', 'subpackage', 'templates', 'bar.pt'\n        )\n>       self.assertEqual(override.source.get_filename(resource_name), expected)\nE       AssertionError: '/hom[90 chars]2586/tests/test_config/pkgs/asset/subpackage/templates/bar.pt' != '/hom[90 chars]2586/r2e_tests/test_config/pkgs/asset/subpacka[15 chars]r.pt'\nE       - /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/tests/test_config/pkgs/asset/subpackage/templates/bar.pt\nE       + /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/r2e_tests/test_config/pkgs/asset/subpackage/templates/bar.pt\nE       ?                                                                                                    ++++\n\nr2e_tests/test_config/test_assets.py:131: AssertionError\n____ TestAssetsConfiguratorMixin.test_override_asset_directory_with_package ____\n\nself = <r2e_tests.test_config.test_assets.TestAssetsConfiguratorMixin testMethod=test_override_asset_directory_with_package>\n\n    def test_override_asset_directory_with_package(self):\n        from pyramid.config.assets import PackageAssetSource\n    \n        config = self._makeOne(autocommit=True)\n        override = DummyUnderOverride()\n        config.override_asset(\n            'tests.test_config.pkgs.asset:templates/',\n            'tests.test_config.pkgs.asset.subpackage',\n            _override=override,\n        )\n        from tests.test_config.pkgs import asset\n        from tests.test_config.pkgs.asset import subpackage\n    \n        self.assertEqual(override.package, asset)\n        self.assertEqual(override.path, 'templates/')\n        source = override.source\n        self.assertTrue(isinstance(source, PackageAssetSource))\n        self.assertEqual(source.package, subpackage)\n        self.assertEqual(source.prefix, '')\n    \n        resource_name = 'templates/bar.pt'\n        expected = os.path.join(\n            here, 'pkgs', 'asset', 'subpackage', 'templates', 'bar.pt'\n        )\n>       self.assertEqual(override.source.get_filename(resource_name), expected)\nE       AssertionError: '/hom[90 chars]2586/tests/test_config/pkgs/asset/subpackage/templates/bar.pt' != '/hom[90 chars]2586/r2e_tests/test_config/pkgs/asset/subpacka[15 chars]r.pt'\nE       - /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/tests/test_config/pkgs/asset/subpackage/templates/bar.pt\nE       + /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/r2e_tests/test_config/pkgs/asset/subpackage/templates/bar.pt\nE       ?                                                                                                    ++++\n\nr2e_tests/test_config/test_assets.py:157: AssertionError\n________ TestAssetsConfiguratorMixin.test_override_asset_file_with_file ________\n\nself = <r2e_tests.test_config.test_assets.TestAssetsConfiguratorMixin testMethod=test_override_asset_file_with_file>\n\n    def test_override_asset_file_with_file(self):\n        from pyramid.config.assets import PackageAssetSource\n    \n        config = self._makeOne(autocommit=True)\n        override = DummyUnderOverride()\n        config.override_asset(\n            'tests.test_config.pkgs.asset:templates/foo.pt',\n            'tests.test_config.pkgs.asset.subpackage:templates/bar.pt',\n            _override=override,\n        )\n        from tests.test_config.pkgs import asset\n        from tests.test_config.pkgs.asset import subpackage\n    \n        self.assertEqual(override.package, asset)\n        self.assertEqual(override.path, 'templates/foo.pt')\n        source = override.source\n        self.assertTrue(isinstance(source, PackageAssetSource))\n        self.assertEqual(source.package, subpackage)\n        self.assertEqual(source.prefix, 'templates/bar.pt')\n    \n        resource_name = ''\n        expected = os.path.join(\n            here, 'pkgs', 'asset', 'subpackage', 'templates', 'bar.pt'\n        )\n>       self.assertEqual(override.source.get_filename(resource_name), expected)\nE       AssertionError: '/hom[90 chars]2586/tests/test_config/pkgs/asset/subpackage/templates/bar.pt' != '/hom[90 chars]2586/r2e_tests/test_config/pkgs/asset/subpacka[15 chars]r.pt'\nE       - /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/tests/test_config/pkgs/asset/subpackage/templates/bar.pt\nE       + /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/r2e_tests/test_config/pkgs/asset/subpackage/templates/bar.pt\nE       ?                                                                                                    ++++\n\nr2e_tests/test_config/test_assets.py:79: AssertionError\n____ TestAssetsConfiguratorMixin.test_override_asset_package_with_directory ____\n\nself = <r2e_tests.test_config.test_assets.TestAssetsConfiguratorMixin testMethod=test_override_asset_package_with_directory>\n\n    def test_override_asset_package_with_directory(self):\n        from pyramid.config.assets import PackageAssetSource\n    \n        config = self._makeOne(autocommit=True)\n        override = DummyUnderOverride()\n        config.override_asset(\n            'tests.test_config.pkgs.asset',\n            'tests.test_config.pkgs.asset.subpackage:templates/',\n            _override=override,\n        )\n        from tests.test_config.pkgs import asset\n        from tests.test_config.pkgs.asset import subpackage\n    \n        self.assertEqual(override.package, asset)\n        self.assertEqual(override.path, '')\n        source = override.source\n        self.assertTrue(isinstance(source, PackageAssetSource))\n        self.assertEqual(source.package, subpackage)\n        self.assertEqual(source.prefix, 'templates/')\n    \n        resource_name = 'bar.pt'\n        expected = os.path.join(\n            here, 'pkgs', 'asset', 'subpackage', 'templates', 'bar.pt'\n        )\n>       self.assertEqual(override.source.get_filename(resource_name), expected)\nE       AssertionError: '/hom[90 chars]2586/tests/test_config/pkgs/asset/subpackage/templates/bar.pt' != '/hom[90 chars]2586/r2e_tests/test_config/pkgs/asset/subpacka[15 chars]r.pt'\nE       - /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/tests/test_config/pkgs/asset/subpackage/templates/bar.pt\nE       + /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/r2e_tests/test_config/pkgs/asset/subpackage/templates/bar.pt\nE       ?                                                                                                    ++++\n\nr2e_tests/test_config/test_assets.py:183: AssertionError\n_____ TestAssetsConfiguratorMixin.test_override_asset_package_with_package _____\n\nself = <r2e_tests.test_config.test_assets.TestAssetsConfiguratorMixin testMethod=test_override_asset_package_with_package>\n\n    def test_override_asset_package_with_package(self):\n        from pyramid.config.assets import PackageAssetSource\n    \n        config = self._makeOne(autocommit=True)\n        override = DummyUnderOverride()\n        config.override_asset(\n            'tests.test_config.pkgs.asset',\n            'tests.test_config.pkgs.asset.subpackage',\n            _override=override,\n        )\n        from tests.test_config.pkgs import asset\n        from tests.test_config.pkgs.asset import subpackage\n    \n        self.assertEqual(override.package, asset)\n        self.assertEqual(override.path, '')\n        source = override.source\n        self.assertTrue(isinstance(source, PackageAssetSource))\n        self.assertEqual(source.package, subpackage)\n        self.assertEqual(source.prefix, '')\n    \n        resource_name = 'templates/bar.pt'\n        expected = os.path.join(\n            here, 'pkgs', 'asset', 'subpackage', 'templates', 'bar.pt'\n        )\n>       self.assertEqual(override.source.get_filename(resource_name), expected)\nE       AssertionError: '/hom[90 chars]2586/tests/test_config/pkgs/asset/subpackage/templates/bar.pt' != '/hom[90 chars]2586/r2e_tests/test_config/pkgs/asset/subpacka[15 chars]r.pt'\nE       - /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/tests/test_config/pkgs/asset/subpackage/templates/bar.pt\nE       + /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/r2e_tests/test_config/pkgs/asset/subpackage/templates/bar.pt\nE       ?                                                                                                    ++++\n\nr2e_tests/test_config/test_assets.py:105: AssertionError\n_________ TestOverrideProvider.test_get_resource_filename_no_overrides _________\n\nself = <r2e_tests.test_config.test_assets.TestOverrideProvider testMethod=test_get_resource_filename_no_overrides>\n\n    def test_get_resource_filename_no_overrides(self):\n        resource_name = 'test_assets.py'\n        import tests.test_config\n    \n        provider = self._makeOne(tests.test_config)\n        expected = os.path.join(here, resource_name)\n        result = provider.get_resource_filename(None, resource_name)\n>       self.assertEqual(result, expected)\nE       AssertionError: '/hom[69 chars]74e1c6c3ea085fdf9beeb2586/tests/test_config/test_assets.py' != '/hom[69 chars]74e1c6c3ea085fdf9beeb2586/r2e_tests/test_config/test_assets.py'\nE       - /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/tests/test_config/test_assets.py\nE       + /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/r2e_tests/test_config/test_assets.py\nE       ?                                                                                                    ++++\n\nr2e_tests/test_config/test_assets.py:359: AssertionError\n____ TestOverrideProvider.test_get_resource_filename_override_returns_None _____\n\nself = <r2e_tests.test_config.test_assets.TestOverrideProvider testMethod=test_get_resource_filename_override_returns_None>\n\n    def test_get_resource_filename_override_returns_None(self):\n        overrides = DummyOverrides(None)\n        self._registerOverrides(overrides)\n        resource_name = 'test_assets.py'\n        import tests.test_config\n    \n        provider = self._makeOne(tests.test_config)\n        expected = os.path.join(here, resource_name)\n        result = provider.get_resource_filename(None, resource_name)\n>       self.assertEqual(result, expected)\nE       AssertionError: '/hom[69 chars]74e1c6c3ea085fdf9beeb2586/tests/test_config/test_assets.py' != '/hom[69 chars]74e1c6c3ea085fdf9beeb2586/r2e_tests/test_config/test_assets.py'\nE       - /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/tests/test_config/test_assets.py\nE       + /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/r2e_tests/test_config/test_assets.py\nE       ?                                                                                                    ++++\n\nr2e_tests/test_config/test_assets.py:413: AssertionError\n___________________ TestPackageAssetSource.test_get_filename ___________________\n\nself = <r2e_tests.test_config.test_assets.TestPackageAssetSource testMethod=test_get_filename>\n\n    def test_get_filename(self):\n        source = self._makeOne('')\n>       self.assertEqual(\n            source.get_filename('test_assets.py'),\n            os.path.join(here, 'test_assets.py'),\n        )\nE       AssertionError: '/hom[69 chars]74e1c6c3ea085fdf9beeb2586/tests/test_config/test_assets.py' != '/hom[69 chars]74e1c6c3ea085fdf9beeb2586/r2e_tests/test_config/test_assets.py'\nE       - /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/tests/test_config/test_assets.py\nE       + /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/r2e_tests/test_config/test_assets.py\nE       ?                                                                                                    ++++\n\nr2e_tests/test_config/test_assets.py:825: AssertionError\n_____________ TestPackageAssetSource.test_get_filename_with_prefix _____________\n\nself = <r2e_tests.test_config.test_assets.TestPackageAssetSource testMethod=test_get_filename_with_prefix>\n\n    def test_get_filename_with_prefix(self):\n        source = self._makeOne('test_assets.py')\n>       self.assertEqual(\n            source.get_filename(''), os.path.join(here, 'test_assets.py')\n        )\nE       AssertionError: '/hom[69 chars]74e1c6c3ea085fdf9beeb2586/tests/test_config/test_assets.py' != '/hom[69 chars]74e1c6c3ea085fdf9beeb2586/r2e_tests/test_config/test_assets.py'\nE       - /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/tests/test_config/test_assets.py\nE       + /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/r2e_tests/test_config/test_assets.py\nE       ?                                                                                                    ++++\n\nr2e_tests/test_config/test_assets.py:832: AssertionError\n____________ TestFactoriesMixin.test_set_request_factory_dottedname ____________\n\nself = <r2e_tests.test_config.test_factories.TestFactoriesMixin testMethod=test_set_request_factory_dottedname>\n\n    def test_set_request_factory_dottedname(self):\n        from pyramid.interfaces import IRequestFactory\n    \n        config = self._makeOne(autocommit=True)\n        config.set_request_factory('tests.test_config.dummyfactory')\n>       self.assertEqual(\n            config.registry.getUtility(IRequestFactory), dummyfactory\n        )\nE       AssertionError: <function dummyfactory at 0x7950e4383ca0> != <function dummyfactory at 0x7950e48fcd30>\n\nr2e_tests/test_config/test_factories.py:26: AssertionError\n___________ TestFactoriesMixin.test_set_response_factory_dottedname ____________\n\nself = <r2e_tests.test_config.test_factories.TestFactoriesMixin testMethod=test_set_response_factory_dottedname>\n\n    def test_set_response_factory_dottedname(self):\n        from pyramid.interfaces import IResponseFactory\n    \n        config = self._makeOne(autocommit=True)\n        config.set_response_factory('tests.test_config.dummyfactory')\n>       self.assertEqual(\n            config.registry.getUtility(IResponseFactory), dummyfactory\n        )\nE       AssertionError: <function dummyfactory at 0x7950e4383ca0> != <function dummyfactory at 0x7950e48fcd30>\n\nr2e_tests/test_config/test_factories.py:43: AssertionError\n_____________ TestFactoriesMixin.test_set_root_factory_dottedname ______________\n\nself = <r2e_tests.test_config.test_factories.TestFactoriesMixin testMethod=test_set_root_factory_dottedname>\n\n    def test_set_root_factory_dottedname(self):\n        from pyramid.interfaces import IRootFactory\n    \n        config = self._makeOne()\n        config.set_root_factory('tests.test_config.dummyfactory')\n        self.assertEqual(config.registry.queryUtility(IRootFactory), None)\n        config.commit()\n>       self.assertEqual(\n            config.registry.getUtility(IRootFactory), dummyfactory\n        )\nE       AssertionError: <function dummyfactory at 0x7950e4383ca0> != <function dummyfactory at 0x7950e48fcd30>\n\nr2e_tests/test_config/test_factories.py:77: AssertionError\n____________ TestFactoriesMixin.test_set_session_factory_dottedname ____________\n\nself = <r2e_tests.test_config.test_factories.TestFactoriesMixin testMethod=test_set_session_factory_dottedname>\n\n    def test_set_session_factory_dottedname(self):\n        from pyramid.interfaces import ISessionFactory\n    \n        config = self._makeOne()\n        config.set_session_factory('tests.test_config.dummyfactory')\n        self.assertEqual(config.registry.queryUtility(ISessionFactory), None)\n        config.commit()\n>       self.assertEqual(\n            config.registry.getUtility(ISessionFactory), dummyfactory\n        )\nE       AssertionError: <function dummyfactory at 0x7950e4383ca0> != <function dummyfactory at 0x7950e48fcd30>\n\nr2e_tests/test_config/test_factories.py:99: AssertionError\n_________ TestI18NConfiguratorMixin.test_add_translation_dirs_abspath __________\n\nself = <r2e_tests.test_config.test_i18n.TestI18NConfiguratorMixin testMethod=test_add_translation_dirs_abspath>\n\n    def test_add_translation_dirs_abspath(self):\n        from pyramid.interfaces import ITranslationDirectories\n    \n        config = self._makeOne(autocommit=True)\n>       config.add_translation_dirs(locale)\n\nr2e_tests/test_config/test_i18n.py:131: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \nsrc/pyramid/config/actions.py:573: in wrapper\n    result = wrapped(self, *arg, **kw)\nsrc/pyramid/config/i18n.py:127: in add_translation_dirs\n    self.action(None, register, introspectables=introspectables)\nsrc/pyramid/config/actions.py:95: in action\n    callable(*args, **kw)\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\n    def register():\n        directories = []\n        resolver = AssetResolver(self.package_name)\n    \n        # defer spec resolution until register to allow for asset\n        # overrides to take place in an earlier config phase\n        for spec in specs:\n            # the trailing slash helps match asset overrides for folders\n            if not spec.endswith('/'):\n                spec += '/'\n            asset = resolver.resolve(spec)\n            directory = asset.abspath()\n            if not asset.isdir():\n>               raise ConfigurationError(\n                    '\"%s\" is not a directory' % directory\n                )\nE               pyramid.exceptions.ConfigurationError: \"/home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/r2e_tests/pkgs/localeapp/locale\" is not a directory\n\nsrc/pyramid/config/i18n.py:103: ConfigurationError\n________ TestI18NConfiguratorMixin.test_add_translation_dirs_asset_spec ________\n\nself = <r2e_tests.test_config.test_i18n.TestI18NConfiguratorMixin testMethod=test_add_translation_dirs_asset_spec>\n\n    def test_add_translation_dirs_asset_spec(self):\n        from pyramid.interfaces import ITranslationDirectories\n    \n        config = self._makeOne(autocommit=True)\n        config.add_translation_dirs('tests.pkgs.localeapp:locale')\n>       self.assertEqual(\n            config.registry.getUtility(ITranslationDirectories), [locale]\n        )\nE       AssertionError: Lists differ: ['/ho[66 chars]28bf74e1c6c3ea085fdf9beeb2586/tests/pkgs/localeapp/locale'] != ['/ho[66 chars]28bf74e1c6c3ea085fdf9beeb2586/r2e_tests/pkgs/localeapp/locale']\nE       \nE       First differing element 0:\nE       '/hom[64 chars]028bf74e1c6c3ea085fdf9beeb2586/tests/pkgs/localeapp/locale'\nE       '/hom[64 chars]028bf74e1c6c3ea085fdf9beeb2586/r2e_tests/pkgs/localeapp/locale'\nE       \nE       - ['/home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/tests/pkgs/localeapp/locale']\nE       + ['/home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/r2e_tests/pkgs/localeapp/locale']\nE       ?                                                                                                      ++++\n\nr2e_tests/test_config/test_i18n.py:68: AssertionError\n_ TestI18NConfiguratorMixin.test_add_translation_dirs_asset_spec_existing_translation_dirs _\n\nself = <r2e_tests.test_config.test_i18n.TestI18NConfiguratorMixin testMethod=test_add_translation_dirs_asset_spec_existing_translation_dirs>\n\n    def test_add_translation_dirs_asset_spec_existing_translation_dirs(self):\n        from pyramid.interfaces import ITranslationDirectories\n    \n        config = self._makeOne(autocommit=True)\n        directories = ['abc']\n        config.registry.registerUtility(directories, ITranslationDirectories)\n        config.add_translation_dirs('tests.pkgs.localeapp:locale')\n        result = config.registry.getUtility(ITranslationDirectories)\n>       self.assertEqual(result, [locale, 'abc'])\nE       AssertionError: Lists differ: ['/ho[73 chars]1c6c3ea085fdf9beeb2586/tests/pkgs/localeapp/locale', 'abc'] != ['/ho[73 chars]1c6c3ea085fdf9beeb2586/r2e_tests/pkgs/localeapp/locale', 'abc']\nE       \nE       First differing element 0:\nE       '/hom[64 chars]028bf74e1c6c3ea085fdf9beeb2586/tests/pkgs/localeapp/locale'\nE       '/hom[64 chars]028bf74e1c6c3ea085fdf9beeb2586/r2e_tests/pkgs/localeapp/locale'\nE       \nE       - ['/home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/tests/pkgs/localeapp/locale',\nE       + ['/home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/r2e_tests/pkgs/localeapp/locale',\nE       ?                                                                                                      ++++\nE       \nE          'abc']\n\nr2e_tests/test_config/test_i18n.py:80: AssertionError\n_ TestI18NConfiguratorMixin.test_add_translation_dirs_doesnt_use_override_w_autocommit _\n\nself = <r2e_tests.test_config.test_i18n.TestI18NConfiguratorMixin testMethod=test_add_translation_dirs_doesnt_use_override_w_autocommit>\n\n    def test_add_translation_dirs_doesnt_use_override_w_autocommit(self):\n        from pyramid.interfaces import ITranslationDirectories\n    \n        config = self._makeOne(autocommit=True)\n        config.add_translation_dirs('tests.pkgs.localeapp:locale')\n        config.override_asset(\n            'tests.pkgs.localeapp:locale/', 'tests.pkgs.localeapp:locale2/'\n        )\n>       self.assertEqual(\n            config.registry.getUtility(ITranslationDirectories), [locale]\n        )\nE       AssertionError: Lists differ: ['/ho[66 chars]28bf74e1c6c3ea085fdf9beeb2586/tests/pkgs/localeapp/locale'] != ['/ho[66 chars]28bf74e1c6c3ea085fdf9beeb2586/r2e_tests/pkgs/localeapp/locale']\nE       \nE       First differing element 0:\nE       '/hom[64 chars]028bf74e1c6c3ea085fdf9beeb2586/tests/pkgs/localeapp/locale'\nE       '/hom[64 chars]028bf74e1c6c3ea085fdf9beeb2586/r2e_tests/pkgs/localeapp/locale'\nE       \nE       - ['/home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/tests/pkgs/localeapp/locale']\nE       + ['/home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/r2e_tests/pkgs/localeapp/locale']\nE       ?                                                                                                      ++++\n\nr2e_tests/test_config/test_i18n.py:157: AssertionError\n______ TestI18NConfiguratorMixin.test_add_translation_dirs_multiple_specs ______\n\nself = <r2e_tests.test_config.test_i18n.TestI18NConfiguratorMixin testMethod=test_add_translation_dirs_multiple_specs>\n\n    def test_add_translation_dirs_multiple_specs(self):\n        from pyramid.interfaces import ITranslationDirectories\n    \n        config = self._makeOne(autocommit=True)\n        config.add_translation_dirs(\n            'tests.pkgs.localeapp:locale', 'tests.pkgs.localeapp:locale2'\n        )\n>       self.assertEqual(\n            config.registry.getUtility(ITranslationDirectories),\n            [locale, locale2],\n        )\nE       AssertionError: Lists differ: ['/ho[91 chars]2586/tests/pkgs/localeapp/locale', '/home/gcpu[114 chars]le2'] != ['/ho[91 chars]2586/r2e_tests/pkgs/localeapp/locale', '/home/[122 chars]le2']\nE       \nE       First differing element 0:\nE       '/hom[64 chars]028bf74e1c6c3ea085fdf9beeb2586/tests/pkgs/localeapp/locale'\nE       '/hom[64 chars]028bf74e1c6c3ea085fdf9beeb2586/r2e_tests/pkgs/localeapp/locale'\nE       \nE       Diff is 760 characters long. Set self.maxDiff to None to see it.\n\nr2e_tests/test_config/test_i18n.py:89: AssertionError\n_ TestI18NConfiguratorMixin.test_add_translation_dirs_multiple_specs_multiple_calls _\n\nself = <r2e_tests.test_config.test_i18n.TestI18NConfiguratorMixin testMethod=test_add_translation_dirs_multiple_specs_multiple_calls>\n\n    def test_add_translation_dirs_multiple_specs_multiple_calls(self):\n        from pyramid.interfaces import ITranslationDirectories\n    \n        config = self._makeOne(autocommit=True)\n        config.add_translation_dirs(\n            'tests.pkgs.localeapp:locale', 'tests.pkgs.localeapp:locale2'\n        )\n        config.add_translation_dirs('tests.pkgs.localeapp:locale3')\n>       self.assertEqual(\n            config.registry.getUtility(ITranslationDirectories),\n            [locale3, locale, locale2],\n        )\nE       AssertionError: Lists differ: ['/ho[91 chars]2586/tests/pkgs/localeapp/locale3', '/home/gcp[245 chars]le2'] != ['/ho[91 chars]2586/r2e_tests/pkgs/localeapp/locale3', '/home[257 chars]le2']\nE       \nE       First differing element 0:\nE       '/hom[65 chars]28bf74e1c6c3ea085fdf9beeb2586/tests/pkgs/localeapp/locale3'\nE       '/hom[65 chars]28bf74e1c6c3ea085fdf9beeb2586/r2e_tests/pkgs/localeapp/locale3'\nE       \nE       Diff is 1141 characters long. Set self.maxDiff to None to see it.\n\nr2e_tests/test_config/test_i18n.py:102: AssertionError\n_ TestI18NConfiguratorMixin.test_add_translation_dirs_override_multiple_specs_multiple_calls _\n\nself = <r2e_tests.test_config.test_i18n.TestI18NConfiguratorMixin testMethod=test_add_translation_dirs_override_multiple_specs_multiple_calls>\n\n    def test_add_translation_dirs_override_multiple_specs_multiple_calls(self):\n        from pyramid.interfaces import ITranslationDirectories\n    \n        config = self._makeOne(autocommit=True)\n        config.add_translation_dirs(\n            'tests.pkgs.localeapp:locale', 'tests.pkgs.localeapp:locale2'\n        )\n        config.add_translation_dirs(\n            'tests.pkgs.localeapp:locale3', override=True\n        )\n>       self.assertEqual(\n            config.registry.getUtility(ITranslationDirectories),\n            [locale, locale2, locale3],\n        )\nE       AssertionError: Lists differ: ['/ho[91 chars]2586/tests/pkgs/localeapp/locale', '/home/gcpu[245 chars]le3'] != ['/ho[91 chars]2586/r2e_tests/pkgs/localeapp/locale', '/home/[257 chars]le3']\nE       \nE       First differing element 0:\nE       '/hom[64 chars]028bf74e1c6c3ea085fdf9beeb2586/tests/pkgs/localeapp/locale'\nE       '/hom[64 chars]028bf74e1c6c3ea085fdf9beeb2586/r2e_tests/pkgs/localeapp/locale'\nE       \nE       Diff is 1141 characters long. Set self.maxDiff to None to see it.\n\nr2e_tests/test_config/test_i18n.py:117: AssertionError\n_ TestI18NConfiguratorMixin.test_add_translation_dirs_uses_override_out_of_order _\n\nself = <r2e_tests.test_config.test_i18n.TestI18NConfiguratorMixin testMethod=test_add_translation_dirs_uses_override_out_of_order>\n\n    def test_add_translation_dirs_uses_override_out_of_order(self):\n        from pyramid.interfaces import ITranslationDirectories\n    \n        config = self._makeOne()\n        config.add_translation_dirs('tests.pkgs.localeapp:locale')\n        config.override_asset(\n            'tests.pkgs.localeapp:locale/', 'tests.pkgs.localeapp:locale2/'\n        )\n        config.commit()\n>       self.assertEqual(\n            config.registry.getUtility(ITranslationDirectories), [locale2]\n        )\nE       AssertionError: Lists differ: ['/ho[67 chars]8bf74e1c6c3ea085fdf9beeb2586/tests/pkgs/localeapp/locale2'] != ['/ho[67 chars]8bf74e1c6c3ea085fdf9beeb2586/r2e_tests/pkgs/localeapp/locale2']\nE       \nE       First differing element 0:\nE       '/hom[65 chars]28bf74e1c6c3ea085fdf9beeb2586/tests/pkgs/localeapp/locale2'\nE       '/hom[65 chars]28bf74e1c6c3ea085fdf9beeb2586/r2e_tests/pkgs/localeapp/locale2'\nE       \nE       - ['/home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/tests/pkgs/localeapp/locale2']\nE       + ['/home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/r2e_tests/pkgs/localeapp/locale2']\nE       ?                                                                                                      ++++\n\nr2e_tests/test_config/test_i18n.py:145: AssertionError\n_ TestI18NConfiguratorMixin.test_add_translation_dirs_uses_override_w_autocommit _\n\nself = <r2e_tests.test_config.test_i18n.TestI18NConfiguratorMixin testMethod=test_add_translation_dirs_uses_override_w_autocommit>\n\n    def test_add_translation_dirs_uses_override_w_autocommit(self):\n        from pyramid.interfaces import ITranslationDirectories\n    \n        config = self._makeOne(autocommit=True)\n        config.override_asset(\n            'tests.pkgs.localeapp:locale/', 'tests.pkgs.localeapp:locale2/'\n        )\n        config.add_translation_dirs('tests.pkgs.localeapp:locale')\n>       self.assertEqual(\n            config.registry.getUtility(ITranslationDirectories), [locale2]\n        )\nE       AssertionError: Lists differ: ['/ho[67 chars]8bf74e1c6c3ea085fdf9beeb2586/tests/pkgs/localeapp/locale2'] != ['/ho[67 chars]8bf74e1c6c3ea085fdf9beeb2586/r2e_tests/pkgs/localeapp/locale2']\nE       \nE       First differing element 0:\nE       '/hom[65 chars]28bf74e1c6c3ea085fdf9beeb2586/tests/pkgs/localeapp/locale2'\nE       '/hom[65 chars]28bf74e1c6c3ea085fdf9beeb2586/r2e_tests/pkgs/localeapp/locale2'\nE       \nE       - ['/home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/tests/pkgs/localeapp/locale2']\nE       + ['/home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/r2e_tests/pkgs/localeapp/locale2']\nE       ?                                                                                                      ++++\n\nr2e_tests/test_config/test_i18n.py:169: AssertionError\n_______ TestI18NConfiguratorMixin.test_set_locale_negotiator_dottedname ________\n\nself = <r2e_tests.test_config.test_i18n.TestI18NConfiguratorMixin testMethod=test_set_locale_negotiator_dottedname>\n\n    def test_set_locale_negotiator_dottedname(self):\n        from pyramid.interfaces import ILocaleNegotiator\n    \n        config = self._makeOne(autocommit=True)\n        config.set_locale_negotiator('tests.test_config.dummyfactory')\n>       self.assertEqual(\n            config.registry.getUtility(ILocaleNegotiator), dummyfactory\n        )\nE       AssertionError: <function dummyfactory at 0x7950e4383ca0> != <function dummyfactory at 0x7950e48fcd30>\n\nr2e_tests/test_config/test_i18n.py:43: AssertionError\n___________________ ConfiguratorTests.test_ctor_no_registry ____________________\n\nself = <r2e_tests.test_config.test_init.ConfiguratorTests testMethod=test_ctor_no_registry>\n\n    def test_ctor_no_registry(self):\n        import sys\n        from pyramid.interfaces import ISettings\n        from pyramid.config import Configurator\n        from pyramid.interfaces import IRendererFactory\n    \n        config = Configurator()\n        this_pkg = sys.modules['tests.test_config']\n        self.assertTrue(config.registry.getUtility(ISettings))\n>       self.assertEqual(config.package, this_pkg)\nE       AssertionError: <module 'r2e_tests.test_config' from '/home/gcpuse[117 chars].py'> != <module 'tests.test_config' from '/home/gcpuser/bu[109 chars].py'>\n\nr2e_tests/test_config/test_init.py:73: AssertionError\n_________ ConfiguratorTests.test_ctor_noreg_debug_logger_None_default __________\n\nself = <r2e_tests.test_config.test_init.ConfiguratorTests testMethod=test_ctor_noreg_debug_logger_None_default>\n\n    def test_ctor_noreg_debug_logger_None_default(self):\n        from pyramid.interfaces import IDebugLogger\n    \n        config = self._makeOne()\n        logger = config.registry.getUtility(IDebugLogger)\n>       self.assertEqual(logger.name, 'tests.test_config')\nE       AssertionError: 'r2e_tests.test_config' != 'tests.test_config'\nE       - r2e_tests.test_config\nE       ? ----\nE       + tests.test_config\n\nr2e_tests/test_config/test_init.py:198: AssertionError\n_____________ ConfiguratorTests.test_include_constant_root_package _____________\n\nself = <r2e_tests.test_config.test_init.ConfiguratorTests testMethod=test_include_constant_root_package>\n\n    def test_include_constant_root_package(self):\n        import tests\n        from tests import test_config\n    \n        config = self._makeOne(root_package=tests)\n        results = {}\n    \n        def include(config):\n            results['package'] = config.package\n            results['root_package'] = config.root_package\n    \n        config.include(include)\n        self.assertEqual(results['root_package'], tests)\n>       self.assertEqual(results['package'], test_config)\nE       AssertionError: <module 'r2e_tests.test_config' from '/home/gcpuse[117 chars].py'> != <module 'tests.test_config' from '/home/gcpuser/bu[109 chars].py'>\n\nr2e_tests/test_config/test_init.py:957: AssertionError\n_____________ ConfiguratorTests.test_include_with_python_callable ______________\n\nself = <r2e_tests.test_config.test_init.ConfiguratorTests testMethod=test_include_with_python_callable>\n\n    def test_include_with_python_callable(self):\n        from tests import test_config\n    \n        config = self._makeOne()\n        config.include(dummy_include)\n        after = config.action_state\n        actions = after.actions\n        self.assertEqual(len(actions), 1)\n        action = actions[0]\n        self.assertEqual(action['discriminator'], 'discrim')\n        self.assertEqual(action['callable'], None)\n>       self.assertEqual(action['args'], test_config)\nE       AssertionError: <module 'r2e_tests.test_config' from '/home/gcpuse[117 chars].py'> != <module 'tests.test_config' from '/home/gcpuser/bu[109 chars].py'>\n\nr2e_tests/test_config/test_init.py:870: AssertionError\n_______ ConfiguratorTests.test_setup_registry_debug_logger_None_default ________\n\nself = <r2e_tests.test_config.test_init.ConfiguratorTests testMethod=test_setup_registry_debug_logger_None_default>\n\n    def test_setup_registry_debug_logger_None_default(self):\n        from pyramid.registry import Registry\n        from pyramid.interfaces import IDebugLogger\n    \n        reg = Registry()\n        config = self._makeOne(reg)\n        config.setup_registry()\n        logger = reg.getUtility(IDebugLogger)\n>       self.assertEqual(logger.name, 'tests.test_config')\nE       AssertionError: 'r2e_tests.test_config' != 'tests.test_config'\nE       - r2e_tests.test_config\nE       ? ----\nE       + tests.test_config\n\nr2e_tests/test_config/test_init.py:586: AssertionError\n_________________ ConfiguratorTests.test_setup_registry_tweens _________________\n\nself = <r2e_tests.test_config.test_init.ConfiguratorTests testMethod=test_setup_registry_tweens>\n\n    def test_setup_registry_tweens(self):\n        from pyramid.interfaces import ITweens\n        from pyramid.registry import Registry\n    \n        reg = Registry()\n        config = self._makeOne(reg)\n        settings = {'pyramid.tweens': 'tests.test_config.dummy_tween_factory'}\n        config.setup_registry(settings=settings)\n        config.commit()\n        tweens = config.registry.getUtility(ITweens)\n>       self.assertEqual(\n            tweens.explicit,\n            [('tests.test_config.dummy_tween_factory', dummy_tween_factory)],\n        )\nE       AssertionError: Lists differ: [('te[25 chars]en_factory', <function dummy_tween_factory at 0x7950e456fdc0>)] != [('te[25 chars]en_factory', <function dummy_tween_factory at 0x7950e48fc9d0>)]\nE       \nE       First differing element 0:\nE       ('tes[23 chars]een_factory', <function dummy_tween_factory at 0x7950e456fdc0>)\nE       ('tes[23 chars]een_factory', <function dummy_tween_factory at 0x7950e48fc9d0>)\nE       \nE         [('tests.test_config.dummy_tween_factory',\nE       -   <function dummy_tween_factory at 0x7950e456fdc0>)]\nE       ?                                            ^^  -\nE       \nE       +   <function dummy_tween_factory at 0x7950e48fc9d0>)]\nE       ?                                            ^ ++\n\nr2e_tests/test_config/test_init.py:807: AssertionError\n__________________ ConfiguratorTests.test_with_package_module __________________\n\nself = <r2e_tests.test_config.test_init.ConfiguratorTests testMethod=test_with_package_module>\n\n    def test_with_package_module(self):\n        from . import test_init\n    \n        config = self._makeOne()\n        newconfig = config.with_package(test_init)\n        import tests.test_config\n    \n>       self.assertEqual(newconfig.package, tests.test_config)\nE       AssertionError: <module 'r2e_tests.test_config' from '/home/gcpuse[117 chars].py'> != <module 'tests.test_config' from '/home/gcpuser/bu[109 chars].py'>\n\nr2e_tests/test_config/test_init.py:348: AssertionError\n____ TestConfigurator_add_directive.test_add_directive_with_custom_callable ____\n\nself = <r2e_tests.test_config.test_init.TestConfigurator_add_directive testMethod=test_add_directive_with_custom_callable>\n\n    def test_add_directive_with_custom_callable(self):\n        from tests import test_config\n    \n        config = self.config\n        config.add_directive(\n            'dummy_callable', 'tests.test_config.dummy_callable'\n        )\n        self.assertTrue(hasattr(config, 'dummy_callable'))\n        config.dummy_callable('discrim')\n        after = config.action_state\n        action = after.actions[-1]\n        self.assertEqual(action['discriminator'], 'discrim')\n        self.assertEqual(action['callable'], None)\n>       self.assertEqual(action['args'], test_config)\nE       AssertionError: <module 'r2e_tests.test_config' from '/home/gcpuse[117 chars].py'> != <module 'tests.test_config' from '/home/gcpuser/bu[109 chars].py'>\n\nr2e_tests/test_config/test_init.py:1276: AssertionError\n________ TestConfigurator_add_directive.test_add_directive_with_partial ________\n\nself = <r2e_tests.test_config.test_init.TestConfigurator_add_directive testMethod=test_add_directive_with_partial>\n\n    def test_add_directive_with_partial(self):\n        from tests import test_config\n    \n        config = self.config\n        config.add_directive(\n            'dummy_partial', 'tests.test_config.dummy_partial'\n        )\n        self.assertTrue(hasattr(config, 'dummy_partial'))\n        config.dummy_partial()\n        after = config.action_state\n        action = after.actions[-1]\n        self.assertEqual(action['discriminator'], 'partial')\n        self.assertEqual(action['callable'], None)\n>       self.assertEqual(action['args'], test_config)\nE       AssertionError: <module 'r2e_tests.test_config' from '/home/gcpuse[117 chars].py'> != <module 'tests.test_config' from '/home/gcpuser/bu[109 chars].py'>\n\nr2e_tests/test_config/test_init.py:1261: AssertionError\n_________ TestConfigurator_add_directive.test_extend_with_dotted_name __________\n\nself = <r2e_tests.test_config.test_init.TestConfigurator_add_directive testMethod=test_extend_with_dotted_name>\n\n    def test_extend_with_dotted_name(self):\n        from tests import test_config\n    \n        config = self.config\n        config.add_directive('dummy_extend', 'tests.test_config.dummy_extend')\n        self.assertTrue(hasattr(config, 'dummy_extend'))\n        config.dummy_extend('discrim')\n        after = config.action_state\n        action = after.actions[-1]\n        self.assertEqual(action['discriminator'], 'discrim')\n        self.assertEqual(action['callable'], None)\n>       self.assertEqual(action['args'], test_config)\nE       AssertionError: <module 'r2e_tests.test_config' from '/home/gcpuse[117 chars].py'> != <module 'tests.test_config' from '/home/gcpuser/bu[109 chars].py'>\n\nr2e_tests/test_config/test_init.py:1246: AssertionError\n_______ TestConfigurator_add_directive.test_extend_with_python_callable ________\n\nself = <r2e_tests.test_config.test_init.TestConfigurator_add_directive testMethod=test_extend_with_python_callable>\n\n    def test_extend_with_python_callable(self):\n        from tests import test_config\n    \n        config = self.config\n        config.add_directive('dummy_extend', dummy_extend)\n        self.assertTrue(hasattr(config, 'dummy_extend'))\n        config.dummy_extend('discrim')\n        after = config.action_state\n        action = after.actions[-1]\n        self.assertEqual(action['discriminator'], 'discrim')\n        self.assertEqual(action['callable'], None)\n>       self.assertEqual(action['args'], test_config)\nE       AssertionError: <module 'r2e_tests.test_config' from '/home/gcpuse[117 chars].py'> != <module 'tests.test_config' from '/home/gcpuser/bu[109 chars].py'>\n\nr2e_tests/test_config/test_init.py:1289: AssertionError\n_________ TestConfigurator__add_predicate.test_factory_as_dotted_name __________\n\nself = <r2e_tests.test_config.test_init.TestConfigurator__add_predicate testMethod=test_factory_as_dotted_name>\n\n    def test_factory_as_dotted_name(self):\n        config = self._makeOne()\n    \n        def _fakeAction(\n            discriminator,\n            callable=None,\n            args=(),\n            kw=None,\n            order=0,\n            introspectables=(),\n            **extra\n        ):\n            self.assertEqual(len(introspectables), 1)\n            self.assertEqual(introspectables[0]['name'], 'testing')\n            self.assertEqual(introspectables[0]['factory'], DummyPredicate)\n    \n        config.action = _fakeAction\n>       config._add_predicate(\n            'route', 'testing', 'tests.test_config.test_init.DummyPredicate'\n        )\n\nr2e_tests/test_config/test_init.py:1366: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \nsrc/pyramid/config/predicates.py:49: in _add_predicate\n    self.action(\nr2e_tests/test_config/test_init.py:1363: in _fakeAction\n    self.assertEqual(introspectables[0]['factory'], DummyPredicate)\nE   AssertionError: <class 'tests.test_config.test_init.DummyPredicate'> != <class 'r2e_tests.test_config.test_init.DummyPredicate'>\n_____ RoutesConfiguratorMixinTests.test_add_route_with_factory_dottedname ______\n\nself = <r2e_tests.test_config.test_routes.RoutesConfiguratorMixinTests testMethod=test_add_route_with_factory_dottedname>\n\n    def test_add_route_with_factory_dottedname(self):\n        config = self._makeOne(autocommit=True)\n        config.add_route(\n            'name', 'path', factory='tests.test_config.dummyfactory'\n        )\n        route = self._assertRoute(config, 'name', 'path')\n>       self.assertEqual(route.factory, dummyfactory)\nE       AssertionError: <function dummyfactory at 0x7950e4383ca0> != <function dummyfactory at 0x7950e48fcd30>\n\nr2e_tests/test_config/test_routes.py:108: AssertionError\n_____ TestingConfiguratorMixinTests.test_testing_add_subscriber_dottedname _____\n\nself = <r2e_tests.test_config.test_testing.TestingConfiguratorMixinTests testMethod=test_testing_add_subscriber_dottedname>\n\n    def test_testing_add_subscriber_dottedname(self):\n        config = self._makeOne(autocommit=True)\n        L = config.testing_add_subscriber('tests.test_config.IDummy')\n        event = DummyEvent()\n        config.registry.notify(event)\n>       self.assertEqual(len(L), 1)\nE       AssertionError: 0 != 1\n\nr2e_tests/test_config/test_testing.py:106: AssertionError\n__________ TestingConfiguratorMixinTests.test_testing_securitypolicy ___________\n\nself = <r2e_tests.test_config.test_testing.TestingConfiguratorMixinTests testMethod=test_testing_securitypolicy>\n\n    def test_testing_securitypolicy(self):\n        from pyramid.testing import DummySecurityPolicy\n    \n        config = self._makeOne(autocommit=True)\n        config.testing_securitypolicy('user', permissive=False)\n        from pyramid.interfaces import ISecurityPolicy\n    \n        policy = config.registry.getUtility(ISecurityPolicy)\n        self.assertTrue(isinstance(policy, DummySecurityPolicy))\n>       self.assertEqual(policy.identity, 'user')\nE       AssertionError: None != 'user'\n\nr2e_tests/test_config/test_testing.py:25: AssertionError\n____________ TestTweensConfiguratorMixin.test_add_tween_dottedname _____________\n\nself = <r2e_tests.test_config.test_tweens.TestTweensConfiguratorMixin testMethod=test_add_tween_dottedname>\n\n    def test_add_tween_dottedname(self):\n        from pyramid.interfaces import ITweens\n        from pyramid.tweens import excview_tween_factory\n    \n        config = self._makeOne()\n        config.add_tween('tests.test_config.dummy_tween_factory')\n        config.commit()\n        tweens = config.registry.queryUtility(ITweens)\n>       self.assertEqual(\n            tweens.implicit(),\n            [\n                ('tests.test_config.dummy_tween_factory', dummy_tween_factory),\n                (\n                    'pyramid.tweens.excview_tween_factory',\n                    excview_tween_factory,\n                ),\n            ],\n        )\nE       AssertionError: Lists differ: [('te[74 chars]950e456fdc0>), ('pyramid.tweens.excview_tween_[57 chars]90>)] != [('te[74 chars]950e48fc9d0>), ('pyramid.tweens.excview_tween_[57 chars]90>)]\nE       \nE       First differing element 0:\nE       ('tes[23 chars]een_factory', <function dummy_tween_factory at 0x7950e456fdc0>)\nE       ('tes[23 chars]een_factory', <function dummy_tween_factory at 0x7950e48fc9d0>)\nE       \nE         [('tests.test_config.dummy_tween_factory',\nE       -   <function dummy_tween_factory at 0x7950e456fdc0>),\nE       ?                                            ^^  -\nE       \nE       +   <function dummy_tween_factory at 0x7950e48fc9d0>),\nE       ?                                            ^ ++\nE       \nE          ('pyramid.tweens.excview_tween_factory',\nE           <function excview_tween_factory at 0x7950e4d28790>)]\n\nr2e_tests/test_config/test_tweens.py:107: AssertionError\n__________ TestTweensConfiguratorMixin.test_add_tweens_names_distinct __________\n\nself = <r2e_tests.test_config.test_tweens.TestTweensConfiguratorMixin testMethod=test_add_tweens_names_distinct>\n\n    def test_add_tweens_names_distinct(self):\n        from pyramid.interfaces import ITweens\n        from pyramid.tweens import excview_tween_factory\n    \n        def factory1(handler, registry):  # pragma: no cover\n            return handler\n    \n        def factory2(handler, registry):  # pragma: no cover\n            return handler\n    \n        config = self._makeOne()\n        config.add_tween('tests.test_config.dummy_tween_factory')\n        config.add_tween('tests.test_config.dummy_tween_factory2')\n        config.commit()\n        tweens = config.registry.queryUtility(ITweens)\n        implicit = tweens.implicit()\n>       self.assertEqual(\n            implicit,\n            [\n                (\n                    'tests.test_config.dummy_tween_factory2',\n                    dummy_tween_factory2,\n                ),\n                ('tests.test_config.dummy_tween_factory', dummy_tween_factory),\n                (\n                    'pyramid.tweens.excview_tween_factory',\n                    excview_tween_factory,\n                ),\n            ],\n        )\nE       AssertionError: Lists differ: [('te[76 chars]950e456fee0>), ('tests.test_config.dummy_tween[150 chars]90>)] != [('te[76 chars]950e48fca60>), ('tests.test_config.dummy_tween[150 chars]90>)]\nE       \nE       First differing element 0:\nE       ('tes[25 chars]n_factory2', <function dummy_tween_factory2 at 0x7950e456fee0>)\nE       ('tes[25 chars]n_factory2', <function dummy_tween_factory2 at 0x7950e48fca60>)\nE       \nE         [('tests.test_config.dummy_tween_factory2',\nE       -   <function dummy_tween_factory2 at 0x7950e456fee0>),\nE       ?                                             ^ ---\nE       \nE       +   <function dummy_tween_factory2 at 0x7950e48fca60>),\nE       ?                                             ^^^^\nE       \nE          ('tests.test_config.dummy_tween_factory',\nE       -   <function dummy_tween_factory at 0x7950e456fdc0>),\nE       ?                                            ^^  -\nE       \nE       +   <function dummy_tween_factory at 0x7950e48fc9d0>),\nE       ?                                            ^ ++\nE       \nE          ('pyramid.tweens.excview_tween_factory',\nE           <function excview_tween_factory at 0x7950e4d28790>)]\n\nr2e_tests/test_config/test_tweens.py:32: AssertionError\n_______ TestTweensConfiguratorMixin.test_add_tweens_names_with_underover _______\n\nself = <r2e_tests.test_config.test_tweens.TestTweensConfiguratorMixin testMethod=test_add_tweens_names_with_underover>\n\n    def test_add_tweens_names_with_underover(self):\n        from pyramid.interfaces import ITweens\n        from pyramid.tweens import excview_tween_factory\n        from pyramid.tweens import MAIN\n    \n        config = self._makeOne()\n        config.add_tween('tests.test_config.dummy_tween_factory', over=MAIN)\n        config.add_tween(\n            'tests.test_config.dummy_tween_factory2',\n            over=MAIN,\n            under='tests.test_config.dummy_tween_factory',\n        )\n        config.commit()\n        tweens = config.registry.queryUtility(ITweens)\n        implicit = tweens.implicit()\n>       self.assertEqual(\n            implicit,\n            [\n                (\n                    'pyramid.tweens.excview_tween_factory',\n                    excview_tween_factory,\n                ),\n                ('tests.test_config.dummy_tween_factory', dummy_tween_factory),\n                (\n                    'tests.test_config.dummy_tween_factory2',\n                    dummy_tween_factory2,\n                ),\n            ],\n        )\nE       AssertionError: Lists differ: [('py[168 chars]950e456fdc0>), ('tests.test_config.dummy_tween[58 chars]e0>)] != [('py[168 chars]950e48fc9d0>), ('tests.test_config.dummy_tween[58 chars]60>)]\nE       \nE       First differing element 1:\nE       ('tes[23 chars]een_factory', <function dummy_tween_factory at 0x7950e456fdc0>)\nE       ('tes[23 chars]een_factory', <function dummy_tween_factory at 0x7950e48fc9d0>)\nE       \nE         [('pyramid.tweens.excview_tween_factory',\nE           <function excview_tween_factory at 0x7950e4d28790>),\nE          ('tests.test_config.dummy_tween_factory',\nE       -   <function dummy_tween_factory at 0x7950e456fdc0>),\nE       ?                                            ^^  -\nE       \nE       +   <function dummy_tween_factory at 0x7950e48fc9d0>),\nE       ?                                            ^ ++\nE       \nE          ('tests.test_config.dummy_tween_factory2',\nE       -   <function dummy_tween_factory2 at 0x7950e456fee0>)]\nE       ?                                             ^ ---\nE       \nE       +   <function dummy_tween_factory2 at 0x7950e48fca60>)]\nE       ?                                             ^^^^\n\nr2e_tests/test_config/test_tweens.py:62: AssertionError\n____ TestViewsConfigurationMixin.test_add_exception_view_with_view_defaults ____\n\nself = <r2e_tests.test_config.test_views.TestViewsConfigurationMixin testMethod=test_add_exception_view_with_view_defaults>\n\n    def test_add_exception_view_with_view_defaults(self):\n        from pyramid.renderers import null_renderer\n        from pyramid.exceptions import PredicateMismatch\n        from zope.interface import directlyProvides\n        from zope.interface import implementedBy\n    \n        class view(object):\n            __view_defaults__ = {'containment': 'tests.test_config.IDummy'}\n    \n            def __init__(self, request):\n                pass\n    \n            def __call__(self):\n                return 'OK'\n    \n        config = self._makeOne(autocommit=True)\n        config.add_exception_view(\n            view=view, context=Exception, renderer=null_renderer\n        )\n        wrapper = self._getViewCallable(\n            config, exc_iface=implementedBy(Exception)\n        )\n        context = DummyContext()\n        directlyProvides(context, IDummy)\n        request = self._makeRequest(config)\n>       self.assertEqual(wrapper(context, request), 'OK')\n\nr2e_tests/test_config/test_views.py:2383: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \nsrc/pyramid/config/views.py:184: in attr_view\n    return view(context, request)\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\ncontext = <r2e_tests.test_config.test_views.DummyContext object at 0x7950e4b33550>\nrequest = <r2e_tests.test_config.test_views.DummyRequest object at 0x7950e4393e20>\n\n    def predicate_wrapper(context, request):\n        for predicate in preds:\n            if not predicate(context, request):\n                view_name = getattr(view, '__name__', view)\n>               raise PredicateMismatch(\n                    'predicate mismatch for view %s (%s)'\n                    % (view_name, predicate.text())\n                )\nE               pyramid.exceptions.PredicateMismatch: predicate mismatch for view view (containment = tests.test_config.IDummy)\n\nsrc/pyramid/config/views.py:206: PredicateMismatch\n____ TestViewsConfigurationMixin.test_add_forbidden_view_with_view_defaults ____\n\nself = <r2e_tests.test_config.test_views.TestViewsConfigurationMixin testMethod=test_add_forbidden_view_with_view_defaults>\n\n    def test_add_forbidden_view_with_view_defaults(self):\n        from pyramid.interfaces import IRequest\n        from pyramid.renderers import null_renderer\n        from pyramid.exceptions import PredicateMismatch\n        from pyramid.httpexceptions import HTTPForbidden\n        from zope.interface import directlyProvides\n        from zope.interface import implementedBy\n    \n        class view(object):\n            __view_defaults__ = {'containment': 'tests.test_config.IDummy'}\n    \n            def __init__(self, request):\n                pass\n    \n            def __call__(self):\n                return 'OK'\n    \n        config = self._makeOne(autocommit=True)\n        config.add_forbidden_view(view=view, renderer=null_renderer)\n        wrapper = self._getViewCallable(\n            config,\n            exc_iface=implementedBy(HTTPForbidden),\n            request_iface=IRequest,\n        )\n        context = DummyContext()\n        directlyProvides(context, IDummy)\n        request = self._makeRequest(config)\n>       self.assertEqual(wrapper(context, request), 'OK')\n\nr2e_tests/test_config/test_views.py:2608: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \nsrc/pyramid/config/views.py:184: in attr_view\n    return view(context, request)\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\ncontext = <r2e_tests.test_config.test_views.DummyContext object at 0x7950e3ea3bb0>\nrequest = <r2e_tests.test_config.test_views.DummyRequest object at 0x7950e4429f40>\n\n    def predicate_wrapper(context, request):\n        for predicate in preds:\n            if not predicate(context, request):\n                view_name = getattr(view, '__name__', view)\n>               raise PredicateMismatch(\n                    'predicate mismatch for view %s (%s)'\n                    % (view_name, predicate.text())\n                )\nE               pyramid.exceptions.PredicateMismatch: predicate mismatch for view view (containment = tests.test_config.IDummy)\n\nsrc/pyramid/config/views.py:206: PredicateMismatch\n____ TestViewsConfigurationMixin.test_add_notfound_view_with_view_defaults _____\n\nself = <r2e_tests.test_config.test_views.TestViewsConfigurationMixin testMethod=test_add_notfound_view_with_view_defaults>\n\n    def test_add_notfound_view_with_view_defaults(self):\n        from pyramid.interfaces import IRequest\n        from pyramid.renderers import null_renderer\n        from pyramid.exceptions import PredicateMismatch\n        from pyramid.httpexceptions import HTTPNotFound\n        from zope.interface import directlyProvides\n        from zope.interface import implementedBy\n    \n        class view(object):\n            __view_defaults__ = {'containment': 'tests.test_config.IDummy'}\n    \n            def __init__(self, request):\n                pass\n    \n            def __call__(self):\n                return 'OK'\n    \n        config = self._makeOne(autocommit=True)\n        config.add_notfound_view(view=view, renderer=null_renderer)\n        wrapper = self._getViewCallable(\n            config,\n            exc_iface=implementedBy(HTTPNotFound),\n            request_iface=IRequest,\n        )\n        context = DummyContext()\n        directlyProvides(context, IDummy)\n        request = self._makeRequest(config)\n>       self.assertEqual(wrapper(context, request), 'OK')\n\nr2e_tests/test_config/test_views.py:2772: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \nsrc/pyramid/config/views.py:184: in attr_view\n    return view(context, request)\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\ncontext = <r2e_tests.test_config.test_views.DummyContext object at 0x7950e42cc190>\nrequest = <r2e_tests.test_config.test_views.DummyRequest object at 0x7950e3e9e880>\n\n    def predicate_wrapper(context, request):\n        for predicate in preds:\n            if not predicate(context, request):\n                view_name = getattr(view, '__name__', view)\n>               raise PredicateMismatch(\n                    'predicate mismatch for view %s (%s)'\n                    % (view_name, predicate.text())\n                )\nE               pyramid.exceptions.PredicateMismatch: predicate mismatch for view view (containment = tests.test_config.IDummy)\n\nsrc/pyramid/config/views.py:206: PredicateMismatch\n____ TestViewsConfigurationMixin.test_add_static_view_package_here_relative ____\n\nself = <r2e_tests.test_config.test_views.TestViewsConfigurationMixin testMethod=test_add_static_view_package_here_relative>\n\n    def test_add_static_view_package_here_relative(self):\n        from pyramid.interfaces import IStaticURLInfo\n    \n        info = DummyStaticURLInfo()\n        config = self._makeOne(autocommit=True)\n        config.registry.registerUtility(info, IStaticURLInfo)\n        config.add_static_view('static', 'files')\n>       self.assertEqual(\n            info.added, [(config, 'static', 'tests.test_config:files', {})]\n        )\nE       AssertionError: Lists differ: [(<py[35 chars] 0x7950e43186d0>, 'static', 'r2e_tests.test_config:files', {})] != [(<py[35 chars] 0x7950e43186d0>, 'static', 'tests.test_config:files', {})]\nE       \nE       First differing element 0:\nE       (<pyr[33 chars]t 0x7950e43186d0>, 'static', 'r2e_tests.test_config:files', {})\nE       (<pyr[33 chars]t 0x7950e43186d0>, 'static', 'tests.test_config:files', {})\nE       \nE         [(<pyramid.config.Configurator object at 0x7950e43186d0>,\nE           'static',\nE       -   'r2e_tests.test_config:files',\nE       ?    ----\nE       \nE       +   'tests.test_config:files',\nE           {})]\n\nr2e_tests/test_config/test_views.py:2491: AssertionError\n_______ TestViewsConfigurationMixin.test_add_view_context_as_dottedname ________\n\nself = <r2e_tests.test_config.test_views.TestViewsConfigurationMixin testMethod=test_add_view_context_as_dottedname>\n\n    def test_add_view_context_as_dottedname(self):\n        from pyramid.renderers import null_renderer\n    \n        view = lambda *arg: 'OK'\n        config = self._makeOne(autocommit=True)\n        config.add_view(\n            context='tests.test_config.IDummy',\n            view=view,\n            renderer=null_renderer,\n        )\n        wrapper = self._getViewCallable(config, IDummy)\n>       self.assertEqual(wrapper, view)\nE       AssertionError: None != <function TestViewsConfigurationMixin.tes[64 chars]4820>\n\nr2e_tests/test_config/test_views.py:450: AssertionError\n_________ TestViewsConfigurationMixin.test_add_view_for__as_dottedname _________\n\nself = <r2e_tests.test_config.test_views.TestViewsConfigurationMixin testMethod=test_add_view_for__as_dottedname>\n\n    def test_add_view_for__as_dottedname(self):\n        from pyramid.renderers import null_renderer\n    \n        view = lambda *arg: 'OK'\n        config = self._makeOne(autocommit=True)\n        config.add_view(\n            for_='tests.test_config.IDummy', view=view, renderer=null_renderer\n        )\n        wrapper = self._getViewCallable(config, IDummy)\n>       self.assertEqual(wrapper, view)\nE       AssertionError: None != <function TestViewsConfigurationMixin.tes[61 chars]4430>\n\nr2e_tests/test_config/test_views.py:461: AssertionError\n____ TestViewsConfigurationMixin.test_add_view_with_containment_dottedname _____\n\nself = <r2e_tests.test_config.test_views.TestViewsConfigurationMixin testMethod=test_add_view_with_containment_dottedname>\n\n    def test_add_view_with_containment_dottedname(self):\n        from pyramid.renderers import null_renderer\n        from zope.interface import directlyProvides\n    \n        view = lambda *arg: 'OK'\n        config = self._makeOne(autocommit=True)\n        config.add_view(\n            view=view,\n            containment='tests.test_config.IDummy',\n            renderer=null_renderer,\n        )\n        wrapper = self._getViewCallable(config)\n        context = DummyContext()\n        directlyProvides(context, IDummy)\n>       self.assertEqual(wrapper(context, None), 'OK')\n\nr2e_tests/test_config/test_views.py:1861: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \nsrc/pyramid/config/views.py:184: in attr_view\n    return view(context, request)\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\ncontext = <r2e_tests.test_config.test_views.DummyContext object at 0x7950e419ffd0>\nrequest = None\n\n    def predicate_wrapper(context, request):\n        for predicate in preds:\n            if not predicate(context, request):\n                view_name = getattr(view, '__name__', view)\n>               raise PredicateMismatch(\n                    'predicate mismatch for view %s (%s)'\n                    % (view_name, predicate.text())\n                )\nE               pyramid.exceptions.PredicateMismatch: predicate mismatch for view <lambda> (containment = tests.test_config.IDummy)\n\nsrc/pyramid/config/views.py:206: PredicateMismatch\n_ TestViewsConfigurationMixin.test_add_view_with_default_permission_no_explicit_permission _\n\nself = <r2e_tests.test_config.test_views.TestViewsConfigurationMixin testMethod=test_add_view_with_default_permission_no_explicit_permission>\n\n    def test_add_view_with_default_permission_no_explicit_permission(self):\n        from pyramid.renderers import null_renderer\n    \n        view1 = lambda *arg: 'OK'\n        outerself = self\n    \n        class DummyPolicy(object):\n            def identify(self, r):\n                outerself.assertEqual(r, request)\n                return 123\n    \n            def permits(self, r, context, identity, permission):\n                outerself.assertEqual(r, request)\n                outerself.assertEqual(context, None)\n                outerself.assertEqual(identity, 123)\n                outerself.assertEqual(permission, 'view')\n                return True\n    \n        policy = DummyPolicy()\n        config = self._makeOne(\n            security_policy=policy, default_permission='view', autocommit=True\n        )\n        config.add_view(view=view1, renderer=null_renderer)\n        view = self._getViewCallable(config)\n        request = self._makeRequest(config)\n>       self.assertEqual(view(None, request), 'OK')\n\nr2e_tests/test_config/test_views.py:2087: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \nsrc/pyramid/viewderivers.py:322: in secured_view\n    result = permitted(context, request)\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\ncontext = None\nrequest = <r2e_tests.test_config.test_views.DummyRequest object at 0x7950e4423f10>\n\n    def permitted(context, request):\n>       return policy.permits(request, context, permission)\nE       TypeError: permits() missing 1 required positional argument: 'permission'\n\nsrc/pyramid/viewderivers.py:319: TypeError\n__________ TestViewsConfigurationMixin.test_add_view_with_permission ___________\n\nself = <r2e_tests.test_config.test_views.TestViewsConfigurationMixin testMethod=test_add_view_with_permission>\n\n    def test_add_view_with_permission(self):\n        from pyramid.renderers import null_renderer\n    \n        view1 = lambda *arg: 'OK'\n        outerself = self\n    \n        class DummyPolicy(object):\n            def identify(self, r):\n                outerself.assertEqual(r, request)\n                return 123\n    \n            def permits(self, r, context, identity, permission):\n                outerself.assertEqual(r, request)\n                outerself.assertEqual(context, None)\n                outerself.assertEqual(identity, 123)\n                outerself.assertEqual(permission, 'view')\n                return True\n    \n        policy = DummyPolicy()\n        config = self._makeOne(security_policy=policy, autocommit=True)\n        config.add_view(view=view1, permission='view', renderer=null_renderer)\n        view = self._getViewCallable(config)\n        request = self._makeRequest(config)\n>       self.assertEqual(view(None, request), 'OK')\n\nr2e_tests/test_config/test_views.py:2060: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \nsrc/pyramid/viewderivers.py:322: in secured_view\n    result = permitted(context, request)\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\ncontext = None\nrequest = <r2e_tests.test_config.test_views.DummyRequest object at 0x7950e3ea16d0>\n\n    def permitted(context, request):\n>       return policy.permits(request, context, permission)\nE       TypeError: permits() missing 1 required positional argument: 'permission'\n\nsrc/pyramid/viewderivers.py:319: TypeError\n_______ TestViewsConfigurationMixin.test_add_view_with_template_renderer _______\n\nself = <r2e_tests.test_config.test_views.TestViewsConfigurationMixin testMethod=test_add_view_with_template_renderer>\n\n    def test_add_view_with_template_renderer(self):\n        from tests import test_config\n        from pyramid.interfaces import ISettings\n    \n        class view(object):\n            def __init__(self, context, request):\n                self.request = request\n                self.context = context\n    \n            def __call__(self):\n                return {'a': '1'}\n    \n        config = self._makeOne(autocommit=True)\n        renderer = self._registerRenderer(config)\n        fixture = 'tests.test_config:files/minimal.txt'\n        config.introspection = False\n        config.add_view(view=view, renderer=fixture)\n        wrapper = self._getViewCallable(config)\n        request = self._makeRequest(config)\n        result = wrapper(None, request)\n        self.assertEqual(result.body, b'Hello!')\n        settings = config.registry.queryUtility(ISettings)\n        result = renderer.info\n        self.assertEqual(result.registry, config.registry)\n        self.assertEqual(result.type, '.txt')\n>       self.assertEqual(result.package, test_config)\nE       AssertionError: <module 'r2e_tests.test_config' from '/home/gcpuse[117 chars].py'> != <module 'tests.test_config' from '/home/gcpuser/bu[109 chars].py'>\n\nr2e_tests/test_config/test_views.py:1490: AssertionError\n_ TestViewsConfigurationMixin.test_add_view_with_template_renderer_no_callable _\n\nself = <r2e_tests.test_config.test_views.TestViewsConfigurationMixin testMethod=test_add_view_with_template_renderer_no_callable>\n\n    def test_add_view_with_template_renderer_no_callable(self):\n        from tests import test_config\n        from pyramid.interfaces import ISettings\n    \n        config = self._makeOne(autocommit=True)\n        renderer = self._registerRenderer(config)\n        fixture = 'tests.test_config:files/minimal.txt'\n        config.introspection = False\n        config.add_view(view=None, renderer=fixture)\n        wrapper = self._getViewCallable(config)\n        request = self._makeRequest(config)\n        result = wrapper(None, request)\n        self.assertEqual(result.body, b'Hello!')\n        settings = config.registry.queryUtility(ISettings)\n        result = renderer.info\n        self.assertEqual(result.registry, config.registry)\n        self.assertEqual(result.type, '.txt')\n>       self.assertEqual(result.package, test_config)\nE       AssertionError: <module 'r2e_tests.test_config' from '/home/gcpuse[117 chars].py'> != <module 'tests.test_config' from '/home/gcpuser/bu[109 chars].py'>\n\nr2e_tests/test_config/test_views.py:1536: AssertionError\n_________ TestViewsConfigurationMixin.test_add_view_with_view_defaults _________\n\nself = <r2e_tests.test_config.test_views.TestViewsConfigurationMixin testMethod=test_add_view_with_view_defaults>\n\n    def test_add_view_with_view_defaults(self):\n        from pyramid.renderers import null_renderer\n        from pyramid.exceptions import PredicateMismatch\n        from zope.interface import directlyProvides\n    \n        class view(object):\n            __view_defaults__ = {'containment': 'tests.test_config.IDummy'}\n    \n            def __init__(self, request):\n                pass\n    \n            def __call__(self):\n                return 'OK'\n    \n        config = self._makeOne(autocommit=True)\n        config.add_view(view=view, renderer=null_renderer)\n        wrapper = self._getViewCallable(config)\n        context = DummyContext()\n        directlyProvides(context, IDummy)\n        request = self._makeRequest(config)\n>       self.assertEqual(wrapper(context, request), 'OK')\n\nr2e_tests/test_config/test_views.py:2148: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \nsrc/pyramid/config/views.py:184: in attr_view\n    return view(context, request)\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\ncontext = <r2e_tests.test_config.test_views.DummyContext object at 0x7950e3cb8220>\nrequest = <r2e_tests.test_config.test_views.DummyRequest object at 0x7950e3fc9df0>\n\n    def predicate_wrapper(context, request):\n        for predicate in preds:\n            if not predicate(context, request):\n                view_name = getattr(view, '__name__', view)\n>               raise PredicateMismatch(\n                    'predicate mismatch for view %s (%s)'\n                    % (view_name, predicate.text())\n                )\nE               pyramid.exceptions.PredicateMismatch: predicate mismatch for view view (containment = tests.test_config.IDummy)\n\nsrc/pyramid/config/views.py:206: PredicateMismatch\n_ TestViewsConfigurationMixin.test_add_view_with_view_defaults_viewname_is_dottedname_kwarg _\n\nself = <r2e_tests.test_config.test_views.TestViewsConfigurationMixin testMethod=test_add_view_with_view_defaults_viewname_is_dottedname_kwarg>\n\n    def test_add_view_with_view_defaults_viewname_is_dottedname_kwarg(self):\n        from pyramid.renderers import null_renderer\n        from pyramid.exceptions import PredicateMismatch\n        from zope.interface import directlyProvides\n    \n        config = self._makeOne(autocommit=True)\n        config.add_view(\n            view='tests.test_config.test_views.DummyViewDefaultsClass',\n            renderer=null_renderer,\n        )\n        wrapper = self._getViewCallable(config)\n        context = DummyContext()\n        directlyProvides(context, IDummy)\n        request = self._makeRequest(config)\n>       self.assertEqual(wrapper(context, request), 'OK')\n\nr2e_tests/test_config/test_views.py:2167: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \nsrc/pyramid/config/views.py:184: in attr_view\n    return view(context, request)\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\ncontext = <r2e_tests.test_config.test_views.DummyContext object at 0x7950e4777a60>\nrequest = <r2e_tests.test_config.test_views.DummyRequest object at 0x7950e36a6070>\n\n    def predicate_wrapper(context, request):\n        for predicate in preds:\n            if not predicate(context, request):\n                view_name = getattr(view, '__name__', view)\n>               raise PredicateMismatch(\n                    'predicate mismatch for view %s (%s)'\n                    % (view_name, predicate.text())\n                )\nE               pyramid.exceptions.PredicateMismatch: predicate mismatch for view DummyViewDefaultsClass (containment = tests.test_config.IDummy)\n\nsrc/pyramid/config/views.py:206: PredicateMismatch\n_ TestViewsConfigurationMixin.test_add_view_with_view_defaults_viewname_is_dottedname_nonkwarg _\n\nself = <r2e_tests.test_config.test_views.TestViewsConfigurationMixin testMethod=test_add_view_with_view_defaults_viewname_is_dottedname_nonkwarg>\n\n    def test_add_view_with_view_defaults_viewname_is_dottedname_nonkwarg(self):\n        from pyramid.renderers import null_renderer\n        from pyramid.exceptions import PredicateMismatch\n        from zope.interface import directlyProvides\n    \n        config = self._makeOne(autocommit=True)\n        config.add_view(\n            'tests.test_config.test_views.DummyViewDefaultsClass',\n            renderer=null_renderer,\n        )\n        wrapper = self._getViewCallable(config)\n        context = DummyContext()\n        directlyProvides(context, IDummy)\n        request = self._makeRequest(config)\n>       self.assertEqual(wrapper(context, request), 'OK')\n\nr2e_tests/test_config/test_views.py:2186: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \nsrc/pyramid/config/views.py:184: in attr_view\n    return view(context, request)\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\ncontext = <r2e_tests.test_config.test_views.DummyContext object at 0x7950e40bc9d0>\nrequest = <r2e_tests.test_config.test_views.DummyRequest object at 0x7950e3e482e0>\n\n    def predicate_wrapper(context, request):\n        for predicate in preds:\n            if not predicate(context, request):\n                view_name = getattr(view, '__name__', view)\n>               raise PredicateMismatch(\n                    'predicate mismatch for view %s (%s)'\n                    % (view_name, predicate.text())\n                )\nE               pyramid.exceptions.PredicateMismatch: predicate mismatch for view DummyViewDefaultsClass (containment = tests.test_config.IDummy)\n\nsrc/pyramid/config/views.py:206: PredicateMismatch\n_________ TestStaticURLInfo.test_generate_url_cachebust_with_overrides _________\n\nself = <r2e_tests.test_config.test_views.TestStaticURLInfo testMethod=test_generate_url_cachebust_with_overrides>\n\n    def test_generate_url_cachebust_with_overrides(self):\n        config = testing.setUp()\n        try:\n            request = testing.DummyRequest()\n            config.add_static_view('static', 'path')\n            config.override_asset(\n                'tests.test_config:path/', 'tests.test_config:other_path/'\n            )\n    \n            def cb(val):\n                def cb_(request, subpath, kw):\n                    kw['_query'] = {'x': val}\n                    return subpath, kw\n    \n                return cb_\n    \n            config.add_cache_buster('path', cb('foo'))\n            result = request.static_url('path/foo.png')\n            self.assertEqual(result, 'http://example.com/static/foo.png?x=foo')\n            config.add_cache_buster('other_path', cb('bar'), explicit=True)\n            result = request.static_url('path/foo.png')\n>           self.assertEqual(result, 'http://example.com/static/foo.png?x=bar')\nE           AssertionError: 'http://example.com/static/foo.png?x=foo' != 'http://example.com/static/foo.png?x=bar'\nE           - http://example.com/static/foo.png?x=foo\nE           ?                                     ^^^\nE           + http://example.com/static/foo.png?x=bar\nE           ?                                     ^^^\n\nr2e_tests/test_config/test_views.py:3951: AssertionError\n___________________ Test_view_description.test_without_text ____________________\n\nself = <r2e_tests.test_config.test_views.Test_view_description testMethod=test_without_text>\n\n    def test_without_text(self):\n        def view():  # pragma: no cover\n            pass\n    \n        result = self._callFUT(view)\n>       self.assertEqual(result, 'function tests.test_config.test_views.view')\nE       AssertionError: 'function r2e_tests.test_config.test_views.view' != 'function tests.test_config.test_views.view'\nE       - function r2e_tests.test_config.test_views.view\nE       ?          ----\nE       + function tests.test_config.test_views.view\n\nr2e_tests/test_config/test_views.py:4155: AssertionError\n______________________ TestPRoutesCommand.test_class_view ______________________\n\nself = <r2e_tests.test_scripts.test_proutes.TestPRoutesCommand testMethod=test_class_view>\n\n    def test_class_view(self):\n        from pyramid.renderers import null_renderer as nr\n    \n        config = self._makeConfig(autocommit=True)\n        config.add_route('foo', '/a/b')\n        config.add_view(\n            route_name='foo',\n            view=dummy.DummyView,\n            attr='view',\n            renderer=nr,\n            request_method='POST',\n        )\n    \n        command = self._makeOne()\n        L = []\n        command.out = L.append\n        command.bootstrap = dummy.DummyBootstrap(registry=config.registry)\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(len(L), 3)\n        compare_to = L[-1].split()\n        expected = [\n            'foo',\n            '/a/b',\n            'tests.test_scripts.dummy.DummyView.view',\n            'POST',\n        ]\n>       self.assertEqual(compare_to, expected)\nE       AssertionError: Lists differ: ['foo', '/a/b', 'r2e_tests.test_scripts.dummy.DummyView.view', 'POST'] != ['foo', '/a/b', 'tests.test_scripts.dummy.DummyView.view', 'POST']\nE       \nE       First differing element 2:\nE       'r2e_tests.test_scripts.dummy.DummyView.view'\nE       'tests.test_scripts.dummy.DummyView.view'\nE       \nE       - ['foo', '/a/b', 'r2e_tests.test_scripts.dummy.DummyView.view', 'POST']\nE       ?                  ----\nE       \nE       + ['foo', '/a/b', 'tests.test_scripts.dummy.DummyView.view', 'POST']\n\nr2e_tests/test_scripts/test_proutes.py:247: AssertionError\n_________ TestPRoutesCommand.test_one_route_all_methods_view_only_post _________\n\nself = <r2e_tests.test_scripts.test_proutes.TestPRoutesCommand testMethod=test_one_route_all_methods_view_only_post>\n\n    def test_one_route_all_methods_view_only_post(self):\n        from pyramid.renderers import null_renderer as nr\n    \n        def view1(context, request):  # pragma: no cover\n            return 'view1'\n    \n        config = self._makeConfig(autocommit=True)\n        config.add_route('foo', '/a/b')\n        config.add_view(\n            route_name='foo', view=view1, renderer=nr, request_method='POST'\n        )\n    \n        command = self._makeOne()\n        L = []\n        command.out = L.append\n        command.bootstrap = dummy.DummyBootstrap(registry=config.registry)\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(len(L), 3)\n        compare_to = L[-1].split()\n        expected = [\n            'foo',\n            '/a/b',\n            'tests.test_scripts.test_proutes.view1',\n            'POST',\n        ]\n>       self.assertEqual(compare_to, expected)\nE       AssertionError: Lists differ: ['foo', '/a/b', 'r2e_tests.test_scripts.test_proutes.view1', 'POST'] != ['foo', '/a/b', 'tests.test_scripts.test_proutes.view1', 'POST']\nE       \nE       First differing element 2:\nE       'r2e_tests.test_scripts.test_proutes.view1'\nE       'tests.test_scripts.test_proutes.view1'\nE       \nE       - ['foo', '/a/b', 'r2e_tests.test_scripts.test_proutes.view1', 'POST']\nE       ?                  ----\nE       \nE       + ['foo', '/a/b', 'tests.test_scripts.test_proutes.view1', 'POST']\n\nr2e_tests/test_scripts/test_proutes.py:360: AssertionError\n_________ TestPRoutesCommand.test_one_route_only_post_view_all_methods _________\n\nself = <r2e_tests.test_scripts.test_proutes.TestPRoutesCommand testMethod=test_one_route_only_post_view_all_methods>\n\n    def test_one_route_only_post_view_all_methods(self):\n        from pyramid.renderers import null_renderer as nr\n    \n        def view1(context, request):  # pragma: no cover\n            return 'view1'\n    \n        config = self._makeConfig(autocommit=True)\n        config.add_route('foo', '/a/b', request_method='POST')\n        config.add_view(route_name='foo', view=view1, renderer=nr)\n    \n        command = self._makeOne()\n        L = []\n        command.out = L.append\n        command.bootstrap = dummy.DummyBootstrap(registry=config.registry)\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(len(L), 3)\n        compare_to = L[-1].split()\n        expected = [\n            'foo',\n            '/a/b',\n            'tests.test_scripts.test_proutes.view1',\n            'POST',\n        ]\n>       self.assertEqual(compare_to, expected)\nE       AssertionError: Lists differ: ['foo', '/a/b', 'r2e_tests.test_scripts.test_proutes.view1', 'POST'] != ['foo', '/a/b', 'tests.test_scripts.test_proutes.view1', 'POST']\nE       \nE       First differing element 2:\nE       'r2e_tests.test_scripts.test_proutes.view1'\nE       'tests.test_scripts.test_proutes.view1'\nE       \nE       - ['foo', '/a/b', 'r2e_tests.test_scripts.test_proutes.view1', 'POST']\nE       ?                  ----\nE       \nE       + ['foo', '/a/b', 'tests.test_scripts.test_proutes.view1', 'POST']\n\nr2e_tests/test_scripts/test_proutes.py:386: AssertionError\n________ TestPRoutesCommand.test_one_route_only_post_view_post_and_get _________\n\nself = <r2e_tests.test_scripts.test_proutes.TestPRoutesCommand testMethod=test_one_route_only_post_view_post_and_get>\n\n    def test_one_route_only_post_view_post_and_get(self):\n        from pyramid.renderers import null_renderer as nr\n    \n        def view1(context, request):  # pragma: no cover\n            return 'view1'\n    \n        config = self._makeConfig(autocommit=True)\n        config.add_route('foo', '/a/b', request_method='POST')\n        config.add_view(\n            route_name='foo',\n            view=view1,\n            renderer=nr,\n            request_method=('POST', 'GET'),\n        )\n    \n        command = self._makeOne()\n        L = []\n        command.out = L.append\n        command.bootstrap = dummy.DummyBootstrap(registry=config.registry)\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(len(L), 3)\n        compare_to = L[-1].split()\n        expected = [\n            'foo',\n            '/a/b',\n            'tests.test_scripts.test_proutes.view1',\n            'POST',\n        ]\n>       self.assertEqual(compare_to, expected)\nE       AssertionError: Lists differ: ['foo', '/a/b', 'r2e_tests.test_scripts.test_proutes.view1', 'POST'] != ['foo', '/a/b', 'tests.test_scripts.test_proutes.view1', 'POST']\nE       \nE       First differing element 2:\nE       'r2e_tests.test_scripts.test_proutes.view1'\nE       'tests.test_scripts.test_proutes.view1'\nE       \nE       - ['foo', '/a/b', 'r2e_tests.test_scripts.test_proutes.view1', 'POST']\nE       ?                  ----\nE       \nE       + ['foo', '/a/b', 'tests.test_scripts.test_proutes.view1', 'POST']\n\nr2e_tests/test_scripts/test_proutes.py:417: AssertionError\n_____ TestPRoutesCommand.test_one_route_with_long_name_one_view_registered _____\n\nself = <r2e_tests.test_scripts.test_proutes.TestPRoutesCommand testMethod=test_one_route_with_long_name_one_view_registered>\n\n    def test_one_route_with_long_name_one_view_registered(self):\n        from zope.interface import Interface\n        from pyramid.interfaces import IRouteRequest\n        from pyramid.interfaces import IViewClassifier\n        from pyramid.interfaces import IView\n    \n        registry = self._makeRegistry()\n    \n        def view():  # pragma: no cover\n            pass\n    \n        class IMyRoute(Interface):\n            pass\n    \n        registry.registerAdapter(\n            view, (IViewClassifier, IMyRoute, Interface), IView, ''\n        )\n    \n        registry.registerUtility(\n            IMyRoute, IRouteRequest, name='very_long_name_123'\n        )\n    \n        command = self._makeOne()\n        route = dummy.DummyRoute(\n            'very_long_name_123', '/and_very_long_pattern_as_well'\n        )\n        mapper = dummy.DummyMapper(route)\n        command._get_mapper = lambda *arg: mapper\n        L = []\n        command.out = L.append\n        command.bootstrap = dummy.DummyBootstrap(registry=registry)\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(len(L), 3)\n        compare_to = L[-1].split()[:3]\n>       self.assertEqual(\n            compare_to,\n            [\n                'very_long_name_123',\n                '/and_very_long_pattern_as_well',\n                'tests.test_scripts.test_proutes.view',\n            ],\n        )\nE       AssertionError: Lists differ: ['ver[32 chars]g_pattern_as_well', 'r2e_tests.test_scripts.test_proutes.view'] != ['ver[32 chars]g_pattern_as_well', 'tests.test_scripts.test_proutes.view']\nE       \nE       First differing element 2:\nE       'r2e_tests.test_scripts.test_proutes.view'\nE       'tests.test_scripts.test_proutes.view'\nE       \nE         ['very_long_name_123',\nE          '/and_very_long_pattern_as_well',\nE       -  'r2e_tests.test_scripts.test_proutes.view']\nE       ?   ----\nE       \nE       +  'tests.test_scripts.test_proutes.view']\n\nr2e_tests/test_scripts/test_proutes.py:211: AssertionError\n______ TestPRoutesCommand.test_route_is_get_view_request_method_not_post _______\n\nself = <r2e_tests.test_scripts.test_proutes.TestPRoutesCommand testMethod=test_route_is_get_view_request_method_not_post>\n\n    def test_route_is_get_view_request_method_not_post(self):\n        from pyramid.renderers import null_renderer as nr\n        from pyramid.config import not_\n    \n        def view1(context, request):  # pragma: no cover\n            return 'view1'\n    \n        config = self._makeConfig(autocommit=True)\n        config.add_route('foo', '/a/b', request_method='GET')\n        config.add_view(\n            route_name='foo',\n            view=view1,\n            renderer=nr,\n            request_method=not_('POST'),\n        )\n    \n        command = self._makeOne()\n        L = []\n        command.out = L.append\n        command.bootstrap = dummy.DummyBootstrap(registry=config.registry)\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(len(L), 3)\n        compare_to = L[-1].split()\n        expected = [\n            'foo',\n            '/a/b',\n            'tests.test_scripts.test_proutes.view1',\n            'GET',\n        ]\n>       self.assertEqual(compare_to, expected)\nE       AssertionError: Lists differ: ['foo', '/a/b', 'r2e_tests.test_scripts.test_proutes.view1', 'GET'] != ['foo', '/a/b', 'tests.test_scripts.test_proutes.view1', 'GET']\nE       \nE       First differing element 2:\nE       'r2e_tests.test_scripts.test_proutes.view1'\nE       'tests.test_scripts.test_proutes.view1'\nE       \nE       - ['foo', '/a/b', 'r2e_tests.test_scripts.test_proutes.view1', 'GET']\nE       ?                  ----\nE       \nE       + ['foo', '/a/b', 'tests.test_scripts.test_proutes.view1', 'GET']\n\nr2e_tests/test_scripts/test_proutes.py:557: AssertionError\n____________ TestPRoutesCommand.test_route_request_method_mismatch _____________\n\nself = <r2e_tests.test_scripts.test_proutes.TestPRoutesCommand testMethod=test_route_request_method_mismatch>\n\n    def test_route_request_method_mismatch(self):\n        from pyramid.renderers import null_renderer as nr\n    \n        def view1(context, request):  # pragma: no cover\n            return 'view1'\n    \n        config = self._makeConfig(autocommit=True)\n        config.add_route('foo', '/a/b', request_method='POST')\n        config.add_view(\n            route_name='foo', view=view1, renderer=nr, request_method='GET'\n        )\n    \n        command = self._makeOne()\n        L = []\n        command.out = L.append\n        command.bootstrap = dummy.DummyBootstrap(registry=config.registry)\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(len(L), 3)\n        compare_to = L[-1].split()\n        expected = [\n            'foo',\n            '/a/b',\n            'tests.test_scripts.test_proutes.view1',\n            '<route',\n            'mismatch>',\n        ]\n>       self.assertEqual(compare_to, expected)\nE       AssertionError: Lists differ: ['foo', '/a/b', 'r2e_tests.test_scripts.test_proutes.view1[20 chars]ch>'] != ['foo', '/a/b', 'tests.test_scripts.test_proutes.view1', '[16 chars]ch>']\nE       \nE       First differing element 2:\nE       'r2e_tests.test_scripts.test_proutes.view1'\nE       'tests.test_scripts.test_proutes.view1'\nE       \nE       + ['foo', '/a/b', 'tests.test_scripts.test_proutes.view1', '<route', 'mismatch>']\nE       - ['foo',\nE       -  '/a/b',\nE       -  'r2e_tests.test_scripts.test_proutes.view1',\nE       -  '<route',\nE       -  'mismatch>']\n\nr2e_tests/test_scripts/test_proutes.py:446: AssertionError\n__________________ TestPRoutesCommand.test_route_static_views __________________\n\nself = <r2e_tests.test_scripts.test_proutes.TestPRoutesCommand testMethod=test_route_static_views>\n\n    def test_route_static_views(self):\n        config = self._makeConfig(autocommit=True)\n        config.add_static_view('static', 'static', cache_max_age=3600)\n        path2 = os.path.normpath('/var/www/static')\n        config.add_static_view(name='static2', path=path2)\n        config.add_static_view(\n            name='pyramid_scaffold',\n            path='pyramid:scaffolds/starter/+package+/static',\n        )\n    \n        command = self._makeOne()\n        L = []\n        command.out = L.append\n        command.bootstrap = dummy.DummyBootstrap(registry=config.registry)\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(len(L), 5)\n    \n        expected = [\n            [\n                '__static/',\n                '/static/*subpath',\n                'tests.test_scripts:static/',\n                '*',\n            ],\n            ['__static2/', '/static2/*subpath', path2 + os.sep, '*'],\n            [\n                '__pyramid_scaffold/',\n                '/pyramid_scaffold/*subpath',\n                'pyramid:scaffolds/starter/+package+/static/',\n                '*',\n            ],\n        ]\n    \n        for index, line in enumerate(L[2:]):\n            data = line.split()\n>           self.assertEqual(data, expected[index])\nE           AssertionError: Lists differ: ['__static/', '/static/*subpath', 'r2e_tests.test_scripts:static/', '*'] != ['__static/', '/static/*subpath', 'tests.test_scripts:static/', '*']\nE           \nE           First differing element 2:\nE           'r2e_tests.test_scripts:static/'\nE           'tests.test_scripts:static/'\nE           \nE           - ['__static/', '/static/*subpath', 'r2e_tests.test_scripts:static/', '*']\nE           ?                                    ----\nE           \nE           + ['__static/', '/static/*subpath', 'tests.test_scripts:static/', '*']\n\nr2e_tests/test_scripts/test_proutes.py:484: AssertionError\n__________ TestPRoutesCommand.test_single_route_multiview_registered ___________\n\nself = <r2e_tests.test_scripts.test_proutes.TestPRoutesCommand testMethod=test_single_route_multiview_registered>\n\n    def test_single_route_multiview_registered(self):\n        from zope.interface import Interface\n        from pyramid.interfaces import IRouteRequest\n        from pyramid.interfaces import IViewClassifier\n        from pyramid.interfaces import IMultiView\n    \n        registry = self._makeRegistry()\n    \n        def view():  # pragma: no cover\n            pass\n    \n        class IMyRoute(Interface):\n            pass\n    \n        multiview1 = dummy.DummyMultiView(\n            view, context='context', view_name='a1'\n        )\n    \n        registry.registerAdapter(\n            multiview1, (IViewClassifier, IMyRoute, Interface), IMultiView, ''\n        )\n        registry.registerUtility(IMyRoute, IRouteRequest, name='a')\n        command = self._makeOne()\n        route = dummy.DummyRoute('a', '/a')\n        mapper = dummy.DummyMapper(route)\n        command._get_mapper = lambda *arg: mapper\n        L = []\n        command.out = L.append\n        command.bootstrap = dummy.DummyBootstrap(registry=registry)\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(len(L), 3)\n        compare_to = L[-1].split()[:3]\n        view_module = 'tests.test_scripts.dummy'\n        view_str = '<tests.test_scripts.dummy.DummyMultiView'\n        final = '%s.%s' % (view_module, view_str)\n    \n>       self.assertEqual(compare_to, ['a', '/a', final])\nE       AssertionError: Lists differ: ['a', '/a', 'r2e_tests.test_scripts.dummy.<r2e_tests.t[29 chars]iew'] != ['a', '/a', 'tests.test_scripts.dummy.<tests.test_scri[21 chars]iew']\nE       \nE       First differing element 2:\nE       'r2e_tests.test_scripts.dummy.<r2e_tests.test_scripts.dummy.DummyMultiView'\nE       'tests.test_scripts.dummy.<tests.test_scripts.dummy.DummyMultiView'\nE       \nE       - ['a',\nE       -  '/a',\nE       -  'r2e_tests.test_scripts.dummy.<r2e_tests.test_scripts.dummy.DummyMultiView']\nE       ? ^ ^^^^                          ----\nE       \nE       + ['a', '/a', 'tests.test_scripts.dummy.<tests.test_scripts.dummy.DummyMultiView']\nE       ? ^ ^^^^^^^^^^^\n\nr2e_tests/test_scripts/test_proutes.py:323: AssertionError\n___________ TestPRoutesCommand.test_single_route_one_view_registered ___________\n\nself = <r2e_tests.test_scripts.test_proutes.TestPRoutesCommand testMethod=test_single_route_one_view_registered>\n\n    def test_single_route_one_view_registered(self):\n        from zope.interface import Interface\n        from pyramid.interfaces import IRouteRequest\n        from pyramid.interfaces import IViewClassifier\n        from pyramid.interfaces import IView\n    \n        registry = self._makeRegistry()\n    \n        def view():  # pragma: no cover\n            pass\n    \n        class IMyRoute(Interface):\n            pass\n    \n        registry.registerAdapter(\n            view, (IViewClassifier, IMyRoute, Interface), IView, ''\n        )\n        registry.registerUtility(IMyRoute, IRouteRequest, name='a')\n        command = self._makeOne()\n        route = dummy.DummyRoute('a', '/a')\n        mapper = dummy.DummyMapper(route)\n        command._get_mapper = lambda *arg: mapper\n        L = []\n        command.out = L.append\n        command.bootstrap = dummy.DummyBootstrap(registry=registry)\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(len(L), 3)\n        compare_to = L[-1].split()[:3]\n>       self.assertEqual(\n            compare_to, ['a', '/a', 'tests.test_scripts.test_proutes.view']\n        )\nE       AssertionError: Lists differ: ['a', '/a', 'r2e_tests.test_scripts.test_proutes.view'] != ['a', '/a', 'tests.test_scripts.test_proutes.view']\nE       \nE       First differing element 2:\nE       'r2e_tests.test_scripts.test_proutes.view'\nE       'tests.test_scripts.test_proutes.view'\nE       \nE       - ['a', '/a', 'r2e_tests.test_scripts.test_proutes.view']\nE       ?              ----\nE       \nE       + ['a', '/a', 'tests.test_scripts.test_proutes.view']\n\nr2e_tests/test_scripts/test_proutes.py:172: AssertionError\n______________________ TestPRoutesCommand.test_view_glob _______________________\n\nself = <r2e_tests.test_scripts.test_proutes.TestPRoutesCommand testMethod=test_view_glob>\n\n    def test_view_glob(self):\n        from pyramid.renderers import null_renderer as nr\n        from pyramid.config import not_\n    \n        def view1(context, request):  # pragma: no cover\n            return 'view1'\n    \n        def view2(context, request):  # pragma: no cover\n            return 'view2'\n    \n        config = self._makeConfig(autocommit=True)\n        config.add_route('foo', '/a/b')\n        config.add_view(\n            route_name='foo',\n            view=view1,\n            renderer=nr,\n            request_method=not_('POST'),\n        )\n    \n        config.add_route('bar', '/b/a')\n        config.add_view(\n            route_name='bar',\n            view=view2,\n            renderer=nr,\n            request_method=not_('POST'),\n        )\n    \n        command = self._makeOne()\n        command.args.glob = '*foo*'\n    \n        L = []\n        command.out = L.append\n        command.bootstrap = dummy.DummyBootstrap(registry=config.registry)\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(len(L), 3)\n        compare_to = L[-1].split()\n        expected = [\n            'foo',\n            '/a/b',\n            'tests.test_scripts.test_proutes.view1',\n            '!POST,*',\n        ]\n>       self.assertEqual(compare_to, expected)\nE       AssertionError: Lists differ: ['foo', '/a/b', 'r2e_tests.test_scripts.test_proutes.view1', '!POST,*'] != ['foo', '/a/b', 'tests.test_scripts.test_proutes.view1', '!POST,*']\nE       \nE       First differing element 2:\nE       'r2e_tests.test_scripts.test_proutes.view1'\nE       'tests.test_scripts.test_proutes.view1'\nE       \nE       - ['foo', '/a/b', 'r2e_tests.test_scripts.test_proutes.view1', '!POST,*']\nE       ?                  ----\nE       \nE       + ['foo', '/a/b', 'tests.test_scripts.test_proutes.view1', '!POST,*']\n\nr2e_tests/test_scripts/test_proutes.py:634: AssertionError\n_____________ TestPRoutesCommand.test_view_request_method_not_post _____________\n\nself = <r2e_tests.test_scripts.test_proutes.TestPRoutesCommand testMethod=test_view_request_method_not_post>\n\n    def test_view_request_method_not_post(self):\n        from pyramid.renderers import null_renderer as nr\n        from pyramid.config import not_\n    \n        def view1(context, request):  # pragma: no cover\n            return 'view1'\n    \n        config = self._makeConfig(autocommit=True)\n        config.add_route('foo', '/a/b')\n        config.add_view(\n            route_name='foo',\n            view=view1,\n            renderer=nr,\n            request_method=not_('POST'),\n        )\n    \n        command = self._makeOne()\n        L = []\n        command.out = L.append\n        command.bootstrap = dummy.DummyBootstrap(registry=config.registry)\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(len(L), 3)\n        compare_to = L[-1].split()\n        expected = [\n            'foo',\n            '/a/b',\n            'tests.test_scripts.test_proutes.view1',\n            '!POST,*',\n        ]\n>       self.assertEqual(compare_to, expected)\nE       AssertionError: Lists differ: ['foo', '/a/b', 'r2e_tests.test_scripts.test_proutes.view1', '!POST,*'] != ['foo', '/a/b', 'tests.test_scripts.test_proutes.view1', '!POST,*']\nE       \nE       First differing element 2:\nE       'r2e_tests.test_scripts.test_proutes.view1'\nE       'tests.test_scripts.test_proutes.view1'\nE       \nE       - ['foo', '/a/b', 'r2e_tests.test_scripts.test_proutes.view1', '!POST,*']\nE       ?                  ----\nE       \nE       + ['foo', '/a/b', 'tests.test_scripts.test_proutes.view1', '!POST,*']\n\nr2e_tests/test_scripts/test_proutes.py:589: AssertionError\n_____________ TestPServeCommand.test_config_file_finds_watch_files _____________\n\nself = <r2e_tests.test_scripts.test_pserve.TestPServeCommand testMethod=test_config_file_finds_watch_files>\n\n    def test_config_file_finds_watch_files(self):\n        inst = self._makeOne('development.ini')\n        loader = self.loader('/base/path.ini')\n        loader.settings = {\n            'pserve': {'watch_files': 'foo\\n/baz\\ntests.test_scripts:*.py'}\n        }\n        inst.pserve_file_config(loader, global_conf={'a': '1'})\n        self.assertEqual(loader.calls[0]['defaults'], {'a': '1'})\n>       self.assertEqual(\n            inst.watch_files,\n            set(\n                [\n                    os.path.abspath('/base/foo'),\n                    os.path.abspath('/baz'),\n                    os.path.abspath(os.path.join(here, '*.py')),\n                ]\n            ),\n        )\nE       AssertionError: Items in the first set but not the second:\nE       '/home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/tests/test_scripts/*.py'\nE       Items in the second set but not the first:\nE       '/home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/r2e_tests/test_scripts/*.py'\n\nr2e_tests/test_scripts/test_pserve.py:90: AssertionError\n____________ TestPViewsCommand.test_views_command_multi_view_nested ____________\n\nself = <r2e_tests.test_scripts.test_pviews.TestPViewsCommand testMethod=test_views_command_multi_view_nested>\n\n    def test_views_command_multi_view_nested(self):\n        from pyramid.registry import Registry\n    \n        registry = Registry()\n        command = self._makeOne(registry=registry)\n        L = []\n        command.out = L.append\n        view1 = dummy.DummyView(context='context', view_name='a1')\n        view1.__name__ = 'view1'\n        view1.__view_attr__ = 'call'\n        multiview1 = dummy.DummyMultiView(\n            view1, context='context', view_name='a1'\n        )\n        multiview2 = dummy.DummyMultiView(\n            multiview1, context='context', view_name='a'\n        )\n        command._find_view = lambda arg1: multiview2\n        command.args.config_uri = '/foo/bar/myapp.ini#myapp'\n        command.args.url = '/a'\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(L[1], 'URL = /a')\n        self.assertEqual(L[3], '    context: context')\n        self.assertEqual(L[4], '    view name: a')\n>       self.assertEqual(L[8], '    tests.test_scripts.dummy.DummyMultiView')\nE       AssertionError: '    r2e_tests.test_scripts.dummy.DummyMultiView' != '    tests.test_scripts.dummy.DummyMultiView'\nE       -     r2e_tests.test_scripts.dummy.DummyMultiView\nE       ?     ----\nE       +     tests.test_scripts.dummy.DummyMultiView\n\nr2e_tests/test_scripts/test_pviews.py:481: AssertionError\n________________ TestPViewsCommand.test_views_command_multiview ________________\n\nself = <r2e_tests.test_scripts.test_pviews.TestPViewsCommand testMethod=test_views_command_multiview>\n\n    def test_views_command_multiview(self):\n        from pyramid.registry import Registry\n    \n        registry = Registry()\n        command = self._makeOne(registry=registry)\n        L = []\n        command.out = L.append\n        view = dummy.DummyView(context='context')\n        view.__name__ = 'view'\n        view.__view_attr__ = 'call'\n        multiview = dummy.DummyMultiView(\n            view, context='context', view_name='a'\n        )\n        command._find_view = lambda arg1: multiview\n        command.args.config_uri = '/foo/bar/myapp.ini#myapp'\n        command.args.url = '/a'\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(L[1], 'URL = /a')\n        self.assertEqual(L[3], '    context: context')\n        self.assertEqual(L[4], '    view name: a')\n>       self.assertEqual(L[8], '    tests.test_scripts.dummy.view.call')\nE       AssertionError: '    r2e_tests.test_scripts.dummy.view.call' != '    tests.test_scripts.dummy.view.call'\nE       -     r2e_tests.test_scripts.dummy.view.call\nE       ?     ----\nE       +     tests.test_scripts.dummy.view.call\n\nr2e_tests/test_scripts/test_pviews.py:537: AssertionError\n________ TestPViewsCommand.test_views_command_multiview_with_permission ________\n\nself = <r2e_tests.test_scripts.test_pviews.TestPViewsCommand testMethod=test_views_command_multiview_with_permission>\n\n    def test_views_command_multiview_with_permission(self):\n        from pyramid.registry import Registry\n    \n        registry = Registry()\n        command = self._makeOne(registry=registry)\n        L = []\n        command.out = L.append\n        view = dummy.DummyView(context='context')\n        view.__name__ = 'view'\n        view.__view_attr__ = 'call'\n        view.__permission__ = 'test'\n        multiview = dummy.DummyMultiView(\n            view, context='context', view_name='a'\n        )\n        command._find_view = lambda arg1: multiview\n        command.args.config_uri = '/foo/bar/myapp.ini#myapp'\n        command.args.url = '/a'\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(L[1], 'URL = /a')\n        self.assertEqual(L[3], '    context: context')\n        self.assertEqual(L[4], '    view name: a')\n>       self.assertEqual(L[8], '    tests.test_scripts.dummy.view.call')\nE       AssertionError: '    r2e_tests.test_scripts.dummy.view.call' != '    tests.test_scripts.dummy.view.call'\nE       -     r2e_tests.test_scripts.dummy.view.call\nE       ?     ----\nE       +     tests.test_scripts.dummy.view.call\n\nr2e_tests/test_scripts/test_pviews.py:561: AssertionError\n________ TestPViewsCommand.test_views_command_multiview_with_predicates ________\n\nself = <r2e_tests.test_scripts.test_pviews.TestPViewsCommand testMethod=test_views_command_multiview_with_predicates>\n\n    def test_views_command_multiview_with_predicates(self):\n        from pyramid.registry import Registry\n    \n        registry = Registry()\n        command = self._makeOne(registry=registry)\n        L = []\n        command.out = L.append\n    \n        def predicate():  # pragma: no cover\n            pass\n    \n        predicate.text = lambda *arg: \"predicate = x\"\n        view = dummy.DummyView(context='context')\n        view.__name__ = 'view'\n        view.__view_attr__ = 'call'\n        view.__predicates__ = [predicate]\n        multiview = dummy.DummyMultiView(\n            view, context='context', view_name='a'\n        )\n        command._find_view = lambda arg1: multiview\n        command.args.config_uri = '/foo/bar/myapp.ini#myapp'\n        command.args.url = '/a'\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(L[1], 'URL = /a')\n        self.assertEqual(L[3], '    context: context')\n        self.assertEqual(L[4], '    view name: a')\n>       self.assertEqual(L[8], '    tests.test_scripts.dummy.view.call')\nE       AssertionError: '    r2e_tests.test_scripts.dummy.view.call' != '    tests.test_scripts.dummy.view.call'\nE       -     r2e_tests.test_scripts.dummy.view.call\nE       ?     ----\nE       +     tests.test_scripts.dummy.view.call\n\nr2e_tests/test_scripts/test_pviews.py:591: AssertionError\n_____ TestPViewsCommand.test_views_command_single_view_function_traversal ______\n\nself = <r2e_tests.test_scripts.test_pviews.TestPViewsCommand testMethod=test_views_command_single_view_function_traversal>\n\n    def test_views_command_single_view_function_traversal(self):\n        from pyramid.registry import Registry\n    \n        registry = Registry()\n        command = self._makeOne(registry=registry)\n        L = []\n        command.out = L.append\n    \n        def view():  # pragma: no cover\n            pass\n    \n        view.__request_attrs__ = {'context': 'context', 'view_name': 'a'}\n        command._find_view = lambda arg1: view\n        command.args.config_uri = '/foo/bar/myapp.ini#myapp'\n        command.args.url = '/a'\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(L[1], 'URL = /a')\n        self.assertEqual(L[3], '    context: context')\n        self.assertEqual(L[4], '    view name: a')\n>       self.assertEqual(L[8], '    tests.test_scripts.test_pviews.view')\nE       AssertionError: '    r2e_tests.test_scripts.test_pviews.view' != '    tests.test_scripts.test_pviews.view'\nE       -     r2e_tests.test_scripts.test_pviews.view\nE       ?     ----\nE       +     tests.test_scripts.test_pviews.view\n\nr2e_tests/test_scripts/test_pviews.py:384: AssertionError\n____________ TestPViewsCommand.test_views_command_single_view_route ____________\n\nself = <r2e_tests.test_scripts.test_pviews.TestPViewsCommand testMethod=test_views_command_single_view_route>\n\n    def test_views_command_single_view_route(self):\n        from pyramid.registry import Registry\n    \n        registry = Registry()\n        command = self._makeOne(registry=registry)\n        L = []\n        command.out = L.append\n        route = dummy.DummyRoute('a', '/a', matchdict={})\n        view = dummy.DummyView(\n            context='context', view_name='a', matched_route=route, subpath=''\n        )\n        command._find_view = lambda arg1: view\n        command.args.config_uri = '/foo/bar/myapp.ini#myapp'\n        command.args.url = '/a'\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(L[1], 'URL = /a')\n        self.assertEqual(L[3], '    context: context')\n        self.assertEqual(L[4], '    view name: a')\n        self.assertEqual(L[6], '    Route:')\n        self.assertEqual(L[8], '    route name: a')\n        self.assertEqual(L[9], '    route pattern: /a')\n        self.assertEqual(L[10], '    route path: /a')\n        self.assertEqual(L[11], '    subpath: ')\n>       self.assertEqual(L[15], '        tests.test_scripts.dummy.DummyView')\nE       AssertionError: '        r2e_tests.test_scripts.dummy.DummyView' != '        tests.test_scripts.dummy.DummyView'\nE       -         r2e_tests.test_scripts.dummy.DummyView\nE       ?         ----\nE       +         tests.test_scripts.dummy.DummyView\n\nr2e_tests/test_scripts/test_pviews.py:455: AssertionError\n_ TestPViewsCommand.test_views_command_single_view_route_with_route_predicates _\n\nself = <r2e_tests.test_scripts.test_pviews.TestPViewsCommand testMethod=test_views_command_single_view_route_with_route_predicates>\n\n    def test_views_command_single_view_route_with_route_predicates(self):\n        from pyramid.registry import Registry\n    \n        registry = Registry()\n        command = self._makeOne(registry=registry)\n        L = []\n        command.out = L.append\n    \n        def predicate():  # pragma: no cover\n            pass\n    \n        predicate.text = lambda *arg: \"predicate = x\"\n        route = dummy.DummyRoute('a', '/a', matchdict={}, predicate=predicate)\n        view = dummy.DummyView(\n            context='context', view_name='a', matched_route=route, subpath=''\n        )\n        command._find_view = lambda arg1: view\n        command.args.config_uri = '/foo/bar/myapp.ini#myapp'\n        command.args.url = '/a'\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(L[1], 'URL = /a')\n        self.assertEqual(L[3], '    context: context')\n        self.assertEqual(L[4], '    view name: a')\n        self.assertEqual(L[6], '    Route:')\n        self.assertEqual(L[8], '    route name: a')\n        self.assertEqual(L[9], '    route pattern: /a')\n        self.assertEqual(L[10], '    route path: /a')\n        self.assertEqual(L[11], '    subpath: ')\n        self.assertEqual(L[12], '    route predicates (predicate = x)')\n>       self.assertEqual(L[16], '        tests.test_scripts.dummy.DummyView')\nE       AssertionError: '        r2e_tests.test_scripts.dummy.DummyView' != '        tests.test_scripts.dummy.DummyView'\nE       -         r2e_tests.test_scripts.dummy.DummyView\nE       ?         ----\nE       +         tests.test_scripts.dummy.DummyView\n\nr2e_tests/test_scripts/test_pviews.py:514: AssertionError\n__________ TestPViewsCommand.test_views_command_single_view_traversal __________\n\nself = <r2e_tests.test_scripts.test_pviews.TestPViewsCommand testMethod=test_views_command_single_view_traversal>\n\n    def test_views_command_single_view_traversal(self):\n        from pyramid.registry import Registry\n    \n        registry = Registry()\n        command = self._makeOne(registry=registry)\n        L = []\n        command.out = L.append\n        view = dummy.DummyView(context='context', view_name='a')\n        command._find_view = lambda arg1: view\n        command.args.config_uri = '/foo/bar/myapp.ini#myapp'\n        command.args.url = '/a'\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(L[1], 'URL = /a')\n        self.assertEqual(L[3], '    context: context')\n        self.assertEqual(L[4], '    view name: a')\n>       self.assertEqual(L[8], '    tests.test_scripts.dummy.DummyView')\nE       AssertionError: '    r2e_tests.test_scripts.dummy.DummyView' != '    tests.test_scripts.dummy.DummyView'\nE       -     r2e_tests.test_scripts.dummy.DummyView\nE       ?     ----\nE       +     tests.test_scripts.dummy.DummyView\n\nr2e_tests/test_scripts/test_pviews.py:362: AssertionError\n__ TestPViewsCommand.test_views_command_single_view_traversal_with_permission __\n\nself = <r2e_tests.test_scripts.test_pviews.TestPViewsCommand testMethod=test_views_command_single_view_traversal_with_permission>\n\n    def test_views_command_single_view_traversal_with_permission(self):\n        from pyramid.registry import Registry\n    \n        registry = Registry()\n        command = self._makeOne(registry=registry)\n        L = []\n        command.out = L.append\n        view = dummy.DummyView(context='context', view_name='a')\n        view.__permission__ = 'test'\n        command._find_view = lambda arg1: view\n        command.args.config_uri = '/foo/bar/myapp.ini#myapp'\n        command.args.url = '/a'\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(L[1], 'URL = /a')\n        self.assertEqual(L[3], '    context: context')\n        self.assertEqual(L[4], '    view name: a')\n>       self.assertEqual(L[8], '    tests.test_scripts.dummy.DummyView')\nE       AssertionError: '    r2e_tests.test_scripts.dummy.DummyView' != '    tests.test_scripts.dummy.DummyView'\nE       -     r2e_tests.test_scripts.dummy.DummyView\nE       ?     ----\nE       +     tests.test_scripts.dummy.DummyView\n\nr2e_tests/test_scripts/test_pviews.py:403: AssertionError\n__ TestPViewsCommand.test_views_command_single_view_traversal_with_predicates __\n\nself = <r2e_tests.test_scripts.test_pviews.TestPViewsCommand testMethod=test_views_command_single_view_traversal_with_predicates>\n\n    def test_views_command_single_view_traversal_with_predicates(self):\n        from pyramid.registry import Registry\n    \n        registry = Registry()\n        command = self._makeOne(registry=registry)\n        L = []\n        command.out = L.append\n    \n        def predicate():  # pragma: no cover\n            pass\n    \n        predicate.text = lambda *arg: \"predicate = x\"\n        view = dummy.DummyView(context='context', view_name='a')\n        view.__predicates__ = [predicate]\n        command._find_view = lambda arg1: view\n        command.args.config_uri = '/foo/bar/myapp.ini#myapp'\n        command.args.url = '/a'\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(L[1], 'URL = /a')\n        self.assertEqual(L[3], '    context: context')\n        self.assertEqual(L[4], '    view name: a')\n>       self.assertEqual(L[8], '    tests.test_scripts.dummy.DummyView')\nE       AssertionError: '    r2e_tests.test_scripts.dummy.DummyView' != '    tests.test_scripts.dummy.DummyView'\nE       -     r2e_tests.test_scripts.dummy.DummyView\nE       ?     ----\nE       +     tests.test_scripts.dummy.DummyView\n\nr2e_tests/test_scripts/test_pviews.py:428: AssertionError\n==================================== PASSES ====================================\n=========================== short test summary info ============================\nPASSED r2e_tests/test_1.py::TestAllPermissionsList::test_contains_w_object\nPASSED r2e_tests/test_1.py::TestAllPermissionsList::test_contains_w_string\nPASSED r2e_tests/test_1.py::TestAllPermissionsList::test_equality_miss\nPASSED r2e_tests/test_1.py::TestAllPermissionsList::test_equality_w_other_instances_of_class\nPASSED r2e_tests/test_1.py::TestAllPermissionsList::test_equality_w_self\nPASSED r2e_tests/test_1.py::TestAllPermissionsList::test_iterable\nPASSED r2e_tests/test_1.py::TestAllPermissionsList::test_singleton\nPASSED r2e_tests/test_1.py::TestAllowed::test_it\nPASSED r2e_tests/test_1.py::TestDenied::test_it\nPASSED r2e_tests/test_1.py::TestACLAllowed::test_it\nPASSED r2e_tests/test_1.py::TestACLDenied::test_it\nPASSED r2e_tests/test_1.py::TestPrincipalsAllowedByPermission::test_no_authorization_policy\nPASSED r2e_tests/test_1.py::TestRemember::test_no_security_policy\nPASSED r2e_tests/test_1.py::TestRemember::test_with_missing_arg\nPASSED r2e_tests/test_1.py::TestRemember::test_with_security_policy\nPASSED r2e_tests/test_1.py::TestForget::test_no_security_policy\nPASSED r2e_tests/test_1.py::TestForget::test_with_security_policy\nPASSED r2e_tests/test_1.py::TestViewExecutionPermitted::test_no_permission\nPASSED r2e_tests/test_1.py::TestViewExecutionPermitted::test_no_view_registered\nPASSED r2e_tests/test_1.py::TestViewExecutionPermitted::test_with_permission\nPASSED r2e_tests/test_1.py::TestAuthenticatedIdentity::test_identity\nPASSED r2e_tests/test_1.py::TestAuthenticatedIdentity::test_identity_no_security_policy\nPASSED r2e_tests/test_1.py::TestAuthenticatedUserId::test_no_authentication_policy\nPASSED r2e_tests/test_1.py::TestAuthenticatedUserId::test_with_authentication_policy\nPASSED r2e_tests/test_1.py::TestAuthenticatedUserId::test_with_security_policy\nPASSED r2e_tests/test_1.py::TestUnAuthenticatedUserId::test_no_authentication_policy\nPASSED r2e_tests/test_1.py::TestUnAuthenticatedUserId::test_with_authentication_policy\nPASSED r2e_tests/test_1.py::TestUnAuthenticatedUserId::test_with_security_policy\nPASSED r2e_tests/test_1.py::TestEffectivePrincipals::test_no_authentication_policy\nPASSED r2e_tests/test_1.py::TestEffectivePrincipals::test_with_authentication_policy\nPASSED r2e_tests/test_1.py::TestHasPermission::test_no_security_policy\nPASSED r2e_tests/test_1.py::TestHasPermission::test_with_no_context_passed\nPASSED r2e_tests/test_1.py::TestHasPermission::test_with_no_context_passed_or_on_request\nPASSED r2e_tests/test_1.py::TestHasPermission::test_with_security_registered\nPASSED r2e_tests/test_1.py::TestLegacySecurityPolicy::test_forget\nPASSED r2e_tests/test_1.py::TestLegacySecurityPolicy::test_forget_with_kwargs\nPASSED r2e_tests/test_1.py::TestLegacySecurityPolicy::test_identity\nPASSED r2e_tests/test_1.py::TestLegacySecurityPolicy::test_permits\nPASSED r2e_tests/test_1.py::TestLegacySecurityPolicy::test_remember\nPASSED r2e_tests/test_config/test_actions.py::ActionConfiguratorMixinTests::test_action_autocommit_with_introspectables\nPASSED r2e_tests/test_config/test_actions.py::ActionConfiguratorMixinTests::test_action_autocommit_with_introspectables_introspection_off\nPASSED r2e_tests/test_config/test_actions.py::ActionConfiguratorMixinTests::test_action_branching_kw_is_None\nPASSED r2e_tests/test_config/test_actions.py::ActionConfiguratorMixinTests::test_action_branching_kw_is_not_None\nPASSED r2e_tests/test_config/test_actions.py::ActionConfiguratorMixinTests::test_action_branching_nonautocommit_with_config_info\nPASSED r2e_tests/test_config/test_actions.py::ActionConfiguratorMixinTests::test_action_branching_nonautocommit_with_introspectables\nPASSED r2e_tests/test_config/test_actions.py::ActionConfiguratorMixinTests::test_action_branching_nonautocommit_without_config_info\nPASSED r2e_tests/test_config/test_actions.py::ActionConfiguratorMixinTests::test_action_nonautocommit_with_introspectables_introspection_off\nPASSED r2e_tests/test_config/test_actions.py::ActionConfiguratorMixinTests::test_autocommit_no_conflicts\nPASSED r2e_tests/test_config/test_actions.py::ActionConfiguratorMixinTests::test_commit_conflict_resolved_with_include\nPASSED r2e_tests/test_config/test_actions.py::ActionConfiguratorMixinTests::test_commit_conflict_resolved_with_two_includes_and_local\nPASSED r2e_tests/test_config/test_actions.py::ActionConfiguratorMixinTests::test_commit_conflict_simple\nPASSED r2e_tests/test_config/test_actions.py::ActionConfiguratorMixinTests::test_commit_conflict_with_two_includes\nPASSED r2e_tests/test_config/test_actions.py::ActionConfiguratorMixinTests::test_conflict_set_forbidden_view\nPASSED r2e_tests/test_config/test_actions.py::ActionConfiguratorMixinTests::test_conflict_set_notfound_view\nPASSED r2e_tests/test_config/test_actions.py::TestActionState::test_action_simple\nPASSED r2e_tests/test_config/test_actions.py::TestActionState::test_action_with_includepath\nPASSED r2e_tests/test_config/test_actions.py::TestActionState::test_action_with_includepath_and_info\nPASSED r2e_tests/test_config/test_actions.py::TestActionState::test_action_with_info\nPASSED r2e_tests/test_config/test_actions.py::TestActionState::test_action_with_introspectables\nPASSED r2e_tests/test_config/test_actions.py::TestActionState::test_action_with_order\nPASSED r2e_tests/test_config/test_actions.py::TestActionState::test_execute_actions_dicts\nPASSED r2e_tests/test_config/test_actions.py::TestActionState::test_execute_actions_error\nPASSED r2e_tests/test_config/test_actions.py::TestActionState::test_execute_actions_tuples\nPASSED r2e_tests/test_config/test_actions.py::TestActionState::test_execute_actions_with_introspectable_no_callable\nPASSED r2e_tests/test_config/test_actions.py::TestActionState::test_execute_actions_with_introspectables\nPASSED r2e_tests/test_config/test_actions.py::TestActionState::test_executing_conflicting_action_across_orders\nPASSED r2e_tests/test_config/test_actions.py::TestActionState::test_executing_conflicting_action_across_reentrant_orders\nPASSED r2e_tests/test_config/test_actions.py::TestActionState::test_it\nPASSED r2e_tests/test_config/test_actions.py::TestActionState::test_processSpec\nPASSED r2e_tests/test_config/test_actions.py::TestActionState::test_reentrant_action\nPASSED r2e_tests/test_config/test_actions.py::TestActionState::test_reentrant_action_error\nPASSED r2e_tests/test_config/test_actions.py::TestActionState::test_reentrant_action_with_deferred_discriminator\nPASSED r2e_tests/test_config/test_actions.py::TestActionState::test_reentrant_action_without_clear\nPASSED r2e_tests/test_config/test_actions.py::Test_reentrant_action_functional::test_deferred_discriminator\nPASSED r2e_tests/test_config/test_actions.py::Test_reentrant_action_functional::test_functional\nPASSED r2e_tests/test_config/test_actions.py::Test_resolveConflicts::test_conflicts_across_orders\nPASSED r2e_tests/test_config/test_actions.py::Test_resolveConflicts::test_it_conflict\nPASSED r2e_tests/test_config/test_actions.py::Test_resolveConflicts::test_it_success_dicts\nPASSED r2e_tests/test_config/test_actions.py::Test_resolveConflicts::test_it_success_tuples\nPASSED r2e_tests/test_config/test_actions.py::Test_resolveConflicts::test_it_with_actions_grouped_by_order\nPASSED r2e_tests/test_config/test_actions.py::Test_resolveConflicts::test_override_success_across_orders\nPASSED r2e_tests/test_config/test_actions.py::TestActionInfo::test___str__\nPASSED r2e_tests/test_config/test_actions.py::TestActionInfo::test_class_conforms\nPASSED r2e_tests/test_config/test_actions.py::TestActionInfo::test_ctor\nPASSED r2e_tests/test_config/test_actions.py::TestActionInfo::test_instance_conforms\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_object_event_subscriber\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_resource_url_default_resource_iface_means_Interface\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_resource_url_nodefault_resource_iface\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_response_adapter\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_response_adapter_dottednames\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_response_adapter_self\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_subscriber_defaults\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_subscriber_dottednames\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_subscriber_iface_specified\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_subscriber_predicate\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_subscriber_with_default_type_predicates_False\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_subscriber_with_default_type_predicates_True\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_subscriber_with_specific_type_and_predicates_False\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_subscriber_with_specific_type_and_predicates_True\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_traverser_default_iface_means_Interface\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_traverser_introspectables\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_traverser_nondefault_iface\nPASSED r2e_tests/test_config/test_adapters.py::Test_eventonly::test_defaults\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test__override_already_registered\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test__override_not_yet_registered\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_directory_with_absdirectory\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_directory_with_absfile\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_directory_with_file\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_file_with_absdirectory\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_file_with_absfile\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_file_with_directory\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_file_with_missing_abspath\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_file_with_package\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_package_with_absdirectory\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_samename\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_get_resource_filename_override_returns_value\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_get_resource_stream_no_overrides\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_get_resource_stream_override_returns_None\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_get_resource_stream_override_returns_value\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_get_resource_string_no_overrides\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_get_resource_string_override_returns_None\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_get_resource_string_override_returns_value\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_has_resource_no_overrides\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_has_resource_override_returns_None\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_has_resource_override_returns_True\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_resource_isdir_no_overrides\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_resource_isdir_override_returns_False\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_resource_isdir_override_returns_None\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_resource_listdir_no_overrides\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_resource_listdir_override_returns_None\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_resource_listdir_override_returns_values\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_class_conforms_to_IPEP302Loader\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_class_conforms_to_IPackageOverrides\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_ctor_package_already_has_loader_of_different_type\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_ctor_package_already_has_loader_of_same_type\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_ctor_registers_loader_type\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_ctor_sets_loader\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_ctor_sets_local_state\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_filtered_sources\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_get_code_pkg_has___loader__\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_get_code_pkg_has_no___loader__\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_get_data_pkg_has___loader__\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_get_data_pkg_has_no___loader__\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_get_filename\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_get_filename_file_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_get_source_pkg_has___loader__\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_get_source_pkg_has_no___loader__\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_get_stream\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_get_stream_file_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_get_string\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_get_string_file_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_has_resource\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_has_resource_file_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_insert_directory\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_insert_emptystring\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_insert_file\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_instance_conforms_to_IPEP302Loader\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_instance_conforms_to_IPackageOverrides\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_is_package_pkg_has___loader__\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_is_package_pkg_has_no___loader__\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_isdir_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_isdir_false\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_isdir_true\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_listdir\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_listdir_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestPackageAssetSource::test_exists\nPASSED r2e_tests/test_config/test_assets.py::TestPackageAssetSource::test_exists_file_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestPackageAssetSource::test_exists_with_prefix\nPASSED r2e_tests/test_config/test_assets.py::TestPackageAssetSource::test_get_filename_file_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestPackageAssetSource::test_get_stream\nPASSED r2e_tests/test_config/test_assets.py::TestPackageAssetSource::test_get_stream_file_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestPackageAssetSource::test_get_stream_with_prefix\nPASSED r2e_tests/test_config/test_assets.py::TestPackageAssetSource::test_get_string\nPASSED r2e_tests/test_config/test_assets.py::TestPackageAssetSource::test_get_string_file_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestPackageAssetSource::test_get_string_with_prefix\nPASSED r2e_tests/test_config/test_assets.py::TestPackageAssetSource::test_isdir_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestPackageAssetSource::test_isdir_false\nPASSED r2e_tests/test_config/test_assets.py::TestPackageAssetSource::test_isdir_true\nPASSED r2e_tests/test_config/test_assets.py::TestPackageAssetSource::test_listdir\nPASSED r2e_tests/test_config/test_assets.py::TestPackageAssetSource::test_listdir_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestFSAssetSource::test_exists\nPASSED r2e_tests/test_config/test_assets.py::TestFSAssetSource::test_exists_file_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestFSAssetSource::test_exists_with_prefix\nPASSED r2e_tests/test_config/test_assets.py::TestFSAssetSource::test_get_filename\nPASSED r2e_tests/test_config/test_assets.py::TestFSAssetSource::test_get_filename_file_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestFSAssetSource::test_get_filename_with_prefix\nPASSED r2e_tests/test_config/test_assets.py::TestFSAssetSource::test_get_stream\nPASSED r2e_tests/test_config/test_assets.py::TestFSAssetSource::test_get_stream_file_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestFSAssetSource::test_get_stream_with_prefix\nPASSED r2e_tests/test_config/test_assets.py::TestFSAssetSource::test_get_string\nPASSED r2e_tests/test_config/test_assets.py::TestFSAssetSource::test_get_string_file_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestFSAssetSource::test_get_string_with_prefix\nPASSED r2e_tests/test_config/test_assets.py::TestFSAssetSource::test_isdir_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestFSAssetSource::test_isdir_false\nPASSED r2e_tests/test_config/test_assets.py::TestFSAssetSource::test_isdir_true\nPASSED r2e_tests/test_config/test_assets.py::TestFSAssetSource::test_listdir\nPASSED r2e_tests/test_config/test_assets.py::TestFSAssetSource::test_listdir_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestDirectoryOverride::test_it_match\nPASSED r2e_tests/test_config/test_assets.py::TestDirectoryOverride::test_it_no_match\nPASSED r2e_tests/test_config/test_assets.py::TestFileOverride::test_it_match\nPASSED r2e_tests/test_config/test_assets.py::TestFileOverride::test_it_no_match\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_add_request_method_with_None_callable\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_add_request_method_with_None_callable_and_no_name\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_add_request_method_with_None_callable_conflict\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_add_request_method_with_callable\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_add_request_method_with_text_name\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_add_request_method_with_unnamed_callable\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_execution_policy\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_execution_policy_to_None\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_multiple_request_methods_conflict\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_request_factory\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_response_factory\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_root_factory\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_root_factory_as_None\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_session_factory\nPASSED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_add_translation_dirs_invalid_kwargs\nPASSED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_add_translation_dirs_missing_dir\nPASSED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_add_translation_dirs_no_specs\nPASSED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_set_locale_negotiator\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test___getattr__matches\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test___getattr__matches_no_action_wrap\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test___getattr__missing_when_directives_dont_exist\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test___getattr__missing_when_directives_exist\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test__fix_registry_adds__lock\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test__fix_registry_adds_clear_view_lookup_cache\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test__fix_registry_has_listeners\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test__fix_registry_notify\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test__fix_registry_queryAdapterOrSelf\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test__fix_registry_registerSelfAdapter\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_absolute_asset_spec_already_absolute\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_absolute_asset_spec_notastring\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_absolute_asset_spec_relative\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_begin\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_begin_does_not_propagate_request_for_diff_registry\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_begin_overrides_request\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_begin_propagates_request_for_same_registry\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_begin_with_request\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_context_manager\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_alternate_renderers\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_authentication_policy\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_authorization_policy_only\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_default_permission\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_default_renderers\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_default_view_mapper\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_default_webob_response_adapter_registered\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_exceptionresponse_view_None\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_exceptionresponse_view_custom\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_httpexception_view_default\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_no_root_factory\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_noreg_custom_settings\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_noreg_debug_logger_non_None\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_security_policy\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_session_factory\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_with_introspection\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_with_package_registry\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_with_root_factory\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_end\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_hook_zca\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_include_threadlocals_active\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_include_with_dotted_name\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_include_with_missing_source_file\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_include_with_module_defaults_to_includeme\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_include_with_module_defaults_to_includeme_missing\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_include_with_nested_route_prefix\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_include_with_route_prefix\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_introspector_decorator\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_make_wsgi_app\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_maybe_dotted_notstring_success\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_maybe_dotted_string_fail\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_maybe_dotted_string_success\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_scan_integration\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_scan_integration_conflict\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_scan_integration_dottedname_package\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_scan_integration_with_extra_kw\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_scan_integration_with_ignore\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_scan_integration_with_onerror\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_alternate_renderers\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_authentication_policy\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_authentication_policy_dottedname\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_authorization_policy_dottedname\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_authorization_policy_only\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_calls_fix_registry\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_custom_settings\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_debug_logger_name\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_debug_logger_non_None\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_default_permission\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_dottedname_root_factory\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_explicit_notfound_trumps_iexceptionresponse\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_includes\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_includes_spaces\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_locale_negotiator\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_locale_negotiator_dottedname\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_no_default_root_factory\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_registers_default_exceptionresponse_views\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_registers_default_view_predicates\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_registers_default_webob_iresponse_adapter\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_request_factory\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_request_factory_dottedname\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_response_factory\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_unhook_zca\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_with_package\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_with_package_package\nPASSED r2e_tests/test_config/test_init.py::TestConfigurator_add_directive::test_directive_persists_across_configurator_creations\nPASSED r2e_tests/test_config/test_init.py::TestConfigurator_add_directive::test_extend_action_method_successful\nPASSED r2e_tests/test_config/test_init.py::TestConfigurator_add_directive::test_extend_same_name_doesnt_conflict\nPASSED r2e_tests/test_config/test_init.py::TestConfigurator__add_predicate::test_factory_as_object\nPASSED r2e_tests/test_config/test_init.py::TestGlobalRegistriesIntegration::test_global_registries\nPASSED r2e_tests/test_config/test_init.py::TestGlobalRegistriesIntegration::test_global_registries_empty\nPASSED r2e_tests/test_config/test_predicates.py::TestPredicateList::test_custom_predicates_can_affect_traversal\nPASSED r2e_tests/test_config/test_predicates.py::TestPredicateList::test_different_custom_predicates_with_same_hash\nPASSED r2e_tests/test_config/test_predicates.py::TestPredicateList::test_match_param_from_dict\nPASSED r2e_tests/test_config/test_predicates.py::TestPredicateList::test_match_param_from_dict_fails\nPASSED r2e_tests/test_config/test_predicates.py::TestPredicateList::test_match_param_from_string\nPASSED r2e_tests/test_config/test_predicates.py::TestPredicateList::test_match_param_from_string_fails\nPASSED r2e_tests/test_config/test_predicates.py::TestPredicateList::test_notted\nPASSED r2e_tests/test_config/test_predicates.py::TestPredicateList::test_ordering_importance_and_number\nPASSED r2e_tests/test_config/test_predicates.py::TestPredicateList::test_ordering_importance_of_predicates\nPASSED r2e_tests/test_config/test_predicates.py::TestPredicateList::test_ordering_number_of_predicates\nPASSED r2e_tests/test_config/test_predicates.py::TestPredicateList::test_ordering_xhr_and_request_method_trump_only_containment\nPASSED r2e_tests/test_config/test_predicates.py::TestPredicateList::test_predicate_close_matches\nPASSED r2e_tests/test_config/test_predicates.py::TestPredicateList::test_predicate_text_is_correct\nPASSED r2e_tests/test_config/test_predicates.py::TestPredicateList::test_request_method_ordering_hashes_same\nPASSED r2e_tests/test_config/test_predicates.py::TestPredicateList::test_request_method_sequence\nPASSED r2e_tests/test_config/test_predicates.py::TestPredicateList::test_traverse_has_remainder_already\nPASSED r2e_tests/test_config/test_predicates.py::TestPredicateList::test_traverse_matches\nPASSED r2e_tests/test_config/test_predicates.py::TestPredicateList::test_traverse_matches_with_highorder_chars\nPASSED r2e_tests/test_config/test_predicates.py::TestPredicateList::test_unknown_predicate\nPASSED r2e_tests/test_config/test_predicates.py::Test_sort_accept_offers::test_default_specificities\nPASSED r2e_tests/test_config/test_predicates.py::Test_sort_accept_offers::test_params_inherit_type_prefs\nPASSED r2e_tests/test_config/test_predicates.py::Test_sort_accept_offers::test_params_order\nPASSED r2e_tests/test_config/test_predicates.py::Test_sort_accept_offers::test_specific_type_order\nPASSED r2e_tests/test_config/test_rendering.py::TestRenderingConfiguratorMixin::test_add_default_renderers\nPASSED r2e_tests/test_config/test_rendering.py::TestRenderingConfiguratorMixin::test_add_renderer\nPASSED r2e_tests/test_config/test_rendering.py::TestRenderingConfiguratorMixin::test_add_renderer_dottedname_factory\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_defaults\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_discriminator\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_no_path_no_pattern\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_no_pattern_with_path\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_no_view_with_view_attr\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_no_view_with_view_context\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_no_view_with_view_permission\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_no_view_with_view_renderer\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_accept\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_accept_list\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_custom_predicates\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_factory\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_header\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_inherit_errors\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_path_info\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_path_info_highorder\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_path_info_regex\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_pregenerator\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_request_method\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_request_param\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_root_slash_with_route_prefix\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_route_prefix\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_route_prefix_with_inherit_slash\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_static\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_wildcard_accept_raises\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_xhr\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_get_routes_mapper_already_registered\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_get_routes_mapper_not_yet_registered\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_add_permission\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_changing_set_default_csrf_options\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_authentication_policy_no_authz_policy\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_authentication_policy_no_authz_policy_autocommit\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_authentication_policy_with_authz_policy\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_authentication_policy_with_authz_policy_autocommit\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_authentication_policy_with_security_policy\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_authorization_policy_no_authn_policy\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_authorization_policy_no_authn_policy_autocommit\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_authorization_policy_with_authn_policy\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_authorization_policy_with_authn_policy_autocommit\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_default_csrf_options\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_default_permission\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_security_policy\nPASSED r2e_tests/test_config/test_settings.py::TestSettingsConfiguratorMixin::test__set_settings_as_None\nPASSED r2e_tests/test_config/test_settings.py::TestSettingsConfiguratorMixin::test__set_settings_as_dictwithvalues\nPASSED r2e_tests/test_config/test_settings.py::TestSettingsConfiguratorMixin::test__set_settings_does_not_uses_original_dict\nPASSED r2e_tests/test_config/test_settings.py::TestSettingsConfiguratorMixin::test_add_settings_settings_None\nPASSED r2e_tests/test_config/test_settings.py::TestSettingsConfiguratorMixin::test_add_settings_settings_already_registered\nPASSED r2e_tests/test_config/test_settings.py::TestSettingsConfiguratorMixin::test_add_settings_settings_not_yet_registered\nPASSED r2e_tests/test_config/test_settings.py::TestSettingsConfiguratorMixin::test_get_settings_nosettings\nPASSED r2e_tests/test_config/test_settings.py::TestSettingsConfiguratorMixin::test_get_settings_withsettings\nPASSED r2e_tests/test_config/test_settings.py::TestSettingsConfiguratorMixin::test_settings_parameter_dict_is_never_updated\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_csrf_trusted_origins\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_debug_all\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_debug_authorization\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_debug_notfound\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_debug_routematch\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_debug_templates\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_default_locale_name\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_noargs\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_originals_kept\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_prevent_cachebust\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_prevent_http_cache\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_reload_all\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_reload_assets\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_reload_resources\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_reload_templates\nPASSED r2e_tests/test_config/test_testing.py::TestingConfiguratorMixinTests::test_testing_add_renderer\nPASSED r2e_tests/test_config/test_testing.py::TestingConfiguratorMixinTests::test_testing_add_renderer_explicitrenderer\nPASSED r2e_tests/test_config/test_testing.py::TestingConfiguratorMixinTests::test_testing_add_renderer_twice\nPASSED r2e_tests/test_config/test_testing.py::TestingConfiguratorMixinTests::test_testing_add_subscriber_defaults\nPASSED r2e_tests/test_config/test_testing.py::TestingConfiguratorMixinTests::test_testing_add_subscriber_multiple\nPASSED r2e_tests/test_config/test_testing.py::TestingConfiguratorMixinTests::test_testing_add_subscriber_single\nPASSED r2e_tests/test_config/test_testing.py::TestingConfiguratorMixinTests::test_testing_add_template\nPASSED r2e_tests/test_config/test_testing.py::TestingConfiguratorMixinTests::test_testing_resources\nPASSED r2e_tests/test_config/test_testing.py::TestingConfiguratorMixinTests::test_testing_securitypolicy_forget_result\nPASSED r2e_tests/test_config/test_testing.py::TestingConfiguratorMixinTests::test_testing_securitypolicy_remember_result\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tween_instance\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tween_name_ingress\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tween_name_main\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tween_over_ingress\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tween_over_ingress_iterable\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tween_under_main\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tween_under_main_iterable\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tween_unsuitable\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tweens_conflict\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tweens_names_with_over_nonstringoriter\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tweens_names_with_under_nonstringoriter\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test___call___explicit\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test___call___implicit\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_add_explicit\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_add_implicit\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_1\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_2\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_3\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_4\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_5\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_conflict_direct\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_conflict_indirect\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_missing_over_and_under_partials\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_missing_over_partial\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_missing_over_partial_with_fallback\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_missing_under_partial\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_missing_under_partial_with_fallback\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_with_missing_fallbacks\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_with_multiple_matching_fallbacks\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_with_partial_fallbacks\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_accept_view_order_override\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_accept_view_order_throws_on_type_mismatch\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_accept_view_order_throws_on_wildcard\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_exception_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_exception_view_disallows_exception_only\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_exception_view_disallows_for_\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_exception_view_disallows_name\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_exception_view_disallows_permission\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_exception_view_disallows_require_csrf\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_exception_view_with_subclass\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_forbidden_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_forbidden_view_allows_other_predicates\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_forbidden_view_disallows_context\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_forbidden_view_disallows_for_\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_forbidden_view_disallows_name\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_forbidden_view_disallows_permission\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_forbidden_view_disallows_require_csrf\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_forbidden_view_no_view_argument\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_forbidden_view_with_renderer\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_normal_and_exception_view_intr_derived_callable\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_notfound_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_notfound_view_allows_other_predicates\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_notfound_view_append_slash\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_notfound_view_append_slash_custom_response\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_notfound_view_disallows_context\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_notfound_view_disallows_for_\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_notfound_view_disallows_name\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_notfound_view_disallows_permission\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_notfound_view_disallows_require_csrf\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_notfound_view_no_view_argument\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_notfound_view_with_renderer\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_static_view_absolute\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_static_view_here_no_utility_registered\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_static_view_package_relative\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_as_instance\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_as_instance_requestonly\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_as_instancemethod\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_as_instancemethod_requestonly\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_as_oldstyle_class\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_as_oldstyle_class_requestonly\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_class_method_no_attr\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_context_as_class\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_context_as_iface\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_context_trumps_for\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_custom_more_preds_first_bests_fewer_preds_last\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_custom_predicate_bests_standard_predicate\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_default_phash_overrides_default_phash\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_default_phash_overrides_no_phash\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_does_not_accept_iterable_accept\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_exc_default_phash_overrides_default_phash\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_exc_default_phash_overrides_no_phash\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_exc_multiview_replaces_existing_securedview\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_exc_multiview_replaces_existing_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_exc_multiview_replaces_multiviews\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_exc_multiview_replaces_only_exc_multiview\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_exc_mulview_replaces_existing_view_with___accept__\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_exc_same_phash_overrides_existing_single_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_exc_with_accept_multiview_replaces_existing_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_exception_only\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_exception_only_misconfiguration\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_exception_only_no_regular_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_exception_register_secured_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_for_as_class\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_for_as_iface\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_mixed_case_replaces_existing_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_multiview___discriminator__\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_multiview_call_ordering\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_multiview_context_superclass_then_subclass\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_multiview_exception_superclass_then_subclass\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_multiview_replaces_existing_securedview\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_multiview_replaces_existing_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_multiview_replaces_existing_view_with___accept__\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_multiview_replaces_multiview\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_register_secured_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_same_phash_overrides_existing_single_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_same_predicates\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_view_callable_None_no_renderer\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_view_callable_None_with_renderer\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_view_callable_dottedname\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_accept_match\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_accept_multiview_replaces_existing_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_accept_nomatch\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_containment_false\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_containment_true\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_csrf_header\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_csrf_param\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_custom_predicates_match\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_custom_predicates_nomatch\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_decorator\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_decorator_tuple\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_default_renderer\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_function_callable\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_function_callable_requestonly\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_header_badregex\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_header_noval_match\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_header_noval_nomatch\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_header_val_match\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_header_val_missing\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_header_val_nomatch\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_http_cache\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_mapper\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_missing_csrf_header\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_name\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_name_unicode\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_no_default_permission_no_explicit_permission\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_nonexistant_route_name\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_path_info_badregex\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_path_info_match\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_path_info_nomatch\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_method_false\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_method_get_implies_head\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_method_sequence_conflict\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_method_sequence_false\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_method_sequence_true\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_method_true\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_param_noval_false\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_param_noval_true\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_param_val_false\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_param_val_true\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_type\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_type_and_route_name\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_type_as_iface\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_type_as_noniface\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_route_name\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_route_name_exception\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_tmpl_renderer_factory_introspector_missing\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_tmpl_renderer_factory_no_renderer_factory\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_tmpl_renderer_factory_with_renderer_factory\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_view_config_and_view_defaults_conflicts\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_view_config_and_view_defaults_doesnt_conflict\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_wildcard_accept_raises\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_xhr_false\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_xhr_true\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_wrapped_view_is_decorated\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_views_with_accept_multiview_replaces_existing\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_default_accept_view_order\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_derive_view_dottedname\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_derive_view_function\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_derive_view_with_default_renderer_no_explicit_renderer\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_derive_view_with_default_renderer_with_explicit_renderer\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_set_view_mapper\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_set_view_mapper_dottedname\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_view_with_most_specific_predicate\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_view_with_most_specific_predicate_with_mismatch\nPASSED r2e_tests/test_config/test_views.py::Test_runtime_exc_view::test_call\nPASSED r2e_tests/test_config/test_views.py::Test_runtime_exc_view::test_call_dispatches_on_exception\nPASSED r2e_tests/test_config/test_views.py::Test_runtime_exc_view::test_permitted\nPASSED r2e_tests/test_config/test_views.py::Test_runtime_exc_view::test_permitted_dispatches_on_exception\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_defaults\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_otherattr\nPASSED r2e_tests/test_config/test_views.py::Test_isexception::test_is_IException\nPASSED r2e_tests/test_config/test_views.py::Test_isexception::test_is_IException_subinterface\nPASSED r2e_tests/test_config/test_views.py::Test_isexception::test_is_exception_class\nPASSED r2e_tests/test_config/test_views.py::Test_isexception::test_is_exception_instance\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test___call__\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test___call__intermediate_not_found\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test___call__raise_not_found_isnt_interpreted_as_pred_mismatch\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test___call_permissive_has_call_permissive\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test___call_permissive_has_no_call_permissive\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test__call__not_found\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test__call__with_accept_match\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test__call__with_accept_miss\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test__call_permissive__not_found\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_add\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_add_with_phash\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_add_with_phash_override_accept\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_add_with_phash_override_accept2\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_class_implements_ISecuredView\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_get_views\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_get_views_best_match_returns_None\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_get_views_no_self_accepts\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_get_views_request_has_no_accept\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_instance_implements_ISecuredView\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_match_not_found\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_match_predicate_fails\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_match_predicate_succeeds\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_multiple_with_functions_as_views\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_permitted\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_permitted_no_match_with__permitted__\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_permitted_no_views\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test__view_as_function_with_attr\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_function_context_and_request\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_function_requestonly\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_function_requestonly_with_attr\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_instance_context_and_request\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_instance_context_and_request_and_attr\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_instance_requestonly\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_instance_requestonly_with_attr\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_newstyle_class_context_and_request\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_newstyle_class_context_and_request_with_attr\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_newstyle_class_requestonly\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_newstyle_class_requestonly_with_attr\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_oldstyle_class_context_and_request\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_oldstyle_class_context_and_request_with_attr\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_oldstyle_class_requestonly\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_oldstyle_class_requestonly_with_attr\nPASSED r2e_tests/test_config/test_views.py::Test_preserve_view_attrs::test_it_different\nPASSED r2e_tests/test_config/test_views.py::Test_preserve_view_attrs::test_it_different_with_existing_original_view\nPASSED r2e_tests/test_config/test_views.py::Test_preserve_view_attrs::test_it_same\nPASSED r2e_tests/test_config/test_views.py::Test_preserve_view_attrs::test_it_view_is_None\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_already_exists\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_cachebust_prevented\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_cachebuster\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_cachebuster_abspath\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_cachebuster_for_more_specific_path\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_cachebuster_overwrite\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_cachebuster_overwrite_explicit\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_package_root\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_url_noendslash\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_url_noscheme\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_url_withendslash\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_viewname\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_viewname_with_context\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_viewname_with_for_\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_viewname_with_permission\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_viewname_with_renderer\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_viewname_with_route_prefix\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_missing\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_quoting\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_registration_miss\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_route_url\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_slash_in_name1\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_slash_in_name2\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_url_cachebust\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_url_cachebust_abspath\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_url_cachebust_nomatch\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_url_quoted_remote\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_url_unquoted_local\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_url_with_custom_anchor\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_url_with_custom_query\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_verifyClass\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_verifyObject\nPASSED r2e_tests/test_config/test_views.py::Test_view_description::test_with_text\nPASSED r2e_tests/test_config/test_views.py::Test_viewdefaults::test_dunder_attrs_copied\nPASSED r2e_tests/test_scripts/test_common.py::TestParseVars::test_parse_vars_bad\nPASSED r2e_tests/test_scripts/test_common.py::TestParseVars::test_parse_vars_good\nPASSED r2e_tests/test_scripts/test_pdistreport.py::TestPDistReportCommand::test_no_dists\nPASSED r2e_tests/test_scripts/test_pdistreport.py::TestPDistReportCommand::test_with_dists\nPASSED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_display_headers\nPASSED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_has_bad_config_header\nPASSED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_has_content_type_header_var\nPASSED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_has_good_header_var\nPASSED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_has_multiple_header_vars\nPASSED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_method_configures_logging\nPASSED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_method_get\nPASSED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_method_options\nPASSED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_method_patch\nPASSED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_method_post\nPASSED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_method_propfind\nPASSED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_method_put\nPASSED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_not_enough_args\nPASSED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_path_doesnt_start_with_slash\nPASSED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_response_has_no_charset\nPASSED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_two_args\nPASSED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_w_basic_auth\nPASSED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_with_query_string\nPASSED r2e_tests/test_scripts/test_prequest.py::Test_main::test_it\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test__get_mapper\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_bad_args\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_bad_format\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_config_format_ini_commas\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_config_format_ini_newlines\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_config_format_ini_spaces\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_good_args\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_good_format\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_no_mapper\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_no_routes\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_route_as_wsgiapp\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_route_no_view\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_route_with_no_slash_prefix\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_single_route_no_route_registered\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_single_route_no_views_registered\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_single_route_one_view_registered_with_factory\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_static_routes_included_in_list\nPASSED r2e_tests/test_scripts/test_proutes.py::Test_main::test_it\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_config_file_finds_open_url\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_guess_server_url\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_original_ignore_files\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_parse_vars_bad\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_parse_vars_good\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_reload_call_hupper_with_correct_args\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_run_no_args\nPASSED r2e_tests/test_scripts/test_pserve.py::Test_main::test_it\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_command_custom_section_override\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_command_default_shell_option\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_command_errors_with_unknown_shell\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_command_loads_check_variable_override_order\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_command_loads_custom_items\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_command_loads_default_shell\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_command_loads_ipython\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_command_loads_pythonstartup\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_command_loads_setup_from_options\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_command_setup\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_command_setup_generator\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_list_shells\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_shell_entry_points\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_shell_ordering\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_shell_override\nPASSED r2e_tests/test_scripts/test_pshell.py::Test_python_shell_runner::test_it\nPASSED r2e_tests/test_scripts/test_pshell.py::Test_main::test_it\nPASSED r2e_tests/test_scripts/test_ptweens.py::TestPTweensCommand::test__get_tweens\nPASSED r2e_tests/test_scripts/test_ptweens.py::TestPTweensCommand::test_command_implicit_and_explicit_tweens\nPASSED r2e_tests/test_scripts/test_ptweens.py::TestPTweensCommand::test_command_implicit_tweens_only\nPASSED r2e_tests/test_scripts/test_ptweens.py::TestPTweensCommand::test_command_no_tweens\nPASSED r2e_tests/test_scripts/test_ptweens.py::Test_main::test_it\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test__find_multi_routes_all_match\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test__find_multi_routes_none_match\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test__find_multi_routes_some_match\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test__find_view_no_match\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test__find_view_no_match_multiview_registered\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test__find_view_route_multiview\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test__find_view_route_multiview_no_view_registered\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test__find_view_route_no_multiview\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test__find_view_traversal\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test__find_view_traversal_multiview\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_not_found\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_not_found_url_starts_without_slash\nPASSED r2e_tests/test_scripts/test_pviews.py::Test_main::test_it\nFAILED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_resource_url_adapter_dotted_names\nFAILED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_resource_url_adapter_introspectables\nFAILED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_traverser_dotted_names\nFAILED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_directory_with_directory\nFAILED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_directory_with_package\nFAILED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_file_with_file\nFAILED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_package_with_directory\nFAILED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_package_with_package\nFAILED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_get_resource_filename_no_overrides\nFAILED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_get_resource_filename_override_returns_None\nFAILED r2e_tests/test_config/test_assets.py::TestPackageAssetSource::test_get_filename\nFAILED r2e_tests/test_config/test_assets.py::TestPackageAssetSource::test_get_filename_with_prefix\nFAILED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_request_factory_dottedname\nFAILED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_response_factory_dottedname\nFAILED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_root_factory_dottedname\nFAILED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_session_factory_dottedname\nFAILED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_add_translation_dirs_abspath\nFAILED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_add_translation_dirs_asset_spec\nFAILED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_add_translation_dirs_asset_spec_existing_translation_dirs\nFAILED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_add_translation_dirs_doesnt_use_override_w_autocommit\nFAILED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_add_translation_dirs_multiple_specs\nFAILED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_add_translation_dirs_multiple_specs_multiple_calls\nFAILED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_add_translation_dirs_override_multiple_specs_multiple_calls\nFAILED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_add_translation_dirs_uses_override_out_of_order\nFAILED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_add_translation_dirs_uses_override_w_autocommit\nFAILED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_set_locale_negotiator_dottedname\nFAILED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_no_registry\nFAILED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_noreg_debug_logger_None_default\nFAILED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_include_constant_root_package\nFAILED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_include_with_python_callable\nFAILED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_debug_logger_None_default\nFAILED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_tweens\nFAILED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_with_package_module\nFAILED r2e_tests/test_config/test_init.py::TestConfigurator_add_directive::test_add_directive_with_custom_callable\nFAILED r2e_tests/test_config/test_init.py::TestConfigurator_add_directive::test_add_directive_with_partial\nFAILED r2e_tests/test_config/test_init.py::TestConfigurator_add_directive::test_extend_with_dotted_name\nFAILED r2e_tests/test_config/test_init.py::TestConfigurator_add_directive::test_extend_with_python_callable\nFAILED r2e_tests/test_config/test_init.py::TestConfigurator__add_predicate::test_factory_as_dotted_name\nFAILED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_factory_dottedname\nFAILED r2e_tests/test_config/test_testing.py::TestingConfiguratorMixinTests::test_testing_add_subscriber_dottedname\nFAILED r2e_tests/test_config/test_testing.py::TestingConfiguratorMixinTests::test_testing_securitypolicy\nFAILED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tween_dottedname\nFAILED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tweens_names_distinct\nFAILED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tweens_names_with_underover\nFAILED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_exception_view_with_view_defaults\nFAILED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_forbidden_view_with_view_defaults\nFAILED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_notfound_view_with_view_defaults\nFAILED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_static_view_package_here_relative\nFAILED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_context_as_dottedname\nFAILED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_for__as_dottedname\nFAILED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_containment_dottedname\nFAILED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_default_permission_no_explicit_permission\nFAILED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_permission\nFAILED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_template_renderer\nFAILED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_template_renderer_no_callable\nFAILED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_view_defaults\nFAILED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_view_defaults_viewname_is_dottedname_kwarg\nFAILED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_view_defaults_viewname_is_dottedname_nonkwarg\nFAILED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_url_cachebust_with_overrides\nFAILED r2e_tests/test_config/test_views.py::Test_view_description::test_without_text\nFAILED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_class_view\nFAILED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_one_route_all_methods_view_only_post\nFAILED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_one_route_only_post_view_all_methods\nFAILED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_one_route_only_post_view_post_and_get\nFAILED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_one_route_with_long_name_one_view_registered\nFAILED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_route_is_get_view_request_method_not_post\nFAILED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_route_request_method_mismatch\nFAILED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_route_static_views\nFAILED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_single_route_multiview_registered\nFAILED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_single_route_one_view_registered\nFAILED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_view_glob\nFAILED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_view_request_method_not_post\nFAILED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_config_file_finds_watch_files\nFAILED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_multi_view_nested\nFAILED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_multiview\nFAILED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_multiview_with_permission\nFAILED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_multiview_with_predicates\nFAILED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_single_view_function_traversal\nFAILED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_single_view_route\nFAILED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_single_view_route_with_route_predicates\nFAILED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_single_view_traversal\nFAILED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_single_view_traversal_with_permission\nFAILED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_single_view_traversal_with_predicates\n======================== 83 failed, 758 passed in 6.45s ========================\n",
    "new_commit_res_stderr": "",
    "old_commit_res_code": 1,
    "old_commit_res_stdout": "============================= test session starts ==============================\nplatform linux -- Python 3.8.20, pytest-8.3.4, pluggy-1.5.0\nrootdir: /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586\nconfigfile: pyproject.toml\ncollected 841 items\n\nr2e_tests/test_1.py ...................................F...              [  4%]\nr2e_tests/test_config/test_actions.py .................................. [  8%]\n............                                                             [ 10%]\nr2e_tests/test_config/test_adapters.py .FF..............F...             [ 12%]\nr2e_tests/test_config/test_assets.py ....F.F...F...FF.FF................ [ 16%]\n.....................................F.F................................ [ 25%]\n                                                                         [ 25%]\nr2e_tests/test_config/test_factories.py ..........F.F..F.F               [ 27%]\nr2e_tests/test_config/test_i18n.py FFFF..FF.FFF.F                        [ 29%]\nr2e_tests/test_config/test_init.py .............................F..F.... [ 33%]\n....F......F...................F................F..F.FF...FFF...         [ 41%]\nr2e_tests/test_config/test_predicates.py .......................         [ 43%]\nr2e_tests/test_config/test_rendering.py ...                              [ 44%]\nr2e_tests/test_config/test_routes.py ............F................       [ 47%]\nr2e_tests/test_config/test_security.py ..............                    [ 49%]\nr2e_tests/test_config/test_settings.py ........................          [ 52%]\nr2e_tests/test_config/test_testing.py ....F....F..                       [ 53%]\nr2e_tests/test_config/test_tweens.py F.........F..F...................   [ 57%]\nr2e_tests/test_config/test_views.py ..........F.........F............F.. [ 61%]\nF.........F....................F....................F........F.......... [ 70%]\n.........F................FF.....FFF.................................... [ 78%]\n............................................................F.......F.   [ 87%]\nr2e_tests/test_scripts/test_common.py ..                                 [ 87%]\nr2e_tests/test_scripts/test_pdistreport.py ..                            [ 87%]\nr2e_tests/test_scripts/test_prequest.py ...................              [ 90%]\nr2e_tests/test_scripts/test_proutes.py ...F.......FFFF.F.FF.F..F..FF.    [ 93%]\nr2e_tests/test_scripts/test_pserve.py .F.......                          [ 94%]\nr2e_tests/test_scripts/test_pshell.py .................                  [ 96%]\nr2e_tests/test_scripts/test_ptweens.py .....                             [ 97%]\nr2e_tests/test_scripts/test_pviews.py ..........FFFF..FFFFFF.            [100%]\n\n=================================== FAILURES ===================================\n_______________ TestLegacySecurityPolicy.test_forget_with_kwargs _______________\n\nself = <r2e_tests.test_1.TestLegacySecurityPolicy testMethod=test_forget_with_kwargs>\n\n    def test_forget_with_kwargs(self):\n        from pyramid.security import LegacySecurityPolicy\n    \n        policy = LegacySecurityPolicy()\n>       self.assertRaises(ValueError, lambda: policy.forget(None, foo='bar'))\n\nr2e_tests/test_1.py:473: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \nr2e_tests/test_1.py:473: in <lambda>\n    self.assertRaises(ValueError, lambda: policy.forget(None, foo='bar'))\nsrc/pyramid/security.py:442: in forget\n    authn = self._get_authn_policy(request)\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\n    def _get_authn_policy(self, request):\n>       return request.registry.getUtility(IAuthenticationPolicy)\nE       AttributeError: 'NoneType' object has no attribute 'registry'\n\nsrc/pyramid/security.py:425: AttributeError\n__ AdaptersConfiguratorMixinTests.test_add_resource_url_adapter_dotted_names ___\n\nself = <r2e_tests.test_config.test_adapters.AdaptersConfiguratorMixinTests testMethod=test_add_resource_url_adapter_dotted_names>\n\n    def test_add_resource_url_adapter_dotted_names(self):\n        from pyramid.interfaces import IResourceURL\n    \n        config = self._makeOne(autocommit=True)\n        config.add_resource_url_adapter(\n            'tests.test_config.test_adapters.DummyResourceURL',\n            'tests.test_config.test_adapters.DummyIface',\n        )\n        iface = DummyIface()\n>       adapter = config.registry.getMultiAdapter((iface, iface), IResourceURL)\n\nr2e_tests/test_config/test_adapters.py:332: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nself = <Registry r2e_tests.test_config>\nobjects = (<r2e_tests.test_config.test_adapters.DummyIface object at 0x708a51fd9c40>, <r2e_tests.test_config.test_adapters.DummyIface object at 0x708a51fd9c40>)\ninterface = <InterfaceClass pyramid.interfaces.IResourceURL>, name = ''\n\n    def getMultiAdapter(self, objects, interface, name=''):\n        adapter = self.adapters.queryMultiAdapter(objects, interface, name)\n        if adapter is None:\n>           raise ComponentLookupError(objects, interface, name)\nE           zope.interface.interfaces.ComponentLookupError: ((<r2e_tests.test_config.test_adapters.DummyIface object at 0x708a51fd9c40>, <r2e_tests.test_config.test_adapters.DummyIface object at 0x708a51fd9c40>), <InterfaceClass pyramid.interfaces.IResourceURL>, '')\n\n.venv/lib/python3.8/site-packages/zope/interface/registry.py:379: ComponentLookupError\n_ AdaptersConfiguratorMixinTests.test_add_resource_url_adapter_introspectables _\n\nself = <r2e_tests.test_config.test_adapters.AdaptersConfiguratorMixinTests testMethod=test_add_resource_url_adapter_introspectables>\n\n    def test_add_resource_url_adapter_introspectables(self):\n        config = self._makeOne()\n        config.add_resource_url_adapter(DummyResourceURL, DummyIface)\n        actions = config.action_state.actions\n        self.assertEqual(len(actions), 1)\n        intrs = actions[0]['introspectables']\n        self.assertEqual(len(intrs), 1)\n        intr = intrs[0]\n        self.assertEqual(intr.type_name, 'resource url adapter')\n        self.assertEqual(\n            intr.discriminator, ('resource url adapter', DummyIface)\n        )\n        self.assertEqual(intr.category_name, 'resource url adapters')\n>       self.assertEqual(\n            intr.title,\n            \"resource url adapter for resource iface \"\n            \"<class 'tests.test_config.test_adapters.DummyIface'>\",\n        )\nE       AssertionError: \"reso[30 chars]iface <class 'r2e_tests.test_config.test_adapters.DummyIface'>\" != \"reso[30 chars]iface <class 'tests.test_config.test_adapters.DummyIface'>\"\nE       - resource url adapter for resource iface <class 'r2e_tests.test_config.test_adapters.DummyIface'>\nE       ?                                                 ----\nE       + resource url adapter for resource iface <class 'tests.test_config.test_adapters.DummyIface'>\n\nr2e_tests/test_config/test_adapters.py:377: AssertionError\n________ AdaptersConfiguratorMixinTests.test_add_traverser_dotted_names ________\n\nself = <r2e_tests.test_config.test_adapters.AdaptersConfiguratorMixinTests testMethod=test_add_traverser_dotted_names>\n\n    def test_add_traverser_dotted_names(self):\n        from pyramid.interfaces import ITraverser\n    \n        config = self._makeOne(autocommit=True)\n        config.add_traverser(\n            'tests.test_config.test_adapters.DummyTraverser',\n            'tests.test_config.test_adapters.DummyIface',\n        )\n        iface = DummyIface()\n>       traverser = config.registry.getAdapter(iface, ITraverser)\n\nr2e_tests/test_config/test_adapters.py:286: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nself = <Registry r2e_tests.test_config>\nobject = <r2e_tests.test_config.test_adapters.DummyIface object at 0x708a52023d60>\ninterface = <InterfaceClass pyramid.interfaces.ITraverser>, name = ''\n\n    def getAdapter(self, object, interface, name=''):\n        adapter = self.adapters.queryAdapter(object, interface, name)\n        if adapter is None:\n>           raise ComponentLookupError(object, interface, name)\nE           zope.interface.interfaces.ComponentLookupError: (<r2e_tests.test_config.test_adapters.DummyIface object at 0x708a52023d60>, <InterfaceClass pyramid.interfaces.ITraverser>, '')\n\n.venv/lib/python3.8/site-packages/zope/interface/registry.py:368: ComponentLookupError\n___ TestAssetsConfiguratorMixin.test_override_asset_directory_with_directory ___\n\nself = <r2e_tests.test_config.test_assets.TestAssetsConfiguratorMixin testMethod=test_override_asset_directory_with_directory>\n\n    def test_override_asset_directory_with_directory(self):\n        from pyramid.config.assets import PackageAssetSource\n    \n        config = self._makeOne(autocommit=True)\n        override = DummyUnderOverride()\n        config.override_asset(\n            'tests.test_config.pkgs.asset:templates/',\n            'tests.test_config.pkgs.asset.subpackage:templates/',\n            _override=override,\n        )\n        from tests.test_config.pkgs import asset\n        from tests.test_config.pkgs.asset import subpackage\n    \n        self.assertEqual(override.package, asset)\n        self.assertEqual(override.path, 'templates/')\n        source = override.source\n        self.assertTrue(isinstance(source, PackageAssetSource))\n        self.assertEqual(source.package, subpackage)\n        self.assertEqual(source.prefix, 'templates/')\n    \n        resource_name = 'bar.pt'\n        expected = os.path.join(\n            here, 'pkgs', 'asset', 'subpackage', 'templates', 'bar.pt'\n        )\n>       self.assertEqual(override.source.get_filename(resource_name), expected)\nE       AssertionError: '/hom[90 chars]2586/tests/test_config/pkgs/asset/subpackage/templates/bar.pt' != '/hom[90 chars]2586/r2e_tests/test_config/pkgs/asset/subpacka[15 chars]r.pt'\nE       - /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/tests/test_config/pkgs/asset/subpackage/templates/bar.pt\nE       + /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/r2e_tests/test_config/pkgs/asset/subpackage/templates/bar.pt\nE       ?                                                                                                    ++++\n\nr2e_tests/test_config/test_assets.py:131: AssertionError\n____ TestAssetsConfiguratorMixin.test_override_asset_directory_with_package ____\n\nself = <r2e_tests.test_config.test_assets.TestAssetsConfiguratorMixin testMethod=test_override_asset_directory_with_package>\n\n    def test_override_asset_directory_with_package(self):\n        from pyramid.config.assets import PackageAssetSource\n    \n        config = self._makeOne(autocommit=True)\n        override = DummyUnderOverride()\n        config.override_asset(\n            'tests.test_config.pkgs.asset:templates/',\n            'tests.test_config.pkgs.asset.subpackage',\n            _override=override,\n        )\n        from tests.test_config.pkgs import asset\n        from tests.test_config.pkgs.asset import subpackage\n    \n        self.assertEqual(override.package, asset)\n        self.assertEqual(override.path, 'templates/')\n        source = override.source\n        self.assertTrue(isinstance(source, PackageAssetSource))\n        self.assertEqual(source.package, subpackage)\n        self.assertEqual(source.prefix, '')\n    \n        resource_name = 'templates/bar.pt'\n        expected = os.path.join(\n            here, 'pkgs', 'asset', 'subpackage', 'templates', 'bar.pt'\n        )\n>       self.assertEqual(override.source.get_filename(resource_name), expected)\nE       AssertionError: '/hom[90 chars]2586/tests/test_config/pkgs/asset/subpackage/templates/bar.pt' != '/hom[90 chars]2586/r2e_tests/test_config/pkgs/asset/subpacka[15 chars]r.pt'\nE       - /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/tests/test_config/pkgs/asset/subpackage/templates/bar.pt\nE       + /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/r2e_tests/test_config/pkgs/asset/subpackage/templates/bar.pt\nE       ?                                                                                                    ++++\n\nr2e_tests/test_config/test_assets.py:157: AssertionError\n________ TestAssetsConfiguratorMixin.test_override_asset_file_with_file ________\n\nself = <r2e_tests.test_config.test_assets.TestAssetsConfiguratorMixin testMethod=test_override_asset_file_with_file>\n\n    def test_override_asset_file_with_file(self):\n        from pyramid.config.assets import PackageAssetSource\n    \n        config = self._makeOne(autocommit=True)\n        override = DummyUnderOverride()\n        config.override_asset(\n            'tests.test_config.pkgs.asset:templates/foo.pt',\n            'tests.test_config.pkgs.asset.subpackage:templates/bar.pt',\n            _override=override,\n        )\n        from tests.test_config.pkgs import asset\n        from tests.test_config.pkgs.asset import subpackage\n    \n        self.assertEqual(override.package, asset)\n        self.assertEqual(override.path, 'templates/foo.pt')\n        source = override.source\n        self.assertTrue(isinstance(source, PackageAssetSource))\n        self.assertEqual(source.package, subpackage)\n        self.assertEqual(source.prefix, 'templates/bar.pt')\n    \n        resource_name = ''\n        expected = os.path.join(\n            here, 'pkgs', 'asset', 'subpackage', 'templates', 'bar.pt'\n        )\n>       self.assertEqual(override.source.get_filename(resource_name), expected)\nE       AssertionError: '/hom[90 chars]2586/tests/test_config/pkgs/asset/subpackage/templates/bar.pt' != '/hom[90 chars]2586/r2e_tests/test_config/pkgs/asset/subpacka[15 chars]r.pt'\nE       - /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/tests/test_config/pkgs/asset/subpackage/templates/bar.pt\nE       + /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/r2e_tests/test_config/pkgs/asset/subpackage/templates/bar.pt\nE       ?                                                                                                    ++++\n\nr2e_tests/test_config/test_assets.py:79: AssertionError\n____ TestAssetsConfiguratorMixin.test_override_asset_package_with_directory ____\n\nself = <r2e_tests.test_config.test_assets.TestAssetsConfiguratorMixin testMethod=test_override_asset_package_with_directory>\n\n    def test_override_asset_package_with_directory(self):\n        from pyramid.config.assets import PackageAssetSource\n    \n        config = self._makeOne(autocommit=True)\n        override = DummyUnderOverride()\n        config.override_asset(\n            'tests.test_config.pkgs.asset',\n            'tests.test_config.pkgs.asset.subpackage:templates/',\n            _override=override,\n        )\n        from tests.test_config.pkgs import asset\n        from tests.test_config.pkgs.asset import subpackage\n    \n        self.assertEqual(override.package, asset)\n        self.assertEqual(override.path, '')\n        source = override.source\n        self.assertTrue(isinstance(source, PackageAssetSource))\n        self.assertEqual(source.package, subpackage)\n        self.assertEqual(source.prefix, 'templates/')\n    \n        resource_name = 'bar.pt'\n        expected = os.path.join(\n            here, 'pkgs', 'asset', 'subpackage', 'templates', 'bar.pt'\n        )\n>       self.assertEqual(override.source.get_filename(resource_name), expected)\nE       AssertionError: '/hom[90 chars]2586/tests/test_config/pkgs/asset/subpackage/templates/bar.pt' != '/hom[90 chars]2586/r2e_tests/test_config/pkgs/asset/subpacka[15 chars]r.pt'\nE       - /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/tests/test_config/pkgs/asset/subpackage/templates/bar.pt\nE       + /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/r2e_tests/test_config/pkgs/asset/subpackage/templates/bar.pt\nE       ?                                                                                                    ++++\n\nr2e_tests/test_config/test_assets.py:183: AssertionError\n_____ TestAssetsConfiguratorMixin.test_override_asset_package_with_package _____\n\nself = <r2e_tests.test_config.test_assets.TestAssetsConfiguratorMixin testMethod=test_override_asset_package_with_package>\n\n    def test_override_asset_package_with_package(self):\n        from pyramid.config.assets import PackageAssetSource\n    \n        config = self._makeOne(autocommit=True)\n        override = DummyUnderOverride()\n        config.override_asset(\n            'tests.test_config.pkgs.asset',\n            'tests.test_config.pkgs.asset.subpackage',\n            _override=override,\n        )\n        from tests.test_config.pkgs import asset\n        from tests.test_config.pkgs.asset import subpackage\n    \n        self.assertEqual(override.package, asset)\n        self.assertEqual(override.path, '')\n        source = override.source\n        self.assertTrue(isinstance(source, PackageAssetSource))\n        self.assertEqual(source.package, subpackage)\n        self.assertEqual(source.prefix, '')\n    \n        resource_name = 'templates/bar.pt'\n        expected = os.path.join(\n            here, 'pkgs', 'asset', 'subpackage', 'templates', 'bar.pt'\n        )\n>       self.assertEqual(override.source.get_filename(resource_name), expected)\nE       AssertionError: '/hom[90 chars]2586/tests/test_config/pkgs/asset/subpackage/templates/bar.pt' != '/hom[90 chars]2586/r2e_tests/test_config/pkgs/asset/subpacka[15 chars]r.pt'\nE       - /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/tests/test_config/pkgs/asset/subpackage/templates/bar.pt\nE       + /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/r2e_tests/test_config/pkgs/asset/subpackage/templates/bar.pt\nE       ?                                                                                                    ++++\n\nr2e_tests/test_config/test_assets.py:105: AssertionError\n_________ TestOverrideProvider.test_get_resource_filename_no_overrides _________\n\nself = <r2e_tests.test_config.test_assets.TestOverrideProvider testMethod=test_get_resource_filename_no_overrides>\n\n    def test_get_resource_filename_no_overrides(self):\n        resource_name = 'test_assets.py'\n        import tests.test_config\n    \n        provider = self._makeOne(tests.test_config)\n        expected = os.path.join(here, resource_name)\n        result = provider.get_resource_filename(None, resource_name)\n>       self.assertEqual(result, expected)\nE       AssertionError: '/hom[69 chars]74e1c6c3ea085fdf9beeb2586/tests/test_config/test_assets.py' != '/hom[69 chars]74e1c6c3ea085fdf9beeb2586/r2e_tests/test_config/test_assets.py'\nE       - /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/tests/test_config/test_assets.py\nE       + /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/r2e_tests/test_config/test_assets.py\nE       ?                                                                                                    ++++\n\nr2e_tests/test_config/test_assets.py:359: AssertionError\n____ TestOverrideProvider.test_get_resource_filename_override_returns_None _____\n\nself = <r2e_tests.test_config.test_assets.TestOverrideProvider testMethod=test_get_resource_filename_override_returns_None>\n\n    def test_get_resource_filename_override_returns_None(self):\n        overrides = DummyOverrides(None)\n        self._registerOverrides(overrides)\n        resource_name = 'test_assets.py'\n        import tests.test_config\n    \n        provider = self._makeOne(tests.test_config)\n        expected = os.path.join(here, resource_name)\n        result = provider.get_resource_filename(None, resource_name)\n>       self.assertEqual(result, expected)\nE       AssertionError: '/hom[69 chars]74e1c6c3ea085fdf9beeb2586/tests/test_config/test_assets.py' != '/hom[69 chars]74e1c6c3ea085fdf9beeb2586/r2e_tests/test_config/test_assets.py'\nE       - /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/tests/test_config/test_assets.py\nE       + /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/r2e_tests/test_config/test_assets.py\nE       ?                                                                                                    ++++\n\nr2e_tests/test_config/test_assets.py:413: AssertionError\n___________________ TestPackageAssetSource.test_get_filename ___________________\n\nself = <r2e_tests.test_config.test_assets.TestPackageAssetSource testMethod=test_get_filename>\n\n    def test_get_filename(self):\n        source = self._makeOne('')\n>       self.assertEqual(\n            source.get_filename('test_assets.py'),\n            os.path.join(here, 'test_assets.py'),\n        )\nE       AssertionError: '/hom[69 chars]74e1c6c3ea085fdf9beeb2586/tests/test_config/test_assets.py' != '/hom[69 chars]74e1c6c3ea085fdf9beeb2586/r2e_tests/test_config/test_assets.py'\nE       - /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/tests/test_config/test_assets.py\nE       + /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/r2e_tests/test_config/test_assets.py\nE       ?                                                                                                    ++++\n\nr2e_tests/test_config/test_assets.py:825: AssertionError\n_____________ TestPackageAssetSource.test_get_filename_with_prefix _____________\n\nself = <r2e_tests.test_config.test_assets.TestPackageAssetSource testMethod=test_get_filename_with_prefix>\n\n    def test_get_filename_with_prefix(self):\n        source = self._makeOne('test_assets.py')\n>       self.assertEqual(\n            source.get_filename(''), os.path.join(here, 'test_assets.py')\n        )\nE       AssertionError: '/hom[69 chars]74e1c6c3ea085fdf9beeb2586/tests/test_config/test_assets.py' != '/hom[69 chars]74e1c6c3ea085fdf9beeb2586/r2e_tests/test_config/test_assets.py'\nE       - /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/tests/test_config/test_assets.py\nE       + /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/r2e_tests/test_config/test_assets.py\nE       ?                                                                                                    ++++\n\nr2e_tests/test_config/test_assets.py:832: AssertionError\n____________ TestFactoriesMixin.test_set_request_factory_dottedname ____________\n\nself = <r2e_tests.test_config.test_factories.TestFactoriesMixin testMethod=test_set_request_factory_dottedname>\n\n    def test_set_request_factory_dottedname(self):\n        from pyramid.interfaces import IRequestFactory\n    \n        config = self._makeOne(autocommit=True)\n        config.set_request_factory('tests.test_config.dummyfactory')\n>       self.assertEqual(\n            config.registry.getUtility(IRequestFactory), dummyfactory\n        )\nE       AssertionError: <function dummyfactory at 0x708a51ff5280> != <function dummyfactory at 0x708a525fbee0>\n\nr2e_tests/test_config/test_factories.py:26: AssertionError\n___________ TestFactoriesMixin.test_set_response_factory_dottedname ____________\n\nself = <r2e_tests.test_config.test_factories.TestFactoriesMixin testMethod=test_set_response_factory_dottedname>\n\n    def test_set_response_factory_dottedname(self):\n        from pyramid.interfaces import IResponseFactory\n    \n        config = self._makeOne(autocommit=True)\n        config.set_response_factory('tests.test_config.dummyfactory')\n>       self.assertEqual(\n            config.registry.getUtility(IResponseFactory), dummyfactory\n        )\nE       AssertionError: <function dummyfactory at 0x708a51ff5280> != <function dummyfactory at 0x708a525fbee0>\n\nr2e_tests/test_config/test_factories.py:43: AssertionError\n_____________ TestFactoriesMixin.test_set_root_factory_dottedname ______________\n\nself = <r2e_tests.test_config.test_factories.TestFactoriesMixin testMethod=test_set_root_factory_dottedname>\n\n    def test_set_root_factory_dottedname(self):\n        from pyramid.interfaces import IRootFactory\n    \n        config = self._makeOne()\n        config.set_root_factory('tests.test_config.dummyfactory')\n        self.assertEqual(config.registry.queryUtility(IRootFactory), None)\n        config.commit()\n>       self.assertEqual(\n            config.registry.getUtility(IRootFactory), dummyfactory\n        )\nE       AssertionError: <function dummyfactory at 0x708a51ff5280> != <function dummyfactory at 0x708a525fbee0>\n\nr2e_tests/test_config/test_factories.py:77: AssertionError\n____________ TestFactoriesMixin.test_set_session_factory_dottedname ____________\n\nself = <r2e_tests.test_config.test_factories.TestFactoriesMixin testMethod=test_set_session_factory_dottedname>\n\n    def test_set_session_factory_dottedname(self):\n        from pyramid.interfaces import ISessionFactory\n    \n        config = self._makeOne()\n        config.set_session_factory('tests.test_config.dummyfactory')\n        self.assertEqual(config.registry.queryUtility(ISessionFactory), None)\n        config.commit()\n>       self.assertEqual(\n            config.registry.getUtility(ISessionFactory), dummyfactory\n        )\nE       AssertionError: <function dummyfactory at 0x708a51ff5280> != <function dummyfactory at 0x708a525fbee0>\n\nr2e_tests/test_config/test_factories.py:99: AssertionError\n_________ TestI18NConfiguratorMixin.test_add_translation_dirs_abspath __________\n\nself = <r2e_tests.test_config.test_i18n.TestI18NConfiguratorMixin testMethod=test_add_translation_dirs_abspath>\n\n    def test_add_translation_dirs_abspath(self):\n        from pyramid.interfaces import ITranslationDirectories\n    \n        config = self._makeOne(autocommit=True)\n>       config.add_translation_dirs(locale)\n\nr2e_tests/test_config/test_i18n.py:131: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \nsrc/pyramid/config/actions.py:573: in wrapper\n    result = wrapped(self, *arg, **kw)\nsrc/pyramid/config/i18n.py:127: in add_translation_dirs\n    self.action(None, register, introspectables=introspectables)\nsrc/pyramid/config/actions.py:95: in action\n    callable(*args, **kw)\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\n    def register():\n        directories = []\n        resolver = AssetResolver(self.package_name)\n    \n        # defer spec resolution until register to allow for asset\n        # overrides to take place in an earlier config phase\n        for spec in specs:\n            # the trailing slash helps match asset overrides for folders\n            if not spec.endswith('/'):\n                spec += '/'\n            asset = resolver.resolve(spec)\n            directory = asset.abspath()\n            if not asset.isdir():\n>               raise ConfigurationError(\n                    '\"%s\" is not a directory' % directory\n                )\nE               pyramid.exceptions.ConfigurationError: \"/home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/r2e_tests/pkgs/localeapp/locale\" is not a directory\n\nsrc/pyramid/config/i18n.py:103: ConfigurationError\n________ TestI18NConfiguratorMixin.test_add_translation_dirs_asset_spec ________\n\nself = <r2e_tests.test_config.test_i18n.TestI18NConfiguratorMixin testMethod=test_add_translation_dirs_asset_spec>\n\n    def test_add_translation_dirs_asset_spec(self):\n        from pyramid.interfaces import ITranslationDirectories\n    \n        config = self._makeOne(autocommit=True)\n        config.add_translation_dirs('tests.pkgs.localeapp:locale')\n>       self.assertEqual(\n            config.registry.getUtility(ITranslationDirectories), [locale]\n        )\nE       AssertionError: Lists differ: ['/ho[66 chars]28bf74e1c6c3ea085fdf9beeb2586/tests/pkgs/localeapp/locale'] != ['/ho[66 chars]28bf74e1c6c3ea085fdf9beeb2586/r2e_tests/pkgs/localeapp/locale']\nE       \nE       First differing element 0:\nE       '/hom[64 chars]028bf74e1c6c3ea085fdf9beeb2586/tests/pkgs/localeapp/locale'\nE       '/hom[64 chars]028bf74e1c6c3ea085fdf9beeb2586/r2e_tests/pkgs/localeapp/locale'\nE       \nE       - ['/home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/tests/pkgs/localeapp/locale']\nE       + ['/home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/r2e_tests/pkgs/localeapp/locale']\nE       ?                                                                                                      ++++\n\nr2e_tests/test_config/test_i18n.py:68: AssertionError\n_ TestI18NConfiguratorMixin.test_add_translation_dirs_asset_spec_existing_translation_dirs _\n\nself = <r2e_tests.test_config.test_i18n.TestI18NConfiguratorMixin testMethod=test_add_translation_dirs_asset_spec_existing_translation_dirs>\n\n    def test_add_translation_dirs_asset_spec_existing_translation_dirs(self):\n        from pyramid.interfaces import ITranslationDirectories\n    \n        config = self._makeOne(autocommit=True)\n        directories = ['abc']\n        config.registry.registerUtility(directories, ITranslationDirectories)\n        config.add_translation_dirs('tests.pkgs.localeapp:locale')\n        result = config.registry.getUtility(ITranslationDirectories)\n>       self.assertEqual(result, [locale, 'abc'])\nE       AssertionError: Lists differ: ['/ho[73 chars]1c6c3ea085fdf9beeb2586/tests/pkgs/localeapp/locale', 'abc'] != ['/ho[73 chars]1c6c3ea085fdf9beeb2586/r2e_tests/pkgs/localeapp/locale', 'abc']\nE       \nE       First differing element 0:\nE       '/hom[64 chars]028bf74e1c6c3ea085fdf9beeb2586/tests/pkgs/localeapp/locale'\nE       '/hom[64 chars]028bf74e1c6c3ea085fdf9beeb2586/r2e_tests/pkgs/localeapp/locale'\nE       \nE       - ['/home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/tests/pkgs/localeapp/locale',\nE       + ['/home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/r2e_tests/pkgs/localeapp/locale',\nE       ?                                                                                                      ++++\nE       \nE          'abc']\n\nr2e_tests/test_config/test_i18n.py:80: AssertionError\n_ TestI18NConfiguratorMixin.test_add_translation_dirs_doesnt_use_override_w_autocommit _\n\nself = <r2e_tests.test_config.test_i18n.TestI18NConfiguratorMixin testMethod=test_add_translation_dirs_doesnt_use_override_w_autocommit>\n\n    def test_add_translation_dirs_doesnt_use_override_w_autocommit(self):\n        from pyramid.interfaces import ITranslationDirectories\n    \n        config = self._makeOne(autocommit=True)\n        config.add_translation_dirs('tests.pkgs.localeapp:locale')\n        config.override_asset(\n            'tests.pkgs.localeapp:locale/', 'tests.pkgs.localeapp:locale2/'\n        )\n>       self.assertEqual(\n            config.registry.getUtility(ITranslationDirectories), [locale]\n        )\nE       AssertionError: Lists differ: ['/ho[66 chars]28bf74e1c6c3ea085fdf9beeb2586/tests/pkgs/localeapp/locale'] != ['/ho[66 chars]28bf74e1c6c3ea085fdf9beeb2586/r2e_tests/pkgs/localeapp/locale']\nE       \nE       First differing element 0:\nE       '/hom[64 chars]028bf74e1c6c3ea085fdf9beeb2586/tests/pkgs/localeapp/locale'\nE       '/hom[64 chars]028bf74e1c6c3ea085fdf9beeb2586/r2e_tests/pkgs/localeapp/locale'\nE       \nE       - ['/home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/tests/pkgs/localeapp/locale']\nE       + ['/home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/r2e_tests/pkgs/localeapp/locale']\nE       ?                                                                                                      ++++\n\nr2e_tests/test_config/test_i18n.py:157: AssertionError\n______ TestI18NConfiguratorMixin.test_add_translation_dirs_multiple_specs ______\n\nself = <r2e_tests.test_config.test_i18n.TestI18NConfiguratorMixin testMethod=test_add_translation_dirs_multiple_specs>\n\n    def test_add_translation_dirs_multiple_specs(self):\n        from pyramid.interfaces import ITranslationDirectories\n    \n        config = self._makeOne(autocommit=True)\n        config.add_translation_dirs(\n            'tests.pkgs.localeapp:locale', 'tests.pkgs.localeapp:locale2'\n        )\n>       self.assertEqual(\n            config.registry.getUtility(ITranslationDirectories),\n            [locale, locale2],\n        )\nE       AssertionError: Lists differ: ['/ho[91 chars]2586/tests/pkgs/localeapp/locale', '/home/gcpu[114 chars]le2'] != ['/ho[91 chars]2586/r2e_tests/pkgs/localeapp/locale', '/home/[122 chars]le2']\nE       \nE       First differing element 0:\nE       '/hom[64 chars]028bf74e1c6c3ea085fdf9beeb2586/tests/pkgs/localeapp/locale'\nE       '/hom[64 chars]028bf74e1c6c3ea085fdf9beeb2586/r2e_tests/pkgs/localeapp/locale'\nE       \nE       Diff is 760 characters long. Set self.maxDiff to None to see it.\n\nr2e_tests/test_config/test_i18n.py:89: AssertionError\n_ TestI18NConfiguratorMixin.test_add_translation_dirs_multiple_specs_multiple_calls _\n\nself = <r2e_tests.test_config.test_i18n.TestI18NConfiguratorMixin testMethod=test_add_translation_dirs_multiple_specs_multiple_calls>\n\n    def test_add_translation_dirs_multiple_specs_multiple_calls(self):\n        from pyramid.interfaces import ITranslationDirectories\n    \n        config = self._makeOne(autocommit=True)\n        config.add_translation_dirs(\n            'tests.pkgs.localeapp:locale', 'tests.pkgs.localeapp:locale2'\n        )\n        config.add_translation_dirs('tests.pkgs.localeapp:locale3')\n>       self.assertEqual(\n            config.registry.getUtility(ITranslationDirectories),\n            [locale3, locale, locale2],\n        )\nE       AssertionError: Lists differ: ['/ho[91 chars]2586/tests/pkgs/localeapp/locale3', '/home/gcp[245 chars]le2'] != ['/ho[91 chars]2586/r2e_tests/pkgs/localeapp/locale3', '/home[257 chars]le2']\nE       \nE       First differing element 0:\nE       '/hom[65 chars]28bf74e1c6c3ea085fdf9beeb2586/tests/pkgs/localeapp/locale3'\nE       '/hom[65 chars]28bf74e1c6c3ea085fdf9beeb2586/r2e_tests/pkgs/localeapp/locale3'\nE       \nE       Diff is 1141 characters long. Set self.maxDiff to None to see it.\n\nr2e_tests/test_config/test_i18n.py:102: AssertionError\n_ TestI18NConfiguratorMixin.test_add_translation_dirs_override_multiple_specs_multiple_calls _\n\nself = <r2e_tests.test_config.test_i18n.TestI18NConfiguratorMixin testMethod=test_add_translation_dirs_override_multiple_specs_multiple_calls>\n\n    def test_add_translation_dirs_override_multiple_specs_multiple_calls(self):\n        from pyramid.interfaces import ITranslationDirectories\n    \n        config = self._makeOne(autocommit=True)\n        config.add_translation_dirs(\n            'tests.pkgs.localeapp:locale', 'tests.pkgs.localeapp:locale2'\n        )\n        config.add_translation_dirs(\n            'tests.pkgs.localeapp:locale3', override=True\n        )\n>       self.assertEqual(\n            config.registry.getUtility(ITranslationDirectories),\n            [locale, locale2, locale3],\n        )\nE       AssertionError: Lists differ: ['/ho[91 chars]2586/tests/pkgs/localeapp/locale', '/home/gcpu[245 chars]le3'] != ['/ho[91 chars]2586/r2e_tests/pkgs/localeapp/locale', '/home/[257 chars]le3']\nE       \nE       First differing element 0:\nE       '/hom[64 chars]028bf74e1c6c3ea085fdf9beeb2586/tests/pkgs/localeapp/locale'\nE       '/hom[64 chars]028bf74e1c6c3ea085fdf9beeb2586/r2e_tests/pkgs/localeapp/locale'\nE       \nE       Diff is 1141 characters long. Set self.maxDiff to None to see it.\n\nr2e_tests/test_config/test_i18n.py:117: AssertionError\n_ TestI18NConfiguratorMixin.test_add_translation_dirs_uses_override_out_of_order _\n\nself = <r2e_tests.test_config.test_i18n.TestI18NConfiguratorMixin testMethod=test_add_translation_dirs_uses_override_out_of_order>\n\n    def test_add_translation_dirs_uses_override_out_of_order(self):\n        from pyramid.interfaces import ITranslationDirectories\n    \n        config = self._makeOne()\n        config.add_translation_dirs('tests.pkgs.localeapp:locale')\n        config.override_asset(\n            'tests.pkgs.localeapp:locale/', 'tests.pkgs.localeapp:locale2/'\n        )\n        config.commit()\n>       self.assertEqual(\n            config.registry.getUtility(ITranslationDirectories), [locale2]\n        )\nE       AssertionError: Lists differ: ['/ho[67 chars]8bf74e1c6c3ea085fdf9beeb2586/tests/pkgs/localeapp/locale2'] != ['/ho[67 chars]8bf74e1c6c3ea085fdf9beeb2586/r2e_tests/pkgs/localeapp/locale2']\nE       \nE       First differing element 0:\nE       '/hom[65 chars]28bf74e1c6c3ea085fdf9beeb2586/tests/pkgs/localeapp/locale2'\nE       '/hom[65 chars]28bf74e1c6c3ea085fdf9beeb2586/r2e_tests/pkgs/localeapp/locale2'\nE       \nE       - ['/home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/tests/pkgs/localeapp/locale2']\nE       + ['/home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/r2e_tests/pkgs/localeapp/locale2']\nE       ?                                                                                                      ++++\n\nr2e_tests/test_config/test_i18n.py:145: AssertionError\n_ TestI18NConfiguratorMixin.test_add_translation_dirs_uses_override_w_autocommit _\n\nself = <r2e_tests.test_config.test_i18n.TestI18NConfiguratorMixin testMethod=test_add_translation_dirs_uses_override_w_autocommit>\n\n    def test_add_translation_dirs_uses_override_w_autocommit(self):\n        from pyramid.interfaces import ITranslationDirectories\n    \n        config = self._makeOne(autocommit=True)\n        config.override_asset(\n            'tests.pkgs.localeapp:locale/', 'tests.pkgs.localeapp:locale2/'\n        )\n        config.add_translation_dirs('tests.pkgs.localeapp:locale')\n>       self.assertEqual(\n            config.registry.getUtility(ITranslationDirectories), [locale2]\n        )\nE       AssertionError: Lists differ: ['/ho[67 chars]8bf74e1c6c3ea085fdf9beeb2586/tests/pkgs/localeapp/locale2'] != ['/ho[67 chars]8bf74e1c6c3ea085fdf9beeb2586/r2e_tests/pkgs/localeapp/locale2']\nE       \nE       First differing element 0:\nE       '/hom[65 chars]28bf74e1c6c3ea085fdf9beeb2586/tests/pkgs/localeapp/locale2'\nE       '/hom[65 chars]28bf74e1c6c3ea085fdf9beeb2586/r2e_tests/pkgs/localeapp/locale2'\nE       \nE       - ['/home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/tests/pkgs/localeapp/locale2']\nE       + ['/home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/r2e_tests/pkgs/localeapp/locale2']\nE       ?                                                                                                      ++++\n\nr2e_tests/test_config/test_i18n.py:169: AssertionError\n_______ TestI18NConfiguratorMixin.test_set_locale_negotiator_dottedname ________\n\nself = <r2e_tests.test_config.test_i18n.TestI18NConfiguratorMixin testMethod=test_set_locale_negotiator_dottedname>\n\n    def test_set_locale_negotiator_dottedname(self):\n        from pyramid.interfaces import ILocaleNegotiator\n    \n        config = self._makeOne(autocommit=True)\n        config.set_locale_negotiator('tests.test_config.dummyfactory')\n>       self.assertEqual(\n            config.registry.getUtility(ILocaleNegotiator), dummyfactory\n        )\nE       AssertionError: <function dummyfactory at 0x708a51ff5280> != <function dummyfactory at 0x708a525fbee0>\n\nr2e_tests/test_config/test_i18n.py:43: AssertionError\n___________________ ConfiguratorTests.test_ctor_no_registry ____________________\n\nself = <r2e_tests.test_config.test_init.ConfiguratorTests testMethod=test_ctor_no_registry>\n\n    def test_ctor_no_registry(self):\n        import sys\n        from pyramid.interfaces import ISettings\n        from pyramid.config import Configurator\n        from pyramid.interfaces import IRendererFactory\n    \n        config = Configurator()\n        this_pkg = sys.modules['tests.test_config']\n        self.assertTrue(config.registry.getUtility(ISettings))\n>       self.assertEqual(config.package, this_pkg)\nE       AssertionError: <module 'r2e_tests.test_config' from '/home/gcpuse[117 chars].py'> != <module 'tests.test_config' from '/home/gcpuser/bu[109 chars].py'>\n\nr2e_tests/test_config/test_init.py:73: AssertionError\n_________ ConfiguratorTests.test_ctor_noreg_debug_logger_None_default __________\n\nself = <r2e_tests.test_config.test_init.ConfiguratorTests testMethod=test_ctor_noreg_debug_logger_None_default>\n\n    def test_ctor_noreg_debug_logger_None_default(self):\n        from pyramid.interfaces import IDebugLogger\n    \n        config = self._makeOne()\n        logger = config.registry.getUtility(IDebugLogger)\n>       self.assertEqual(logger.name, 'tests.test_config')\nE       AssertionError: 'r2e_tests.test_config' != 'tests.test_config'\nE       - r2e_tests.test_config\nE       ? ----\nE       + tests.test_config\n\nr2e_tests/test_config/test_init.py:198: AssertionError\n_____________ ConfiguratorTests.test_include_constant_root_package _____________\n\nself = <r2e_tests.test_config.test_init.ConfiguratorTests testMethod=test_include_constant_root_package>\n\n    def test_include_constant_root_package(self):\n        import tests\n        from tests import test_config\n    \n        config = self._makeOne(root_package=tests)\n        results = {}\n    \n        def include(config):\n            results['package'] = config.package\n            results['root_package'] = config.root_package\n    \n        config.include(include)\n        self.assertEqual(results['root_package'], tests)\n>       self.assertEqual(results['package'], test_config)\nE       AssertionError: <module 'r2e_tests.test_config' from '/home/gcpuse[117 chars].py'> != <module 'tests.test_config' from '/home/gcpuser/bu[109 chars].py'>\n\nr2e_tests/test_config/test_init.py:957: AssertionError\n_____________ ConfiguratorTests.test_include_with_python_callable ______________\n\nself = <r2e_tests.test_config.test_init.ConfiguratorTests testMethod=test_include_with_python_callable>\n\n    def test_include_with_python_callable(self):\n        from tests import test_config\n    \n        config = self._makeOne()\n        config.include(dummy_include)\n        after = config.action_state\n        actions = after.actions\n        self.assertEqual(len(actions), 1)\n        action = actions[0]\n        self.assertEqual(action['discriminator'], 'discrim')\n        self.assertEqual(action['callable'], None)\n>       self.assertEqual(action['args'], test_config)\nE       AssertionError: <module 'r2e_tests.test_config' from '/home/gcpuse[117 chars].py'> != <module 'tests.test_config' from '/home/gcpuser/bu[109 chars].py'>\n\nr2e_tests/test_config/test_init.py:870: AssertionError\n_______ ConfiguratorTests.test_setup_registry_debug_logger_None_default ________\n\nself = <r2e_tests.test_config.test_init.ConfiguratorTests testMethod=test_setup_registry_debug_logger_None_default>\n\n    def test_setup_registry_debug_logger_None_default(self):\n        from pyramid.registry import Registry\n        from pyramid.interfaces import IDebugLogger\n    \n        reg = Registry()\n        config = self._makeOne(reg)\n        config.setup_registry()\n        logger = reg.getUtility(IDebugLogger)\n>       self.assertEqual(logger.name, 'tests.test_config')\nE       AssertionError: 'r2e_tests.test_config' != 'tests.test_config'\nE       - r2e_tests.test_config\nE       ? ----\nE       + tests.test_config\n\nr2e_tests/test_config/test_init.py:586: AssertionError\n_________________ ConfiguratorTests.test_setup_registry_tweens _________________\n\nself = <r2e_tests.test_config.test_init.ConfiguratorTests testMethod=test_setup_registry_tweens>\n\n    def test_setup_registry_tweens(self):\n        from pyramid.interfaces import ITweens\n        from pyramid.registry import Registry\n    \n        reg = Registry()\n        config = self._makeOne(reg)\n        settings = {'pyramid.tweens': 'tests.test_config.dummy_tween_factory'}\n        config.setup_registry(settings=settings)\n        config.commit()\n        tweens = config.registry.getUtility(ITweens)\n>       self.assertEqual(\n            tweens.explicit,\n            [('tests.test_config.dummy_tween_factory', dummy_tween_factory)],\n        )\nE       AssertionError: Lists differ: [('te[25 chars]en_factory', <function dummy_tween_factory at 0x708a51ff5820>)] != [('te[25 chars]en_factory', <function dummy_tween_factory at 0x708a525fbb80>)]\nE       \nE       First differing element 0:\nE       ('tes[23 chars]een_factory', <function dummy_tween_factory at 0x708a51ff5820>)\nE       ('tes[23 chars]een_factory', <function dummy_tween_factory at 0x708a525fbb80>)\nE       \nE         [('tests.test_config.dummy_tween_factory',\nE       -   <function dummy_tween_factory at 0x708a51ff5820>)]\nE       ?                                           ^ ^^ -\nE       \nE       +   <function dummy_tween_factory at 0x708a525fbb80>)]\nE       ?                                           ^^ ^^\n\nr2e_tests/test_config/test_init.py:807: AssertionError\n__________________ ConfiguratorTests.test_with_package_module __________________\n\nself = <r2e_tests.test_config.test_init.ConfiguratorTests testMethod=test_with_package_module>\n\n    def test_with_package_module(self):\n        from . import test_init\n    \n        config = self._makeOne()\n        newconfig = config.with_package(test_init)\n        import tests.test_config\n    \n>       self.assertEqual(newconfig.package, tests.test_config)\nE       AssertionError: <module 'r2e_tests.test_config' from '/home/gcpuse[117 chars].py'> != <module 'tests.test_config' from '/home/gcpuser/bu[109 chars].py'>\n\nr2e_tests/test_config/test_init.py:348: AssertionError\n____ TestConfigurator_add_directive.test_add_directive_with_custom_callable ____\n\nself = <r2e_tests.test_config.test_init.TestConfigurator_add_directive testMethod=test_add_directive_with_custom_callable>\n\n    def test_add_directive_with_custom_callable(self):\n        from tests import test_config\n    \n        config = self.config\n        config.add_directive(\n            'dummy_callable', 'tests.test_config.dummy_callable'\n        )\n        self.assertTrue(hasattr(config, 'dummy_callable'))\n        config.dummy_callable('discrim')\n        after = config.action_state\n        action = after.actions[-1]\n        self.assertEqual(action['discriminator'], 'discrim')\n        self.assertEqual(action['callable'], None)\n>       self.assertEqual(action['args'], test_config)\nE       AssertionError: <module 'r2e_tests.test_config' from '/home/gcpuse[117 chars].py'> != <module 'tests.test_config' from '/home/gcpuser/bu[109 chars].py'>\n\nr2e_tests/test_config/test_init.py:1276: AssertionError\n________ TestConfigurator_add_directive.test_add_directive_with_partial ________\n\nself = <r2e_tests.test_config.test_init.TestConfigurator_add_directive testMethod=test_add_directive_with_partial>\n\n    def test_add_directive_with_partial(self):\n        from tests import test_config\n    \n        config = self.config\n        config.add_directive(\n            'dummy_partial', 'tests.test_config.dummy_partial'\n        )\n        self.assertTrue(hasattr(config, 'dummy_partial'))\n        config.dummy_partial()\n        after = config.action_state\n        action = after.actions[-1]\n        self.assertEqual(action['discriminator'], 'partial')\n        self.assertEqual(action['callable'], None)\n>       self.assertEqual(action['args'], test_config)\nE       AssertionError: <module 'r2e_tests.test_config' from '/home/gcpuse[117 chars].py'> != <module 'tests.test_config' from '/home/gcpuser/bu[109 chars].py'>\n\nr2e_tests/test_config/test_init.py:1261: AssertionError\n_________ TestConfigurator_add_directive.test_extend_with_dotted_name __________\n\nself = <r2e_tests.test_config.test_init.TestConfigurator_add_directive testMethod=test_extend_with_dotted_name>\n\n    def test_extend_with_dotted_name(self):\n        from tests import test_config\n    \n        config = self.config\n        config.add_directive('dummy_extend', 'tests.test_config.dummy_extend')\n        self.assertTrue(hasattr(config, 'dummy_extend'))\n        config.dummy_extend('discrim')\n        after = config.action_state\n        action = after.actions[-1]\n        self.assertEqual(action['discriminator'], 'discrim')\n        self.assertEqual(action['callable'], None)\n>       self.assertEqual(action['args'], test_config)\nE       AssertionError: <module 'r2e_tests.test_config' from '/home/gcpuse[117 chars].py'> != <module 'tests.test_config' from '/home/gcpuser/bu[109 chars].py'>\n\nr2e_tests/test_config/test_init.py:1246: AssertionError\n_______ TestConfigurator_add_directive.test_extend_with_python_callable ________\n\nself = <r2e_tests.test_config.test_init.TestConfigurator_add_directive testMethod=test_extend_with_python_callable>\n\n    def test_extend_with_python_callable(self):\n        from tests import test_config\n    \n        config = self.config\n        config.add_directive('dummy_extend', dummy_extend)\n        self.assertTrue(hasattr(config, 'dummy_extend'))\n        config.dummy_extend('discrim')\n        after = config.action_state\n        action = after.actions[-1]\n        self.assertEqual(action['discriminator'], 'discrim')\n        self.assertEqual(action['callable'], None)\n>       self.assertEqual(action['args'], test_config)\nE       AssertionError: <module 'r2e_tests.test_config' from '/home/gcpuse[117 chars].py'> != <module 'tests.test_config' from '/home/gcpuser/bu[109 chars].py'>\n\nr2e_tests/test_config/test_init.py:1289: AssertionError\n_________ TestConfigurator__add_predicate.test_factory_as_dotted_name __________\n\nself = <r2e_tests.test_config.test_init.TestConfigurator__add_predicate testMethod=test_factory_as_dotted_name>\n\n    def test_factory_as_dotted_name(self):\n        config = self._makeOne()\n    \n        def _fakeAction(\n            discriminator,\n            callable=None,\n            args=(),\n            kw=None,\n            order=0,\n            introspectables=(),\n            **extra\n        ):\n            self.assertEqual(len(introspectables), 1)\n            self.assertEqual(introspectables[0]['name'], 'testing')\n            self.assertEqual(introspectables[0]['factory'], DummyPredicate)\n    \n        config.action = _fakeAction\n>       config._add_predicate(\n            'route', 'testing', 'tests.test_config.test_init.DummyPredicate'\n        )\n\nr2e_tests/test_config/test_init.py:1366: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \nsrc/pyramid/config/predicates.py:49: in _add_predicate\n    self.action(\nr2e_tests/test_config/test_init.py:1363: in _fakeAction\n    self.assertEqual(introspectables[0]['factory'], DummyPredicate)\nE   AssertionError: <class 'tests.test_config.test_init.DummyPredicate'> != <class 'r2e_tests.test_config.test_init.DummyPredicate'>\n_____ RoutesConfiguratorMixinTests.test_add_route_with_factory_dottedname ______\n\nself = <r2e_tests.test_config.test_routes.RoutesConfiguratorMixinTests testMethod=test_add_route_with_factory_dottedname>\n\n    def test_add_route_with_factory_dottedname(self):\n        config = self._makeOne(autocommit=True)\n        config.add_route(\n            'name', 'path', factory='tests.test_config.dummyfactory'\n        )\n        route = self._assertRoute(config, 'name', 'path')\n>       self.assertEqual(route.factory, dummyfactory)\nE       AssertionError: <function dummyfactory at 0x708a51ff5280> != <function dummyfactory at 0x708a525fbee0>\n\nr2e_tests/test_config/test_routes.py:108: AssertionError\n_____ TestingConfiguratorMixinTests.test_testing_add_subscriber_dottedname _____\n\nself = <r2e_tests.test_config.test_testing.TestingConfiguratorMixinTests testMethod=test_testing_add_subscriber_dottedname>\n\n    def test_testing_add_subscriber_dottedname(self):\n        config = self._makeOne(autocommit=True)\n        L = config.testing_add_subscriber('tests.test_config.IDummy')\n        event = DummyEvent()\n        config.registry.notify(event)\n>       self.assertEqual(len(L), 1)\nE       AssertionError: 0 != 1\n\nr2e_tests/test_config/test_testing.py:106: AssertionError\n__________ TestingConfiguratorMixinTests.test_testing_securitypolicy ___________\n\nself = <r2e_tests.test_config.test_testing.TestingConfiguratorMixinTests testMethod=test_testing_securitypolicy>\n\n    def test_testing_securitypolicy(self):\n        from pyramid.testing import DummySecurityPolicy\n    \n        config = self._makeOne(autocommit=True)\n        config.testing_securitypolicy('user', permissive=False)\n        from pyramid.interfaces import ISecurityPolicy\n    \n        policy = config.registry.getUtility(ISecurityPolicy)\n        self.assertTrue(isinstance(policy, DummySecurityPolicy))\n>       self.assertEqual(policy.identity, 'user')\nE       AssertionError: None != 'user'\n\nr2e_tests/test_config/test_testing.py:25: AssertionError\n____________ TestTweensConfiguratorMixin.test_add_tween_dottedname _____________\n\nself = <r2e_tests.test_config.test_tweens.TestTweensConfiguratorMixin testMethod=test_add_tween_dottedname>\n\n    def test_add_tween_dottedname(self):\n        from pyramid.interfaces import ITweens\n        from pyramid.tweens import excview_tween_factory\n    \n        config = self._makeOne()\n        config.add_tween('tests.test_config.dummy_tween_factory')\n        config.commit()\n        tweens = config.registry.queryUtility(ITweens)\n>       self.assertEqual(\n            tweens.implicit(),\n            [\n                ('tests.test_config.dummy_tween_factory', dummy_tween_factory),\n                (\n                    'pyramid.tweens.excview_tween_factory',\n                    excview_tween_factory,\n                ),\n            ],\n        )\nE       AssertionError: Lists differ: [('te[73 chars]708a51ff5820>), ('pyramid.tweens.excview_tween[58 chars]30>)] != [('te[73 chars]708a525fbb80>), ('pyramid.tweens.excview_tween[58 chars]30>)]\nE       \nE       First differing element 0:\nE       ('tes[23 chars]een_factory', <function dummy_tween_factory at 0x708a51ff5820>)\nE       ('tes[23 chars]een_factory', <function dummy_tween_factory at 0x708a525fbb80>)\nE       \nE         [('tests.test_config.dummy_tween_factory',\nE       -   <function dummy_tween_factory at 0x708a51ff5820>),\nE       ?                                           ^ ^^ -\nE       \nE       +   <function dummy_tween_factory at 0x708a525fbb80>),\nE       ?                                           ^^ ^^\nE       \nE          ('pyramid.tweens.excview_tween_factory',\nE           <function excview_tween_factory at 0x708a531f7430>)]\n\nr2e_tests/test_config/test_tweens.py:107: AssertionError\n__________ TestTweensConfiguratorMixin.test_add_tweens_names_distinct __________\n\nself = <r2e_tests.test_config.test_tweens.TestTweensConfiguratorMixin testMethod=test_add_tweens_names_distinct>\n\n    def test_add_tweens_names_distinct(self):\n        from pyramid.interfaces import ITweens\n        from pyramid.tweens import excview_tween_factory\n    \n        def factory1(handler, registry):  # pragma: no cover\n            return handler\n    \n        def factory2(handler, registry):  # pragma: no cover\n            return handler\n    \n        config = self._makeOne()\n        config.add_tween('tests.test_config.dummy_tween_factory')\n        config.add_tween('tests.test_config.dummy_tween_factory2')\n        config.commit()\n        tweens = config.registry.queryUtility(ITweens)\n        implicit = tweens.implicit()\n>       self.assertEqual(\n            implicit,\n            [\n                (\n                    'tests.test_config.dummy_tween_factory2',\n                    dummy_tween_factory2,\n                ),\n                ('tests.test_config.dummy_tween_factory', dummy_tween_factory),\n                (\n                    'pyramid.tweens.excview_tween_factory',\n                    excview_tween_factory,\n                ),\n            ],\n        )\nE       AssertionError: Lists differ: [('te[75 chars]708a51ff5f70>), ('tests.test_config.dummy_twee[151 chars]30>)] != [('te[75 chars]708a525fbc10>), ('tests.test_config.dummy_twee[151 chars]30>)]\nE       \nE       First differing element 0:\nE       ('tes[25 chars]n_factory2', <function dummy_tween_factory2 at 0x708a51ff5f70>)\nE       ('tes[25 chars]n_factory2', <function dummy_tween_factory2 at 0x708a525fbc10>)\nE       \nE         [('tests.test_config.dummy_tween_factory2',\nE       -   <function dummy_tween_factory2 at 0x708a51ff5f70>),\nE       ?                                            ^^^  ^\nE       \nE       +   <function dummy_tween_factory2 at 0x708a525fbc10>),\nE       ?                                            ^  ^^^\nE       \nE          ('tests.test_config.dummy_tween_factory',\nE       -   <function dummy_tween_factory at 0x708a51ff5820>),\nE       ?                                           ^ ^^ -\nE       \nE       +   <function dummy_tween_factory at 0x708a525fbb80>),\nE       ?                                           ^^ ^^\nE       \nE          ('pyramid.tweens.excview_tween_factory',\nE           <function excview_tween_factory at 0x708a531f7430>)]\n\nr2e_tests/test_config/test_tweens.py:32: AssertionError\n_______ TestTweensConfiguratorMixin.test_add_tweens_names_with_underover _______\n\nself = <r2e_tests.test_config.test_tweens.TestTweensConfiguratorMixin testMethod=test_add_tweens_names_with_underover>\n\n    def test_add_tweens_names_with_underover(self):\n        from pyramid.interfaces import ITweens\n        from pyramid.tweens import excview_tween_factory\n        from pyramid.tweens import MAIN\n    \n        config = self._makeOne()\n        config.add_tween('tests.test_config.dummy_tween_factory', over=MAIN)\n        config.add_tween(\n            'tests.test_config.dummy_tween_factory2',\n            over=MAIN,\n            under='tests.test_config.dummy_tween_factory',\n        )\n        config.commit()\n        tweens = config.registry.queryUtility(ITweens)\n        implicit = tweens.implicit()\n>       self.assertEqual(\n            implicit,\n            [\n                (\n                    'pyramid.tweens.excview_tween_factory',\n                    excview_tween_factory,\n                ),\n                ('tests.test_config.dummy_tween_factory', dummy_tween_factory),\n                (\n                    'tests.test_config.dummy_tween_factory2',\n                    dummy_tween_factory2,\n                ),\n            ],\n        )\nE       AssertionError: Lists differ: [('py[167 chars]708a51ff5820>), ('tests.test_config.dummy_twee[59 chars]70>)] != [('py[167 chars]708a525fbb80>), ('tests.test_config.dummy_twee[59 chars]10>)]\nE       \nE       First differing element 1:\nE       ('tes[23 chars]een_factory', <function dummy_tween_factory at 0x708a51ff5820>)\nE       ('tes[23 chars]een_factory', <function dummy_tween_factory at 0x708a525fbb80>)\nE       \nE         [('pyramid.tweens.excview_tween_factory',\nE           <function excview_tween_factory at 0x708a531f7430>),\nE          ('tests.test_config.dummy_tween_factory',\nE       -   <function dummy_tween_factory at 0x708a51ff5820>),\nE       ?                                           ^ ^^ -\nE       \nE       +   <function dummy_tween_factory at 0x708a525fbb80>),\nE       ?                                           ^^ ^^\nE       \nE          ('tests.test_config.dummy_tween_factory2',\nE       -   <function dummy_tween_factory2 at 0x708a51ff5f70>)]\nE       ?                                            ^^^  ^\nE       \nE       +   <function dummy_tween_factory2 at 0x708a525fbc10>)]\nE       ?                                            ^  ^^^\n\nr2e_tests/test_config/test_tweens.py:62: AssertionError\n____ TestViewsConfigurationMixin.test_add_exception_view_with_view_defaults ____\n\nself = <r2e_tests.test_config.test_views.TestViewsConfigurationMixin testMethod=test_add_exception_view_with_view_defaults>\n\n    def test_add_exception_view_with_view_defaults(self):\n        from pyramid.renderers import null_renderer\n        from pyramid.exceptions import PredicateMismatch\n        from zope.interface import directlyProvides\n        from zope.interface import implementedBy\n    \n        class view(object):\n            __view_defaults__ = {'containment': 'tests.test_config.IDummy'}\n    \n            def __init__(self, request):\n                pass\n    \n            def __call__(self):\n                return 'OK'\n    \n        config = self._makeOne(autocommit=True)\n        config.add_exception_view(\n            view=view, context=Exception, renderer=null_renderer\n        )\n        wrapper = self._getViewCallable(\n            config, exc_iface=implementedBy(Exception)\n        )\n        context = DummyContext()\n        directlyProvides(context, IDummy)\n        request = self._makeRequest(config)\n>       self.assertEqual(wrapper(context, request), 'OK')\n\nr2e_tests/test_config/test_views.py:2383: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \nsrc/pyramid/config/views.py:184: in attr_view\n    return view(context, request)\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\ncontext = <r2e_tests.test_config.test_views.DummyContext object at 0x708a51d4a0d0>\nrequest = <r2e_tests.test_config.test_views.DummyRequest object at 0x708a525a31f0>\n\n    def predicate_wrapper(context, request):\n        for predicate in preds:\n            if not predicate(context, request):\n                view_name = getattr(view, '__name__', view)\n>               raise PredicateMismatch(\n                    'predicate mismatch for view %s (%s)'\n                    % (view_name, predicate.text())\n                )\nE               pyramid.exceptions.PredicateMismatch: predicate mismatch for view view (containment = tests.test_config.IDummy)\n\nsrc/pyramid/config/views.py:206: PredicateMismatch\n____ TestViewsConfigurationMixin.test_add_forbidden_view_with_view_defaults ____\n\nself = <r2e_tests.test_config.test_views.TestViewsConfigurationMixin testMethod=test_add_forbidden_view_with_view_defaults>\n\n    def test_add_forbidden_view_with_view_defaults(self):\n        from pyramid.interfaces import IRequest\n        from pyramid.renderers import null_renderer\n        from pyramid.exceptions import PredicateMismatch\n        from pyramid.httpexceptions import HTTPForbidden\n        from zope.interface import directlyProvides\n        from zope.interface import implementedBy\n    \n        class view(object):\n            __view_defaults__ = {'containment': 'tests.test_config.IDummy'}\n    \n            def __init__(self, request):\n                pass\n    \n            def __call__(self):\n                return 'OK'\n    \n        config = self._makeOne(autocommit=True)\n        config.add_forbidden_view(view=view, renderer=null_renderer)\n        wrapper = self._getViewCallable(\n            config,\n            exc_iface=implementedBy(HTTPForbidden),\n            request_iface=IRequest,\n        )\n        context = DummyContext()\n        directlyProvides(context, IDummy)\n        request = self._makeRequest(config)\n>       self.assertEqual(wrapper(context, request), 'OK')\n\nr2e_tests/test_config/test_views.py:2608: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \nsrc/pyramid/config/views.py:184: in attr_view\n    return view(context, request)\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\ncontext = <r2e_tests.test_config.test_views.DummyContext object at 0x708a523f6580>\nrequest = <r2e_tests.test_config.test_views.DummyRequest object at 0x708a51aed640>\n\n    def predicate_wrapper(context, request):\n        for predicate in preds:\n            if not predicate(context, request):\n                view_name = getattr(view, '__name__', view)\n>               raise PredicateMismatch(\n                    'predicate mismatch for view %s (%s)'\n                    % (view_name, predicate.text())\n                )\nE               pyramid.exceptions.PredicateMismatch: predicate mismatch for view view (containment = tests.test_config.IDummy)\n\nsrc/pyramid/config/views.py:206: PredicateMismatch\n____ TestViewsConfigurationMixin.test_add_notfound_view_with_view_defaults _____\n\nself = <r2e_tests.test_config.test_views.TestViewsConfigurationMixin testMethod=test_add_notfound_view_with_view_defaults>\n\n    def test_add_notfound_view_with_view_defaults(self):\n        from pyramid.interfaces import IRequest\n        from pyramid.renderers import null_renderer\n        from pyramid.exceptions import PredicateMismatch\n        from pyramid.httpexceptions import HTTPNotFound\n        from zope.interface import directlyProvides\n        from zope.interface import implementedBy\n    \n        class view(object):\n            __view_defaults__ = {'containment': 'tests.test_config.IDummy'}\n    \n            def __init__(self, request):\n                pass\n    \n            def __call__(self):\n                return 'OK'\n    \n        config = self._makeOne(autocommit=True)\n        config.add_notfound_view(view=view, renderer=null_renderer)\n        wrapper = self._getViewCallable(\n            config,\n            exc_iface=implementedBy(HTTPNotFound),\n            request_iface=IRequest,\n        )\n        context = DummyContext()\n        directlyProvides(context, IDummy)\n        request = self._makeRequest(config)\n>       self.assertEqual(wrapper(context, request), 'OK')\n\nr2e_tests/test_config/test_views.py:2772: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \nsrc/pyramid/config/views.py:184: in attr_view\n    return view(context, request)\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\ncontext = <r2e_tests.test_config.test_views.DummyContext object at 0x708a51fd9550>\nrequest = <r2e_tests.test_config.test_views.DummyRequest object at 0x708a51d7a3d0>\n\n    def predicate_wrapper(context, request):\n        for predicate in preds:\n            if not predicate(context, request):\n                view_name = getattr(view, '__name__', view)\n>               raise PredicateMismatch(\n                    'predicate mismatch for view %s (%s)'\n                    % (view_name, predicate.text())\n                )\nE               pyramid.exceptions.PredicateMismatch: predicate mismatch for view view (containment = tests.test_config.IDummy)\n\nsrc/pyramid/config/views.py:206: PredicateMismatch\n____ TestViewsConfigurationMixin.test_add_static_view_package_here_relative ____\n\nself = <r2e_tests.test_config.test_views.TestViewsConfigurationMixin testMethod=test_add_static_view_package_here_relative>\n\n    def test_add_static_view_package_here_relative(self):\n        from pyramid.interfaces import IStaticURLInfo\n    \n        info = DummyStaticURLInfo()\n        config = self._makeOne(autocommit=True)\n        config.registry.registerUtility(info, IStaticURLInfo)\n        config.add_static_view('static', 'files')\n>       self.assertEqual(\n            info.added, [(config, 'static', 'tests.test_config:files', {})]\n        )\nE       AssertionError: Lists differ: [(<py[35 chars] 0x708a51949790>, 'static', 'r2e_tests.test_config:files', {})] != [(<py[35 chars] 0x708a51949790>, 'static', 'tests.test_config:files', {})]\nE       \nE       First differing element 0:\nE       (<pyr[33 chars]t 0x708a51949790>, 'static', 'r2e_tests.test_config:files', {})\nE       (<pyr[33 chars]t 0x708a51949790>, 'static', 'tests.test_config:files', {})\nE       \nE         [(<pyramid.config.Configurator object at 0x708a51949790>,\nE           'static',\nE       -   'r2e_tests.test_config:files',\nE       ?    ----\nE       \nE       +   'tests.test_config:files',\nE           {})]\n\nr2e_tests/test_config/test_views.py:2491: AssertionError\n_______ TestViewsConfigurationMixin.test_add_view_context_as_dottedname ________\n\nself = <r2e_tests.test_config.test_views.TestViewsConfigurationMixin testMethod=test_add_view_context_as_dottedname>\n\n    def test_add_view_context_as_dottedname(self):\n        from pyramid.renderers import null_renderer\n    \n        view = lambda *arg: 'OK'\n        config = self._makeOne(autocommit=True)\n        config.add_view(\n            context='tests.test_config.IDummy',\n            view=view,\n            renderer=null_renderer,\n        )\n        wrapper = self._getViewCallable(config, IDummy)\n>       self.assertEqual(wrapper, view)\nE       AssertionError: None != <function TestViewsConfigurationMixin.tes[64 chars]8dc0>\n\nr2e_tests/test_config/test_views.py:450: AssertionError\n_________ TestViewsConfigurationMixin.test_add_view_for__as_dottedname _________\n\nself = <r2e_tests.test_config.test_views.TestViewsConfigurationMixin testMethod=test_add_view_for__as_dottedname>\n\n    def test_add_view_for__as_dottedname(self):\n        from pyramid.renderers import null_renderer\n    \n        view = lambda *arg: 'OK'\n        config = self._makeOne(autocommit=True)\n        config.add_view(\n            for_='tests.test_config.IDummy', view=view, renderer=null_renderer\n        )\n        wrapper = self._getViewCallable(config, IDummy)\n>       self.assertEqual(wrapper, view)\nE       AssertionError: None != <function TestViewsConfigurationMixin.tes[61 chars]6ca0>\n\nr2e_tests/test_config/test_views.py:461: AssertionError\n____ TestViewsConfigurationMixin.test_add_view_with_containment_dottedname _____\n\nself = <r2e_tests.test_config.test_views.TestViewsConfigurationMixin testMethod=test_add_view_with_containment_dottedname>\n\n    def test_add_view_with_containment_dottedname(self):\n        from pyramid.renderers import null_renderer\n        from zope.interface import directlyProvides\n    \n        view = lambda *arg: 'OK'\n        config = self._makeOne(autocommit=True)\n        config.add_view(\n            view=view,\n            containment='tests.test_config.IDummy',\n            renderer=null_renderer,\n        )\n        wrapper = self._getViewCallable(config)\n        context = DummyContext()\n        directlyProvides(context, IDummy)\n>       self.assertEqual(wrapper(context, None), 'OK')\n\nr2e_tests/test_config/test_views.py:1861: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \nsrc/pyramid/config/views.py:184: in attr_view\n    return view(context, request)\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\ncontext = <r2e_tests.test_config.test_views.DummyContext object at 0x708a52046d60>\nrequest = None\n\n    def predicate_wrapper(context, request):\n        for predicate in preds:\n            if not predicate(context, request):\n                view_name = getattr(view, '__name__', view)\n>               raise PredicateMismatch(\n                    'predicate mismatch for view %s (%s)'\n                    % (view_name, predicate.text())\n                )\nE               pyramid.exceptions.PredicateMismatch: predicate mismatch for view <lambda> (containment = tests.test_config.IDummy)\n\nsrc/pyramid/config/views.py:206: PredicateMismatch\n_ TestViewsConfigurationMixin.test_add_view_with_default_permission_no_explicit_permission _\n\nself = <r2e_tests.test_config.test_views.TestViewsConfigurationMixin testMethod=test_add_view_with_default_permission_no_explicit_permission>\n\n    def test_add_view_with_default_permission_no_explicit_permission(self):\n        from pyramid.renderers import null_renderer\n    \n        view1 = lambda *arg: 'OK'\n        outerself = self\n    \n        class DummyPolicy(object):\n            def identify(self, r):\n                outerself.assertEqual(r, request)\n                return 123\n    \n            def permits(self, r, context, identity, permission):\n                outerself.assertEqual(r, request)\n                outerself.assertEqual(context, None)\n                outerself.assertEqual(identity, 123)\n                outerself.assertEqual(permission, 'view')\n                return True\n    \n        policy = DummyPolicy()\n        config = self._makeOne(\n            security_policy=policy, default_permission='view', autocommit=True\n        )\n        config.add_view(view=view1, renderer=null_renderer)\n        view = self._getViewCallable(config)\n        request = self._makeRequest(config)\n>       self.assertEqual(view(None, request), 'OK')\n\nr2e_tests/test_config/test_views.py:2087: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \nsrc/pyramid/viewderivers.py:322: in secured_view\n    result = permitted(context, request)\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\ncontext = None\nrequest = <r2e_tests.test_config.test_views.DummyRequest object at 0x708a520d5460>\n\n    def permitted(context, request):\n>       return policy.permits(request, context, permission)\nE       TypeError: permits() missing 1 required positional argument: 'permission'\n\nsrc/pyramid/viewderivers.py:319: TypeError\n__________ TestViewsConfigurationMixin.test_add_view_with_permission ___________\n\nself = <r2e_tests.test_config.test_views.TestViewsConfigurationMixin testMethod=test_add_view_with_permission>\n\n    def test_add_view_with_permission(self):\n        from pyramid.renderers import null_renderer\n    \n        view1 = lambda *arg: 'OK'\n        outerself = self\n    \n        class DummyPolicy(object):\n            def identify(self, r):\n                outerself.assertEqual(r, request)\n                return 123\n    \n            def permits(self, r, context, identity, permission):\n                outerself.assertEqual(r, request)\n                outerself.assertEqual(context, None)\n                outerself.assertEqual(identity, 123)\n                outerself.assertEqual(permission, 'view')\n                return True\n    \n        policy = DummyPolicy()\n        config = self._makeOne(security_policy=policy, autocommit=True)\n        config.add_view(view=view1, permission='view', renderer=null_renderer)\n        view = self._getViewCallable(config)\n        request = self._makeRequest(config)\n>       self.assertEqual(view(None, request), 'OK')\n\nr2e_tests/test_config/test_views.py:2060: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \nsrc/pyramid/viewderivers.py:322: in secured_view\n    result = permitted(context, request)\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\ncontext = None\nrequest = <r2e_tests.test_config.test_views.DummyRequest object at 0x708a5241d5b0>\n\n    def permitted(context, request):\n>       return policy.permits(request, context, permission)\nE       TypeError: permits() missing 1 required positional argument: 'permission'\n\nsrc/pyramid/viewderivers.py:319: TypeError\n_______ TestViewsConfigurationMixin.test_add_view_with_template_renderer _______\n\nself = <r2e_tests.test_config.test_views.TestViewsConfigurationMixin testMethod=test_add_view_with_template_renderer>\n\n    def test_add_view_with_template_renderer(self):\n        from tests import test_config\n        from pyramid.interfaces import ISettings\n    \n        class view(object):\n            def __init__(self, context, request):\n                self.request = request\n                self.context = context\n    \n            def __call__(self):\n                return {'a': '1'}\n    \n        config = self._makeOne(autocommit=True)\n        renderer = self._registerRenderer(config)\n        fixture = 'tests.test_config:files/minimal.txt'\n        config.introspection = False\n        config.add_view(view=view, renderer=fixture)\n        wrapper = self._getViewCallable(config)\n        request = self._makeRequest(config)\n        result = wrapper(None, request)\n        self.assertEqual(result.body, b'Hello!')\n        settings = config.registry.queryUtility(ISettings)\n        result = renderer.info\n        self.assertEqual(result.registry, config.registry)\n        self.assertEqual(result.type, '.txt')\n>       self.assertEqual(result.package, test_config)\nE       AssertionError: <module 'r2e_tests.test_config' from '/home/gcpuse[117 chars].py'> != <module 'tests.test_config' from '/home/gcpuser/bu[109 chars].py'>\n\nr2e_tests/test_config/test_views.py:1490: AssertionError\n_ TestViewsConfigurationMixin.test_add_view_with_template_renderer_no_callable _\n\nself = <r2e_tests.test_config.test_views.TestViewsConfigurationMixin testMethod=test_add_view_with_template_renderer_no_callable>\n\n    def test_add_view_with_template_renderer_no_callable(self):\n        from tests import test_config\n        from pyramid.interfaces import ISettings\n    \n        config = self._makeOne(autocommit=True)\n        renderer = self._registerRenderer(config)\n        fixture = 'tests.test_config:files/minimal.txt'\n        config.introspection = False\n        config.add_view(view=None, renderer=fixture)\n        wrapper = self._getViewCallable(config)\n        request = self._makeRequest(config)\n        result = wrapper(None, request)\n        self.assertEqual(result.body, b'Hello!')\n        settings = config.registry.queryUtility(ISettings)\n        result = renderer.info\n        self.assertEqual(result.registry, config.registry)\n        self.assertEqual(result.type, '.txt')\n>       self.assertEqual(result.package, test_config)\nE       AssertionError: <module 'r2e_tests.test_config' from '/home/gcpuse[117 chars].py'> != <module 'tests.test_config' from '/home/gcpuser/bu[109 chars].py'>\n\nr2e_tests/test_config/test_views.py:1536: AssertionError\n_________ TestViewsConfigurationMixin.test_add_view_with_view_defaults _________\n\nself = <r2e_tests.test_config.test_views.TestViewsConfigurationMixin testMethod=test_add_view_with_view_defaults>\n\n    def test_add_view_with_view_defaults(self):\n        from pyramid.renderers import null_renderer\n        from pyramid.exceptions import PredicateMismatch\n        from zope.interface import directlyProvides\n    \n        class view(object):\n            __view_defaults__ = {'containment': 'tests.test_config.IDummy'}\n    \n            def __init__(self, request):\n                pass\n    \n            def __call__(self):\n                return 'OK'\n    \n        config = self._makeOne(autocommit=True)\n        config.add_view(view=view, renderer=null_renderer)\n        wrapper = self._getViewCallable(config)\n        context = DummyContext()\n        directlyProvides(context, IDummy)\n        request = self._makeRequest(config)\n>       self.assertEqual(wrapper(context, request), 'OK')\n\nr2e_tests/test_config/test_views.py:2148: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \nsrc/pyramid/config/views.py:184: in attr_view\n    return view(context, request)\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\ncontext = <r2e_tests.test_config.test_views.DummyContext object at 0x708a51c9aa60>\nrequest = <r2e_tests.test_config.test_views.DummyRequest object at 0x708a51949a90>\n\n    def predicate_wrapper(context, request):\n        for predicate in preds:\n            if not predicate(context, request):\n                view_name = getattr(view, '__name__', view)\n>               raise PredicateMismatch(\n                    'predicate mismatch for view %s (%s)'\n                    % (view_name, predicate.text())\n                )\nE               pyramid.exceptions.PredicateMismatch: predicate mismatch for view view (containment = tests.test_config.IDummy)\n\nsrc/pyramid/config/views.py:206: PredicateMismatch\n_ TestViewsConfigurationMixin.test_add_view_with_view_defaults_viewname_is_dottedname_kwarg _\n\nself = <r2e_tests.test_config.test_views.TestViewsConfigurationMixin testMethod=test_add_view_with_view_defaults_viewname_is_dottedname_kwarg>\n\n    def test_add_view_with_view_defaults_viewname_is_dottedname_kwarg(self):\n        from pyramid.renderers import null_renderer\n        from pyramid.exceptions import PredicateMismatch\n        from zope.interface import directlyProvides\n    \n        config = self._makeOne(autocommit=True)\n        config.add_view(\n            view='tests.test_config.test_views.DummyViewDefaultsClass',\n            renderer=null_renderer,\n        )\n        wrapper = self._getViewCallable(config)\n        context = DummyContext()\n        directlyProvides(context, IDummy)\n        request = self._makeRequest(config)\n>       self.assertEqual(wrapper(context, request), 'OK')\n\nr2e_tests/test_config/test_views.py:2167: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \nsrc/pyramid/config/views.py:184: in attr_view\n    return view(context, request)\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\ncontext = <r2e_tests.test_config.test_views.DummyContext object at 0x708a5203a5e0>\nrequest = <r2e_tests.test_config.test_views.DummyRequest object at 0x708a51c8b3d0>\n\n    def predicate_wrapper(context, request):\n        for predicate in preds:\n            if not predicate(context, request):\n                view_name = getattr(view, '__name__', view)\n>               raise PredicateMismatch(\n                    'predicate mismatch for view %s (%s)'\n                    % (view_name, predicate.text())\n                )\nE               pyramid.exceptions.PredicateMismatch: predicate mismatch for view DummyViewDefaultsClass (containment = tests.test_config.IDummy)\n\nsrc/pyramid/config/views.py:206: PredicateMismatch\n_ TestViewsConfigurationMixin.test_add_view_with_view_defaults_viewname_is_dottedname_nonkwarg _\n\nself = <r2e_tests.test_config.test_views.TestViewsConfigurationMixin testMethod=test_add_view_with_view_defaults_viewname_is_dottedname_nonkwarg>\n\n    def test_add_view_with_view_defaults_viewname_is_dottedname_nonkwarg(self):\n        from pyramid.renderers import null_renderer\n        from pyramid.exceptions import PredicateMismatch\n        from zope.interface import directlyProvides\n    \n        config = self._makeOne(autocommit=True)\n        config.add_view(\n            'tests.test_config.test_views.DummyViewDefaultsClass',\n            renderer=null_renderer,\n        )\n        wrapper = self._getViewCallable(config)\n        context = DummyContext()\n        directlyProvides(context, IDummy)\n        request = self._makeRequest(config)\n>       self.assertEqual(wrapper(context, request), 'OK')\n\nr2e_tests/test_config/test_views.py:2186: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \nsrc/pyramid/config/views.py:184: in attr_view\n    return view(context, request)\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\ncontext = <r2e_tests.test_config.test_views.DummyContext object at 0x708a5245bdc0>\nrequest = <r2e_tests.test_config.test_views.DummyRequest object at 0x708a524169a0>\n\n    def predicate_wrapper(context, request):\n        for predicate in preds:\n            if not predicate(context, request):\n                view_name = getattr(view, '__name__', view)\n>               raise PredicateMismatch(\n                    'predicate mismatch for view %s (%s)'\n                    % (view_name, predicate.text())\n                )\nE               pyramid.exceptions.PredicateMismatch: predicate mismatch for view DummyViewDefaultsClass (containment = tests.test_config.IDummy)\n\nsrc/pyramid/config/views.py:206: PredicateMismatch\n_________ TestStaticURLInfo.test_generate_url_cachebust_with_overrides _________\n\nself = <r2e_tests.test_config.test_views.TestStaticURLInfo testMethod=test_generate_url_cachebust_with_overrides>\n\n    def test_generate_url_cachebust_with_overrides(self):\n        config = testing.setUp()\n        try:\n            request = testing.DummyRequest()\n            config.add_static_view('static', 'path')\n            config.override_asset(\n                'tests.test_config:path/', 'tests.test_config:other_path/'\n            )\n    \n            def cb(val):\n                def cb_(request, subpath, kw):\n                    kw['_query'] = {'x': val}\n                    return subpath, kw\n    \n                return cb_\n    \n            config.add_cache_buster('path', cb('foo'))\n            result = request.static_url('path/foo.png')\n            self.assertEqual(result, 'http://example.com/static/foo.png?x=foo')\n            config.add_cache_buster('other_path', cb('bar'), explicit=True)\n            result = request.static_url('path/foo.png')\n>           self.assertEqual(result, 'http://example.com/static/foo.png?x=bar')\nE           AssertionError: 'http://example.com/static/foo.png?x=foo' != 'http://example.com/static/foo.png?x=bar'\nE           - http://example.com/static/foo.png?x=foo\nE           ?                                     ^^^\nE           + http://example.com/static/foo.png?x=bar\nE           ?                                     ^^^\n\nr2e_tests/test_config/test_views.py:3951: AssertionError\n___________________ Test_view_description.test_without_text ____________________\n\nself = <r2e_tests.test_config.test_views.Test_view_description testMethod=test_without_text>\n\n    def test_without_text(self):\n        def view():  # pragma: no cover\n            pass\n    \n        result = self._callFUT(view)\n>       self.assertEqual(result, 'function tests.test_config.test_views.view')\nE       AssertionError: 'function r2e_tests.test_config.test_views.view' != 'function tests.test_config.test_views.view'\nE       - function r2e_tests.test_config.test_views.view\nE       ?          ----\nE       + function tests.test_config.test_views.view\n\nr2e_tests/test_config/test_views.py:4155: AssertionError\n______________________ TestPRoutesCommand.test_class_view ______________________\n\nself = <r2e_tests.test_scripts.test_proutes.TestPRoutesCommand testMethod=test_class_view>\n\n    def test_class_view(self):\n        from pyramid.renderers import null_renderer as nr\n    \n        config = self._makeConfig(autocommit=True)\n        config.add_route('foo', '/a/b')\n        config.add_view(\n            route_name='foo',\n            view=dummy.DummyView,\n            attr='view',\n            renderer=nr,\n            request_method='POST',\n        )\n    \n        command = self._makeOne()\n        L = []\n        command.out = L.append\n        command.bootstrap = dummy.DummyBootstrap(registry=config.registry)\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(len(L), 3)\n        compare_to = L[-1].split()\n        expected = [\n            'foo',\n            '/a/b',\n            'tests.test_scripts.dummy.DummyView.view',\n            'POST',\n        ]\n>       self.assertEqual(compare_to, expected)\nE       AssertionError: Lists differ: ['foo', '/a/b', 'r2e_tests.test_scripts.dummy.DummyView.view', 'POST'] != ['foo', '/a/b', 'tests.test_scripts.dummy.DummyView.view', 'POST']\nE       \nE       First differing element 2:\nE       'r2e_tests.test_scripts.dummy.DummyView.view'\nE       'tests.test_scripts.dummy.DummyView.view'\nE       \nE       - ['foo', '/a/b', 'r2e_tests.test_scripts.dummy.DummyView.view', 'POST']\nE       ?                  ----\nE       \nE       + ['foo', '/a/b', 'tests.test_scripts.dummy.DummyView.view', 'POST']\n\nr2e_tests/test_scripts/test_proutes.py:247: AssertionError\n_________ TestPRoutesCommand.test_one_route_all_methods_view_only_post _________\n\nself = <r2e_tests.test_scripts.test_proutes.TestPRoutesCommand testMethod=test_one_route_all_methods_view_only_post>\n\n    def test_one_route_all_methods_view_only_post(self):\n        from pyramid.renderers import null_renderer as nr\n    \n        def view1(context, request):  # pragma: no cover\n            return 'view1'\n    \n        config = self._makeConfig(autocommit=True)\n        config.add_route('foo', '/a/b')\n        config.add_view(\n            route_name='foo', view=view1, renderer=nr, request_method='POST'\n        )\n    \n        command = self._makeOne()\n        L = []\n        command.out = L.append\n        command.bootstrap = dummy.DummyBootstrap(registry=config.registry)\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(len(L), 3)\n        compare_to = L[-1].split()\n        expected = [\n            'foo',\n            '/a/b',\n            'tests.test_scripts.test_proutes.view1',\n            'POST',\n        ]\n>       self.assertEqual(compare_to, expected)\nE       AssertionError: Lists differ: ['foo', '/a/b', 'r2e_tests.test_scripts.test_proutes.view1', 'POST'] != ['foo', '/a/b', 'tests.test_scripts.test_proutes.view1', 'POST']\nE       \nE       First differing element 2:\nE       'r2e_tests.test_scripts.test_proutes.view1'\nE       'tests.test_scripts.test_proutes.view1'\nE       \nE       - ['foo', '/a/b', 'r2e_tests.test_scripts.test_proutes.view1', 'POST']\nE       ?                  ----\nE       \nE       + ['foo', '/a/b', 'tests.test_scripts.test_proutes.view1', 'POST']\n\nr2e_tests/test_scripts/test_proutes.py:360: AssertionError\n_________ TestPRoutesCommand.test_one_route_only_post_view_all_methods _________\n\nself = <r2e_tests.test_scripts.test_proutes.TestPRoutesCommand testMethod=test_one_route_only_post_view_all_methods>\n\n    def test_one_route_only_post_view_all_methods(self):\n        from pyramid.renderers import null_renderer as nr\n    \n        def view1(context, request):  # pragma: no cover\n            return 'view1'\n    \n        config = self._makeConfig(autocommit=True)\n        config.add_route('foo', '/a/b', request_method='POST')\n        config.add_view(route_name='foo', view=view1, renderer=nr)\n    \n        command = self._makeOne()\n        L = []\n        command.out = L.append\n        command.bootstrap = dummy.DummyBootstrap(registry=config.registry)\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(len(L), 3)\n        compare_to = L[-1].split()\n        expected = [\n            'foo',\n            '/a/b',\n            'tests.test_scripts.test_proutes.view1',\n            'POST',\n        ]\n>       self.assertEqual(compare_to, expected)\nE       AssertionError: Lists differ: ['foo', '/a/b', 'r2e_tests.test_scripts.test_proutes.view1', 'POST'] != ['foo', '/a/b', 'tests.test_scripts.test_proutes.view1', 'POST']\nE       \nE       First differing element 2:\nE       'r2e_tests.test_scripts.test_proutes.view1'\nE       'tests.test_scripts.test_proutes.view1'\nE       \nE       - ['foo', '/a/b', 'r2e_tests.test_scripts.test_proutes.view1', 'POST']\nE       ?                  ----\nE       \nE       + ['foo', '/a/b', 'tests.test_scripts.test_proutes.view1', 'POST']\n\nr2e_tests/test_scripts/test_proutes.py:386: AssertionError\n________ TestPRoutesCommand.test_one_route_only_post_view_post_and_get _________\n\nself = <r2e_tests.test_scripts.test_proutes.TestPRoutesCommand testMethod=test_one_route_only_post_view_post_and_get>\n\n    def test_one_route_only_post_view_post_and_get(self):\n        from pyramid.renderers import null_renderer as nr\n    \n        def view1(context, request):  # pragma: no cover\n            return 'view1'\n    \n        config = self._makeConfig(autocommit=True)\n        config.add_route('foo', '/a/b', request_method='POST')\n        config.add_view(\n            route_name='foo',\n            view=view1,\n            renderer=nr,\n            request_method=('POST', 'GET'),\n        )\n    \n        command = self._makeOne()\n        L = []\n        command.out = L.append\n        command.bootstrap = dummy.DummyBootstrap(registry=config.registry)\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(len(L), 3)\n        compare_to = L[-1].split()\n        expected = [\n            'foo',\n            '/a/b',\n            'tests.test_scripts.test_proutes.view1',\n            'POST',\n        ]\n>       self.assertEqual(compare_to, expected)\nE       AssertionError: Lists differ: ['foo', '/a/b', 'r2e_tests.test_scripts.test_proutes.view1', 'POST'] != ['foo', '/a/b', 'tests.test_scripts.test_proutes.view1', 'POST']\nE       \nE       First differing element 2:\nE       'r2e_tests.test_scripts.test_proutes.view1'\nE       'tests.test_scripts.test_proutes.view1'\nE       \nE       - ['foo', '/a/b', 'r2e_tests.test_scripts.test_proutes.view1', 'POST']\nE       ?                  ----\nE       \nE       + ['foo', '/a/b', 'tests.test_scripts.test_proutes.view1', 'POST']\n\nr2e_tests/test_scripts/test_proutes.py:417: AssertionError\n_____ TestPRoutesCommand.test_one_route_with_long_name_one_view_registered _____\n\nself = <r2e_tests.test_scripts.test_proutes.TestPRoutesCommand testMethod=test_one_route_with_long_name_one_view_registered>\n\n    def test_one_route_with_long_name_one_view_registered(self):\n        from zope.interface import Interface\n        from pyramid.interfaces import IRouteRequest\n        from pyramid.interfaces import IViewClassifier\n        from pyramid.interfaces import IView\n    \n        registry = self._makeRegistry()\n    \n        def view():  # pragma: no cover\n            pass\n    \n        class IMyRoute(Interface):\n            pass\n    \n        registry.registerAdapter(\n            view, (IViewClassifier, IMyRoute, Interface), IView, ''\n        )\n    \n        registry.registerUtility(\n            IMyRoute, IRouteRequest, name='very_long_name_123'\n        )\n    \n        command = self._makeOne()\n        route = dummy.DummyRoute(\n            'very_long_name_123', '/and_very_long_pattern_as_well'\n        )\n        mapper = dummy.DummyMapper(route)\n        command._get_mapper = lambda *arg: mapper\n        L = []\n        command.out = L.append\n        command.bootstrap = dummy.DummyBootstrap(registry=registry)\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(len(L), 3)\n        compare_to = L[-1].split()[:3]\n>       self.assertEqual(\n            compare_to,\n            [\n                'very_long_name_123',\n                '/and_very_long_pattern_as_well',\n                'tests.test_scripts.test_proutes.view',\n            ],\n        )\nE       AssertionError: Lists differ: ['ver[32 chars]g_pattern_as_well', 'r2e_tests.test_scripts.test_proutes.view'] != ['ver[32 chars]g_pattern_as_well', 'tests.test_scripts.test_proutes.view']\nE       \nE       First differing element 2:\nE       'r2e_tests.test_scripts.test_proutes.view'\nE       'tests.test_scripts.test_proutes.view'\nE       \nE         ['very_long_name_123',\nE          '/and_very_long_pattern_as_well',\nE       -  'r2e_tests.test_scripts.test_proutes.view']\nE       ?   ----\nE       \nE       +  'tests.test_scripts.test_proutes.view']\n\nr2e_tests/test_scripts/test_proutes.py:211: AssertionError\n______ TestPRoutesCommand.test_route_is_get_view_request_method_not_post _______\n\nself = <r2e_tests.test_scripts.test_proutes.TestPRoutesCommand testMethod=test_route_is_get_view_request_method_not_post>\n\n    def test_route_is_get_view_request_method_not_post(self):\n        from pyramid.renderers import null_renderer as nr\n        from pyramid.config import not_\n    \n        def view1(context, request):  # pragma: no cover\n            return 'view1'\n    \n        config = self._makeConfig(autocommit=True)\n        config.add_route('foo', '/a/b', request_method='GET')\n        config.add_view(\n            route_name='foo',\n            view=view1,\n            renderer=nr,\n            request_method=not_('POST'),\n        )\n    \n        command = self._makeOne()\n        L = []\n        command.out = L.append\n        command.bootstrap = dummy.DummyBootstrap(registry=config.registry)\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(len(L), 3)\n        compare_to = L[-1].split()\n        expected = [\n            'foo',\n            '/a/b',\n            'tests.test_scripts.test_proutes.view1',\n            'GET',\n        ]\n>       self.assertEqual(compare_to, expected)\nE       AssertionError: Lists differ: ['foo', '/a/b', 'r2e_tests.test_scripts.test_proutes.view1', 'GET'] != ['foo', '/a/b', 'tests.test_scripts.test_proutes.view1', 'GET']\nE       \nE       First differing element 2:\nE       'r2e_tests.test_scripts.test_proutes.view1'\nE       'tests.test_scripts.test_proutes.view1'\nE       \nE       - ['foo', '/a/b', 'r2e_tests.test_scripts.test_proutes.view1', 'GET']\nE       ?                  ----\nE       \nE       + ['foo', '/a/b', 'tests.test_scripts.test_proutes.view1', 'GET']\n\nr2e_tests/test_scripts/test_proutes.py:557: AssertionError\n____________ TestPRoutesCommand.test_route_request_method_mismatch _____________\n\nself = <r2e_tests.test_scripts.test_proutes.TestPRoutesCommand testMethod=test_route_request_method_mismatch>\n\n    def test_route_request_method_mismatch(self):\n        from pyramid.renderers import null_renderer as nr\n    \n        def view1(context, request):  # pragma: no cover\n            return 'view1'\n    \n        config = self._makeConfig(autocommit=True)\n        config.add_route('foo', '/a/b', request_method='POST')\n        config.add_view(\n            route_name='foo', view=view1, renderer=nr, request_method='GET'\n        )\n    \n        command = self._makeOne()\n        L = []\n        command.out = L.append\n        command.bootstrap = dummy.DummyBootstrap(registry=config.registry)\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(len(L), 3)\n        compare_to = L[-1].split()\n        expected = [\n            'foo',\n            '/a/b',\n            'tests.test_scripts.test_proutes.view1',\n            '<route',\n            'mismatch>',\n        ]\n>       self.assertEqual(compare_to, expected)\nE       AssertionError: Lists differ: ['foo', '/a/b', 'r2e_tests.test_scripts.test_proutes.view1[20 chars]ch>'] != ['foo', '/a/b', 'tests.test_scripts.test_proutes.view1', '[16 chars]ch>']\nE       \nE       First differing element 2:\nE       'r2e_tests.test_scripts.test_proutes.view1'\nE       'tests.test_scripts.test_proutes.view1'\nE       \nE       + ['foo', '/a/b', 'tests.test_scripts.test_proutes.view1', '<route', 'mismatch>']\nE       - ['foo',\nE       -  '/a/b',\nE       -  'r2e_tests.test_scripts.test_proutes.view1',\nE       -  '<route',\nE       -  'mismatch>']\n\nr2e_tests/test_scripts/test_proutes.py:446: AssertionError\n__________________ TestPRoutesCommand.test_route_static_views __________________\n\nself = <r2e_tests.test_scripts.test_proutes.TestPRoutesCommand testMethod=test_route_static_views>\n\n    def test_route_static_views(self):\n        config = self._makeConfig(autocommit=True)\n        config.add_static_view('static', 'static', cache_max_age=3600)\n        path2 = os.path.normpath('/var/www/static')\n        config.add_static_view(name='static2', path=path2)\n        config.add_static_view(\n            name='pyramid_scaffold',\n            path='pyramid:scaffolds/starter/+package+/static',\n        )\n    \n        command = self._makeOne()\n        L = []\n        command.out = L.append\n        command.bootstrap = dummy.DummyBootstrap(registry=config.registry)\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(len(L), 5)\n    \n        expected = [\n            [\n                '__static/',\n                '/static/*subpath',\n                'tests.test_scripts:static/',\n                '*',\n            ],\n            ['__static2/', '/static2/*subpath', path2 + os.sep, '*'],\n            [\n                '__pyramid_scaffold/',\n                '/pyramid_scaffold/*subpath',\n                'pyramid:scaffolds/starter/+package+/static/',\n                '*',\n            ],\n        ]\n    \n        for index, line in enumerate(L[2:]):\n            data = line.split()\n>           self.assertEqual(data, expected[index])\nE           AssertionError: Lists differ: ['__static/', '/static/*subpath', 'r2e_tests.test_scripts:static/', '*'] != ['__static/', '/static/*subpath', 'tests.test_scripts:static/', '*']\nE           \nE           First differing element 2:\nE           'r2e_tests.test_scripts:static/'\nE           'tests.test_scripts:static/'\nE           \nE           - ['__static/', '/static/*subpath', 'r2e_tests.test_scripts:static/', '*']\nE           ?                                    ----\nE           \nE           + ['__static/', '/static/*subpath', 'tests.test_scripts:static/', '*']\n\nr2e_tests/test_scripts/test_proutes.py:484: AssertionError\n__________ TestPRoutesCommand.test_single_route_multiview_registered ___________\n\nself = <r2e_tests.test_scripts.test_proutes.TestPRoutesCommand testMethod=test_single_route_multiview_registered>\n\n    def test_single_route_multiview_registered(self):\n        from zope.interface import Interface\n        from pyramid.interfaces import IRouteRequest\n        from pyramid.interfaces import IViewClassifier\n        from pyramid.interfaces import IMultiView\n    \n        registry = self._makeRegistry()\n    \n        def view():  # pragma: no cover\n            pass\n    \n        class IMyRoute(Interface):\n            pass\n    \n        multiview1 = dummy.DummyMultiView(\n            view, context='context', view_name='a1'\n        )\n    \n        registry.registerAdapter(\n            multiview1, (IViewClassifier, IMyRoute, Interface), IMultiView, ''\n        )\n        registry.registerUtility(IMyRoute, IRouteRequest, name='a')\n        command = self._makeOne()\n        route = dummy.DummyRoute('a', '/a')\n        mapper = dummy.DummyMapper(route)\n        command._get_mapper = lambda *arg: mapper\n        L = []\n        command.out = L.append\n        command.bootstrap = dummy.DummyBootstrap(registry=registry)\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(len(L), 3)\n        compare_to = L[-1].split()[:3]\n        view_module = 'tests.test_scripts.dummy'\n        view_str = '<tests.test_scripts.dummy.DummyMultiView'\n        final = '%s.%s' % (view_module, view_str)\n    \n>       self.assertEqual(compare_to, ['a', '/a', final])\nE       AssertionError: Lists differ: ['a', '/a', 'r2e_tests.test_scripts.dummy.<r2e_tests.t[29 chars]iew'] != ['a', '/a', 'tests.test_scripts.dummy.<tests.test_scri[21 chars]iew']\nE       \nE       First differing element 2:\nE       'r2e_tests.test_scripts.dummy.<r2e_tests.test_scripts.dummy.DummyMultiView'\nE       'tests.test_scripts.dummy.<tests.test_scripts.dummy.DummyMultiView'\nE       \nE       - ['a',\nE       -  '/a',\nE       -  'r2e_tests.test_scripts.dummy.<r2e_tests.test_scripts.dummy.DummyMultiView']\nE       ? ^ ^^^^                          ----\nE       \nE       + ['a', '/a', 'tests.test_scripts.dummy.<tests.test_scripts.dummy.DummyMultiView']\nE       ? ^ ^^^^^^^^^^^\n\nr2e_tests/test_scripts/test_proutes.py:323: AssertionError\n___________ TestPRoutesCommand.test_single_route_one_view_registered ___________\n\nself = <r2e_tests.test_scripts.test_proutes.TestPRoutesCommand testMethod=test_single_route_one_view_registered>\n\n    def test_single_route_one_view_registered(self):\n        from zope.interface import Interface\n        from pyramid.interfaces import IRouteRequest\n        from pyramid.interfaces import IViewClassifier\n        from pyramid.interfaces import IView\n    \n        registry = self._makeRegistry()\n    \n        def view():  # pragma: no cover\n            pass\n    \n        class IMyRoute(Interface):\n            pass\n    \n        registry.registerAdapter(\n            view, (IViewClassifier, IMyRoute, Interface), IView, ''\n        )\n        registry.registerUtility(IMyRoute, IRouteRequest, name='a')\n        command = self._makeOne()\n        route = dummy.DummyRoute('a', '/a')\n        mapper = dummy.DummyMapper(route)\n        command._get_mapper = lambda *arg: mapper\n        L = []\n        command.out = L.append\n        command.bootstrap = dummy.DummyBootstrap(registry=registry)\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(len(L), 3)\n        compare_to = L[-1].split()[:3]\n>       self.assertEqual(\n            compare_to, ['a', '/a', 'tests.test_scripts.test_proutes.view']\n        )\nE       AssertionError: Lists differ: ['a', '/a', 'r2e_tests.test_scripts.test_proutes.view'] != ['a', '/a', 'tests.test_scripts.test_proutes.view']\nE       \nE       First differing element 2:\nE       'r2e_tests.test_scripts.test_proutes.view'\nE       'tests.test_scripts.test_proutes.view'\nE       \nE       - ['a', '/a', 'r2e_tests.test_scripts.test_proutes.view']\nE       ?              ----\nE       \nE       + ['a', '/a', 'tests.test_scripts.test_proutes.view']\n\nr2e_tests/test_scripts/test_proutes.py:172: AssertionError\n______________________ TestPRoutesCommand.test_view_glob _______________________\n\nself = <r2e_tests.test_scripts.test_proutes.TestPRoutesCommand testMethod=test_view_glob>\n\n    def test_view_glob(self):\n        from pyramid.renderers import null_renderer as nr\n        from pyramid.config import not_\n    \n        def view1(context, request):  # pragma: no cover\n            return 'view1'\n    \n        def view2(context, request):  # pragma: no cover\n            return 'view2'\n    \n        config = self._makeConfig(autocommit=True)\n        config.add_route('foo', '/a/b')\n        config.add_view(\n            route_name='foo',\n            view=view1,\n            renderer=nr,\n            request_method=not_('POST'),\n        )\n    \n        config.add_route('bar', '/b/a')\n        config.add_view(\n            route_name='bar',\n            view=view2,\n            renderer=nr,\n            request_method=not_('POST'),\n        )\n    \n        command = self._makeOne()\n        command.args.glob = '*foo*'\n    \n        L = []\n        command.out = L.append\n        command.bootstrap = dummy.DummyBootstrap(registry=config.registry)\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(len(L), 3)\n        compare_to = L[-1].split()\n        expected = [\n            'foo',\n            '/a/b',\n            'tests.test_scripts.test_proutes.view1',\n            '!POST,*',\n        ]\n>       self.assertEqual(compare_to, expected)\nE       AssertionError: Lists differ: ['foo', '/a/b', 'r2e_tests.test_scripts.test_proutes.view1', '!POST,*'] != ['foo', '/a/b', 'tests.test_scripts.test_proutes.view1', '!POST,*']\nE       \nE       First differing element 2:\nE       'r2e_tests.test_scripts.test_proutes.view1'\nE       'tests.test_scripts.test_proutes.view1'\nE       \nE       - ['foo', '/a/b', 'r2e_tests.test_scripts.test_proutes.view1', '!POST,*']\nE       ?                  ----\nE       \nE       + ['foo', '/a/b', 'tests.test_scripts.test_proutes.view1', '!POST,*']\n\nr2e_tests/test_scripts/test_proutes.py:634: AssertionError\n_____________ TestPRoutesCommand.test_view_request_method_not_post _____________\n\nself = <r2e_tests.test_scripts.test_proutes.TestPRoutesCommand testMethod=test_view_request_method_not_post>\n\n    def test_view_request_method_not_post(self):\n        from pyramid.renderers import null_renderer as nr\n        from pyramid.config import not_\n    \n        def view1(context, request):  # pragma: no cover\n            return 'view1'\n    \n        config = self._makeConfig(autocommit=True)\n        config.add_route('foo', '/a/b')\n        config.add_view(\n            route_name='foo',\n            view=view1,\n            renderer=nr,\n            request_method=not_('POST'),\n        )\n    \n        command = self._makeOne()\n        L = []\n        command.out = L.append\n        command.bootstrap = dummy.DummyBootstrap(registry=config.registry)\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(len(L), 3)\n        compare_to = L[-1].split()\n        expected = [\n            'foo',\n            '/a/b',\n            'tests.test_scripts.test_proutes.view1',\n            '!POST,*',\n        ]\n>       self.assertEqual(compare_to, expected)\nE       AssertionError: Lists differ: ['foo', '/a/b', 'r2e_tests.test_scripts.test_proutes.view1', '!POST,*'] != ['foo', '/a/b', 'tests.test_scripts.test_proutes.view1', '!POST,*']\nE       \nE       First differing element 2:\nE       'r2e_tests.test_scripts.test_proutes.view1'\nE       'tests.test_scripts.test_proutes.view1'\nE       \nE       - ['foo', '/a/b', 'r2e_tests.test_scripts.test_proutes.view1', '!POST,*']\nE       ?                  ----\nE       \nE       + ['foo', '/a/b', 'tests.test_scripts.test_proutes.view1', '!POST,*']\n\nr2e_tests/test_scripts/test_proutes.py:589: AssertionError\n_____________ TestPServeCommand.test_config_file_finds_watch_files _____________\n\nself = <r2e_tests.test_scripts.test_pserve.TestPServeCommand testMethod=test_config_file_finds_watch_files>\n\n    def test_config_file_finds_watch_files(self):\n        inst = self._makeOne('development.ini')\n        loader = self.loader('/base/path.ini')\n        loader.settings = {\n            'pserve': {'watch_files': 'foo\\n/baz\\ntests.test_scripts:*.py'}\n        }\n        inst.pserve_file_config(loader, global_conf={'a': '1'})\n        self.assertEqual(loader.calls[0]['defaults'], {'a': '1'})\n>       self.assertEqual(\n            inst.watch_files,\n            set(\n                [\n                    os.path.abspath('/base/foo'),\n                    os.path.abspath('/baz'),\n                    os.path.abspath(os.path.join(here, '*.py')),\n                ]\n            ),\n        )\nE       AssertionError: Items in the first set but not the second:\nE       '/home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/tests/test_scripts/*.py'\nE       Items in the second set but not the first:\nE       '/home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_d699c9ace8028bf74e1c6c3ea085fdf9beeb2586/r2e_tests/test_scripts/*.py'\n\nr2e_tests/test_scripts/test_pserve.py:90: AssertionError\n____________ TestPViewsCommand.test_views_command_multi_view_nested ____________\n\nself = <r2e_tests.test_scripts.test_pviews.TestPViewsCommand testMethod=test_views_command_multi_view_nested>\n\n    def test_views_command_multi_view_nested(self):\n        from pyramid.registry import Registry\n    \n        registry = Registry()\n        command = self._makeOne(registry=registry)\n        L = []\n        command.out = L.append\n        view1 = dummy.DummyView(context='context', view_name='a1')\n        view1.__name__ = 'view1'\n        view1.__view_attr__ = 'call'\n        multiview1 = dummy.DummyMultiView(\n            view1, context='context', view_name='a1'\n        )\n        multiview2 = dummy.DummyMultiView(\n            multiview1, context='context', view_name='a'\n        )\n        command._find_view = lambda arg1: multiview2\n        command.args.config_uri = '/foo/bar/myapp.ini#myapp'\n        command.args.url = '/a'\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(L[1], 'URL = /a')\n        self.assertEqual(L[3], '    context: context')\n        self.assertEqual(L[4], '    view name: a')\n>       self.assertEqual(L[8], '    tests.test_scripts.dummy.DummyMultiView')\nE       AssertionError: '    r2e_tests.test_scripts.dummy.DummyMultiView' != '    tests.test_scripts.dummy.DummyMultiView'\nE       -     r2e_tests.test_scripts.dummy.DummyMultiView\nE       ?     ----\nE       +     tests.test_scripts.dummy.DummyMultiView\n\nr2e_tests/test_scripts/test_pviews.py:481: AssertionError\n________________ TestPViewsCommand.test_views_command_multiview ________________\n\nself = <r2e_tests.test_scripts.test_pviews.TestPViewsCommand testMethod=test_views_command_multiview>\n\n    def test_views_command_multiview(self):\n        from pyramid.registry import Registry\n    \n        registry = Registry()\n        command = self._makeOne(registry=registry)\n        L = []\n        command.out = L.append\n        view = dummy.DummyView(context='context')\n        view.__name__ = 'view'\n        view.__view_attr__ = 'call'\n        multiview = dummy.DummyMultiView(\n            view, context='context', view_name='a'\n        )\n        command._find_view = lambda arg1: multiview\n        command.args.config_uri = '/foo/bar/myapp.ini#myapp'\n        command.args.url = '/a'\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(L[1], 'URL = /a')\n        self.assertEqual(L[3], '    context: context')\n        self.assertEqual(L[4], '    view name: a')\n>       self.assertEqual(L[8], '    tests.test_scripts.dummy.view.call')\nE       AssertionError: '    r2e_tests.test_scripts.dummy.view.call' != '    tests.test_scripts.dummy.view.call'\nE       -     r2e_tests.test_scripts.dummy.view.call\nE       ?     ----\nE       +     tests.test_scripts.dummy.view.call\n\nr2e_tests/test_scripts/test_pviews.py:537: AssertionError\n________ TestPViewsCommand.test_views_command_multiview_with_permission ________\n\nself = <r2e_tests.test_scripts.test_pviews.TestPViewsCommand testMethod=test_views_command_multiview_with_permission>\n\n    def test_views_command_multiview_with_permission(self):\n        from pyramid.registry import Registry\n    \n        registry = Registry()\n        command = self._makeOne(registry=registry)\n        L = []\n        command.out = L.append\n        view = dummy.DummyView(context='context')\n        view.__name__ = 'view'\n        view.__view_attr__ = 'call'\n        view.__permission__ = 'test'\n        multiview = dummy.DummyMultiView(\n            view, context='context', view_name='a'\n        )\n        command._find_view = lambda arg1: multiview\n        command.args.config_uri = '/foo/bar/myapp.ini#myapp'\n        command.args.url = '/a'\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(L[1], 'URL = /a')\n        self.assertEqual(L[3], '    context: context')\n        self.assertEqual(L[4], '    view name: a')\n>       self.assertEqual(L[8], '    tests.test_scripts.dummy.view.call')\nE       AssertionError: '    r2e_tests.test_scripts.dummy.view.call' != '    tests.test_scripts.dummy.view.call'\nE       -     r2e_tests.test_scripts.dummy.view.call\nE       ?     ----\nE       +     tests.test_scripts.dummy.view.call\n\nr2e_tests/test_scripts/test_pviews.py:561: AssertionError\n________ TestPViewsCommand.test_views_command_multiview_with_predicates ________\n\nself = <r2e_tests.test_scripts.test_pviews.TestPViewsCommand testMethod=test_views_command_multiview_with_predicates>\n\n    def test_views_command_multiview_with_predicates(self):\n        from pyramid.registry import Registry\n    \n        registry = Registry()\n        command = self._makeOne(registry=registry)\n        L = []\n        command.out = L.append\n    \n        def predicate():  # pragma: no cover\n            pass\n    \n        predicate.text = lambda *arg: \"predicate = x\"\n        view = dummy.DummyView(context='context')\n        view.__name__ = 'view'\n        view.__view_attr__ = 'call'\n        view.__predicates__ = [predicate]\n        multiview = dummy.DummyMultiView(\n            view, context='context', view_name='a'\n        )\n        command._find_view = lambda arg1: multiview\n        command.args.config_uri = '/foo/bar/myapp.ini#myapp'\n        command.args.url = '/a'\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(L[1], 'URL = /a')\n        self.assertEqual(L[3], '    context: context')\n        self.assertEqual(L[4], '    view name: a')\n>       self.assertEqual(L[8], '    tests.test_scripts.dummy.view.call')\nE       AssertionError: '    r2e_tests.test_scripts.dummy.view.call' != '    tests.test_scripts.dummy.view.call'\nE       -     r2e_tests.test_scripts.dummy.view.call\nE       ?     ----\nE       +     tests.test_scripts.dummy.view.call\n\nr2e_tests/test_scripts/test_pviews.py:591: AssertionError\n_____ TestPViewsCommand.test_views_command_single_view_function_traversal ______\n\nself = <r2e_tests.test_scripts.test_pviews.TestPViewsCommand testMethod=test_views_command_single_view_function_traversal>\n\n    def test_views_command_single_view_function_traversal(self):\n        from pyramid.registry import Registry\n    \n        registry = Registry()\n        command = self._makeOne(registry=registry)\n        L = []\n        command.out = L.append\n    \n        def view():  # pragma: no cover\n            pass\n    \n        view.__request_attrs__ = {'context': 'context', 'view_name': 'a'}\n        command._find_view = lambda arg1: view\n        command.args.config_uri = '/foo/bar/myapp.ini#myapp'\n        command.args.url = '/a'\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(L[1], 'URL = /a')\n        self.assertEqual(L[3], '    context: context')\n        self.assertEqual(L[4], '    view name: a')\n>       self.assertEqual(L[8], '    tests.test_scripts.test_pviews.view')\nE       AssertionError: '    r2e_tests.test_scripts.test_pviews.view' != '    tests.test_scripts.test_pviews.view'\nE       -     r2e_tests.test_scripts.test_pviews.view\nE       ?     ----\nE       +     tests.test_scripts.test_pviews.view\n\nr2e_tests/test_scripts/test_pviews.py:384: AssertionError\n____________ TestPViewsCommand.test_views_command_single_view_route ____________\n\nself = <r2e_tests.test_scripts.test_pviews.TestPViewsCommand testMethod=test_views_command_single_view_route>\n\n    def test_views_command_single_view_route(self):\n        from pyramid.registry import Registry\n    \n        registry = Registry()\n        command = self._makeOne(registry=registry)\n        L = []\n        command.out = L.append\n        route = dummy.DummyRoute('a', '/a', matchdict={})\n        view = dummy.DummyView(\n            context='context', view_name='a', matched_route=route, subpath=''\n        )\n        command._find_view = lambda arg1: view\n        command.args.config_uri = '/foo/bar/myapp.ini#myapp'\n        command.args.url = '/a'\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(L[1], 'URL = /a')\n        self.assertEqual(L[3], '    context: context')\n        self.assertEqual(L[4], '    view name: a')\n        self.assertEqual(L[6], '    Route:')\n        self.assertEqual(L[8], '    route name: a')\n        self.assertEqual(L[9], '    route pattern: /a')\n        self.assertEqual(L[10], '    route path: /a')\n        self.assertEqual(L[11], '    subpath: ')\n>       self.assertEqual(L[15], '        tests.test_scripts.dummy.DummyView')\nE       AssertionError: '        r2e_tests.test_scripts.dummy.DummyView' != '        tests.test_scripts.dummy.DummyView'\nE       -         r2e_tests.test_scripts.dummy.DummyView\nE       ?         ----\nE       +         tests.test_scripts.dummy.DummyView\n\nr2e_tests/test_scripts/test_pviews.py:455: AssertionError\n_ TestPViewsCommand.test_views_command_single_view_route_with_route_predicates _\n\nself = <r2e_tests.test_scripts.test_pviews.TestPViewsCommand testMethod=test_views_command_single_view_route_with_route_predicates>\n\n    def test_views_command_single_view_route_with_route_predicates(self):\n        from pyramid.registry import Registry\n    \n        registry = Registry()\n        command = self._makeOne(registry=registry)\n        L = []\n        command.out = L.append\n    \n        def predicate():  # pragma: no cover\n            pass\n    \n        predicate.text = lambda *arg: \"predicate = x\"\n        route = dummy.DummyRoute('a', '/a', matchdict={}, predicate=predicate)\n        view = dummy.DummyView(\n            context='context', view_name='a', matched_route=route, subpath=''\n        )\n        command._find_view = lambda arg1: view\n        command.args.config_uri = '/foo/bar/myapp.ini#myapp'\n        command.args.url = '/a'\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(L[1], 'URL = /a')\n        self.assertEqual(L[3], '    context: context')\n        self.assertEqual(L[4], '    view name: a')\n        self.assertEqual(L[6], '    Route:')\n        self.assertEqual(L[8], '    route name: a')\n        self.assertEqual(L[9], '    route pattern: /a')\n        self.assertEqual(L[10], '    route path: /a')\n        self.assertEqual(L[11], '    subpath: ')\n        self.assertEqual(L[12], '    route predicates (predicate = x)')\n>       self.assertEqual(L[16], '        tests.test_scripts.dummy.DummyView')\nE       AssertionError: '        r2e_tests.test_scripts.dummy.DummyView' != '        tests.test_scripts.dummy.DummyView'\nE       -         r2e_tests.test_scripts.dummy.DummyView\nE       ?         ----\nE       +         tests.test_scripts.dummy.DummyView\n\nr2e_tests/test_scripts/test_pviews.py:514: AssertionError\n__________ TestPViewsCommand.test_views_command_single_view_traversal __________\n\nself = <r2e_tests.test_scripts.test_pviews.TestPViewsCommand testMethod=test_views_command_single_view_traversal>\n\n    def test_views_command_single_view_traversal(self):\n        from pyramid.registry import Registry\n    \n        registry = Registry()\n        command = self._makeOne(registry=registry)\n        L = []\n        command.out = L.append\n        view = dummy.DummyView(context='context', view_name='a')\n        command._find_view = lambda arg1: view\n        command.args.config_uri = '/foo/bar/myapp.ini#myapp'\n        command.args.url = '/a'\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(L[1], 'URL = /a')\n        self.assertEqual(L[3], '    context: context')\n        self.assertEqual(L[4], '    view name: a')\n>       self.assertEqual(L[8], '    tests.test_scripts.dummy.DummyView')\nE       AssertionError: '    r2e_tests.test_scripts.dummy.DummyView' != '    tests.test_scripts.dummy.DummyView'\nE       -     r2e_tests.test_scripts.dummy.DummyView\nE       ?     ----\nE       +     tests.test_scripts.dummy.DummyView\n\nr2e_tests/test_scripts/test_pviews.py:362: AssertionError\n__ TestPViewsCommand.test_views_command_single_view_traversal_with_permission __\n\nself = <r2e_tests.test_scripts.test_pviews.TestPViewsCommand testMethod=test_views_command_single_view_traversal_with_permission>\n\n    def test_views_command_single_view_traversal_with_permission(self):\n        from pyramid.registry import Registry\n    \n        registry = Registry()\n        command = self._makeOne(registry=registry)\n        L = []\n        command.out = L.append\n        view = dummy.DummyView(context='context', view_name='a')\n        view.__permission__ = 'test'\n        command._find_view = lambda arg1: view\n        command.args.config_uri = '/foo/bar/myapp.ini#myapp'\n        command.args.url = '/a'\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(L[1], 'URL = /a')\n        self.assertEqual(L[3], '    context: context')\n        self.assertEqual(L[4], '    view name: a')\n>       self.assertEqual(L[8], '    tests.test_scripts.dummy.DummyView')\nE       AssertionError: '    r2e_tests.test_scripts.dummy.DummyView' != '    tests.test_scripts.dummy.DummyView'\nE       -     r2e_tests.test_scripts.dummy.DummyView\nE       ?     ----\nE       +     tests.test_scripts.dummy.DummyView\n\nr2e_tests/test_scripts/test_pviews.py:403: AssertionError\n__ TestPViewsCommand.test_views_command_single_view_traversal_with_predicates __\n\nself = <r2e_tests.test_scripts.test_pviews.TestPViewsCommand testMethod=test_views_command_single_view_traversal_with_predicates>\n\n    def test_views_command_single_view_traversal_with_predicates(self):\n        from pyramid.registry import Registry\n    \n        registry = Registry()\n        command = self._makeOne(registry=registry)\n        L = []\n        command.out = L.append\n    \n        def predicate():  # pragma: no cover\n            pass\n    \n        predicate.text = lambda *arg: \"predicate = x\"\n        view = dummy.DummyView(context='context', view_name='a')\n        view.__predicates__ = [predicate]\n        command._find_view = lambda arg1: view\n        command.args.config_uri = '/foo/bar/myapp.ini#myapp'\n        command.args.url = '/a'\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(L[1], 'URL = /a')\n        self.assertEqual(L[3], '    context: context')\n        self.assertEqual(L[4], '    view name: a')\n>       self.assertEqual(L[8], '    tests.test_scripts.dummy.DummyView')\nE       AssertionError: '    r2e_tests.test_scripts.dummy.DummyView' != '    tests.test_scripts.dummy.DummyView'\nE       -     r2e_tests.test_scripts.dummy.DummyView\nE       ?     ----\nE       +     tests.test_scripts.dummy.DummyView\n\nr2e_tests/test_scripts/test_pviews.py:428: AssertionError\n==================================== PASSES ====================================\n=========================== short test summary info ============================\nPASSED r2e_tests/test_1.py::TestAllPermissionsList::test_contains_w_object\nPASSED r2e_tests/test_1.py::TestAllPermissionsList::test_contains_w_string\nPASSED r2e_tests/test_1.py::TestAllPermissionsList::test_equality_miss\nPASSED r2e_tests/test_1.py::TestAllPermissionsList::test_equality_w_other_instances_of_class\nPASSED r2e_tests/test_1.py::TestAllPermissionsList::test_equality_w_self\nPASSED r2e_tests/test_1.py::TestAllPermissionsList::test_iterable\nPASSED r2e_tests/test_1.py::TestAllPermissionsList::test_singleton\nPASSED r2e_tests/test_1.py::TestAllowed::test_it\nPASSED r2e_tests/test_1.py::TestDenied::test_it\nPASSED r2e_tests/test_1.py::TestACLAllowed::test_it\nPASSED r2e_tests/test_1.py::TestACLDenied::test_it\nPASSED r2e_tests/test_1.py::TestPrincipalsAllowedByPermission::test_no_authorization_policy\nPASSED r2e_tests/test_1.py::TestRemember::test_no_security_policy\nPASSED r2e_tests/test_1.py::TestRemember::test_with_missing_arg\nPASSED r2e_tests/test_1.py::TestRemember::test_with_security_policy\nPASSED r2e_tests/test_1.py::TestForget::test_no_security_policy\nPASSED r2e_tests/test_1.py::TestForget::test_with_security_policy\nPASSED r2e_tests/test_1.py::TestViewExecutionPermitted::test_no_permission\nPASSED r2e_tests/test_1.py::TestViewExecutionPermitted::test_no_view_registered\nPASSED r2e_tests/test_1.py::TestViewExecutionPermitted::test_with_permission\nPASSED r2e_tests/test_1.py::TestAuthenticatedIdentity::test_identity\nPASSED r2e_tests/test_1.py::TestAuthenticatedIdentity::test_identity_no_security_policy\nPASSED r2e_tests/test_1.py::TestAuthenticatedUserId::test_no_authentication_policy\nPASSED r2e_tests/test_1.py::TestAuthenticatedUserId::test_with_authentication_policy\nPASSED r2e_tests/test_1.py::TestAuthenticatedUserId::test_with_security_policy\nPASSED r2e_tests/test_1.py::TestUnAuthenticatedUserId::test_no_authentication_policy\nPASSED r2e_tests/test_1.py::TestUnAuthenticatedUserId::test_with_authentication_policy\nPASSED r2e_tests/test_1.py::TestUnAuthenticatedUserId::test_with_security_policy\nPASSED r2e_tests/test_1.py::TestEffectivePrincipals::test_no_authentication_policy\nPASSED r2e_tests/test_1.py::TestEffectivePrincipals::test_with_authentication_policy\nPASSED r2e_tests/test_1.py::TestHasPermission::test_no_security_policy\nPASSED r2e_tests/test_1.py::TestHasPermission::test_with_no_context_passed\nPASSED r2e_tests/test_1.py::TestHasPermission::test_with_no_context_passed_or_on_request\nPASSED r2e_tests/test_1.py::TestHasPermission::test_with_security_registered\nPASSED r2e_tests/test_1.py::TestLegacySecurityPolicy::test_forget\nPASSED r2e_tests/test_1.py::TestLegacySecurityPolicy::test_identity\nPASSED r2e_tests/test_1.py::TestLegacySecurityPolicy::test_permits\nPASSED r2e_tests/test_1.py::TestLegacySecurityPolicy::test_remember\nPASSED r2e_tests/test_config/test_actions.py::ActionConfiguratorMixinTests::test_action_autocommit_with_introspectables\nPASSED r2e_tests/test_config/test_actions.py::ActionConfiguratorMixinTests::test_action_autocommit_with_introspectables_introspection_off\nPASSED r2e_tests/test_config/test_actions.py::ActionConfiguratorMixinTests::test_action_branching_kw_is_None\nPASSED r2e_tests/test_config/test_actions.py::ActionConfiguratorMixinTests::test_action_branching_kw_is_not_None\nPASSED r2e_tests/test_config/test_actions.py::ActionConfiguratorMixinTests::test_action_branching_nonautocommit_with_config_info\nPASSED r2e_tests/test_config/test_actions.py::ActionConfiguratorMixinTests::test_action_branching_nonautocommit_with_introspectables\nPASSED r2e_tests/test_config/test_actions.py::ActionConfiguratorMixinTests::test_action_branching_nonautocommit_without_config_info\nPASSED r2e_tests/test_config/test_actions.py::ActionConfiguratorMixinTests::test_action_nonautocommit_with_introspectables_introspection_off\nPASSED r2e_tests/test_config/test_actions.py::ActionConfiguratorMixinTests::test_autocommit_no_conflicts\nPASSED r2e_tests/test_config/test_actions.py::ActionConfiguratorMixinTests::test_commit_conflict_resolved_with_include\nPASSED r2e_tests/test_config/test_actions.py::ActionConfiguratorMixinTests::test_commit_conflict_resolved_with_two_includes_and_local\nPASSED r2e_tests/test_config/test_actions.py::ActionConfiguratorMixinTests::test_commit_conflict_simple\nPASSED r2e_tests/test_config/test_actions.py::ActionConfiguratorMixinTests::test_commit_conflict_with_two_includes\nPASSED r2e_tests/test_config/test_actions.py::ActionConfiguratorMixinTests::test_conflict_set_forbidden_view\nPASSED r2e_tests/test_config/test_actions.py::ActionConfiguratorMixinTests::test_conflict_set_notfound_view\nPASSED r2e_tests/test_config/test_actions.py::TestActionState::test_action_simple\nPASSED r2e_tests/test_config/test_actions.py::TestActionState::test_action_with_includepath\nPASSED r2e_tests/test_config/test_actions.py::TestActionState::test_action_with_includepath_and_info\nPASSED r2e_tests/test_config/test_actions.py::TestActionState::test_action_with_info\nPASSED r2e_tests/test_config/test_actions.py::TestActionState::test_action_with_introspectables\nPASSED r2e_tests/test_config/test_actions.py::TestActionState::test_action_with_order\nPASSED r2e_tests/test_config/test_actions.py::TestActionState::test_execute_actions_dicts\nPASSED r2e_tests/test_config/test_actions.py::TestActionState::test_execute_actions_error\nPASSED r2e_tests/test_config/test_actions.py::TestActionState::test_execute_actions_tuples\nPASSED r2e_tests/test_config/test_actions.py::TestActionState::test_execute_actions_with_introspectable_no_callable\nPASSED r2e_tests/test_config/test_actions.py::TestActionState::test_execute_actions_with_introspectables\nPASSED r2e_tests/test_config/test_actions.py::TestActionState::test_executing_conflicting_action_across_orders\nPASSED r2e_tests/test_config/test_actions.py::TestActionState::test_executing_conflicting_action_across_reentrant_orders\nPASSED r2e_tests/test_config/test_actions.py::TestActionState::test_it\nPASSED r2e_tests/test_config/test_actions.py::TestActionState::test_processSpec\nPASSED r2e_tests/test_config/test_actions.py::TestActionState::test_reentrant_action\nPASSED r2e_tests/test_config/test_actions.py::TestActionState::test_reentrant_action_error\nPASSED r2e_tests/test_config/test_actions.py::TestActionState::test_reentrant_action_with_deferred_discriminator\nPASSED r2e_tests/test_config/test_actions.py::TestActionState::test_reentrant_action_without_clear\nPASSED r2e_tests/test_config/test_actions.py::Test_reentrant_action_functional::test_deferred_discriminator\nPASSED r2e_tests/test_config/test_actions.py::Test_reentrant_action_functional::test_functional\nPASSED r2e_tests/test_config/test_actions.py::Test_resolveConflicts::test_conflicts_across_orders\nPASSED r2e_tests/test_config/test_actions.py::Test_resolveConflicts::test_it_conflict\nPASSED r2e_tests/test_config/test_actions.py::Test_resolveConflicts::test_it_success_dicts\nPASSED r2e_tests/test_config/test_actions.py::Test_resolveConflicts::test_it_success_tuples\nPASSED r2e_tests/test_config/test_actions.py::Test_resolveConflicts::test_it_with_actions_grouped_by_order\nPASSED r2e_tests/test_config/test_actions.py::Test_resolveConflicts::test_override_success_across_orders\nPASSED r2e_tests/test_config/test_actions.py::TestActionInfo::test___str__\nPASSED r2e_tests/test_config/test_actions.py::TestActionInfo::test_class_conforms\nPASSED r2e_tests/test_config/test_actions.py::TestActionInfo::test_ctor\nPASSED r2e_tests/test_config/test_actions.py::TestActionInfo::test_instance_conforms\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_object_event_subscriber\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_resource_url_default_resource_iface_means_Interface\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_resource_url_nodefault_resource_iface\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_response_adapter\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_response_adapter_dottednames\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_response_adapter_self\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_subscriber_defaults\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_subscriber_dottednames\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_subscriber_iface_specified\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_subscriber_predicate\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_subscriber_with_default_type_predicates_False\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_subscriber_with_default_type_predicates_True\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_subscriber_with_specific_type_and_predicates_False\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_subscriber_with_specific_type_and_predicates_True\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_traverser_default_iface_means_Interface\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_traverser_introspectables\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_traverser_nondefault_iface\nPASSED r2e_tests/test_config/test_adapters.py::Test_eventonly::test_defaults\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test__override_already_registered\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test__override_not_yet_registered\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_directory_with_absdirectory\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_directory_with_absfile\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_directory_with_file\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_file_with_absdirectory\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_file_with_absfile\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_file_with_directory\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_file_with_missing_abspath\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_file_with_package\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_package_with_absdirectory\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_samename\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_get_resource_filename_override_returns_value\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_get_resource_stream_no_overrides\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_get_resource_stream_override_returns_None\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_get_resource_stream_override_returns_value\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_get_resource_string_no_overrides\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_get_resource_string_override_returns_None\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_get_resource_string_override_returns_value\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_has_resource_no_overrides\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_has_resource_override_returns_None\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_has_resource_override_returns_True\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_resource_isdir_no_overrides\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_resource_isdir_override_returns_False\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_resource_isdir_override_returns_None\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_resource_listdir_no_overrides\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_resource_listdir_override_returns_None\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_resource_listdir_override_returns_values\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_class_conforms_to_IPEP302Loader\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_class_conforms_to_IPackageOverrides\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_ctor_package_already_has_loader_of_different_type\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_ctor_package_already_has_loader_of_same_type\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_ctor_registers_loader_type\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_ctor_sets_loader\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_ctor_sets_local_state\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_filtered_sources\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_get_code_pkg_has___loader__\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_get_code_pkg_has_no___loader__\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_get_data_pkg_has___loader__\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_get_data_pkg_has_no___loader__\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_get_filename\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_get_filename_file_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_get_source_pkg_has___loader__\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_get_source_pkg_has_no___loader__\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_get_stream\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_get_stream_file_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_get_string\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_get_string_file_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_has_resource\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_has_resource_file_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_insert_directory\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_insert_emptystring\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_insert_file\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_instance_conforms_to_IPEP302Loader\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_instance_conforms_to_IPackageOverrides\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_is_package_pkg_has___loader__\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_is_package_pkg_has_no___loader__\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_isdir_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_isdir_false\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_isdir_true\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_listdir\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_listdir_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestPackageAssetSource::test_exists\nPASSED r2e_tests/test_config/test_assets.py::TestPackageAssetSource::test_exists_file_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestPackageAssetSource::test_exists_with_prefix\nPASSED r2e_tests/test_config/test_assets.py::TestPackageAssetSource::test_get_filename_file_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestPackageAssetSource::test_get_stream\nPASSED r2e_tests/test_config/test_assets.py::TestPackageAssetSource::test_get_stream_file_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestPackageAssetSource::test_get_stream_with_prefix\nPASSED r2e_tests/test_config/test_assets.py::TestPackageAssetSource::test_get_string\nPASSED r2e_tests/test_config/test_assets.py::TestPackageAssetSource::test_get_string_file_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestPackageAssetSource::test_get_string_with_prefix\nPASSED r2e_tests/test_config/test_assets.py::TestPackageAssetSource::test_isdir_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestPackageAssetSource::test_isdir_false\nPASSED r2e_tests/test_config/test_assets.py::TestPackageAssetSource::test_isdir_true\nPASSED r2e_tests/test_config/test_assets.py::TestPackageAssetSource::test_listdir\nPASSED r2e_tests/test_config/test_assets.py::TestPackageAssetSource::test_listdir_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestFSAssetSource::test_exists\nPASSED r2e_tests/test_config/test_assets.py::TestFSAssetSource::test_exists_file_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestFSAssetSource::test_exists_with_prefix\nPASSED r2e_tests/test_config/test_assets.py::TestFSAssetSource::test_get_filename\nPASSED r2e_tests/test_config/test_assets.py::TestFSAssetSource::test_get_filename_file_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestFSAssetSource::test_get_filename_with_prefix\nPASSED r2e_tests/test_config/test_assets.py::TestFSAssetSource::test_get_stream\nPASSED r2e_tests/test_config/test_assets.py::TestFSAssetSource::test_get_stream_file_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestFSAssetSource::test_get_stream_with_prefix\nPASSED r2e_tests/test_config/test_assets.py::TestFSAssetSource::test_get_string\nPASSED r2e_tests/test_config/test_assets.py::TestFSAssetSource::test_get_string_file_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestFSAssetSource::test_get_string_with_prefix\nPASSED r2e_tests/test_config/test_assets.py::TestFSAssetSource::test_isdir_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestFSAssetSource::test_isdir_false\nPASSED r2e_tests/test_config/test_assets.py::TestFSAssetSource::test_isdir_true\nPASSED r2e_tests/test_config/test_assets.py::TestFSAssetSource::test_listdir\nPASSED r2e_tests/test_config/test_assets.py::TestFSAssetSource::test_listdir_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestDirectoryOverride::test_it_match\nPASSED r2e_tests/test_config/test_assets.py::TestDirectoryOverride::test_it_no_match\nPASSED r2e_tests/test_config/test_assets.py::TestFileOverride::test_it_match\nPASSED r2e_tests/test_config/test_assets.py::TestFileOverride::test_it_no_match\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_add_request_method_with_None_callable\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_add_request_method_with_None_callable_and_no_name\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_add_request_method_with_None_callable_conflict\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_add_request_method_with_callable\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_add_request_method_with_text_name\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_add_request_method_with_unnamed_callable\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_execution_policy\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_execution_policy_to_None\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_multiple_request_methods_conflict\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_request_factory\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_response_factory\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_root_factory\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_root_factory_as_None\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_session_factory\nPASSED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_add_translation_dirs_invalid_kwargs\nPASSED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_add_translation_dirs_missing_dir\nPASSED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_add_translation_dirs_no_specs\nPASSED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_set_locale_negotiator\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test___getattr__matches\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test___getattr__matches_no_action_wrap\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test___getattr__missing_when_directives_dont_exist\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test___getattr__missing_when_directives_exist\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test__fix_registry_adds__lock\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test__fix_registry_adds_clear_view_lookup_cache\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test__fix_registry_has_listeners\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test__fix_registry_notify\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test__fix_registry_queryAdapterOrSelf\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test__fix_registry_registerSelfAdapter\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_absolute_asset_spec_already_absolute\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_absolute_asset_spec_notastring\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_absolute_asset_spec_relative\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_begin\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_begin_does_not_propagate_request_for_diff_registry\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_begin_overrides_request\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_begin_propagates_request_for_same_registry\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_begin_with_request\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_context_manager\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_alternate_renderers\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_authentication_policy\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_authorization_policy_only\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_default_permission\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_default_renderers\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_default_view_mapper\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_default_webob_response_adapter_registered\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_exceptionresponse_view_None\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_exceptionresponse_view_custom\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_httpexception_view_default\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_no_root_factory\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_noreg_custom_settings\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_noreg_debug_logger_non_None\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_security_policy\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_session_factory\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_with_introspection\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_with_package_registry\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_with_root_factory\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_end\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_hook_zca\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_include_threadlocals_active\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_include_with_dotted_name\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_include_with_missing_source_file\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_include_with_module_defaults_to_includeme\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_include_with_module_defaults_to_includeme_missing\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_include_with_nested_route_prefix\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_include_with_route_prefix\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_introspector_decorator\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_make_wsgi_app\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_maybe_dotted_notstring_success\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_maybe_dotted_string_fail\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_maybe_dotted_string_success\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_scan_integration\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_scan_integration_conflict\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_scan_integration_dottedname_package\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_scan_integration_with_extra_kw\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_scan_integration_with_ignore\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_scan_integration_with_onerror\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_alternate_renderers\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_authentication_policy\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_authentication_policy_dottedname\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_authorization_policy_dottedname\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_authorization_policy_only\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_calls_fix_registry\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_custom_settings\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_debug_logger_name\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_debug_logger_non_None\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_default_permission\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_dottedname_root_factory\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_explicit_notfound_trumps_iexceptionresponse\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_includes\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_includes_spaces\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_locale_negotiator\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_locale_negotiator_dottedname\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_no_default_root_factory\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_registers_default_exceptionresponse_views\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_registers_default_view_predicates\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_registers_default_webob_iresponse_adapter\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_request_factory\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_request_factory_dottedname\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_response_factory\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_unhook_zca\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_with_package\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_with_package_package\nPASSED r2e_tests/test_config/test_init.py::TestConfigurator_add_directive::test_directive_persists_across_configurator_creations\nPASSED r2e_tests/test_config/test_init.py::TestConfigurator_add_directive::test_extend_action_method_successful\nPASSED r2e_tests/test_config/test_init.py::TestConfigurator_add_directive::test_extend_same_name_doesnt_conflict\nPASSED r2e_tests/test_config/test_init.py::TestConfigurator__add_predicate::test_factory_as_object\nPASSED r2e_tests/test_config/test_init.py::TestGlobalRegistriesIntegration::test_global_registries\nPASSED r2e_tests/test_config/test_init.py::TestGlobalRegistriesIntegration::test_global_registries_empty\nPASSED r2e_tests/test_config/test_predicates.py::TestPredicateList::test_custom_predicates_can_affect_traversal\nPASSED r2e_tests/test_config/test_predicates.py::TestPredicateList::test_different_custom_predicates_with_same_hash\nPASSED r2e_tests/test_config/test_predicates.py::TestPredicateList::test_match_param_from_dict\nPASSED r2e_tests/test_config/test_predicates.py::TestPredicateList::test_match_param_from_dict_fails\nPASSED r2e_tests/test_config/test_predicates.py::TestPredicateList::test_match_param_from_string\nPASSED r2e_tests/test_config/test_predicates.py::TestPredicateList::test_match_param_from_string_fails\nPASSED r2e_tests/test_config/test_predicates.py::TestPredicateList::test_notted\nPASSED r2e_tests/test_config/test_predicates.py::TestPredicateList::test_ordering_importance_and_number\nPASSED r2e_tests/test_config/test_predicates.py::TestPredicateList::test_ordering_importance_of_predicates\nPASSED r2e_tests/test_config/test_predicates.py::TestPredicateList::test_ordering_number_of_predicates\nPASSED r2e_tests/test_config/test_predicates.py::TestPredicateList::test_ordering_xhr_and_request_method_trump_only_containment\nPASSED r2e_tests/test_config/test_predicates.py::TestPredicateList::test_predicate_close_matches\nPASSED r2e_tests/test_config/test_predicates.py::TestPredicateList::test_predicate_text_is_correct\nPASSED r2e_tests/test_config/test_predicates.py::TestPredicateList::test_request_method_ordering_hashes_same\nPASSED r2e_tests/test_config/test_predicates.py::TestPredicateList::test_request_method_sequence\nPASSED r2e_tests/test_config/test_predicates.py::TestPredicateList::test_traverse_has_remainder_already\nPASSED r2e_tests/test_config/test_predicates.py::TestPredicateList::test_traverse_matches\nPASSED r2e_tests/test_config/test_predicates.py::TestPredicateList::test_traverse_matches_with_highorder_chars\nPASSED r2e_tests/test_config/test_predicates.py::TestPredicateList::test_unknown_predicate\nPASSED r2e_tests/test_config/test_predicates.py::Test_sort_accept_offers::test_default_specificities\nPASSED r2e_tests/test_config/test_predicates.py::Test_sort_accept_offers::test_params_inherit_type_prefs\nPASSED r2e_tests/test_config/test_predicates.py::Test_sort_accept_offers::test_params_order\nPASSED r2e_tests/test_config/test_predicates.py::Test_sort_accept_offers::test_specific_type_order\nPASSED r2e_tests/test_config/test_rendering.py::TestRenderingConfiguratorMixin::test_add_default_renderers\nPASSED r2e_tests/test_config/test_rendering.py::TestRenderingConfiguratorMixin::test_add_renderer\nPASSED r2e_tests/test_config/test_rendering.py::TestRenderingConfiguratorMixin::test_add_renderer_dottedname_factory\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_defaults\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_discriminator\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_no_path_no_pattern\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_no_pattern_with_path\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_no_view_with_view_attr\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_no_view_with_view_context\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_no_view_with_view_permission\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_no_view_with_view_renderer\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_accept\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_accept_list\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_custom_predicates\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_factory\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_header\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_inherit_errors\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_path_info\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_path_info_highorder\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_path_info_regex\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_pregenerator\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_request_method\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_request_param\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_root_slash_with_route_prefix\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_route_prefix\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_route_prefix_with_inherit_slash\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_static\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_wildcard_accept_raises\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_xhr\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_get_routes_mapper_already_registered\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_get_routes_mapper_not_yet_registered\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_add_permission\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_changing_set_default_csrf_options\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_authentication_policy_no_authz_policy\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_authentication_policy_no_authz_policy_autocommit\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_authentication_policy_with_authz_policy\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_authentication_policy_with_authz_policy_autocommit\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_authentication_policy_with_security_policy\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_authorization_policy_no_authn_policy\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_authorization_policy_no_authn_policy_autocommit\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_authorization_policy_with_authn_policy\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_authorization_policy_with_authn_policy_autocommit\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_default_csrf_options\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_default_permission\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_security_policy\nPASSED r2e_tests/test_config/test_settings.py::TestSettingsConfiguratorMixin::test__set_settings_as_None\nPASSED r2e_tests/test_config/test_settings.py::TestSettingsConfiguratorMixin::test__set_settings_as_dictwithvalues\nPASSED r2e_tests/test_config/test_settings.py::TestSettingsConfiguratorMixin::test__set_settings_does_not_uses_original_dict\nPASSED r2e_tests/test_config/test_settings.py::TestSettingsConfiguratorMixin::test_add_settings_settings_None\nPASSED r2e_tests/test_config/test_settings.py::TestSettingsConfiguratorMixin::test_add_settings_settings_already_registered\nPASSED r2e_tests/test_config/test_settings.py::TestSettingsConfiguratorMixin::test_add_settings_settings_not_yet_registered\nPASSED r2e_tests/test_config/test_settings.py::TestSettingsConfiguratorMixin::test_get_settings_nosettings\nPASSED r2e_tests/test_config/test_settings.py::TestSettingsConfiguratorMixin::test_get_settings_withsettings\nPASSED r2e_tests/test_config/test_settings.py::TestSettingsConfiguratorMixin::test_settings_parameter_dict_is_never_updated\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_csrf_trusted_origins\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_debug_all\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_debug_authorization\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_debug_notfound\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_debug_routematch\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_debug_templates\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_default_locale_name\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_noargs\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_originals_kept\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_prevent_cachebust\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_prevent_http_cache\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_reload_all\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_reload_assets\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_reload_resources\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_reload_templates\nPASSED r2e_tests/test_config/test_testing.py::TestingConfiguratorMixinTests::test_testing_add_renderer\nPASSED r2e_tests/test_config/test_testing.py::TestingConfiguratorMixinTests::test_testing_add_renderer_explicitrenderer\nPASSED r2e_tests/test_config/test_testing.py::TestingConfiguratorMixinTests::test_testing_add_renderer_twice\nPASSED r2e_tests/test_config/test_testing.py::TestingConfiguratorMixinTests::test_testing_add_subscriber_defaults\nPASSED r2e_tests/test_config/test_testing.py::TestingConfiguratorMixinTests::test_testing_add_subscriber_multiple\nPASSED r2e_tests/test_config/test_testing.py::TestingConfiguratorMixinTests::test_testing_add_subscriber_single\nPASSED r2e_tests/test_config/test_testing.py::TestingConfiguratorMixinTests::test_testing_add_template\nPASSED r2e_tests/test_config/test_testing.py::TestingConfiguratorMixinTests::test_testing_resources\nPASSED r2e_tests/test_config/test_testing.py::TestingConfiguratorMixinTests::test_testing_securitypolicy_forget_result\nPASSED r2e_tests/test_config/test_testing.py::TestingConfiguratorMixinTests::test_testing_securitypolicy_remember_result\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tween_instance\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tween_name_ingress\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tween_name_main\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tween_over_ingress\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tween_over_ingress_iterable\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tween_under_main\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tween_under_main_iterable\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tween_unsuitable\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tweens_conflict\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tweens_names_with_over_nonstringoriter\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tweens_names_with_under_nonstringoriter\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test___call___explicit\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test___call___implicit\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_add_explicit\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_add_implicit\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_1\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_2\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_3\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_4\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_5\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_conflict_direct\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_conflict_indirect\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_missing_over_and_under_partials\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_missing_over_partial\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_missing_over_partial_with_fallback\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_missing_under_partial\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_missing_under_partial_with_fallback\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_with_missing_fallbacks\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_with_multiple_matching_fallbacks\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_with_partial_fallbacks\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_accept_view_order_override\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_accept_view_order_throws_on_type_mismatch\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_accept_view_order_throws_on_wildcard\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_exception_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_exception_view_disallows_exception_only\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_exception_view_disallows_for_\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_exception_view_disallows_name\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_exception_view_disallows_permission\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_exception_view_disallows_require_csrf\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_exception_view_with_subclass\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_forbidden_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_forbidden_view_allows_other_predicates\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_forbidden_view_disallows_context\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_forbidden_view_disallows_for_\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_forbidden_view_disallows_name\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_forbidden_view_disallows_permission\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_forbidden_view_disallows_require_csrf\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_forbidden_view_no_view_argument\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_forbidden_view_with_renderer\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_normal_and_exception_view_intr_derived_callable\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_notfound_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_notfound_view_allows_other_predicates\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_notfound_view_append_slash\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_notfound_view_append_slash_custom_response\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_notfound_view_disallows_context\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_notfound_view_disallows_for_\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_notfound_view_disallows_name\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_notfound_view_disallows_permission\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_notfound_view_disallows_require_csrf\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_notfound_view_no_view_argument\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_notfound_view_with_renderer\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_static_view_absolute\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_static_view_here_no_utility_registered\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_static_view_package_relative\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_as_instance\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_as_instance_requestonly\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_as_instancemethod\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_as_instancemethod_requestonly\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_as_oldstyle_class\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_as_oldstyle_class_requestonly\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_class_method_no_attr\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_context_as_class\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_context_as_iface\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_context_trumps_for\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_custom_more_preds_first_bests_fewer_preds_last\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_custom_predicate_bests_standard_predicate\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_default_phash_overrides_default_phash\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_default_phash_overrides_no_phash\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_does_not_accept_iterable_accept\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_exc_default_phash_overrides_default_phash\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_exc_default_phash_overrides_no_phash\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_exc_multiview_replaces_existing_securedview\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_exc_multiview_replaces_existing_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_exc_multiview_replaces_multiviews\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_exc_multiview_replaces_only_exc_multiview\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_exc_mulview_replaces_existing_view_with___accept__\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_exc_same_phash_overrides_existing_single_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_exc_with_accept_multiview_replaces_existing_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_exception_only\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_exception_only_misconfiguration\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_exception_only_no_regular_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_exception_register_secured_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_for_as_class\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_for_as_iface\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_mixed_case_replaces_existing_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_multiview___discriminator__\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_multiview_call_ordering\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_multiview_context_superclass_then_subclass\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_multiview_exception_superclass_then_subclass\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_multiview_replaces_existing_securedview\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_multiview_replaces_existing_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_multiview_replaces_existing_view_with___accept__\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_multiview_replaces_multiview\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_register_secured_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_same_phash_overrides_existing_single_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_same_predicates\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_view_callable_None_no_renderer\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_view_callable_None_with_renderer\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_view_callable_dottedname\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_accept_match\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_accept_multiview_replaces_existing_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_accept_nomatch\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_containment_false\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_containment_true\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_csrf_header\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_csrf_param\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_custom_predicates_match\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_custom_predicates_nomatch\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_decorator\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_decorator_tuple\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_default_renderer\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_function_callable\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_function_callable_requestonly\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_header_badregex\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_header_noval_match\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_header_noval_nomatch\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_header_val_match\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_header_val_missing\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_header_val_nomatch\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_http_cache\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_mapper\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_missing_csrf_header\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_name\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_name_unicode\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_no_default_permission_no_explicit_permission\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_nonexistant_route_name\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_path_info_badregex\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_path_info_match\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_path_info_nomatch\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_method_false\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_method_get_implies_head\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_method_sequence_conflict\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_method_sequence_false\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_method_sequence_true\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_method_true\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_param_noval_false\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_param_noval_true\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_param_val_false\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_param_val_true\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_type\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_type_and_route_name\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_type_as_iface\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_type_as_noniface\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_route_name\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_route_name_exception\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_tmpl_renderer_factory_introspector_missing\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_tmpl_renderer_factory_no_renderer_factory\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_tmpl_renderer_factory_with_renderer_factory\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_view_config_and_view_defaults_conflicts\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_view_config_and_view_defaults_doesnt_conflict\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_wildcard_accept_raises\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_xhr_false\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_xhr_true\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_wrapped_view_is_decorated\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_views_with_accept_multiview_replaces_existing\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_default_accept_view_order\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_derive_view_dottedname\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_derive_view_function\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_derive_view_with_default_renderer_no_explicit_renderer\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_derive_view_with_default_renderer_with_explicit_renderer\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_set_view_mapper\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_set_view_mapper_dottedname\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_view_with_most_specific_predicate\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_view_with_most_specific_predicate_with_mismatch\nPASSED r2e_tests/test_config/test_views.py::Test_runtime_exc_view::test_call\nPASSED r2e_tests/test_config/test_views.py::Test_runtime_exc_view::test_call_dispatches_on_exception\nPASSED r2e_tests/test_config/test_views.py::Test_runtime_exc_view::test_permitted\nPASSED r2e_tests/test_config/test_views.py::Test_runtime_exc_view::test_permitted_dispatches_on_exception\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_defaults\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_otherattr\nPASSED r2e_tests/test_config/test_views.py::Test_isexception::test_is_IException\nPASSED r2e_tests/test_config/test_views.py::Test_isexception::test_is_IException_subinterface\nPASSED r2e_tests/test_config/test_views.py::Test_isexception::test_is_exception_class\nPASSED r2e_tests/test_config/test_views.py::Test_isexception::test_is_exception_instance\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test___call__\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test___call__intermediate_not_found\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test___call__raise_not_found_isnt_interpreted_as_pred_mismatch\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test___call_permissive_has_call_permissive\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test___call_permissive_has_no_call_permissive\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test__call__not_found\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test__call__with_accept_match\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test__call__with_accept_miss\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test__call_permissive__not_found\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_add\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_add_with_phash\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_add_with_phash_override_accept\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_add_with_phash_override_accept2\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_class_implements_ISecuredView\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_get_views\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_get_views_best_match_returns_None\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_get_views_no_self_accepts\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_get_views_request_has_no_accept\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_instance_implements_ISecuredView\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_match_not_found\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_match_predicate_fails\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_match_predicate_succeeds\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_multiple_with_functions_as_views\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_permitted\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_permitted_no_match_with__permitted__\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_permitted_no_views\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test__view_as_function_with_attr\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_function_context_and_request\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_function_requestonly\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_function_requestonly_with_attr\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_instance_context_and_request\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_instance_context_and_request_and_attr\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_instance_requestonly\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_instance_requestonly_with_attr\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_newstyle_class_context_and_request\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_newstyle_class_context_and_request_with_attr\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_newstyle_class_requestonly\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_newstyle_class_requestonly_with_attr\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_oldstyle_class_context_and_request\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_oldstyle_class_context_and_request_with_attr\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_oldstyle_class_requestonly\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_oldstyle_class_requestonly_with_attr\nPASSED r2e_tests/test_config/test_views.py::Test_preserve_view_attrs::test_it_different\nPASSED r2e_tests/test_config/test_views.py::Test_preserve_view_attrs::test_it_different_with_existing_original_view\nPASSED r2e_tests/test_config/test_views.py::Test_preserve_view_attrs::test_it_same\nPASSED r2e_tests/test_config/test_views.py::Test_preserve_view_attrs::test_it_view_is_None\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_already_exists\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_cachebust_prevented\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_cachebuster\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_cachebuster_abspath\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_cachebuster_for_more_specific_path\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_cachebuster_overwrite\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_cachebuster_overwrite_explicit\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_package_root\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_url_noendslash\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_url_noscheme\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_url_withendslash\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_viewname\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_viewname_with_context\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_viewname_with_for_\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_viewname_with_permission\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_viewname_with_renderer\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_viewname_with_route_prefix\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_missing\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_quoting\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_registration_miss\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_route_url\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_slash_in_name1\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_slash_in_name2\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_url_cachebust\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_url_cachebust_abspath\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_url_cachebust_nomatch\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_url_quoted_remote\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_url_unquoted_local\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_url_with_custom_anchor\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_url_with_custom_query\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_verifyClass\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_verifyObject\nPASSED r2e_tests/test_config/test_views.py::Test_view_description::test_with_text\nPASSED r2e_tests/test_config/test_views.py::Test_viewdefaults::test_dunder_attrs_copied\nPASSED r2e_tests/test_scripts/test_common.py::TestParseVars::test_parse_vars_bad\nPASSED r2e_tests/test_scripts/test_common.py::TestParseVars::test_parse_vars_good\nPASSED r2e_tests/test_scripts/test_pdistreport.py::TestPDistReportCommand::test_no_dists\nPASSED r2e_tests/test_scripts/test_pdistreport.py::TestPDistReportCommand::test_with_dists\nPASSED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_display_headers\nPASSED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_has_bad_config_header\nPASSED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_has_content_type_header_var\nPASSED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_has_good_header_var\nPASSED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_has_multiple_header_vars\nPASSED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_method_configures_logging\nPASSED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_method_get\nPASSED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_method_options\nPASSED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_method_patch\nPASSED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_method_post\nPASSED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_method_propfind\nPASSED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_method_put\nPASSED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_not_enough_args\nPASSED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_path_doesnt_start_with_slash\nPASSED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_response_has_no_charset\nPASSED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_two_args\nPASSED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_w_basic_auth\nPASSED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_with_query_string\nPASSED r2e_tests/test_scripts/test_prequest.py::Test_main::test_it\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test__get_mapper\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_bad_args\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_bad_format\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_config_format_ini_commas\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_config_format_ini_newlines\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_config_format_ini_spaces\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_good_args\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_good_format\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_no_mapper\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_no_routes\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_route_as_wsgiapp\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_route_no_view\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_route_with_no_slash_prefix\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_single_route_no_route_registered\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_single_route_no_views_registered\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_single_route_one_view_registered_with_factory\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_static_routes_included_in_list\nPASSED r2e_tests/test_scripts/test_proutes.py::Test_main::test_it\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_config_file_finds_open_url\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_guess_server_url\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_original_ignore_files\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_parse_vars_bad\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_parse_vars_good\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_reload_call_hupper_with_correct_args\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_run_no_args\nPASSED r2e_tests/test_scripts/test_pserve.py::Test_main::test_it\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_command_custom_section_override\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_command_default_shell_option\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_command_errors_with_unknown_shell\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_command_loads_check_variable_override_order\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_command_loads_custom_items\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_command_loads_default_shell\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_command_loads_ipython\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_command_loads_pythonstartup\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_command_loads_setup_from_options\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_command_setup\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_command_setup_generator\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_list_shells\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_shell_entry_points\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_shell_ordering\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_shell_override\nPASSED r2e_tests/test_scripts/test_pshell.py::Test_python_shell_runner::test_it\nPASSED r2e_tests/test_scripts/test_pshell.py::Test_main::test_it\nPASSED r2e_tests/test_scripts/test_ptweens.py::TestPTweensCommand::test__get_tweens\nPASSED r2e_tests/test_scripts/test_ptweens.py::TestPTweensCommand::test_command_implicit_and_explicit_tweens\nPASSED r2e_tests/test_scripts/test_ptweens.py::TestPTweensCommand::test_command_implicit_tweens_only\nPASSED r2e_tests/test_scripts/test_ptweens.py::TestPTweensCommand::test_command_no_tweens\nPASSED r2e_tests/test_scripts/test_ptweens.py::Test_main::test_it\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test__find_multi_routes_all_match\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test__find_multi_routes_none_match\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test__find_multi_routes_some_match\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test__find_view_no_match\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test__find_view_no_match_multiview_registered\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test__find_view_route_multiview\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test__find_view_route_multiview_no_view_registered\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test__find_view_route_no_multiview\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test__find_view_traversal\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test__find_view_traversal_multiview\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_not_found\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_not_found_url_starts_without_slash\nPASSED r2e_tests/test_scripts/test_pviews.py::Test_main::test_it\nFAILED r2e_tests/test_1.py::TestLegacySecurityPolicy::test_forget_with_kwargs\nFAILED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_resource_url_adapter_dotted_names\nFAILED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_resource_url_adapter_introspectables\nFAILED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_traverser_dotted_names\nFAILED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_directory_with_directory\nFAILED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_directory_with_package\nFAILED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_file_with_file\nFAILED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_package_with_directory\nFAILED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_package_with_package\nFAILED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_get_resource_filename_no_overrides\nFAILED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_get_resource_filename_override_returns_None\nFAILED r2e_tests/test_config/test_assets.py::TestPackageAssetSource::test_get_filename\nFAILED r2e_tests/test_config/test_assets.py::TestPackageAssetSource::test_get_filename_with_prefix\nFAILED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_request_factory_dottedname\nFAILED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_response_factory_dottedname\nFAILED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_root_factory_dottedname\nFAILED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_session_factory_dottedname\nFAILED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_add_translation_dirs_abspath\nFAILED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_add_translation_dirs_asset_spec\nFAILED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_add_translation_dirs_asset_spec_existing_translation_dirs\nFAILED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_add_translation_dirs_doesnt_use_override_w_autocommit\nFAILED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_add_translation_dirs_multiple_specs\nFAILED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_add_translation_dirs_multiple_specs_multiple_calls\nFAILED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_add_translation_dirs_override_multiple_specs_multiple_calls\nFAILED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_add_translation_dirs_uses_override_out_of_order\nFAILED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_add_translation_dirs_uses_override_w_autocommit\nFAILED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_set_locale_negotiator_dottedname\nFAILED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_no_registry\nFAILED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_noreg_debug_logger_None_default\nFAILED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_include_constant_root_package\nFAILED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_include_with_python_callable\nFAILED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_debug_logger_None_default\nFAILED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_tweens\nFAILED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_with_package_module\nFAILED r2e_tests/test_config/test_init.py::TestConfigurator_add_directive::test_add_directive_with_custom_callable\nFAILED r2e_tests/test_config/test_init.py::TestConfigurator_add_directive::test_add_directive_with_partial\nFAILED r2e_tests/test_config/test_init.py::TestConfigurator_add_directive::test_extend_with_dotted_name\nFAILED r2e_tests/test_config/test_init.py::TestConfigurator_add_directive::test_extend_with_python_callable\nFAILED r2e_tests/test_config/test_init.py::TestConfigurator__add_predicate::test_factory_as_dotted_name\nFAILED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_factory_dottedname\nFAILED r2e_tests/test_config/test_testing.py::TestingConfiguratorMixinTests::test_testing_add_subscriber_dottedname\nFAILED r2e_tests/test_config/test_testing.py::TestingConfiguratorMixinTests::test_testing_securitypolicy\nFAILED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tween_dottedname\nFAILED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tweens_names_distinct\nFAILED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tweens_names_with_underover\nFAILED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_exception_view_with_view_defaults\nFAILED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_forbidden_view_with_view_defaults\nFAILED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_notfound_view_with_view_defaults\nFAILED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_static_view_package_here_relative\nFAILED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_context_as_dottedname\nFAILED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_for__as_dottedname\nFAILED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_containment_dottedname\nFAILED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_default_permission_no_explicit_permission\nFAILED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_permission\nFAILED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_template_renderer\nFAILED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_template_renderer_no_callable\nFAILED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_view_defaults\nFAILED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_view_defaults_viewname_is_dottedname_kwarg\nFAILED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_view_defaults_viewname_is_dottedname_nonkwarg\nFAILED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_url_cachebust_with_overrides\nFAILED r2e_tests/test_config/test_views.py::Test_view_description::test_without_text\nFAILED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_class_view\nFAILED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_one_route_all_methods_view_only_post\nFAILED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_one_route_only_post_view_all_methods\nFAILED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_one_route_only_post_view_post_and_get\nFAILED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_one_route_with_long_name_one_view_registered\nFAILED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_route_is_get_view_request_method_not_post\nFAILED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_route_request_method_mismatch\nFAILED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_route_static_views\nFAILED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_single_route_multiview_registered\nFAILED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_single_route_one_view_registered\nFAILED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_view_glob\nFAILED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_view_request_method_not_post\nFAILED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_config_file_finds_watch_files\nFAILED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_multi_view_nested\nFAILED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_multiview\nFAILED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_multiview_with_permission\nFAILED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_multiview_with_predicates\nFAILED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_single_view_function_traversal\nFAILED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_single_view_route\nFAILED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_single_view_route_with_route_predicates\nFAILED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_single_view_traversal\nFAILED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_single_view_traversal_with_permission\nFAILED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_single_view_traversal_with_predicates\n======================== 84 failed, 757 passed in 5.52s ========================\n",
    "old_commit_res_stderr": ""
}
src/pyramid/security.py tests/test_security.py
We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
[ISSUE]

**Title:** Passing keyword arguments to `LegacySecurityPolicy.forget` raises AttributeError instead of ValueError

**Description:**
When using the `forget` method of `LegacySecurityPolicy` with keyword arguments, an `AttributeError` is unexpectedly raised. This occurs because the method attempts to access `request.registry` when `request` is `None`, leading to an uninformative error.

**Example Code:**
```python
from pyramid.security import LegacySecurityPolicy

policy = LegacySecurityPolicy()
policy.forget(None, foo='bar')  # Raises AttributeError
```

**Expected Behavior:**
Providing keyword arguments to the `forget` method should result in a `ValueError` that clearly states that keyword arguments are not supported by legacy authentication policies.

**Actual Behavior:**
An `AttributeError` is thrown with the message `'NoneType' object has no attribute 'registry'`, which does not clearly indicate the misuse of keyword arguments.

[/ISSUE]
--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.

--- BEGIN FILE ---
```
### src/pyramid/security.py
from zope.interface import implementer, providedBy
from zope.deprecation import deprecated

from pyramid.interfaces import (
    ISecurityPolicy,
    IAuthenticationPolicy,
    IAuthorizationPolicy,
    ISecuredView,
    IView,
    IViewClassifier,
)

from pyramid.threadlocal import get_current_registry

Everyone = 'system.Everyone'
Authenticated = 'system.Authenticated'
Allow = 'Allow'
Deny = 'Deny'


class AllPermissionsList(object):
    """ Stand in 'permission list' to represent all permissions """

    def __iter__(self):
        return iter(())

    def __contains__(self, other):
        return True

    def __eq__(self, other):
        return isinstance(other, self.__class__)


ALL_PERMISSIONS = AllPermissionsList()
DENY_ALL = (Deny, Everyone, ALL_PERMISSIONS)

NO_PERMISSION_REQUIRED = '__no_permission_required__'


def _get_security_policy(request):
    return request.registry.queryUtility(ISecurityPolicy)


def _get_authentication_policy(request):
    return request.registry.queryUtility(IAuthenticationPolicy)


def remember(request, userid, **kw):
    """
    Returns a sequence of header tuples (e.g. ``[('Set-Cookie', 'foo=abc')]``)
    on this request's response.
    These headers are suitable for 'remembering' a set of credentials
    implied by the data passed as ``userid`` and ``*kw`` using the
    current :term:`security policy`.  Common usage might look
    like so within the body of a view function (``response`` is
    assumed to be a :term:`WebOb` -style :term:`response` object
    computed previously by the view code):

    .. code-block:: python

       from pyramid.security import remember
       headers = remember(request, 'chrism', password='123', max_age='86400')
       response = request.response
       response.headerlist.extend(headers)
       return response

    If no :term:`security policy` is in use, this function will
    always return an empty sequence. If used, the composition and
    meaning of ``**kw`` must be agreed upon by the calling code and
    the effective security policy.

    .. versionchanged:: 1.6
        Deprecated the ``principal`` argument in favor of ``userid`` to clarify
        its relationship to the authentication policy.

    .. versionchanged:: 1.10
        Removed the deprecated ``principal`` argument.
    """
    policy = _get_security_policy(request)
    if policy is None:
        return []
    return policy.remember(request, userid, **kw)


def forget(request, **kw):
    """
    Return a sequence of header tuples (e.g. ``[('Set-Cookie',
    'foo=abc')]``) suitable for 'forgetting' the set of credentials
    possessed by the currently authenticated user.  A common usage
    might look like so within the body of a view function
    (``response`` is assumed to be an :term:`WebOb` -style
    :term:`response` object computed previously by the view code):

    .. code-block:: python

       from pyramid.security import forget
       headers = forget(request)
       response.headerlist.extend(headers)
       return response

    If no :term:`security policy` is in use, this function will
    always return an empty sequence.
    """
    policy = _get_security_policy(request)
    if policy is None:
        return []
    return policy.forget(request, **kw)


def principals_allowed_by_permission(context, permission):
    """
    .. deprecated:: 2.0

        The new security policy has removed the concept of principals.  See
        :ref:`upgrading_auth` for more information.

    Provided a ``context`` (a resource object), and a ``permission``
    string, if an :term:`authorization policy` is
    in effect, return a sequence of :term:`principal` ids that possess
    the permission in the ``context``.  If no authorization policy is
    in effect, this will return a sequence with the single value
    :mod:`pyramid.security.Everyone` (the special principal
    identifier representing all principals).

    .. note::

       Even if an :term:`authorization policy` is in effect,
       some (exotic) authorization policies may not implement the
       required machinery for this function; those will cause a
       :exc:`NotImplementedError` exception to be raised when this
       function is invoked.

    """
    reg = get_current_registry()
    policy = reg.queryUtility(IAuthorizationPolicy)
    if policy is None:
        return [Everyone]
    return policy.principals_allowed_by_permission(context, permission)


deprecated(
    'principals_allowed_by_permission',
    'The new security policy has removed the concept of principals.  See '
    'https://docs.pylonsproject.org/projects/pyramid/en/latest'
    '/whatsnew-2.0.html#upgrading-authentication-authorization '
    'for more information.',
)


def view_execution_permitted(context, request, name=''):
    """ If the view specified by ``context`` and ``name`` is protected
    by a :term:`permission`, check the permission associated with the
    view using the effective authentication/authorization policies and
    the ``request``.  Return a boolean result.  If no
    :term:`authorization policy` is in effect, or if the view is not
    protected by a permission, return ``True``. If no view can view found,
    an exception will be raised.

    .. versionchanged:: 1.4a4
       An exception is raised if no view is found.

    """
    reg = request.registry
    provides = [IViewClassifier] + [providedBy(x) for x in (request, context)]
    # XXX not sure what to do here about using _find_views or analogue;
    # for now let's just keep it as-is
    view = reg.adapters.lookup(provides, ISecuredView, name=name)
    if view is None:
        view = reg.adapters.lookup(provides, IView, name=name)
        if view is None:
            raise TypeError(
                'No registered view satisfies the constraints. '
                'It would not make sense to claim that this view '
                '"is" or "is not" permitted.'
            )
        return Allowed(
            'Allowed: view name %r in context %r (no permission defined)'
            % (name, context)
        )
    return view.__permitted__(context, request)


class PermitsResult(int):
    def __new__(cls, s, *args):
        """
        Create a new instance.

        :param fmt: A format string explaining the reason for denial.
        :param args: Arguments are stored and used with the format string
                      to generate the ``msg``.

        """
        inst = int.__new__(cls, cls.boolval)
        inst.s = s
        inst.args = args
        return inst

    @property
    def msg(self):
        """ A string indicating why the result was generated."""
        return self.s % self.args

    def __str__(self):
        return self.msg

    def __repr__(self):
        return '<%s instance at %s with msg %r>' % (
            self.__class__.__name__,
            id(self),
            self.msg,
        )


class Denied(PermitsResult):
    """
    An instance of ``Denied`` is returned when a security-related
    API or other :app:`Pyramid` code denies an action unrelated to
    an ACL check.  It evaluates equal to all boolean false types.  It
    has an attribute named ``msg`` describing the circumstances for
    the deny.

    """

    boolval = 0


class Allowed(PermitsResult):
    """
    An instance of ``Allowed`` is returned when a security-related
    API or other :app:`Pyramid` code allows an action unrelated to
    an ACL check.  It evaluates equal to all boolean true types.  It
    has an attribute named ``msg`` describing the circumstances for
    the allow.

    """

    boolval = 1


class ACLPermitsResult(PermitsResult):
    def __new__(cls, ace, acl, permission, principals, context):
        """
        Create a new instance.

        :param ace: The :term:`ACE` that matched, triggering the result.
        :param acl: The :term:`ACL` containing ``ace``.
        :param permission: The required :term:`permission`.
        :param principals: The list of :term:`principals <principal>` provided.
        :param context: The :term:`context` providing the :term:`lineage`
                        searched.

        """
        fmt = (
            '%s permission %r via ACE %r in ACL %r on context %r for '
            'principals %r'
        )
        inst = PermitsResult.__new__(
            cls, fmt, cls.__name__, permission, ace, acl, context, principals
        )
        inst.permission = permission
        inst.ace = ace
        inst.acl = acl
        inst.principals = principals
        inst.context = context
        return inst


class ACLDenied(ACLPermitsResult, Denied):
    """
    An instance of ``ACLDenied`` is a specialization of
    :class:`pyramid.security.Denied` that represents that a security check
    made explicitly against ACL was denied.  It evaluates equal to all
    boolean false types.  It also has the following attributes: ``acl``,
    ``ace``, ``permission``, ``principals``, and ``context``.  These
    attributes indicate the security values involved in the request.  Its
    ``__str__`` method prints a summary of these attributes for debugging
    purposes. The same summary is available as the ``msg`` attribute.

    """


class ACLAllowed(ACLPermitsResult, Allowed):
    """
    An instance of ``ACLAllowed`` is a specialization of
    :class:`pyramid.security.Allowed` that represents that a security check
    made explicitly against ACL was allowed.  It evaluates equal to all
    boolean true types.  It also has the following attributes: ``acl``,
    ``ace``, ``permission``, ``principals``, and ``context``.  These
    attributes indicate the security values involved in the request.  Its
    ``__str__`` method prints a summary of these attributes for debugging
    purposes. The same summary is available as the ``msg`` attribute.

    """


class SecurityAPIMixin:
    """ Mixin for Request class providing auth-related properties. """

    @property
    def authenticated_identity(self):
        """
        Return an opaque object identifying the current user or ``None`` if no
        user is authenticated or there is no :term:`security policy` in effect.

        """
        policy = _get_security_policy(self)
        if policy is None:
            return None
        return policy.identify(self)

    @property
    def authenticated_userid(self):
        """
        Return the :term:`userid` of the currently authenticated user or
        ``None`` if there is no :term:`security policy` in effect or there is
        no currently authenticated user.

        .. versionchanged:: 2.0

           This property delegates to the effective :term:`security policy`,
           ignoring old-style :term:`authentication policy`.

        """
        policy = _get_security_policy(self)
        if policy is None:
            return None
        return policy.authenticated_userid(self)

    def has_permission(self, permission, context=None):
        """ Given a permission and an optional context, returns an instance of
        :data:`pyramid.security.Allowed` if the permission is granted to this
        request with the provided context, or the context already associated
        with the request.  Otherwise, returns an instance of
        :data:`pyramid.security.Denied`.  This method delegates to the current
        security policy.  Returns
        :data:`pyramid.security.Allowed` unconditionally if no security
        policy has been registered for this request.  If ``context`` is not
        supplied or is supplied as ``None``, the context used is the
        ``request.context`` attribute.

        :param permission: Does this request have the given permission?
        :type permission: str
        :param context: A resource object or ``None``
        :type context: object
        :returns: Either :class:`pyramid.security.Allowed` or
                  :class:`pyramid.security.Denied`.

        """
        if context is None:
            context = self.context
        policy = _get_security_policy(self)
        if policy is None:
            return Allowed('No security policy in use.')
        return policy.permits(self, context, permission)


class AuthenticationAPIMixin(object):
    """ Mixin for Request class providing compatibility properties. """

    @property
    def unauthenticated_userid(self):
        """
        .. deprecated:: 2.0

            ``unauthenticated_userid`` does not have an equivalent in the new
            security system.  Use :attr:`.authenticated_userid` or
            :attr:`.authenticated_identity` instead.
            See :ref:`upgrading_auth` for more information.

        Return an object which represents the *claimed* (not verified) user
        id of the credentials present in the request. ``None`` if there is no
        :term:`authentication policy` in effect or there is no user data
        associated with the current request.  This differs from
        :attr:`~pyramid.request.Request.authenticated_userid`, because the
        effective authentication policy will not ensure that a record
        associated with the userid exists in persistent storage.

        """
        authn = _get_authentication_policy(self)
        security = _get_security_policy(self)
        if authn is not None:
            return authn.unauthenticated_userid(self)
        elif security is not None:
            return security.authenticated_userid(self)
        else:
            return None

    @property
    def effective_principals(self):
        """
        .. deprecated:: 2.0

            The new security policy has removed the concept of principals.  See
            :ref:`upgrading_auth` for more information.

        Return the list of 'effective' :term:`principal` identifiers
        for the ``request``. If no :term:`authentication policy` is in effect,
        this will return a one-element list containing the
        :data:`pyramid.security.Everyone` principal.

        """
        policy = _get_authentication_policy(self)
        if policy is None:
            return [Everyone]
        return policy.effective_principals(self)

    effective_principals = deprecated(
        effective_principals,
        'The new security policy has removed the concept of principals.  See '
        'https://docs.pylonsproject.org/projects/pyramid/en/latest'
        '/whatsnew-2.0.html#upgrading-authentication-authorization '
        'for more information.',
    )


@implementer(ISecurityPolicy)
class LegacySecurityPolicy:
    """
    A :term:`security policy` which provides a backwards compatibility shim for
    the :term:`authentication policy` and the :term:`authorization policy`.

    """

    def _get_authn_policy(self, request):
        return request.registry.getUtility(IAuthenticationPolicy)

    def _get_authz_policy(self, request):
        return request.registry.getUtility(IAuthorizationPolicy)

    def identify(self, request):
        return self.authenticated_userid(request)

    def authenticated_userid(self, request):
        authn = self._get_authn_policy(request)
        return authn.authenticated_userid(request)

    def remember(self, request, userid, **kw):
        authn = self._get_authn_policy(request)
        return authn.remember(request, userid, **kw)

    def forget(self, request, **kw):
        authn = self._get_authn_policy(request)
        # XXX log warning if varkwargs were passed?
        return authn.forget(request)

    def permits(self, request, context, permission):
        authn = self._get_authn_policy(request)
        authz = self._get_authz_policy(request)
        principals = authn.effective_principals(request)
        return authz.permits(context, principals, permission)

```
--- END FILE ---

Please first localize the bug based on the issue statement, and then generate *SEARCH/REPLACE* edits to fix the issue.

Every *SEARCH/REPLACE* edit must use this format:
1. The file path
2. The start of search block: <<<<<<< SEARCH
3. A contiguous chunk of lines to search for in the existing source code
4. The dividing line: =======
5. The lines to replace into the source code
6. The end of the replace block: >>>>>>> REPLACE

Here is an example:

```python
### mathweb/flask/app.py
<<<<<<< SEARCH
from flask import Flask
=======
import math
from flask import Flask
>>>>>>> REPLACE
```
</solution>

Please note that the *SEARCH/REPLACE* edit REQUIRES PROPER INDENTATION. If you would like to add the line '        print(x)', you must fully write that out, with all those spaces before the code!
Wrap each *SEARCH/REPLACE* edit in a code block as shown in the example above. If you have multiple *SEARCH/REPLACE* edits, use a separate code block for each one.
[ISSUE]

**Title:** Passing keyword arguments to `LegacySecurityPolicy.forget` raises AttributeError instead of ValueError

**Description:**
When using the `forget` method of `LegacySecurityPolicy` with keyword arguments, an `AttributeError` is unexpectedly raised. This occurs because the method attempts to access `request.registry` when `request` is `None`, leading to an uninformative error.

**Example Code:**
```python
from pyramid.security import LegacySecurityPolicy

policy = LegacySecurityPolicy()
policy.forget(None, foo='bar')  # Raises AttributeError
```

**Expected Behavior:**
Providing keyword arguments to the `forget` method should result in a `ValueError` that clearly states that keyword arguments are not supported by legacy authentication policies.

**Actual Behavior:**
An `AttributeError` is thrown with the message `'NoneType' object has no attribute 'registry'`, which does not clearly indicate the misuse of keyword arguments.

[/ISSUE]
{
    "TestAllPermissionsList.test_contains_w_object": "PASSED",
    "TestAllPermissionsList.test_contains_w_string": "PASSED",
    "TestAllPermissionsList.test_equality_miss": "PASSED",
    "TestAllPermissionsList.test_equality_w_other_instances_of_class": "PASSED",
    "TestAllPermissionsList.test_equality_w_self": "PASSED",
    "TestAllPermissionsList.test_iterable": "PASSED",
    "TestAllPermissionsList.test_singleton": "PASSED",
    "TestAllowed.test_it": "PASSED",
    "TestDenied.test_it": "PASSED",
    "TestACLAllowed.test_it": "PASSED",
    "TestACLDenied.test_it": "PASSED",
    "TestPrincipalsAllowedByPermission.test_no_authorization_policy": "PASSED",
    "TestRemember.test_no_security_policy": "PASSED",
    "TestRemember.test_with_missing_arg": "PASSED",
    "TestRemember.test_with_security_policy": "PASSED",
    "TestForget.test_no_security_policy": "PASSED",
    "TestForget.test_with_security_policy": "PASSED",
    "TestViewExecutionPermitted.test_no_permission": "PASSED",
    "TestViewExecutionPermitted.test_no_view_registered": "PASSED",
    "TestViewExecutionPermitted.test_with_permission": "PASSED",
    "TestAuthenticatedIdentity.test_identity": "PASSED",
    "TestAuthenticatedIdentity.test_identity_no_security_policy": "PASSED",
    "TestAuthenticatedUserId.test_no_authentication_policy": "PASSED",
    "TestAuthenticatedUserId.test_with_authentication_policy": "PASSED",
    "TestAuthenticatedUserId.test_with_security_policy": "PASSED",
    "TestUnAuthenticatedUserId.test_no_authentication_policy": "PASSED",
    "TestUnAuthenticatedUserId.test_with_authentication_policy": "PASSED",
    "TestUnAuthenticatedUserId.test_with_security_policy": "PASSED",
    "TestEffectivePrincipals.test_no_authentication_policy": "PASSED",
    "TestEffectivePrincipals.test_with_authentication_policy": "PASSED",
    "TestHasPermission.test_no_security_policy": "PASSED",
    "TestHasPermission.test_with_no_context_passed": "PASSED",
    "TestHasPermission.test_with_no_context_passed_or_on_request": "PASSED",
    "TestHasPermission.test_with_security_registered": "PASSED",
    "TestLegacySecurityPolicy.test_forget": "PASSED",
    "TestLegacySecurityPolicy.test_forget_with_kwargs": "PASSED",
    "TestLegacySecurityPolicy.test_identity": "PASSED",
    "TestLegacySecurityPolicy.test_permits": "PASSED",
    "TestLegacySecurityPolicy.test_remember": "PASSED",
    "ActionConfiguratorMixinTests.test_action_autocommit_with_introspectables": "PASSED",
    "ActionConfiguratorMixinTests.test_action_autocommit_with_introspectables_introspection_off": "PASSED",
    "ActionConfiguratorMixinTests.test_action_branching_kw_is_None": "PASSED",
    "ActionConfiguratorMixinTests.test_action_branching_kw_is_not_None": "PASSED",
    "ActionConfiguratorMixinTests.test_action_branching_nonautocommit_with_config_info": "PASSED",
    "ActionConfiguratorMixinTests.test_action_branching_nonautocommit_with_introspectables": "PASSED",
    "ActionConfiguratorMixinTests.test_action_branching_nonautocommit_without_config_info": "PASSED",
    "ActionConfiguratorMixinTests.test_action_nonautocommit_with_introspectables_introspection_off": "PASSED",
    "ActionConfiguratorMixinTests.test_autocommit_no_conflicts": "PASSED",
    "ActionConfiguratorMixinTests.test_commit_conflict_resolved_with_include": "PASSED",
    "ActionConfiguratorMixinTests.test_commit_conflict_resolved_with_two_includes_and_local": "PASSED",
    "ActionConfiguratorMixinTests.test_commit_conflict_simple": "PASSED",
    "ActionConfiguratorMixinTests.test_commit_conflict_with_two_includes": "PASSED",
    "ActionConfiguratorMixinTests.test_conflict_set_forbidden_view": "PASSED",
    "ActionConfiguratorMixinTests.test_conflict_set_notfound_view": "PASSED",
    "TestActionState.test_action_simple": "PASSED",
    "TestActionState.test_action_with_includepath": "PASSED",
    "TestActionState.test_action_with_includepath_and_info": "PASSED",
    "TestActionState.test_action_with_info": "PASSED",
    "TestActionState.test_action_with_introspectables": "PASSED",
    "TestActionState.test_action_with_order": "PASSED",
    "TestActionState.test_execute_actions_dicts": "PASSED",
    "TestActionState.test_execute_actions_error": "PASSED",
    "TestActionState.test_execute_actions_tuples": "PASSED",
    "TestActionState.test_execute_actions_with_introspectable_no_callable": "PASSED",
    "TestActionState.test_execute_actions_with_introspectables": "PASSED",
    "TestActionState.test_executing_conflicting_action_across_orders": "PASSED",
    "TestActionState.test_executing_conflicting_action_across_reentrant_orders": "PASSED",
    "TestActionState.test_it": "PASSED",
    "TestActionState.test_processSpec": "PASSED",
    "TestActionState.test_reentrant_action": "PASSED",
    "TestActionState.test_reentrant_action_error": "PASSED",
    "TestActionState.test_reentrant_action_with_deferred_discriminator": "PASSED",
    "TestActionState.test_reentrant_action_without_clear": "PASSED",
    "Test_reentrant_action_functional.test_deferred_discriminator": "PASSED",
    "Test_reentrant_action_functional.test_functional": "PASSED",
    "Test_resolveConflicts.test_conflicts_across_orders": "PASSED",
    "Test_resolveConflicts.test_it_conflict": "PASSED",
    "Test_resolveConflicts.test_it_success_dicts": "PASSED",
    "Test_resolveConflicts.test_it_success_tuples": "PASSED",
    "Test_resolveConflicts.test_it_with_actions_grouped_by_order": "PASSED",
    "Test_resolveConflicts.test_override_success_across_orders": "PASSED",
    "TestActionInfo.test___str__": "PASSED",
    "TestActionInfo.test_class_conforms": "PASSED",
    "TestActionInfo.test_ctor": "PASSED",
    "TestActionInfo.test_instance_conforms": "PASSED",
    "AdaptersConfiguratorMixinTests.test_add_object_event_subscriber": "PASSED",
    "AdaptersConfiguratorMixinTests.test_add_resource_url_default_resource_iface_means_Interface": "PASSED",
    "AdaptersConfiguratorMixinTests.test_add_resource_url_nodefault_resource_iface": "PASSED",
    "AdaptersConfiguratorMixinTests.test_add_response_adapter": "PASSED",
    "AdaptersConfiguratorMixinTests.test_add_response_adapter_dottednames": "PASSED",
    "AdaptersConfiguratorMixinTests.test_add_response_adapter_self": "PASSED",
    "AdaptersConfiguratorMixinTests.test_add_subscriber_defaults": "PASSED",
    "AdaptersConfiguratorMixinTests.test_add_subscriber_dottednames": "PASSED",
    "AdaptersConfiguratorMixinTests.test_add_subscriber_iface_specified": "PASSED",
    "AdaptersConfiguratorMixinTests.test_add_subscriber_predicate": "PASSED",
    "AdaptersConfiguratorMixinTests.test_add_subscriber_with_default_type_predicates_False": "PASSED",
    "AdaptersConfiguratorMixinTests.test_add_subscriber_with_default_type_predicates_True": "PASSED",
    "AdaptersConfiguratorMixinTests.test_add_subscriber_with_specific_type_and_predicates_False": "PASSED",
    "AdaptersConfiguratorMixinTests.test_add_subscriber_with_specific_type_and_predicates_True": "PASSED",
    "AdaptersConfiguratorMixinTests.test_add_traverser_default_iface_means_Interface": "PASSED",
    "AdaptersConfiguratorMixinTests.test_add_traverser_introspectables": "PASSED",
    "AdaptersConfiguratorMixinTests.test_add_traverser_nondefault_iface": "PASSED",
    "Test_eventonly.test_defaults": "PASSED",
    "TestAssetsConfiguratorMixin.test__override_already_registered": "PASSED",
    "TestAssetsConfiguratorMixin.test__override_not_yet_registered": "PASSED",
    "TestAssetsConfiguratorMixin.test_override_asset_directory_with_absdirectory": "PASSED",
    "TestAssetsConfiguratorMixin.test_override_asset_directory_with_absfile": "PASSED",
    "TestAssetsConfiguratorMixin.test_override_asset_directory_with_file": "PASSED",
    "TestAssetsConfiguratorMixin.test_override_asset_file_with_absdirectory": "PASSED",
    "TestAssetsConfiguratorMixin.test_override_asset_file_with_absfile": "PASSED",
    "TestAssetsConfiguratorMixin.test_override_asset_file_with_directory": "PASSED",
    "TestAssetsConfiguratorMixin.test_override_asset_file_with_missing_abspath": "PASSED",
    "TestAssetsConfiguratorMixin.test_override_asset_file_with_package": "PASSED",
    "TestAssetsConfiguratorMixin.test_override_asset_package_with_absdirectory": "PASSED",
    "TestAssetsConfiguratorMixin.test_override_asset_samename": "PASSED",
    "TestOverrideProvider.test_get_resource_filename_override_returns_value": "PASSED",
    "TestOverrideProvider.test_get_resource_stream_no_overrides": "PASSED",
    "TestOverrideProvider.test_get_resource_stream_override_returns_None": "PASSED",
    "TestOverrideProvider.test_get_resource_stream_override_returns_value": "PASSED",
    "TestOverrideProvider.test_get_resource_string_no_overrides": "PASSED",
    "TestOverrideProvider.test_get_resource_string_override_returns_None": "PASSED",
    "TestOverrideProvider.test_get_resource_string_override_returns_value": "PASSED",
    "TestOverrideProvider.test_has_resource_no_overrides": "PASSED",
    "TestOverrideProvider.test_has_resource_override_returns_None": "PASSED",
    "TestOverrideProvider.test_has_resource_override_returns_True": "PASSED",
    "TestOverrideProvider.test_resource_isdir_no_overrides": "PASSED",
    "TestOverrideProvider.test_resource_isdir_override_returns_False": "PASSED",
    "TestOverrideProvider.test_resource_isdir_override_returns_None": "PASSED",
    "TestOverrideProvider.test_resource_listdir_no_overrides": "PASSED",
    "TestOverrideProvider.test_resource_listdir_override_returns_None": "PASSED",
    "TestOverrideProvider.test_resource_listdir_override_returns_values": "PASSED",
    "TestPackageOverrides.test_class_conforms_to_IPEP302Loader": "PASSED",
    "TestPackageOverrides.test_class_conforms_to_IPackageOverrides": "PASSED",
    "TestPackageOverrides.test_ctor_package_already_has_loader_of_different_type": "PASSED",
    "TestPackageOverrides.test_ctor_package_already_has_loader_of_same_type": "PASSED",
    "TestPackageOverrides.test_ctor_registers_loader_type": "PASSED",
    "TestPackageOverrides.test_ctor_sets_loader": "PASSED",
    "TestPackageOverrides.test_ctor_sets_local_state": "PASSED",
    "TestPackageOverrides.test_filtered_sources": "PASSED",
    "TestPackageOverrides.test_get_code_pkg_has___loader__": "PASSED",
    "TestPackageOverrides.test_get_code_pkg_has_no___loader__": "PASSED",
    "TestPackageOverrides.test_get_data_pkg_has___loader__": "PASSED",
    "TestPackageOverrides.test_get_data_pkg_has_no___loader__": "PASSED",
    "TestPackageOverrides.test_get_filename": "PASSED",
    "TestPackageOverrides.test_get_filename_file_doesnt_exist": "PASSED",
    "TestPackageOverrides.test_get_source_pkg_has___loader__": "PASSED",
    "TestPackageOverrides.test_get_source_pkg_has_no___loader__": "PASSED",
    "TestPackageOverrides.test_get_stream": "PASSED",
    "TestPackageOverrides.test_get_stream_file_doesnt_exist": "PASSED",
    "TestPackageOverrides.test_get_string": "PASSED",
    "TestPackageOverrides.test_get_string_file_doesnt_exist": "PASSED",
    "TestPackageOverrides.test_has_resource": "PASSED",
    "TestPackageOverrides.test_has_resource_file_doesnt_exist": "PASSED",
    "TestPackageOverrides.test_insert_directory": "PASSED",
    "TestPackageOverrides.test_insert_emptystring": "PASSED",
    "TestPackageOverrides.test_insert_file": "PASSED",
    "TestPackageOverrides.test_instance_conforms_to_IPEP302Loader": "PASSED",
    "TestPackageOverrides.test_instance_conforms_to_IPackageOverrides": "PASSED",
    "TestPackageOverrides.test_is_package_pkg_has___loader__": "PASSED",
    "TestPackageOverrides.test_is_package_pkg_has_no___loader__": "PASSED",
    "TestPackageOverrides.test_isdir_doesnt_exist": "PASSED",
    "TestPackageOverrides.test_isdir_false": "PASSED",
    "TestPackageOverrides.test_isdir_true": "PASSED",
    "TestPackageOverrides.test_listdir": "PASSED",
    "TestPackageOverrides.test_listdir_doesnt_exist": "PASSED",
    "TestPackageAssetSource.test_exists": "PASSED",
    "TestPackageAssetSource.test_exists_file_doesnt_exist": "PASSED",
    "TestPackageAssetSource.test_exists_with_prefix": "PASSED",
    "TestPackageAssetSource.test_get_filename_file_doesnt_exist": "PASSED",
    "TestPackageAssetSource.test_get_stream": "PASSED",
    "TestPackageAssetSource.test_get_stream_file_doesnt_exist": "PASSED",
    "TestPackageAssetSource.test_get_stream_with_prefix": "PASSED",
    "TestPackageAssetSource.test_get_string": "PASSED",
    "TestPackageAssetSource.test_get_string_file_doesnt_exist": "PASSED",
    "TestPackageAssetSource.test_get_string_with_prefix": "PASSED",
    "TestPackageAssetSource.test_isdir_doesnt_exist": "PASSED",
    "TestPackageAssetSource.test_isdir_false": "PASSED",
    "TestPackageAssetSource.test_isdir_true": "PASSED",
    "TestPackageAssetSource.test_listdir": "PASSED",
    "TestPackageAssetSource.test_listdir_doesnt_exist": "PASSED",
    "TestFSAssetSource.test_exists": "PASSED",
    "TestFSAssetSource.test_exists_file_doesnt_exist": "PASSED",
    "TestFSAssetSource.test_exists_with_prefix": "PASSED",
    "TestFSAssetSource.test_get_filename": "PASSED",
    "TestFSAssetSource.test_get_filename_file_doesnt_exist": "PASSED",
    "TestFSAssetSource.test_get_filename_with_prefix": "PASSED",
    "TestFSAssetSource.test_get_stream": "PASSED",
    "TestFSAssetSource.test_get_stream_file_doesnt_exist": "PASSED",
    "TestFSAssetSource.test_get_stream_with_prefix": "PASSED",
    "TestFSAssetSource.test_get_string": "PASSED",
    "TestFSAssetSource.test_get_string_file_doesnt_exist": "PASSED",
    "TestFSAssetSource.test_get_string_with_prefix": "PASSED",
    "TestFSAssetSource.test_isdir_doesnt_exist": "PASSED",
    "TestFSAssetSource.test_isdir_false": "PASSED",
    "TestFSAssetSource.test_isdir_true": "PASSED",
    "TestFSAssetSource.test_listdir": "PASSED",
    "TestFSAssetSource.test_listdir_doesnt_exist": "PASSED",
    "TestDirectoryOverride.test_it_match": "PASSED",
    "TestDirectoryOverride.test_it_no_match": "PASSED",
    "TestFileOverride.test_it_match": "PASSED",
    "TestFileOverride.test_it_no_match": "PASSED",
    "TestFactoriesMixin.test_add_request_method_with_None_callable": "PASSED",
    "TestFactoriesMixin.test_add_request_method_with_None_callable_and_no_name": "PASSED",
    "TestFactoriesMixin.test_add_request_method_with_None_callable_conflict": "PASSED",
    "TestFactoriesMixin.test_add_request_method_with_callable": "PASSED",
    "TestFactoriesMixin.test_add_request_method_with_text_name": "PASSED",
    "TestFactoriesMixin.test_add_request_method_with_unnamed_callable": "PASSED",
    "TestFactoriesMixin.test_set_execution_policy": "PASSED",
    "TestFactoriesMixin.test_set_execution_policy_to_None": "PASSED",
    "TestFactoriesMixin.test_set_multiple_request_methods_conflict": "PASSED",
    "TestFactoriesMixin.test_set_request_factory": "PASSED",
    "TestFactoriesMixin.test_set_response_factory": "PASSED",
    "TestFactoriesMixin.test_set_root_factory": "PASSED",
    "TestFactoriesMixin.test_set_root_factory_as_None": "PASSED",
    "TestFactoriesMixin.test_set_session_factory": "PASSED",
    "TestI18NConfiguratorMixin.test_add_translation_dirs_invalid_kwargs": "PASSED",
    "TestI18NConfiguratorMixin.test_add_translation_dirs_missing_dir": "PASSED",
    "TestI18NConfiguratorMixin.test_add_translation_dirs_no_specs": "PASSED",
    "TestI18NConfiguratorMixin.test_set_locale_negotiator": "PASSED",
    "ConfiguratorTests.test___getattr__matches": "PASSED",
    "ConfiguratorTests.test___getattr__matches_no_action_wrap": "PASSED",
    "ConfiguratorTests.test___getattr__missing_when_directives_dont_exist": "PASSED",
    "ConfiguratorTests.test___getattr__missing_when_directives_exist": "PASSED",
    "ConfiguratorTests.test__fix_registry_adds__lock": "PASSED",
    "ConfiguratorTests.test__fix_registry_adds_clear_view_lookup_cache": "PASSED",
    "ConfiguratorTests.test__fix_registry_has_listeners": "PASSED",
    "ConfiguratorTests.test__fix_registry_notify": "PASSED",
    "ConfiguratorTests.test__fix_registry_queryAdapterOrSelf": "PASSED",
    "ConfiguratorTests.test__fix_registry_registerSelfAdapter": "PASSED",
    "ConfiguratorTests.test_absolute_asset_spec_already_absolute": "PASSED",
    "ConfiguratorTests.test_absolute_asset_spec_notastring": "PASSED",
    "ConfiguratorTests.test_absolute_asset_spec_relative": "PASSED",
    "ConfiguratorTests.test_begin": "PASSED",
    "ConfiguratorTests.test_begin_does_not_propagate_request_for_diff_registry": "PASSED",
    "ConfiguratorTests.test_begin_overrides_request": "PASSED",
    "ConfiguratorTests.test_begin_propagates_request_for_same_registry": "PASSED",
    "ConfiguratorTests.test_begin_with_request": "PASSED",
    "ConfiguratorTests.test_context_manager": "PASSED",
    "ConfiguratorTests.test_ctor_alternate_renderers": "PASSED",
    "ConfiguratorTests.test_ctor_authentication_policy": "PASSED",
    "ConfiguratorTests.test_ctor_authorization_policy_only": "PASSED",
    "ConfiguratorTests.test_ctor_default_permission": "PASSED",
    "ConfiguratorTests.test_ctor_default_renderers": "PASSED",
    "ConfiguratorTests.test_ctor_default_view_mapper": "PASSED",
    "ConfiguratorTests.test_ctor_default_webob_response_adapter_registered": "PASSED",
    "ConfiguratorTests.test_ctor_exceptionresponse_view_None": "PASSED",
    "ConfiguratorTests.test_ctor_exceptionresponse_view_custom": "PASSED",
    "ConfiguratorTests.test_ctor_httpexception_view_default": "PASSED",
    "ConfiguratorTests.test_ctor_no_root_factory": "PASSED",
    "ConfiguratorTests.test_ctor_noreg_custom_settings": "PASSED",
    "ConfiguratorTests.test_ctor_noreg_debug_logger_non_None": "PASSED",
    "ConfiguratorTests.test_ctor_security_policy": "PASSED",
    "ConfiguratorTests.test_ctor_session_factory": "PASSED",
    "ConfiguratorTests.test_ctor_with_introspection": "PASSED",
    "ConfiguratorTests.test_ctor_with_package_registry": "PASSED",
    "ConfiguratorTests.test_ctor_with_root_factory": "PASSED",
    "ConfiguratorTests.test_end": "PASSED",
    "ConfiguratorTests.test_hook_zca": "PASSED",
    "ConfiguratorTests.test_include_threadlocals_active": "PASSED",
    "ConfiguratorTests.test_include_with_dotted_name": "PASSED",
    "ConfiguratorTests.test_include_with_missing_source_file": "PASSED",
    "ConfiguratorTests.test_include_with_module_defaults_to_includeme": "PASSED",
    "ConfiguratorTests.test_include_with_module_defaults_to_includeme_missing": "PASSED",
    "ConfiguratorTests.test_include_with_nested_route_prefix": "PASSED",
    "ConfiguratorTests.test_include_with_route_prefix": "PASSED",
    "ConfiguratorTests.test_introspector_decorator": "PASSED",
    "ConfiguratorTests.test_make_wsgi_app": "PASSED",
    "ConfiguratorTests.test_maybe_dotted_notstring_success": "PASSED",
    "ConfiguratorTests.test_maybe_dotted_string_fail": "PASSED",
    "ConfiguratorTests.test_maybe_dotted_string_success": "PASSED",
    "ConfiguratorTests.test_scan_integration": "PASSED",
    "ConfiguratorTests.test_scan_integration_conflict": "PASSED",
    "ConfiguratorTests.test_scan_integration_dottedname_package": "PASSED",
    "ConfiguratorTests.test_scan_integration_with_extra_kw": "PASSED",
    "ConfiguratorTests.test_scan_integration_with_ignore": "PASSED",
    "ConfiguratorTests.test_scan_integration_with_onerror": "PASSED",
    "ConfiguratorTests.test_setup_registry_alternate_renderers": "PASSED",
    "ConfiguratorTests.test_setup_registry_authentication_policy": "PASSED",
    "ConfiguratorTests.test_setup_registry_authentication_policy_dottedname": "PASSED",
    "ConfiguratorTests.test_setup_registry_authorization_policy_dottedname": "PASSED",
    "ConfiguratorTests.test_setup_registry_authorization_policy_only": "PASSED",
    "ConfiguratorTests.test_setup_registry_calls_fix_registry": "PASSED",
    "ConfiguratorTests.test_setup_registry_custom_settings": "PASSED",
    "ConfiguratorTests.test_setup_registry_debug_logger_name": "PASSED",
    "ConfiguratorTests.test_setup_registry_debug_logger_non_None": "PASSED",
    "ConfiguratorTests.test_setup_registry_default_permission": "PASSED",
    "ConfiguratorTests.test_setup_registry_dottedname_root_factory": "PASSED",
    "ConfiguratorTests.test_setup_registry_explicit_notfound_trumps_iexceptionresponse": "PASSED",
    "ConfiguratorTests.test_setup_registry_includes": "PASSED",
    "ConfiguratorTests.test_setup_registry_includes_spaces": "PASSED",
    "ConfiguratorTests.test_setup_registry_locale_negotiator": "PASSED",
    "ConfiguratorTests.test_setup_registry_locale_negotiator_dottedname": "PASSED",
    "ConfiguratorTests.test_setup_registry_no_default_root_factory": "PASSED",
    "ConfiguratorTests.test_setup_registry_registers_default_exceptionresponse_views": "PASSED",
    "ConfiguratorTests.test_setup_registry_registers_default_view_predicates": "PASSED",
    "ConfiguratorTests.test_setup_registry_registers_default_webob_iresponse_adapter": "PASSED",
    "ConfiguratorTests.test_setup_registry_request_factory": "PASSED",
    "ConfiguratorTests.test_setup_registry_request_factory_dottedname": "PASSED",
    "ConfiguratorTests.test_setup_registry_response_factory": "PASSED",
    "ConfiguratorTests.test_unhook_zca": "PASSED",
    "ConfiguratorTests.test_with_package": "PASSED",
    "ConfiguratorTests.test_with_package_package": "PASSED",
    "TestConfigurator_add_directive.test_directive_persists_across_configurator_creations": "PASSED",
    "TestConfigurator_add_directive.test_extend_action_method_successful": "PASSED",
    "TestConfigurator_add_directive.test_extend_same_name_doesnt_conflict": "PASSED",
    "TestConfigurator__add_predicate.test_factory_as_object": "PASSED",
    "TestGlobalRegistriesIntegration.test_global_registries": "PASSED",
    "TestGlobalRegistriesIntegration.test_global_registries_empty": "PASSED",
    "TestPredicateList.test_custom_predicates_can_affect_traversal": "PASSED",
    "TestPredicateList.test_different_custom_predicates_with_same_hash": "PASSED",
    "TestPredicateList.test_match_param_from_dict": "PASSED",
    "TestPredicateList.test_match_param_from_dict_fails": "PASSED",
    "TestPredicateList.test_match_param_from_string": "PASSED",
    "TestPredicateList.test_match_param_from_string_fails": "PASSED",
    "TestPredicateList.test_notted": "PASSED",
    "TestPredicateList.test_ordering_importance_and_number": "PASSED",
    "TestPredicateList.test_ordering_importance_of_predicates": "PASSED",
    "TestPredicateList.test_ordering_number_of_predicates": "PASSED",
    "TestPredicateList.test_ordering_xhr_and_request_method_trump_only_containment": "PASSED",
    "TestPredicateList.test_predicate_close_matches": "PASSED",
    "TestPredicateList.test_predicate_text_is_correct": "PASSED",
    "TestPredicateList.test_request_method_ordering_hashes_same": "PASSED",
    "TestPredicateList.test_request_method_sequence": "PASSED",
    "TestPredicateList.test_traverse_has_remainder_already": "PASSED",
    "TestPredicateList.test_traverse_matches": "PASSED",
    "TestPredicateList.test_traverse_matches_with_highorder_chars": "PASSED",
    "TestPredicateList.test_unknown_predicate": "PASSED",
    "Test_sort_accept_offers.test_default_specificities": "PASSED",
    "Test_sort_accept_offers.test_params_inherit_type_prefs": "PASSED",
    "Test_sort_accept_offers.test_params_order": "PASSED",
    "Test_sort_accept_offers.test_specific_type_order": "PASSED",
    "TestRenderingConfiguratorMixin.test_add_default_renderers": "PASSED",
    "TestRenderingConfiguratorMixin.test_add_renderer": "PASSED",
    "TestRenderingConfiguratorMixin.test_add_renderer_dottedname_factory": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_defaults": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_discriminator": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_no_path_no_pattern": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_no_pattern_with_path": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_no_view_with_view_attr": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_no_view_with_view_context": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_no_view_with_view_permission": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_no_view_with_view_renderer": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_with_accept": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_with_accept_list": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_with_custom_predicates": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_with_factory": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_with_header": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_with_inherit_errors": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_with_path_info": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_with_path_info_highorder": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_with_path_info_regex": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_with_pregenerator": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_with_request_method": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_with_request_param": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_with_root_slash_with_route_prefix": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_with_route_prefix": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_with_route_prefix_with_inherit_slash": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_with_static": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_with_wildcard_accept_raises": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_with_xhr": "PASSED",
    "RoutesConfiguratorMixinTests.test_get_routes_mapper_already_registered": "PASSED",
    "RoutesConfiguratorMixinTests.test_get_routes_mapper_not_yet_registered": "PASSED",
    "ConfiguratorSecurityMethodsTests.test_add_permission": "PASSED",
    "ConfiguratorSecurityMethodsTests.test_changing_set_default_csrf_options": "PASSED",
    "ConfiguratorSecurityMethodsTests.test_set_authentication_policy_no_authz_policy": "PASSED",
    "ConfiguratorSecurityMethodsTests.test_set_authentication_policy_no_authz_policy_autocommit": "PASSED",
    "ConfiguratorSecurityMethodsTests.test_set_authentication_policy_with_authz_policy": "PASSED",
    "ConfiguratorSecurityMethodsTests.test_set_authentication_policy_with_authz_policy_autocommit": "PASSED",
    "ConfiguratorSecurityMethodsTests.test_set_authentication_policy_with_security_policy": "PASSED",
    "ConfiguratorSecurityMethodsTests.test_set_authorization_policy_no_authn_policy": "PASSED",
    "ConfiguratorSecurityMethodsTests.test_set_authorization_policy_no_authn_policy_autocommit": "PASSED",
    "ConfiguratorSecurityMethodsTests.test_set_authorization_policy_with_authn_policy": "PASSED",
    "ConfiguratorSecurityMethodsTests.test_set_authorization_policy_with_authn_policy_autocommit": "PASSED",
    "ConfiguratorSecurityMethodsTests.test_set_default_csrf_options": "PASSED",
    "ConfiguratorSecurityMethodsTests.test_set_default_permission": "PASSED",
    "ConfiguratorSecurityMethodsTests.test_set_security_policy": "PASSED",
    "TestSettingsConfiguratorMixin.test__set_settings_as_None": "PASSED",
    "TestSettingsConfiguratorMixin.test__set_settings_as_dictwithvalues": "PASSED",
    "TestSettingsConfiguratorMixin.test__set_settings_does_not_uses_original_dict": "PASSED",
    "TestSettingsConfiguratorMixin.test_add_settings_settings_None": "PASSED",
    "TestSettingsConfiguratorMixin.test_add_settings_settings_already_registered": "PASSED",
    "TestSettingsConfiguratorMixin.test_add_settings_settings_not_yet_registered": "PASSED",
    "TestSettingsConfiguratorMixin.test_get_settings_nosettings": "PASSED",
    "TestSettingsConfiguratorMixin.test_get_settings_withsettings": "PASSED",
    "TestSettingsConfiguratorMixin.test_settings_parameter_dict_is_never_updated": "PASSED",
    "TestSettings.test_csrf_trusted_origins": "PASSED",
    "TestSettings.test_debug_all": "PASSED",
    "TestSettings.test_debug_authorization": "PASSED",
    "TestSettings.test_debug_notfound": "PASSED",
    "TestSettings.test_debug_routematch": "PASSED",
    "TestSettings.test_debug_templates": "PASSED",
    "TestSettings.test_default_locale_name": "PASSED",
    "TestSettings.test_noargs": "PASSED",
    "TestSettings.test_originals_kept": "PASSED",
    "TestSettings.test_prevent_cachebust": "PASSED",
    "TestSettings.test_prevent_http_cache": "PASSED",
    "TestSettings.test_reload_all": "PASSED",
    "TestSettings.test_reload_assets": "PASSED",
    "TestSettings.test_reload_resources": "PASSED",
    "TestSettings.test_reload_templates": "PASSED",
    "TestingConfiguratorMixinTests.test_testing_add_renderer": "PASSED",
    "TestingConfiguratorMixinTests.test_testing_add_renderer_explicitrenderer": "PASSED",
    "TestingConfiguratorMixinTests.test_testing_add_renderer_twice": "PASSED",
    "TestingConfiguratorMixinTests.test_testing_add_subscriber_defaults": "PASSED",
    "TestingConfiguratorMixinTests.test_testing_add_subscriber_multiple": "PASSED",
    "TestingConfiguratorMixinTests.test_testing_add_subscriber_single": "PASSED",
    "TestingConfiguratorMixinTests.test_testing_add_template": "PASSED",
    "TestingConfiguratorMixinTests.test_testing_resources": "PASSED",
    "TestingConfiguratorMixinTests.test_testing_securitypolicy_forget_result": "PASSED",
    "TestingConfiguratorMixinTests.test_testing_securitypolicy_remember_result": "PASSED",
    "TestTweensConfiguratorMixin.test_add_tween_instance": "PASSED",
    "TestTweensConfiguratorMixin.test_add_tween_name_ingress": "PASSED",
    "TestTweensConfiguratorMixin.test_add_tween_name_main": "PASSED",
    "TestTweensConfiguratorMixin.test_add_tween_over_ingress": "PASSED",
    "TestTweensConfiguratorMixin.test_add_tween_over_ingress_iterable": "PASSED",
    "TestTweensConfiguratorMixin.test_add_tween_under_main": "PASSED",
    "TestTweensConfiguratorMixin.test_add_tween_under_main_iterable": "PASSED",
    "TestTweensConfiguratorMixin.test_add_tween_unsuitable": "PASSED",
    "TestTweensConfiguratorMixin.test_add_tweens_conflict": "PASSED",
    "TestTweensConfiguratorMixin.test_add_tweens_names_with_over_nonstringoriter": "PASSED",
    "TestTweensConfiguratorMixin.test_add_tweens_names_with_under_nonstringoriter": "PASSED",
    "TestTweens.test___call___explicit": "PASSED",
    "TestTweens.test___call___implicit": "PASSED",
    "TestTweens.test_add_explicit": "PASSED",
    "TestTweens.test_add_implicit": "PASSED",
    "TestTweens.test_implicit_ordering_1": "PASSED",
    "TestTweens.test_implicit_ordering_2": "PASSED",
    "TestTweens.test_implicit_ordering_3": "PASSED",
    "TestTweens.test_implicit_ordering_4": "PASSED",
    "TestTweens.test_implicit_ordering_5": "PASSED",
    "TestTweens.test_implicit_ordering_conflict_direct": "PASSED",
    "TestTweens.test_implicit_ordering_conflict_indirect": "PASSED",
    "TestTweens.test_implicit_ordering_missing_over_and_under_partials": "PASSED",
    "TestTweens.test_implicit_ordering_missing_over_partial": "PASSED",
    "TestTweens.test_implicit_ordering_missing_over_partial_with_fallback": "PASSED",
    "TestTweens.test_implicit_ordering_missing_under_partial": "PASSED",
    "TestTweens.test_implicit_ordering_missing_under_partial_with_fallback": "PASSED",
    "TestTweens.test_implicit_ordering_with_missing_fallbacks": "PASSED",
    "TestTweens.test_implicit_ordering_with_multiple_matching_fallbacks": "PASSED",
    "TestTweens.test_implicit_ordering_with_partial_fallbacks": "PASSED",
    "TestViewsConfigurationMixin.test_add_accept_view_order_override": "PASSED",
    "TestViewsConfigurationMixin.test_add_accept_view_order_throws_on_type_mismatch": "PASSED",
    "TestViewsConfigurationMixin.test_add_accept_view_order_throws_on_wildcard": "PASSED",
    "TestViewsConfigurationMixin.test_add_exception_view": "PASSED",
    "TestViewsConfigurationMixin.test_add_exception_view_disallows_exception_only": "PASSED",
    "TestViewsConfigurationMixin.test_add_exception_view_disallows_for_": "PASSED",
    "TestViewsConfigurationMixin.test_add_exception_view_disallows_name": "PASSED",
    "TestViewsConfigurationMixin.test_add_exception_view_disallows_permission": "PASSED",
    "TestViewsConfigurationMixin.test_add_exception_view_disallows_require_csrf": "PASSED",
    "TestViewsConfigurationMixin.test_add_exception_view_with_subclass": "PASSED",
    "TestViewsConfigurationMixin.test_add_forbidden_view": "PASSED",
    "TestViewsConfigurationMixin.test_add_forbidden_view_allows_other_predicates": "PASSED",
    "TestViewsConfigurationMixin.test_add_forbidden_view_disallows_context": "PASSED",
    "TestViewsConfigurationMixin.test_add_forbidden_view_disallows_for_": "PASSED",
    "TestViewsConfigurationMixin.test_add_forbidden_view_disallows_name": "PASSED",
    "TestViewsConfigurationMixin.test_add_forbidden_view_disallows_permission": "PASSED",
    "TestViewsConfigurationMixin.test_add_forbidden_view_disallows_require_csrf": "PASSED",
    "TestViewsConfigurationMixin.test_add_forbidden_view_no_view_argument": "PASSED",
    "TestViewsConfigurationMixin.test_add_forbidden_view_with_renderer": "PASSED",
    "TestViewsConfigurationMixin.test_add_normal_and_exception_view_intr_derived_callable": "PASSED",
    "TestViewsConfigurationMixin.test_add_notfound_view": "PASSED",
    "TestViewsConfigurationMixin.test_add_notfound_view_allows_other_predicates": "PASSED",
    "TestViewsConfigurationMixin.test_add_notfound_view_append_slash": "PASSED",
    "TestViewsConfigurationMixin.test_add_notfound_view_append_slash_custom_response": "PASSED",
    "TestViewsConfigurationMixin.test_add_notfound_view_disallows_context": "PASSED",
    "TestViewsConfigurationMixin.test_add_notfound_view_disallows_for_": "PASSED",
    "TestViewsConfigurationMixin.test_add_notfound_view_disallows_name": "PASSED",
    "TestViewsConfigurationMixin.test_add_notfound_view_disallows_permission": "PASSED",
    "TestViewsConfigurationMixin.test_add_notfound_view_disallows_require_csrf": "PASSED",
    "TestViewsConfigurationMixin.test_add_notfound_view_no_view_argument": "PASSED",
    "TestViewsConfigurationMixin.test_add_notfound_view_with_renderer": "PASSED",
    "TestViewsConfigurationMixin.test_add_static_view_absolute": "PASSED",
    "TestViewsConfigurationMixin.test_add_static_view_here_no_utility_registered": "PASSED",
    "TestViewsConfigurationMixin.test_add_static_view_package_relative": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_as_instance": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_as_instance_requestonly": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_as_instancemethod": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_as_instancemethod_requestonly": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_as_oldstyle_class": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_as_oldstyle_class_requestonly": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_class_method_no_attr": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_context_as_class": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_context_as_iface": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_context_trumps_for": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_custom_more_preds_first_bests_fewer_preds_last": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_custom_predicate_bests_standard_predicate": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_default_phash_overrides_default_phash": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_default_phash_overrides_no_phash": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_does_not_accept_iterable_accept": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_exc_default_phash_overrides_default_phash": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_exc_default_phash_overrides_no_phash": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_exc_multiview_replaces_existing_securedview": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_exc_multiview_replaces_existing_view": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_exc_multiview_replaces_multiviews": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_exc_multiview_replaces_only_exc_multiview": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_exc_mulview_replaces_existing_view_with___accept__": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_exc_same_phash_overrides_existing_single_view": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_exc_with_accept_multiview_replaces_existing_view": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_exception_only": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_exception_only_misconfiguration": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_exception_only_no_regular_view": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_exception_register_secured_view": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_for_as_class": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_for_as_iface": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_mixed_case_replaces_existing_view": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_multiview___discriminator__": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_multiview_call_ordering": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_multiview_context_superclass_then_subclass": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_multiview_exception_superclass_then_subclass": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_multiview_replaces_existing_securedview": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_multiview_replaces_existing_view": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_multiview_replaces_existing_view_with___accept__": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_multiview_replaces_multiview": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_register_secured_view": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_same_phash_overrides_existing_single_view": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_same_predicates": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_view_callable_None_no_renderer": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_view_callable_None_with_renderer": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_view_callable_dottedname": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_accept_match": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_accept_multiview_replaces_existing_view": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_accept_nomatch": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_containment_false": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_containment_true": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_csrf_header": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_csrf_param": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_custom_predicates_match": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_custom_predicates_nomatch": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_decorator": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_decorator_tuple": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_default_renderer": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_function_callable": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_function_callable_requestonly": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_header_badregex": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_header_noval_match": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_header_noval_nomatch": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_header_val_match": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_header_val_missing": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_header_val_nomatch": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_http_cache": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_mapper": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_missing_csrf_header": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_name": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_name_unicode": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_no_default_permission_no_explicit_permission": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_nonexistant_route_name": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_path_info_badregex": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_path_info_match": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_path_info_nomatch": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_request_method_false": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_request_method_get_implies_head": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_request_method_sequence_conflict": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_request_method_sequence_false": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_request_method_sequence_true": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_request_method_true": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_request_param_noval_false": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_request_param_noval_true": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_request_param_val_false": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_request_param_val_true": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_request_type": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_request_type_and_route_name": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_request_type_as_iface": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_request_type_as_noniface": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_route_name": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_route_name_exception": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_tmpl_renderer_factory_introspector_missing": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_tmpl_renderer_factory_no_renderer_factory": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_tmpl_renderer_factory_with_renderer_factory": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_view_config_and_view_defaults_conflicts": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_view_config_and_view_defaults_doesnt_conflict": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_wildcard_accept_raises": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_xhr_false": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_xhr_true": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_wrapped_view_is_decorated": "PASSED",
    "TestViewsConfigurationMixin.test_add_views_with_accept_multiview_replaces_existing": "PASSED",
    "TestViewsConfigurationMixin.test_default_accept_view_order": "PASSED",
    "TestViewsConfigurationMixin.test_derive_view_dottedname": "PASSED",
    "TestViewsConfigurationMixin.test_derive_view_function": "PASSED",
    "TestViewsConfigurationMixin.test_derive_view_with_default_renderer_no_explicit_renderer": "PASSED",
    "TestViewsConfigurationMixin.test_derive_view_with_default_renderer_with_explicit_renderer": "PASSED",
    "TestViewsConfigurationMixin.test_set_view_mapper": "PASSED",
    "TestViewsConfigurationMixin.test_set_view_mapper_dottedname": "PASSED",
    "TestViewsConfigurationMixin.test_view_with_most_specific_predicate": "PASSED",
    "TestViewsConfigurationMixin.test_view_with_most_specific_predicate_with_mismatch": "PASSED",
    "Test_runtime_exc_view.test_call": "PASSED",
    "Test_runtime_exc_view.test_call_dispatches_on_exception": "PASSED",
    "Test_runtime_exc_view.test_permitted": "PASSED",
    "Test_runtime_exc_view.test_permitted_dispatches_on_exception": "PASSED",
    "Test_requestonly.test_defaults": "PASSED",
    "Test_requestonly.test_otherattr": "PASSED",
    "Test_isexception.test_is_IException": "PASSED",
    "Test_isexception.test_is_IException_subinterface": "PASSED",
    "Test_isexception.test_is_exception_class": "PASSED",
    "Test_isexception.test_is_exception_instance": "PASSED",
    "TestMultiView.test___call__": "PASSED",
    "TestMultiView.test___call__intermediate_not_found": "PASSED",
    "TestMultiView.test___call__raise_not_found_isnt_interpreted_as_pred_mismatch": "PASSED",
    "TestMultiView.test___call_permissive_has_call_permissive": "PASSED",
    "TestMultiView.test___call_permissive_has_no_call_permissive": "PASSED",
    "TestMultiView.test__call__not_found": "PASSED",
    "TestMultiView.test__call__with_accept_match": "PASSED",
    "TestMultiView.test__call__with_accept_miss": "PASSED",
    "TestMultiView.test__call_permissive__not_found": "PASSED",
    "TestMultiView.test_add": "PASSED",
    "TestMultiView.test_add_with_phash": "PASSED",
    "TestMultiView.test_add_with_phash_override_accept": "PASSED",
    "TestMultiView.test_add_with_phash_override_accept2": "PASSED",
    "TestMultiView.test_class_implements_ISecuredView": "PASSED",
    "TestMultiView.test_get_views": "PASSED",
    "TestMultiView.test_get_views_best_match_returns_None": "PASSED",
    "TestMultiView.test_get_views_no_self_accepts": "PASSED",
    "TestMultiView.test_get_views_request_has_no_accept": "PASSED",
    "TestMultiView.test_instance_implements_ISecuredView": "PASSED",
    "TestMultiView.test_match_not_found": "PASSED",
    "TestMultiView.test_match_predicate_fails": "PASSED",
    "TestMultiView.test_match_predicate_succeeds": "PASSED",
    "TestMultiView.test_multiple_with_functions_as_views": "PASSED",
    "TestMultiView.test_permitted": "PASSED",
    "TestMultiView.test_permitted_no_match_with__permitted__": "PASSED",
    "TestMultiView.test_permitted_no_views": "PASSED",
    "TestDefaultViewMapper.test__view_as_function_with_attr": "PASSED",
    "TestDefaultViewMapper.test_view_as_function_context_and_request": "PASSED",
    "TestDefaultViewMapper.test_view_as_function_requestonly": "PASSED",
    "TestDefaultViewMapper.test_view_as_function_requestonly_with_attr": "PASSED",
    "TestDefaultViewMapper.test_view_as_instance_context_and_request": "PASSED",
    "TestDefaultViewMapper.test_view_as_instance_context_and_request_and_attr": "PASSED",
    "TestDefaultViewMapper.test_view_as_instance_requestonly": "PASSED",
    "TestDefaultViewMapper.test_view_as_instance_requestonly_with_attr": "PASSED",
    "TestDefaultViewMapper.test_view_as_newstyle_class_context_and_request": "PASSED",
    "TestDefaultViewMapper.test_view_as_newstyle_class_context_and_request_with_attr": "PASSED",
    "TestDefaultViewMapper.test_view_as_newstyle_class_requestonly": "PASSED",
    "TestDefaultViewMapper.test_view_as_newstyle_class_requestonly_with_attr": "PASSED",
    "TestDefaultViewMapper.test_view_as_oldstyle_class_context_and_request": "PASSED",
    "TestDefaultViewMapper.test_view_as_oldstyle_class_context_and_request_with_attr": "PASSED",
    "TestDefaultViewMapper.test_view_as_oldstyle_class_requestonly": "PASSED",
    "TestDefaultViewMapper.test_view_as_oldstyle_class_requestonly_with_attr": "PASSED",
    "Test_preserve_view_attrs.test_it_different": "PASSED",
    "Test_preserve_view_attrs.test_it_different_with_existing_original_view": "PASSED",
    "Test_preserve_view_attrs.test_it_same": "PASSED",
    "Test_preserve_view_attrs.test_it_view_is_None": "PASSED",
    "TestStaticURLInfo.test_add_already_exists": "PASSED",
    "TestStaticURLInfo.test_add_cachebust_prevented": "PASSED",
    "TestStaticURLInfo.test_add_cachebuster": "PASSED",
    "TestStaticURLInfo.test_add_cachebuster_abspath": "PASSED",
    "TestStaticURLInfo.test_add_cachebuster_for_more_specific_path": "PASSED",
    "TestStaticURLInfo.test_add_cachebuster_overwrite": "PASSED",
    "TestStaticURLInfo.test_add_cachebuster_overwrite_explicit": "PASSED",
    "TestStaticURLInfo.test_add_package_root": "PASSED",
    "TestStaticURLInfo.test_add_url_noendslash": "PASSED",
    "TestStaticURLInfo.test_add_url_noscheme": "PASSED",
    "TestStaticURLInfo.test_add_url_withendslash": "PASSED",
    "TestStaticURLInfo.test_add_viewname": "PASSED",
    "TestStaticURLInfo.test_add_viewname_with_context": "PASSED",
    "TestStaticURLInfo.test_add_viewname_with_for_": "PASSED",
    "TestStaticURLInfo.test_add_viewname_with_permission": "PASSED",
    "TestStaticURLInfo.test_add_viewname_with_renderer": "PASSED",
    "TestStaticURLInfo.test_add_viewname_with_route_prefix": "PASSED",
    "TestStaticURLInfo.test_generate_missing": "PASSED",
    "TestStaticURLInfo.test_generate_quoting": "PASSED",
    "TestStaticURLInfo.test_generate_registration_miss": "PASSED",
    "TestStaticURLInfo.test_generate_route_url": "PASSED",
    "TestStaticURLInfo.test_generate_slash_in_name1": "PASSED",
    "TestStaticURLInfo.test_generate_slash_in_name2": "PASSED",
    "TestStaticURLInfo.test_generate_url_cachebust": "PASSED",
    "TestStaticURLInfo.test_generate_url_cachebust_abspath": "PASSED",
    "TestStaticURLInfo.test_generate_url_cachebust_nomatch": "PASSED",
    "TestStaticURLInfo.test_generate_url_quoted_remote": "PASSED",
    "TestStaticURLInfo.test_generate_url_unquoted_local": "PASSED",
    "TestStaticURLInfo.test_generate_url_with_custom_anchor": "PASSED",
    "TestStaticURLInfo.test_generate_url_with_custom_query": "PASSED",
    "TestStaticURLInfo.test_verifyClass": "PASSED",
    "TestStaticURLInfo.test_verifyObject": "PASSED",
    "Test_view_description.test_with_text": "PASSED",
    "Test_viewdefaults.test_dunder_attrs_copied": "PASSED",
    "TestParseVars.test_parse_vars_bad": "PASSED",
    "TestParseVars.test_parse_vars_good": "PASSED",
    "TestPDistReportCommand.test_no_dists": "PASSED",
    "TestPDistReportCommand.test_with_dists": "PASSED",
    "TestPRequestCommand.test_command_display_headers": "PASSED",
    "TestPRequestCommand.test_command_has_bad_config_header": "PASSED",
    "TestPRequestCommand.test_command_has_content_type_header_var": "PASSED",
    "TestPRequestCommand.test_command_has_good_header_var": "PASSED",
    "TestPRequestCommand.test_command_has_multiple_header_vars": "PASSED",
    "TestPRequestCommand.test_command_method_configures_logging": "PASSED",
    "TestPRequestCommand.test_command_method_get": "PASSED",
    "TestPRequestCommand.test_command_method_options": "PASSED",
    "TestPRequestCommand.test_command_method_patch": "PASSED",
    "TestPRequestCommand.test_command_method_post": "PASSED",
    "TestPRequestCommand.test_command_method_propfind": "PASSED",
    "TestPRequestCommand.test_command_method_put": "PASSED",
    "TestPRequestCommand.test_command_not_enough_args": "PASSED",
    "TestPRequestCommand.test_command_path_doesnt_start_with_slash": "PASSED",
    "TestPRequestCommand.test_command_response_has_no_charset": "PASSED",
    "TestPRequestCommand.test_command_two_args": "PASSED",
    "TestPRequestCommand.test_command_w_basic_auth": "PASSED",
    "TestPRequestCommand.test_command_with_query_string": "PASSED",
    "Test_main.test_it": "PASSED",
    "TestPRoutesCommand.test__get_mapper": "PASSED",
    "TestPRoutesCommand.test_bad_args": "PASSED",
    "TestPRoutesCommand.test_bad_format": "PASSED",
    "TestPRoutesCommand.test_config_format_ini_commas": "PASSED",
    "TestPRoutesCommand.test_config_format_ini_newlines": "PASSED",
    "TestPRoutesCommand.test_config_format_ini_spaces": "PASSED",
    "TestPRoutesCommand.test_good_args": "PASSED",
    "TestPRoutesCommand.test_good_format": "PASSED",
    "TestPRoutesCommand.test_no_mapper": "PASSED",
    "TestPRoutesCommand.test_no_routes": "PASSED",
    "TestPRoutesCommand.test_route_as_wsgiapp": "PASSED",
    "TestPRoutesCommand.test_route_no_view": "PASSED",
    "TestPRoutesCommand.test_route_with_no_slash_prefix": "PASSED",
    "TestPRoutesCommand.test_single_route_no_route_registered": "PASSED",
    "TestPRoutesCommand.test_single_route_no_views_registered": "PASSED",
    "TestPRoutesCommand.test_single_route_one_view_registered_with_factory": "PASSED",
    "TestPRoutesCommand.test_static_routes_included_in_list": "PASSED",
    "TestPServeCommand.test_config_file_finds_open_url": "PASSED",
    "TestPServeCommand.test_guess_server_url": "PASSED",
    "TestPServeCommand.test_original_ignore_files": "PASSED",
    "TestPServeCommand.test_parse_vars_bad": "PASSED",
    "TestPServeCommand.test_parse_vars_good": "PASSED",
    "TestPServeCommand.test_reload_call_hupper_with_correct_args": "PASSED",
    "TestPServeCommand.test_run_no_args": "PASSED",
    "TestPShellCommand.test_command_custom_section_override": "PASSED",
    "TestPShellCommand.test_command_default_shell_option": "PASSED",
    "TestPShellCommand.test_command_errors_with_unknown_shell": "PASSED",
    "TestPShellCommand.test_command_loads_check_variable_override_order": "PASSED",
    "TestPShellCommand.test_command_loads_custom_items": "PASSED",
    "TestPShellCommand.test_command_loads_default_shell": "PASSED",
    "TestPShellCommand.test_command_loads_ipython": "PASSED",
    "TestPShellCommand.test_command_loads_pythonstartup": "PASSED",
    "TestPShellCommand.test_command_loads_setup_from_options": "PASSED",
    "TestPShellCommand.test_command_setup": "PASSED",
    "TestPShellCommand.test_command_setup_generator": "PASSED",
    "TestPShellCommand.test_list_shells": "PASSED",
    "TestPShellCommand.test_shell_entry_points": "PASSED",
    "TestPShellCommand.test_shell_ordering": "PASSED",
    "TestPShellCommand.test_shell_override": "PASSED",
    "Test_python_shell_runner.test_it": "PASSED",
    "TestPTweensCommand.test__get_tweens": "PASSED",
    "TestPTweensCommand.test_command_implicit_and_explicit_tweens": "PASSED",
    "TestPTweensCommand.test_command_implicit_tweens_only": "PASSED",
    "TestPTweensCommand.test_command_no_tweens": "PASSED",
    "TestPViewsCommand.test__find_multi_routes_all_match": "PASSED",
    "TestPViewsCommand.test__find_multi_routes_none_match": "PASSED",
    "TestPViewsCommand.test__find_multi_routes_some_match": "PASSED",
    "TestPViewsCommand.test__find_view_no_match": "PASSED",
    "TestPViewsCommand.test__find_view_no_match_multiview_registered": "PASSED",
    "TestPViewsCommand.test__find_view_route_multiview": "PASSED",
    "TestPViewsCommand.test__find_view_route_multiview_no_view_registered": "PASSED",
    "TestPViewsCommand.test__find_view_route_no_multiview": "PASSED",
    "TestPViewsCommand.test__find_view_traversal": "PASSED",
    "TestPViewsCommand.test__find_view_traversal_multiview": "PASSED",
    "TestPViewsCommand.test_views_command_not_found": "PASSED",
    "TestPViewsCommand.test_views_command_not_found_url_starts_without_slash": "PASSED",
    "AdaptersConfiguratorMixinTests.test_add_resource_url_adapter_dotted_names": "FAILED",
    "AdaptersConfiguratorMixinTests.test_add_resource_url_adapter_introspectables": "FAILED",
    "AdaptersConfiguratorMixinTests.test_add_traverser_dotted_names": "FAILED",
    "TestAssetsConfiguratorMixin.test_override_asset_directory_with_directory": "FAILED",
    "TestAssetsConfiguratorMixin.test_override_asset_directory_with_package": "FAILED",
    "TestAssetsConfiguratorMixin.test_override_asset_file_with_file": "FAILED",
    "TestAssetsConfiguratorMixin.test_override_asset_package_with_directory": "FAILED",
    "TestAssetsConfiguratorMixin.test_override_asset_package_with_package": "FAILED",
    "TestOverrideProvider.test_get_resource_filename_no_overrides": "FAILED",
    "TestOverrideProvider.test_get_resource_filename_override_returns_None": "FAILED",
    "TestPackageAssetSource.test_get_filename": "FAILED",
    "TestPackageAssetSource.test_get_filename_with_prefix": "FAILED",
    "TestFactoriesMixin.test_set_request_factory_dottedname": "FAILED",
    "TestFactoriesMixin.test_set_response_factory_dottedname": "FAILED",
    "TestFactoriesMixin.test_set_root_factory_dottedname": "FAILED",
    "TestFactoriesMixin.test_set_session_factory_dottedname": "FAILED",
    "TestI18NConfiguratorMixin.test_add_translation_dirs_abspath": "FAILED",
    "TestI18NConfiguratorMixin.test_add_translation_dirs_asset_spec": "FAILED",
    "TestI18NConfiguratorMixin.test_add_translation_dirs_asset_spec_existing_translation_dirs": "FAILED",
    "TestI18NConfiguratorMixin.test_add_translation_dirs_doesnt_use_override_w_autocommit": "FAILED",
    "TestI18NConfiguratorMixin.test_add_translation_dirs_multiple_specs": "FAILED",
    "TestI18NConfiguratorMixin.test_add_translation_dirs_multiple_specs_multiple_calls": "FAILED",
    "TestI18NConfiguratorMixin.test_add_translation_dirs_override_multiple_specs_multiple_calls": "FAILED",
    "TestI18NConfiguratorMixin.test_add_translation_dirs_uses_override_out_of_order": "FAILED",
    "TestI18NConfiguratorMixin.test_add_translation_dirs_uses_override_w_autocommit": "FAILED",
    "TestI18NConfiguratorMixin.test_set_locale_negotiator_dottedname": "FAILED",
    "ConfiguratorTests.test_ctor_no_registry": "FAILED",
    "ConfiguratorTests.test_ctor_noreg_debug_logger_None_default": "FAILED",
    "ConfiguratorTests.test_include_constant_root_package": "FAILED",
    "ConfiguratorTests.test_include_with_python_callable": "FAILED",
    "ConfiguratorTests.test_setup_registry_debug_logger_None_default": "FAILED",
    "ConfiguratorTests.test_setup_registry_tweens": "FAILED",
    "ConfiguratorTests.test_with_package_module": "FAILED",
    "TestConfigurator_add_directive.test_add_directive_with_custom_callable": "FAILED",
    "TestConfigurator_add_directive.test_add_directive_with_partial": "FAILED",
    "TestConfigurator_add_directive.test_extend_with_dotted_name": "FAILED",
    "TestConfigurator_add_directive.test_extend_with_python_callable": "FAILED",
    "TestConfigurator__add_predicate.test_factory_as_dotted_name": "FAILED",
    "RoutesConfiguratorMixinTests.test_add_route_with_factory_dottedname": "FAILED",
    "TestingConfiguratorMixinTests.test_testing_add_subscriber_dottedname": "FAILED",
    "TestingConfiguratorMixinTests.test_testing_securitypolicy": "FAILED",
    "TestTweensConfiguratorMixin.test_add_tween_dottedname": "FAILED",
    "TestTweensConfiguratorMixin.test_add_tweens_names_distinct": "FAILED",
    "TestTweensConfiguratorMixin.test_add_tweens_names_with_underover": "FAILED",
    "TestViewsConfigurationMixin.test_add_exception_view_with_view_defaults": "FAILED",
    "TestViewsConfigurationMixin.test_add_forbidden_view_with_view_defaults": "FAILED",
    "TestViewsConfigurationMixin.test_add_notfound_view_with_view_defaults": "FAILED",
    "TestViewsConfigurationMixin.test_add_static_view_package_here_relative": "FAILED",
    "TestViewsConfigurationMixin.test_add_view_context_as_dottedname": "FAILED",
    "TestViewsConfigurationMixin.test_add_view_for__as_dottedname": "FAILED",
    "TestViewsConfigurationMixin.test_add_view_with_containment_dottedname": "FAILED",
    "TestViewsConfigurationMixin.test_add_view_with_default_permission_no_explicit_permission": "FAILED",
    "TestViewsConfigurationMixin.test_add_view_with_permission": "FAILED",
    "TestViewsConfigurationMixin.test_add_view_with_template_renderer": "FAILED",
    "TestViewsConfigurationMixin.test_add_view_with_template_renderer_no_callable": "FAILED",
    "TestViewsConfigurationMixin.test_add_view_with_view_defaults": "FAILED",
    "TestViewsConfigurationMixin.test_add_view_with_view_defaults_viewname_is_dottedname_kwarg": "FAILED",
    "TestViewsConfigurationMixin.test_add_view_with_view_defaults_viewname_is_dottedname_nonkwarg": "FAILED",
    "TestStaticURLInfo.test_generate_url_cachebust_with_overrides": "FAILED",
    "Test_view_description.test_without_text": "FAILED",
    "TestPRoutesCommand.test_class_view": "FAILED",
    "TestPRoutesCommand.test_one_route_all_methods_view_only_post": "FAILED",
    "TestPRoutesCommand.test_one_route_only_post_view_all_methods": "FAILED",
    "TestPRoutesCommand.test_one_route_only_post_view_post_and_get": "FAILED",
    "TestPRoutesCommand.test_one_route_with_long_name_one_view_registered": "FAILED",
    "TestPRoutesCommand.test_route_is_get_view_request_method_not_post": "FAILED",
    "TestPRoutesCommand.test_route_request_method_mismatch": "FAILED",
    "TestPRoutesCommand.test_route_static_views": "FAILED",
    "TestPRoutesCommand.test_single_route_multiview_registered": "FAILED",
    "TestPRoutesCommand.test_single_route_one_view_registered": "FAILED",
    "TestPRoutesCommand.test_view_glob": "FAILED",
    "TestPRoutesCommand.test_view_request_method_not_post": "FAILED",
    "TestPServeCommand.test_config_file_finds_watch_files": "FAILED",
    "TestPViewsCommand.test_views_command_multi_view_nested": "FAILED",
    "TestPViewsCommand.test_views_command_multiview": "FAILED",
    "TestPViewsCommand.test_views_command_multiview_with_permission": "FAILED",
    "TestPViewsCommand.test_views_command_multiview_with_predicates": "FAILED",
    "TestPViewsCommand.test_views_command_single_view_function_traversal": "FAILED",
    "TestPViewsCommand.test_views_command_single_view_route": "FAILED",
    "TestPViewsCommand.test_views_command_single_view_route_with_route_predicates": "FAILED",
    "TestPViewsCommand.test_views_command_single_view_traversal": "FAILED",
    "TestPViewsCommand.test_views_command_single_view_traversal_with_permission": "FAILED",
    "TestPViewsCommand.test_views_command_single_view_traversal_with_predicates": "FAILED"
}
diff --git a/src/pyramid/security.py b/src/pyramid/security.py
index f07bc0bfe..e3a978c52 100644
--- a/src/pyramid/security.py
+++ b/src/pyramid/security.py
@@ -439,8 +439,12 @@ class LegacySecurityPolicy:
         return authn.remember(request, userid, **kw)
 
     def forget(self, request, **kw):
+        if kw:
+            raise ValueError(
+                'Legacy authentication policies do not support keyword '
+                'arguments for `forget`'
+            )
         authn = self._get_authn_policy(request)
-        # XXX log warning if varkwargs were passed?
         return authn.forget(request)
 
     def permits(self, request, context, permission):

{"src/pyramid/security.py": "from zope.interface import implementer, providedBy\nfrom zope.deprecation import deprecated\n\nfrom pyramid.interfaces import (\n    ISecurityPolicy,\n    IAuthenticationPolicy,\n    IAuthorizationPolicy,\n    ISecuredView,\n    IView,\n    IViewClassifier,\n)\n\nfrom pyramid.threadlocal import get_current_registry\n\nEveryone = 'system.Everyone'\nAuthenticated = 'system.Authenticated'\nAllow = 'Allow'\nDeny = 'Deny'\n\n\nclass AllPermissionsList(object):\n    \"\"\" Stand in 'permission list' to represent all permissions \"\"\"\n\n    def __iter__(self):\n        return iter(())\n\n    def __contains__(self, other):\n        return True\n\n    def __eq__(self, other):\n        return isinstance(other, self.__class__)\n\n\nALL_PERMISSIONS = AllPermissionsList()\nDENY_ALL = (Deny, Everyone, ALL_PERMISSIONS)\n\nNO_PERMISSION_REQUIRED = '__no_permission_required__'\n\n\ndef _get_security_policy(request):\n    return request.registry.queryUtility(ISecurityPolicy)\n\n\ndef _get_authentication_policy(request):\n    return request.registry.queryUtility(IAuthenticationPolicy)\n\n\ndef remember(request, userid, **kw):\n    \"\"\"\n    Returns a sequence of header tuples (e.g. ``[('Set-Cookie', 'foo=abc')]``)\n    on this request's response.\n    These headers are suitable for 'remembering' a set of credentials\n    implied by the data passed as ``userid`` and ``*kw`` using the\n    current :term:`security policy`.  Common usage might look\n    like so within the body of a view function (``response`` is\n    assumed to be a :term:`WebOb` -style :term:`response` object\n    computed previously by the view code):\n\n    .. code-block:: python\n\n       from pyramid.security import remember\n       headers = remember(request, 'chrism', password='123', max_age='86400')\n       response = request.response\n       response.headerlist.extend(headers)\n       return response\n\n    If no :term:`security policy` is in use, this function will\n    always return an empty sequence. If used, the composition and\n    meaning of ``**kw`` must be agreed upon by the calling code and\n    the effective security policy.\n\n    .. versionchanged:: 1.6\n        Deprecated the ``principal`` argument in favor of ``userid`` to clarify\n        its relationship to the authentication policy.\n\n    .. versionchanged:: 1.10\n        Removed the deprecated ``principal`` argument.\n    \"\"\"\n    policy = _get_security_policy(request)\n    if policy is None:\n        return []\n    return policy.remember(request, userid, **kw)\n\n\ndef forget(request, **kw):\n    \"\"\"\n    Return a sequence of header tuples (e.g. ``[('Set-Cookie',\n    'foo=abc')]``) suitable for 'forgetting' the set of credentials\n    possessed by the currently authenticated user.  A common usage\n    might look like so within the body of a view function\n    (``response`` is assumed to be an :term:`WebOb` -style\n    :term:`response` object computed previously by the view code):\n\n    .. code-block:: python\n\n       from pyramid.security import forget\n       headers = forget(request)\n       response.headerlist.extend(headers)\n       return response\n\n    If no :term:`security policy` is in use, this function will\n    always return an empty sequence.\n    \"\"\"\n    policy = _get_security_policy(request)\n    if policy is None:\n        return []\n    return policy.forget(request, **kw)\n\n\ndef principals_allowed_by_permission(context, permission):\n    \"\"\"\n    .. deprecated:: 2.0\n\n        The new security policy has removed the concept of principals.  See\n        :ref:`upgrading_auth` for more information.\n\n    Provided a ``context`` (a resource object), and a ``permission``\n    string, if an :term:`authorization policy` is\n    in effect, return a sequence of :term:`principal` ids that possess\n    the permission in the ``context``.  If no authorization policy is\n    in effect, this will return a sequence with the single value\n    :mod:`pyramid.security.Everyone` (the special principal\n    identifier representing all principals).\n\n    .. note::\n\n       Even if an :term:`authorization policy` is in effect,\n       some (exotic) authorization policies may not implement the\n       required machinery for this function; those will cause a\n       :exc:`NotImplementedError` exception to be raised when this\n       function is invoked.\n\n    \"\"\"\n    reg = get_current_registry()\n    policy = reg.queryUtility(IAuthorizationPolicy)\n    if policy is None:\n        return [Everyone]\n    return policy.principals_allowed_by_permission(context, permission)\n\n\ndeprecated(\n    'principals_allowed_by_permission',\n    'The new security policy has removed the concept of principals.  See '\n    'https://docs.pylonsproject.org/projects/pyramid/en/latest'\n    '/whatsnew-2.0.html#upgrading-authentication-authorization '\n    'for more information.',\n)\n\n\ndef view_execution_permitted(context, request, name=''):\n    \"\"\" If the view specified by ``context`` and ``name`` is protected\n    by a :term:`permission`, check the permission associated with the\n    view using the effective authentication/authorization policies and\n    the ``request``.  Return a boolean result.  If no\n    :term:`authorization policy` is in effect, or if the view is not\n    protected by a permission, return ``True``. If no view can view found,\n    an exception will be raised.\n\n    .. versionchanged:: 1.4a4\n       An exception is raised if no view is found.\n\n    \"\"\"\n    reg = request.registry\n    provides = [IViewClassifier] + [providedBy(x) for x in (request, context)]\n    # XXX not sure what to do here about using _find_views or analogue;\n    # for now let's just keep it as-is\n    view = reg.adapters.lookup(provides, ISecuredView, name=name)\n    if view is None:\n        view = reg.adapters.lookup(provides, IView, name=name)\n        if view is None:\n            raise TypeError(\n                'No registered view satisfies the constraints. '\n                'It would not make sense to claim that this view '\n                '\"is\" or \"is not\" permitted.'\n            )\n        return Allowed(\n            'Allowed: view name %r in context %r (no permission defined)'\n            % (name, context)\n        )\n    return view.__permitted__(context, request)\n\n\nclass PermitsResult(int):\n    def __new__(cls, s, *args):\n        \"\"\"\n        Create a new instance.\n\n        :param fmt: A format string explaining the reason for denial.\n        :param args: Arguments are stored and used with the format string\n                      to generate the ``msg``.\n\n        \"\"\"\n        inst = int.__new__(cls, cls.boolval)\n        inst.s = s\n        inst.args = args\n        return inst\n\n    @property\n    def msg(self):\n        \"\"\" A string indicating why the result was generated.\"\"\"\n        return self.s % self.args\n\n    def __str__(self):\n        return self.msg\n\n    def __repr__(self):\n        return '<%s instance at %s with msg %r>' % (\n            self.__class__.__name__,\n            id(self),\n            self.msg,\n        )\n\n\nclass Denied(PermitsResult):\n    \"\"\"\n    An instance of ``Denied`` is returned when a security-related\n    API or other :app:`Pyramid` code denies an action unrelated to\n    an ACL check.  It evaluates equal to all boolean false types.  It\n    has an attribute named ``msg`` describing the circumstances for\n    the deny.\n\n    \"\"\"\n\n    boolval = 0\n\n\nclass Allowed(PermitsResult):\n    \"\"\"\n    An instance of ``Allowed`` is returned when a security-related\n    API or other :app:`Pyramid` code allows an action unrelated to\n    an ACL check.  It evaluates equal to all boolean true types.  It\n    has an attribute named ``msg`` describing the circumstances for\n    the allow.\n\n    \"\"\"\n\n    boolval = 1\n\n\nclass ACLPermitsResult(PermitsResult):\n    def __new__(cls, ace, acl, permission, principals, context):\n        \"\"\"\n        Create a new instance.\n\n        :param ace: The :term:`ACE` that matched, triggering the result.\n        :param acl: The :term:`ACL` containing ``ace``.\n        :param permission: The required :term:`permission`.\n        :param principals: The list of :term:`principals <principal>` provided.\n        :param context: The :term:`context` providing the :term:`lineage`\n                        searched.\n\n        \"\"\"\n        fmt = (\n            '%s permission %r via ACE %r in ACL %r on context %r for '\n            'principals %r'\n        )\n        inst = PermitsResult.__new__(\n            cls, fmt, cls.__name__, permission, ace, acl, context, principals\n        )\n        inst.permission = permission\n        inst.ace = ace\n        inst.acl = acl\n        inst.principals = principals\n        inst.context = context\n        return inst\n\n\nclass ACLDenied(ACLPermitsResult, Denied):\n    \"\"\"\n    An instance of ``ACLDenied`` is a specialization of\n    :class:`pyramid.security.Denied` that represents that a security check\n    made explicitly against ACL was denied.  It evaluates equal to all\n    boolean false types.  It also has the following attributes: ``acl``,\n    ``ace``, ``permission``, ``principals``, and ``context``.  These\n    attributes indicate the security values involved in the request.  Its\n    ``__str__`` method prints a summary of these attributes for debugging\n    purposes. The same summary is available as the ``msg`` attribute.\n\n    \"\"\"\n\n\nclass ACLAllowed(ACLPermitsResult, Allowed):\n    \"\"\"\n    An instance of ``ACLAllowed`` is a specialization of\n    :class:`pyramid.security.Allowed` that represents that a security check\n    made explicitly against ACL was allowed.  It evaluates equal to all\n    boolean true types.  It also has the following attributes: ``acl``,\n    ``ace``, ``permission``, ``principals``, and ``context``.  These\n    attributes indicate the security values involved in the request.  Its\n    ``__str__`` method prints a summary of these attributes for debugging\n    purposes. The same summary is available as the ``msg`` attribute.\n\n    \"\"\"\n\n\nclass SecurityAPIMixin:\n    \"\"\" Mixin for Request class providing auth-related properties. \"\"\"\n\n    @property\n    def authenticated_identity(self):\n        \"\"\"\n        Return an opaque object identifying the current user or ``None`` if no\n        user is authenticated or there is no :term:`security policy` in effect.\n\n        \"\"\"\n        policy = _get_security_policy(self)\n        if policy is None:\n            return None\n        return policy.identify(self)\n\n    @property\n    def authenticated_userid(self):\n        \"\"\"\n        Return the :term:`userid` of the currently authenticated user or\n        ``None`` if there is no :term:`security policy` in effect or there is\n        no currently authenticated user.\n\n        .. versionchanged:: 2.0\n\n           This property delegates to the effective :term:`security policy`,\n           ignoring old-style :term:`authentication policy`.\n\n        \"\"\"\n        policy = _get_security_policy(self)\n        if policy is None:\n            return None\n        return policy.authenticated_userid(self)\n\n    def has_permission(self, permission, context=None):\n        \"\"\" Given a permission and an optional context, returns an instance of\n        :data:`pyramid.security.Allowed` if the permission is granted to this\n        request with the provided context, or the context already associated\n        with the request.  Otherwise, returns an instance of\n        :data:`pyramid.security.Denied`.  This method delegates to the current\n        security policy.  Returns\n        :data:`pyramid.security.Allowed` unconditionally if no security\n        policy has been registered for this request.  If ``context`` is not\n        supplied or is supplied as ``None``, the context used is the\n        ``request.context`` attribute.\n\n        :param permission: Does this request have the given permission?\n        :type permission: str\n        :param context: A resource object or ``None``\n        :type context: object\n        :returns: Either :class:`pyramid.security.Allowed` or\n                  :class:`pyramid.security.Denied`.\n\n        \"\"\"\n        if context is None:\n            context = self.context\n        policy = _get_security_policy(self)\n        if policy is None:\n            return Allowed('No security policy in use.')\n        return policy.permits(self, context, permission)\n\n\nclass AuthenticationAPIMixin(object):\n    \"\"\" Mixin for Request class providing compatibility properties. \"\"\"\n\n    @property\n    def unauthenticated_userid(self):\n        \"\"\"\n        .. deprecated:: 2.0\n\n            ``unauthenticated_userid`` does not have an equivalent in the new\n            security system.  Use :attr:`.authenticated_userid` or\n            :attr:`.authenticated_identity` instead.\n            See :ref:`upgrading_auth` for more information.\n\n        Return an object which represents the *claimed* (not verified) user\n        id of the credentials present in the request. ``None`` if there is no\n        :term:`authentication policy` in effect or there is no user data\n        associated with the current request.  This differs from\n        :attr:`~pyramid.request.Request.authenticated_userid`, because the\n        effective authentication policy will not ensure that a record\n        associated with the userid exists in persistent storage.\n\n        \"\"\"\n        authn = _get_authentication_policy(self)\n        security = _get_security_policy(self)\n        if authn is not None:\n            return authn.unauthenticated_userid(self)\n        elif security is not None:\n            return security.authenticated_userid(self)\n        else:\n            return None\n\n    @property\n    def effective_principals(self):\n        \"\"\"\n        .. deprecated:: 2.0\n\n            The new security policy has removed the concept of principals.  See\n            :ref:`upgrading_auth` for more information.\n\n        Return the list of 'effective' :term:`principal` identifiers\n        for the ``request``. If no :term:`authentication policy` is in effect,\n        this will return a one-element list containing the\n        :data:`pyramid.security.Everyone` principal.\n\n        \"\"\"\n        policy = _get_authentication_policy(self)\n        if policy is None:\n            return [Everyone]\n        return policy.effective_principals(self)\n\n    effective_principals = deprecated(\n        effective_principals,\n        'The new security policy has removed the concept of principals.  See '\n        'https://docs.pylonsproject.org/projects/pyramid/en/latest'\n        '/whatsnew-2.0.html#upgrading-authentication-authorization '\n        'for more information.',\n    )\n\n\n@implementer(ISecurityPolicy)\nclass LegacySecurityPolicy:\n    \"\"\"\n    A :term:`security policy` which provides a backwards compatibility shim for\n    the :term:`authentication policy` and the :term:`authorization policy`.\n\n    \"\"\"\n\n    def _get_authn_policy(self, request):\n        return request.registry.getUtility(IAuthenticationPolicy)\n\n    def _get_authz_policy(self, request):\n        return request.registry.getUtility(IAuthorizationPolicy)\n\n    def identify(self, request):\n        return self.authenticated_userid(request)\n\n    def authenticated_userid(self, request):\n        authn = self._get_authn_policy(request)\n        return authn.authenticated_userid(request)\n\n    def remember(self, request, userid, **kw):\n        authn = self._get_authn_policy(request)\n        return authn.remember(request, userid, **kw)\n\n    def forget(self, request, **kw):\n        authn = self._get_authn_policy(request)\n        # XXX log warning if varkwargs were passed?\n        return authn.forget(request)\n\n    def permits(self, request, context, permission):\n        authn = self._get_authn_policy(request)\n        authz = self._get_authz_policy(request)\n        principals = authn.effective_principals(request)\n        return authz.permits(context, principals, permission)\n"}
A user will ask you to solve a task. You should first draft your thinking process (inner monologue). Then, generate the solution.

Your response format must follow the template below:
<think>
Your thoughts or/and draft, like working through an exercise on scratch paper. Be as casual and as long as you want until you are confident to generate a correct solution.
</think>
<solution>
Final solution presented to the user.
</solution>
system
We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
[ISSUE]

**Title:** Passing keyword arguments to `LegacySecurityPolicy.forget` raises AttributeError instead of ValueError

**Description:**
When using the `forget` method of `LegacySecurityPolicy` with keyword arguments, an `AttributeError` is unexpectedly raised. This occurs because the method attempts to access `request.registry` when `request` is `None`, leading to an uninformative error.

**Example Code:**
```python
from pyramid.security import LegacySecurityPolicy

policy = LegacySecurityPolicy()
policy.forget(None, foo='bar')  # Raises AttributeError
```

**Expected Behavior:**
Providing keyword arguments to the `forget` method should result in a `ValueError` that clearly states that keyword arguments are not supported by legacy authentication policies.

**Actual Behavior:**
An `AttributeError` is thrown with the message `'NoneType' object has no attribute 'registry'`, which does not clearly indicate the misuse of keyword arguments.

[/ISSUE]
--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.

--- BEGIN FILE ---
```
### src/pyramid/security.py
from zope.interface import implementer, providedBy
from zope.deprecation import deprecated

from pyramid.interfaces import (
    ISecurityPolicy,
    IAuthenticationPolicy,
    IAuthorizationPolicy,
    ISecuredView,
    IView,
    IViewClassifier,
)

from pyramid.threadlocal import get_current_registry

Everyone = 'system.Everyone'
Authenticated = 'system.Authenticated'
Allow = 'Allow'
Deny = 'Deny'


class AllPermissionsList(object):
    """ Stand in 'permission list' to represent all permissions """

    def __iter__(self):
        return iter(())

    def __contains__(self, other):
        return True

    def __eq__(self, other):
        return isinstance(other, self.__class__)


ALL_PERMISSIONS = AllPermissionsList()
DENY_ALL = (Deny, Everyone, ALL_PERMISSIONS)

NO_PERMISSION_REQUIRED = '__no_permission_required__'


def _get_security_policy(request):
    return request.registry.queryUtility(ISecurityPolicy)


def _get_authentication_policy(request):
    return request.registry.queryUtility(IAuthenticationPolicy)


def remember(request, userid, **kw):
    """
    Returns a sequence of header tuples (e.g. ``[('Set-Cookie', 'foo=abc')]``)
    on this request's response.
    These headers are suitable for 'remembering' a set of credentials
    implied by the data passed as ``userid`` and ``*kw`` using the
    current :term:`security policy`.  Common usage might look
    like so within the body of a view function (``response`` is
    assumed to be a :term:`WebOb` -style :term:`response` object
    computed previously by the view code):

    .. code-block:: python

       from pyramid.security import remember
       headers = remember(request, 'chrism', password='123', max_age='86400')
       response = request.response
       response.headerlist.extend(headers)
       return response

    If no :term:`security policy` is in use, this function will
    always return an empty sequence. If used, the composition and
    meaning of ``**kw`` must be agreed upon by the calling code and
    the effective security policy.

    .. versionchanged:: 1.6
        Deprecated the ``principal`` argument in favor of ``userid`` to clarify
        its relationship to the authentication policy.

    .. versionchanged:: 1.10
        Removed the deprecated ``principal`` argument.
    """
    policy = _get_security_policy(request)
    if policy is None:
        return []
    return policy.remember(request, userid, **kw)


def forget(request, **kw):
    """
    Return a sequence of header tuples (e.g. ``[('Set-Cookie',
    'foo=abc')]``) suitable for 'forgetting' the set of credentials
    possessed by the currently authenticated user.  A common usage
    might look like so within the body of a view function
    (``response`` is assumed to be an :term:`WebOb` -style
    :term:`response` object computed previously by the view code):

    .. code-block:: python

       from pyramid.security import forget
       headers = forget(request)
       response.headerlist.extend(headers)
       return response

    If no :term:`security policy` is in use, this function will
    always return an empty sequence.
    """
    policy = _get_security_policy(request)
    if policy is None:
        return []
    return policy.forget(request, **kw)


def principals_allowed_by_permission(context, permission):
    """
    .. deprecated:: 2.0

        The new security policy has removed the concept of principals.  See
        :ref:`upgrading_auth` for more information.

    Provided a ``context`` (a resource object), and a ``permission``
    string, if an :term:`authorization policy` is
    in effect, return a sequence of :term:`principal` ids that possess
    the permission in the ``context``.  If no authorization policy is
    in effect, this will return a sequence with the single value
    :mod:`pyramid.security.Everyone` (the special principal
    identifier representing all principals).

    .. note::

       Even if an :term:`authorization policy` is in effect,
       some (exotic) authorization policies may not implement the
       required machinery for this function; those will cause a
       :exc:`NotImplementedError` exception to be raised when this
       function is invoked.

    """
    reg = get_current_registry()
    policy = reg.queryUtility(IAuthorizationPolicy)
    if policy is None:
        return [Everyone]
    return policy.principals_allowed_by_permission(context, permission)


deprecated(
    'principals_allowed_by_permission',
    'The new security policy has removed the concept of principals.  See '
    'https://docs.pylonsproject.org/projects/pyramid/en/latest'
    '/whatsnew-2.0.html#upgrading-authentication-authorization '
    'for more information.',
)


def view_execution_permitted(context, request, name=''):
    """ If the view specified by ``context`` and ``name`` is protected
    by a :term:`permission`, check the permission associated with the
    view using the effective authentication/authorization policies and
    the ``request``.  Return a boolean result.  If no
    :term:`authorization policy` is in effect, or if the view is not
    protected by a permission, return ``True``. If no view can view found,
    an exception will be raised.

    .. versionchanged:: 1.4a4
       An exception is raised if no view is found.

    """
    reg = request.registry
    provides = [IViewClassifier] + [providedBy(x) for x in (request, context)]
    # XXX not sure what to do here about using _find_views or analogue;
    # for now let's just keep it as-is
    view = reg.adapters.lookup(provides, ISecuredView, name=name)
    if view is None:
        view = reg.adapters.lookup(provides, IView, name=name)
        if view is None:
            raise TypeError(
                'No registered view satisfies the constraints. '
                'It would not make sense to claim that this view '
                '"is" or "is not" permitted.'
            )
        return Allowed(
            'Allowed: view name %r in context %r (no permission defined)'
            % (name, context)
        )
    return view.__permitted__(context, request)


class PermitsResult(int):
    def __new__(cls, s, *args):
        """
        Create a new instance.

        :param fmt: A format string explaining the reason for denial.
        :param args: Arguments are stored and used with the format string
                      to generate the ``msg``.

        """
        inst = int.__new__(cls, cls.boolval)
        inst.s = s
        inst.args = args
        return inst

    @property
    def msg(self):
        """ A string indicating why the result was generated."""
        return self.s % self.args

    def __str__(self):
        return self.msg

    def __repr__(self):
        return '<%s instance at %s with msg %r>' % (
            self.__class__.__name__,
            id(self),
            self.msg,
        )


class Denied(PermitsResult):
    """
    An instance of ``Denied`` is returned when a security-related
    API or other :app:`Pyramid` code denies an action unrelated to
    an ACL check.  It evaluates equal to all boolean false types.  It
    has an attribute named ``msg`` describing the circumstances for
    the deny.

    """

    boolval = 0


class Allowed(PermitsResult):
    """
    An instance of ``Allowed`` is returned when a security-related
    API or other :app:`Pyramid` code allows an action unrelated to
    an ACL check.  It evaluates equal to all boolean true types.  It
    has an attribute named ``msg`` describing the circumstances for
    the allow.

    """

    boolval = 1


class ACLPermitsResult(PermitsResult):
    def __new__(cls, ace, acl, permission, principals, context):
        """
        Create a new instance.

        :param ace: The :term:`ACE` that matched, triggering the result.
        :param acl: The :term:`ACL` containing ``ace``.
        :param permission: The required :term:`permission`.
        :param principals: The list of :term:`principals <principal>` provided.
        :param context: The :term:`context` providing the :term:`lineage`
                        searched.

        """
        fmt = (
            '%s permission %r via ACE %r in ACL %r on context %r for '
            'principals %r'
        )
        inst = PermitsResult.__new__(
            cls, fmt, cls.__name__, permission, ace, acl, context, principals
        )
        inst.permission = permission
        inst.ace = ace
        inst.acl = acl
        inst.principals = principals
        inst.context = context
        return inst


class ACLDenied(ACLPermitsResult, Denied):
    """
    An instance of ``ACLDenied`` is a specialization of
    :class:`pyramid.security.Denied` that represents that a security check
    made explicitly against ACL was denied.  It evaluates equal to all
    boolean false types.  It also has the following attributes: ``acl``,
    ``ace``, ``permission``, ``principals``, and ``context``.  These
    attributes indicate the security values involved in the request.  Its
    ``__str__`` method prints a summary of these attributes for debugging
    purposes. The same summary is available as the ``msg`` attribute.

    """


class ACLAllowed(ACLPermitsResult, Allowed):
    """
    An instance of ``ACLAllowed`` is a specialization of
    :class:`pyramid.security.Allowed` that represents that a security check
    made explicitly against ACL was allowed.  It evaluates equal to all
    boolean true types.  It also has the following attributes: ``acl``,
    ``ace``, ``permission``, ``principals``, and ``context``.  These
    attributes indicate the security values involved in the request.  Its
    ``__str__`` method prints a summary of these attributes for debugging
    purposes. The same summary is available as the ``msg`` attribute.

    """


class SecurityAPIMixin:
    """ Mixin for Request class providing auth-related properties. """

    @property
    def authenticated_identity(self):
        """
        Return an opaque object identifying the current user or ``None`` if no
        user is authenticated or there is no :term:`security policy` in effect.

        """
        policy = _get_security_policy(self)
        if policy is None:
            return None
        return policy.identify(self)

    @property
    def authenticated_userid(self):
        """
        Return the :term:`userid` of the currently authenticated user or
        ``None`` if there is no :term:`security policy` in effect or there is
        no currently authenticated user.

        .. versionchanged:: 2.0

           This property delegates to the effective :term:`security policy`,
           ignoring old-style :term:`authentication policy`.

        """
        policy = _get_security_policy(self)
        if policy is None:
            return None
        return policy.authenticated_userid(self)

    def has_permission(self, permission, context=None):
        """ Given a permission and an optional context, returns an instance of
        :data:`pyramid.security.Allowed` if the permission is granted to this
        request with the provided context, or the context already associated
        with the request.  Otherwise, returns an instance of
        :data:`pyramid.security.Denied`.  This method delegates to the current
        security policy.  Returns
        :data:`pyramid.security.Allowed` unconditionally if no security
        policy has been registered for this request.  If ``context`` is not
        supplied or is supplied as ``None``, the context used is the
        ``request.context`` attribute.

        :param permission: Does this request have the given permission?
        :type permission: str
        :param context: A resource object or ``None``
        :type context: object
        :returns: Either :class:`pyramid.security.Allowed` or
                  :class:`pyramid.security.Denied`.

        """
        if context is None:
            context = self.context
        policy = _get_security_policy(self)
        if policy is None:
            return Allowed('No security policy in use.')
        return policy.permits(self, context, permission)


class AuthenticationAPIMixin(object):
    """ Mixin for Request class providing compatibility properties. """

    @property
    def unauthenticated_userid(self):
        """
        .. deprecated:: 2.0

            ``unauthenticated_userid`` does not have an equivalent in the new
            security system.  Use :attr:`.authenticated_userid` or
            :attr:`.authenticated_identity` instead.
            See :ref:`upgrading_auth` for more information.

        Return an object which represents the *claimed* (not verified) user
        id of the credentials present in the request. ``None`` if there is no
        :term:`authentication policy` in effect or there is no user data
        associated with the current request.  This differs from
        :attr:`~pyramid.request.Request.authenticated_userid`, because the
        effective authentication policy will not ensure that a record
        associated with the userid exists in persistent storage.

        """
        authn = _get_authentication_policy(self)
        security = _get_security_policy(self)
        if authn is not None:
            return authn.unauthenticated_userid(self)
        elif security is not None:
            return security.authenticated_userid(self)
        else:
            return None

    @property
    def effective_principals(self):
        """
        .. deprecated:: 2.0

            The new security policy has removed the concept of principals.  See
            :ref:`upgrading_auth` for more information.

        Return the list of 'effective' :term:`principal` identifiers
        for the ``request``. If no :term:`authentication policy` is in effect,
        this will return a one-element list containing the
        :data:`pyramid.security.Everyone` principal.

        """
        policy = _get_authentication_policy(self)
        if policy is None:
            return [Everyone]
        return policy.effective_principals(self)

    effective_principals = deprecated(
        effective_principals,
        'The new security policy has removed the concept of principals.  See '
        'https://docs.pylonsproject.org/projects/pyramid/en/latest'
        '/whatsnew-2.0.html#upgrading-authentication-authorization '
        'for more information.',
    )


@implementer(ISecurityPolicy)
class LegacySecurityPolicy:
    """
    A :term:`security policy` which provides a backwards compatibility shim for
    the :term:`authentication policy` and the :term:`authorization policy`.

    """

    def _get_authn_policy(self, request):
        return request.registry.getUtility(IAuthenticationPolicy)

    def _get_authz_policy(self, request):
        return request.registry.getUtility(IAuthorizationPolicy)

    def identify(self, request):
        return self.authenticated_userid(request)

    def authenticated_userid(self, request):
        authn = self._get_authn_policy(request)
        return authn.authenticated_userid(request)

    def remember(self, request, userid, **kw):
        authn = self._get_authn_policy(request)
        return authn.remember(request, userid, **kw)

    def forget(self, request, **kw):
        authn = self._get_authn_policy(request)
        # XXX log warning if varkwargs were passed?
        return authn.forget(request)

    def permits(self, request, context, permission):
        authn = self._get_authn_policy(request)
        authz = self._get_authz_policy(request)
        principals = authn.effective_principals(request)
        return authz.permits(context, principals, permission)

```
--- END FILE ---

Please first localize the bug based on the issue statement, and then generate *SEARCH/REPLACE* edits to fix the issue.

Every *SEARCH/REPLACE* edit must use this format:
1. The file path
2. The start of search block: <<<<<<< SEARCH
3. A contiguous chunk of lines to search for in the existing source code
4. The dividing line: =======
5. The lines to replace into the source code
6. The end of the replace block: >>>>>>> REPLACE

Here is an example:

```python
### mathweb/flask/app.py
<<<<<<< SEARCH
from flask import Flask
=======
import math
from flask import Flask
>>>>>>> REPLACE
```
</solution>

Please note that the *SEARCH/REPLACE* edit REQUIRES PROPER INDENTATION. If you would like to add the line '        print(x)', you must fully write that out, with all those spaces before the code!
Wrap each *SEARCH/REPLACE* edit in a code block as shown in the example above. If you have multiple *SEARCH/REPLACE* edits, use a separate code block for each one.
user