Mercurial > p > roundup > code
view test/test_pythonexpr.py @ 6178:227c05ce2d85
Nuke database on install and fix specification test
Need to empty database as part of install_init(). Wasn't a problem for
sqlite/anydbm as those got nuked by killing the test directory on each
new test. For postgres/mysql in CI it needs to be nuked.
Using admin.force=True to get the admin.py module to do it. If that
doesn't work can open the instance and nuke it manually.
Fields listed when getting specification for class are in different
orders for different databases backends and versions. Use sorted
lines for comparison.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Tue, 19 May 2020 01:14:48 -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)
