view test/test_pythonexpr.py @ 7696:4af0d235b570

feat(db): support using postgresql service connection file Add new service rdbms config option to set the service name to be used with a postgresql service connection file. This can be done using the PGSERVICE environment variable for a single instance tracker server. For a multi-instance server this per-tracker config option is needed. Note that settings (host, user, (db)name...) in config.ini file will override the service connection file setting. Also setting PGSERVICE and service will use the service setting.
author John Rouillard <rouilj@ieee.org>
date Tue, 07 Nov 2023 12:11:37 -0500
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/