view test/test_pythonexpr.py @ 7032:f529cca242dc

flake8: fix imports, flake8 reported the following: templating.py:25:1: F401 'base64' imported but unused templating.py:25:1: F401 'mimetypes' imported but unused templating.py:25:1: F401 'string' imported but unused templating.py:28:1: F401 'time' imported but unused templating.py:28:1: F401 'hashlib' imported but unused templating.py:34:1: F401 'roundup.i18n' imported but unused templating.py:35:1: F401 'roundup.i18n._' imported but unused templating.py:36:1: F401 'roundup.anypy.strings.b2s' imported but unused templating.py:36:1: F401 'roundup.anypy.strings.s2b' imported but unused templating.py:43:1: F401 'roundup.anypy.random_' imported but unused templating.py:47:5: F401 'pickle' imported but unused Turns out time import was used by test_templating via from roundup.cgi.templating import * so added import time to test_templating Also split out multiple imports on one line into sepearate lines. Changed todo = to __todo__ to make flake8 shut up about module level imports not at top of file. Moved definiton of _disable_url_schemes for same reason.
author John Rouillard <rouilj@ieee.org>
date Sun, 09 Oct 2022 18:40:46 -0400
parents e70885fe72a4
children
line wrap: on
line source

"""
In Python 3, sometimes TAL "python:" expressions that refer to
variables but not all variables are recognized. That is in Python 2.7
all variables used in a TAL "python:" expression are recognized as
references. In Python 3.5 (perhaps earlier), some TAL "python:"
expressions refer to variables but the reference generates an error
like this:

<class 'NameError'>: name 'some_tal_variable' is not defined

even when the variable is defined. Output after this message lists the
variable and its value.
"""

import unittest

from roundup.cgi.PageTemplates.PythonExpr import PythonExpr as PythonExprClass

class ExprTest(unittest.TestCase):
    def testExpr(self):
        expr = '[x for x in context.assignedto ' \
               'if x.realname not in user_realnames]'
        pe = PythonExprClass('test', expr, None)
        # Looking at the expression, only context and user_realnames are
        # external variables. The names assignedto and realname are members,
        # and x is local.
        required_names = ['context', 'user_realnames']
        got_names = pe._f_varnames
        for required_name in required_names:
            self.assertIn(required_name, got_names)

Roundup Issue Tracker: http://roundup-tracker.org/