Mercurial > p > roundup > code
annotate test/test_templating.py @ 7866:9bbc1d951677
issue2551331 - Fix repeat first/last methods.
The first() and last() methods for a variable defined by tal:repeat
now work as documented.
There is an undocumented same_part() method for repeat. It is called
by first/last and can cause them to return true when not at an end of
the Iterator sequence. I wrote a treatise on that function and what it
does. I have no idea why it does what it does.
Added tests for roundup/cgi/ZTUtils/Iterator.py
Also fixes issue with roman() found while writing tests. lower wasn't
being called and it was printing the lower() method signature.
Doc updates in references.txt to come in a future checkin. Clarifying
the repeat methods led to finding/fixing this.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Sun, 07 Apr 2024 20:52:17 -0400 |
| parents | b080cdb8b199 |
| children | 29a666d8a70d |
| rev | line source |
|---|---|
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5226
diff
changeset
|
1 from __future__ import print_function |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2 import unittest |
| 7032 | 3 import time |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
4 |
|
7582
978285986b2c
fix: issue2551193 - Fix roundup for removal of cgi and cgitb ...
John Rouillard <rouilj@ieee.org>
parents:
7576
diff
changeset
|
5 from roundup.anypy.cgi_ import FieldStorage, MiniFieldStorage |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
6 from roundup.cgi.templating import * |
|
7866
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
7 from roundup.cgi.ZTUtils.Iterator import Iterator |
|
5388
d26921b851c3
Python 3 preparation: make relative imports explicit.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5378
diff
changeset
|
8 from .test_actions import MockNull, true |
|
6995
dc83ebff4c90
change test to use html normalizer when comparing html output.
John Rouillard <rouilj@ieee.org>
parents:
6992
diff
changeset
|
9 from .html_norm import NormalizingHtmlParser |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
10 |
|
6096
c914b3d8362f
If rst missing skip; initial attempt to test structuredtext.
John Rouillard <rouilj@ieee.org>
parents:
6095
diff
changeset
|
11 |
|
c914b3d8362f
If rst missing skip; initial attempt to test structuredtext.
John Rouillard <rouilj@ieee.org>
parents:
6095
diff
changeset
|
12 import pytest |
|
c914b3d8362f
If rst missing skip; initial attempt to test structuredtext.
John Rouillard <rouilj@ieee.org>
parents:
6095
diff
changeset
|
13 from .pytest_patcher import mark_class |
|
c914b3d8362f
If rst missing skip; initial attempt to test structuredtext.
John Rouillard <rouilj@ieee.org>
parents:
6095
diff
changeset
|
14 |
|
7576
7bdf9c0f74b9
Handle error id markdown2 not defined.
John Rouillard <rouilj@ieee.org>
parents:
7561
diff
changeset
|
15 try: |
|
7bdf9c0f74b9
Handle error id markdown2 not defined.
John Rouillard <rouilj@ieee.org>
parents:
7561
diff
changeset
|
16 from markdown2 import __version_info__ as md2__version_info__ |
|
7bdf9c0f74b9
Handle error id markdown2 not defined.
John Rouillard <rouilj@ieee.org>
parents:
7561
diff
changeset
|
17 except ImportError: |
|
7bdf9c0f74b9
Handle error id markdown2 not defined.
John Rouillard <rouilj@ieee.org>
parents:
7561
diff
changeset
|
18 md2__version_info__ = (0,0,0) |
|
7561
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
19 |
|
6099
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
20 if ReStructuredText: |
|
6096
c914b3d8362f
If rst missing skip; initial attempt to test structuredtext.
John Rouillard <rouilj@ieee.org>
parents:
6095
diff
changeset
|
21 skip_rst = lambda func, *args, **kwargs: func |
|
6099
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
22 else: |
|
6096
c914b3d8362f
If rst missing skip; initial attempt to test structuredtext.
John Rouillard <rouilj@ieee.org>
parents:
6095
diff
changeset
|
23 skip_rst = mark_class(pytest.mark.skip( |
|
c914b3d8362f
If rst missing skip; initial attempt to test structuredtext.
John Rouillard <rouilj@ieee.org>
parents:
6095
diff
changeset
|
24 reason='ReStructuredText not available')) |
|
c914b3d8362f
If rst missing skip; initial attempt to test structuredtext.
John Rouillard <rouilj@ieee.org>
parents:
6095
diff
changeset
|
25 |
|
6099
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
26 if StructuredText: |
|
6096
c914b3d8362f
If rst missing skip; initial attempt to test structuredtext.
John Rouillard <rouilj@ieee.org>
parents:
6095
diff
changeset
|
27 skip_stext = lambda func, *args, **kwargs: func |
|
6099
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
28 else: |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
29 skip_stext = mark_class(pytest.mark.skip( |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
30 reason='StructuredText not available')) |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
31 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
32 import roundup.cgi.templating |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
33 if roundup.cgi.templating._import_mistune(): |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
34 skip_mistune = lambda func, *args, **kwargs: func |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
35 else: |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
36 skip_mistune = mark_class(pytest.mark.skip( |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
37 reason='mistune not available')) |
|
6095
3ada6a3f48e1
fixed ReStructuredText encoding with Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6059
diff
changeset
|
38 |
|
6099
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
39 if roundup.cgi.templating._import_markdown2(): |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
40 skip_markdown2 = lambda func, *args, **kwargs: func |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
41 else: |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
42 skip_markdown2 = mark_class(pytest.mark.skip( |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
43 reason='markdown2 not available')) |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
44 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
45 if roundup.cgi.templating._import_markdown(): |
|
6097
90a1470edbea
added markdown rendering support using either markdown2 or markdown
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6096
diff
changeset
|
46 skip_markdown = lambda func, *args, **kwargs: func |
|
6099
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
47 else: |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
48 skip_markdown = mark_class(pytest.mark.skip( |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
49 reason='markdown not available')) |
|
6097
90a1470edbea
added markdown rendering support using either markdown2 or markdown
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6096
diff
changeset
|
50 |
|
6095
3ada6a3f48e1
fixed ReStructuredText encoding with Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6059
diff
changeset
|
51 from roundup.anypy.strings import u2s, s2u |
|
3ada6a3f48e1
fixed ReStructuredText encoding with Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6059
diff
changeset
|
52 |
| 6826 | 53 from roundup.backends.sessions_common import SessionCommon |
| 54 | |
| 55 class MockDatabase(MockNull, SessionCommon): | |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
56 def getclass(self, name): |
|
6337
316c2c32dace
Make testing mock smarter. Make getclass fail for invalid classes.
John Rouillard <rouilj@ieee.org>
parents:
6336
diff
changeset
|
57 # limit class names |
|
6404
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
58 if name not in [ 'issue', 'user', 'status' ]: |
|
6337
316c2c32dace
Make testing mock smarter. Make getclass fail for invalid classes.
John Rouillard <rouilj@ieee.org>
parents:
6336
diff
changeset
|
59 raise KeyError('There is no class called "%s"' % name) |
|
6336
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
60 # Class returned must have hasnode(id) method that returns true |
|
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
61 # otherwise designators like 'issue1' can't be hyperlinked. |
|
6338
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
62 self.classes[name].hasnode = lambda id: True if int(id) < 10 else False |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
63 return self.classes[name] |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
64 |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
65 # setup for csrf testing of otks database api |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
66 storage = {} |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
67 def set(self, key, **props): |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
68 MockDatabase.storage[key] = {} |
| 6817 | 69 if '__timestamp' not in props: |
| 70 props['__timestamp'] = time.time() - 7*24*3600 | |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
71 MockDatabase.storage[key].update(props) |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
72 |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
73 def get(self, key, field, default=None): |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
74 if key not in MockDatabase.storage: |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
75 return default |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
76 return MockDatabase.storage[key][field] |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
77 |
| 6817 | 78 def getall(self, key): |
| 79 if key not in MockDatabase.storage: | |
| 80 return default | |
| 81 return MockDatabase.storage[key] | |
| 82 | |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
83 def exists(self,key): |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
84 return key in MockDatabase.storage |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
85 |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
86 def getOTKManager(self): |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
87 return MockDatabase() |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
88 |
| 6817 | 89 def lifetime(self, seconds): |
| 90 return time.time() - 7*24*3600 + seconds | |
| 91 | |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
92 class TemplatingTestCase(unittest.TestCase): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
93 def setUp(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
94 self.form = FieldStorage() |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
95 self.client = MockNull() |
|
3972
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
96 self.client.db = db = MockDatabase() |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
97 db.security.hasPermission = lambda *args, **kw: True |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
98 self.client.form = self.form |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
99 |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
100 # add client props for testing anti_csrf_nonce |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
101 self.client.session_api = MockNull(_sid="1234567890") |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
102 self.client.db.getuid = lambda : 10 |
|
6277
957a0fc20021
issue2551094 - markdown mismatch - new config for embedded newine
John Rouillard <rouilj@ieee.org>
parents:
6275
diff
changeset
|
103 self.client.db.config = {'WEB_CSRF_TOKEN_LIFETIME': 10, 'MARKDOWN_BREAK_ON_NEWLINE': False } |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
104 |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
105 class HTMLDatabaseTestCase(TemplatingTestCase): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
106 def test_HTMLDatabase___getitem__(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
107 db = HTMLDatabase(self.client) |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5488
diff
changeset
|
108 self.assertTrue(isinstance(db['issue'], HTMLClass)) |
|
2716
305d346f8f3b
disable invalid assertions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2158
diff
changeset
|
109 # following assertions are invalid |
|
305d346f8f3b
disable invalid assertions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2158
diff
changeset
|
110 # since roundup/cgi/templating.py r1.173. |
|
305d346f8f3b
disable invalid assertions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2158
diff
changeset
|
111 # HTMLItem is function, not class, |
|
305d346f8f3b
disable invalid assertions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2158
diff
changeset
|
112 # but HTMLUserClass and HTMLUser are passed on. |
|
305d346f8f3b
disable invalid assertions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2158
diff
changeset
|
113 # these classes are no more. they have ceased to be. |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5488
diff
changeset
|
114 #self.assertTrue(isinstance(db['user'], HTMLUserClass)) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5488
diff
changeset
|
115 #self.assertTrue(isinstance(db['issue1'], HTMLItem)) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5488
diff
changeset
|
116 #self.assertTrue(isinstance(db['user1'], HTMLUser)) |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
117 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
118 def test_HTMLDatabase___getattr__(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
119 db = HTMLDatabase(self.client) |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5488
diff
changeset
|
120 self.assertTrue(isinstance(db.issue, HTMLClass)) |
|
2716
305d346f8f3b
disable invalid assertions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2158
diff
changeset
|
121 # see comment in test_HTMLDatabase___getitem__ |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5488
diff
changeset
|
122 #self.assertTrue(isinstance(db.user, HTMLUserClass)) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5488
diff
changeset
|
123 #self.assertTrue(isinstance(db.issue1, HTMLItem)) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5488
diff
changeset
|
124 #self.assertTrue(isinstance(db.user1, HTMLUser)) |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
125 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
126 def test_HTMLDatabase_classes(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
127 db = HTMLDatabase(self.client) |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
128 db._db.classes = {'issue':MockNull(), 'user': MockNull()} |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
129 db.classes() |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
130 |
|
6689
994893cf3e1a
Fix traceback if an order attribute is None
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6645
diff
changeset
|
131 def test_HTMLDatabase_list(self): |
|
994893cf3e1a
Fix traceback if an order attribute is None
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6645
diff
changeset
|
132 # The list method used to produce a traceback when a None value |
|
994893cf3e1a
Fix traceback if an order attribute is None
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6645
diff
changeset
|
133 # for an order attribute of a class was encountered. This |
|
994893cf3e1a
Fix traceback if an order attribute is None
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6645
diff
changeset
|
134 # happens when the 'get' of the order attribute for a numeric |
|
994893cf3e1a
Fix traceback if an order attribute is None
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6645
diff
changeset
|
135 # id produced a None value. So we put '23' as a key into the |
|
994893cf3e1a
Fix traceback if an order attribute is None
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6645
diff
changeset
|
136 # list and set things up that a None value is returned on 'get'. |
|
994893cf3e1a
Fix traceback if an order attribute is None
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6645
diff
changeset
|
137 |
|
994893cf3e1a
Fix traceback if an order attribute is None
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6645
diff
changeset
|
138 # This keeps db.issue static, otherwise it changes for each call |
|
994893cf3e1a
Fix traceback if an order attribute is None
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6645
diff
changeset
|
139 db = MockNull(issue = HTMLDatabase(self.client).issue) |
|
994893cf3e1a
Fix traceback if an order attribute is None
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6645
diff
changeset
|
140 db.issue._klass.list = lambda : ['23', 'a', 'b'] |
|
994893cf3e1a
Fix traceback if an order attribute is None
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6645
diff
changeset
|
141 # Make db.getclass return something that has a sensible 'get' method |
|
994893cf3e1a
Fix traceback if an order attribute is None
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6645
diff
changeset
|
142 mock = MockNull(get = lambda x, y : None) |
|
994893cf3e1a
Fix traceback if an order attribute is None
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6645
diff
changeset
|
143 db.issue._db.getclass = lambda x : mock |
|
994893cf3e1a
Fix traceback if an order attribute is None
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6645
diff
changeset
|
144 l = db.issue.list() |
|
994893cf3e1a
Fix traceback if an order attribute is None
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6645
diff
changeset
|
145 |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
146 class FunctionsTestCase(TemplatingTestCase): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
147 def test_lookupIds(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
148 db = HTMLDatabase(self.client) |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
149 def lookup(key): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
150 if key == 'ok': |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
151 return '1' |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
152 if key == 'fail': |
|
5378
35ea9b1efc14
Python 3 preparation: "raise" syntax.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5376
diff
changeset
|
153 raise KeyError('fail') |
|
3587
2372597ebbdb
*** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
2716
diff
changeset
|
154 return key |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
155 db._db.classes = {'issue': MockNull(lookup=lookup)} |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
156 prop = MockNull(classname='issue') |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
157 self.assertEqual(lookupIds(db._db, prop, ['1','2']), ['1','2']) |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
158 self.assertEqual(lookupIds(db._db, prop, ['ok','2']), ['1','2']) |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
159 self.assertEqual(lookupIds(db._db, prop, ['ok', 'fail'], 1), |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
160 ['1', 'fail']) |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
161 self.assertEqual(lookupIds(db._db, prop, ['ok', 'fail']), ['1']) |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
162 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
163 def test_lookupKeys(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
164 db = HTMLDatabase(self.client) |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
165 def get(entry, key): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
166 return {'1': 'green', '2': 'eggs'}.get(entry, entry) |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
167 shrubbery = MockNull(get=get) |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
168 db._db.classes = {'shrubbery': shrubbery} |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
169 self.assertEqual(lookupKeys(shrubbery, 'spam', ['1','2']), |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
170 ['green', 'eggs']) |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
171 self.assertEqual(lookupKeys(shrubbery, 'spam', ['ok','2']), ['ok', |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
172 'eggs']) |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
173 |
|
3972
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
174 class HTMLClassTestCase(TemplatingTestCase) : |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
175 |
|
4040
b6a2251394dd
Make cgi.templating more fault-tolerant towards invalid requests.
Stefan Seefeld <stefan@seefeld.name>
parents:
4011
diff
changeset
|
176 def test_link(self): |
|
b6a2251394dd
Make cgi.templating more fault-tolerant towards invalid requests.
Stefan Seefeld <stefan@seefeld.name>
parents:
4011
diff
changeset
|
177 """Make sure lookup of a Link property works even in the |
|
b6a2251394dd
Make cgi.templating more fault-tolerant towards invalid requests.
Stefan Seefeld <stefan@seefeld.name>
parents:
4011
diff
changeset
|
178 presence of multiple values in the form.""" |
|
b6a2251394dd
Make cgi.templating more fault-tolerant towards invalid requests.
Stefan Seefeld <stefan@seefeld.name>
parents:
4011
diff
changeset
|
179 def lookup(key) : |
|
b6a2251394dd
Make cgi.templating more fault-tolerant towards invalid requests.
Stefan Seefeld <stefan@seefeld.name>
parents:
4011
diff
changeset
|
180 self.assertEqual(key, key.strip()) |
|
b6a2251394dd
Make cgi.templating more fault-tolerant towards invalid requests.
Stefan Seefeld <stefan@seefeld.name>
parents:
4011
diff
changeset
|
181 return "Status%s"%key |
|
6404
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
182 self.form.list.append(MiniFieldStorage("issue@status", "1")) |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
183 self.form.list.append(MiniFieldStorage("issue@status", "2")) |
|
4040
b6a2251394dd
Make cgi.templating more fault-tolerant towards invalid requests.
Stefan Seefeld <stefan@seefeld.name>
parents:
4011
diff
changeset
|
184 status = hyperdb.Link("status") |
|
b6a2251394dd
Make cgi.templating more fault-tolerant towards invalid requests.
Stefan Seefeld <stefan@seefeld.name>
parents:
4011
diff
changeset
|
185 self.client.db.classes = dict \ |
|
b6a2251394dd
Make cgi.templating more fault-tolerant towards invalid requests.
Stefan Seefeld <stefan@seefeld.name>
parents:
4011
diff
changeset
|
186 ( issue = MockNull(getprops = lambda : dict(status = status)) |
|
b6a2251394dd
Make cgi.templating more fault-tolerant towards invalid requests.
Stefan Seefeld <stefan@seefeld.name>
parents:
4011
diff
changeset
|
187 , status = MockNull(get = lambda id, name : id, lookup = lookup) |
|
b6a2251394dd
Make cgi.templating more fault-tolerant towards invalid requests.
Stefan Seefeld <stefan@seefeld.name>
parents:
4011
diff
changeset
|
188 ) |
|
6404
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
189 self.client.form = self.form |
|
4040
b6a2251394dd
Make cgi.templating more fault-tolerant towards invalid requests.
Stefan Seefeld <stefan@seefeld.name>
parents:
4011
diff
changeset
|
190 cls = HTMLClass(self.client, "issue") |
|
6404
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
191 |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
192 s = cls["status"] |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
193 self.assertEqual(s._value, '1') |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
194 |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
195 def test_link_default(self): |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
196 """Make sure default value for link is returned |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
197 if new item and no value in form.""" |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
198 def lookup(key) : |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
199 self.assertEqual(key, key.strip()) |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
200 return "Status%s"%key |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
201 status = hyperdb.Link("status") |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
202 # set default_value |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
203 status.__dict__['_Type__default_value'] = "4" |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
204 |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
205 self.client.db.classes = dict \ |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
206 ( issue = MockNull(getprops = lambda : dict(status = status)) |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
207 , status = MockNull(get = lambda id, name : id, lookup = lookup, get_default_value = lambda: 4) |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
208 ) |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
209 self.client.form = self.form |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
210 |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
211 cls = HTMLClass(self.client, "issue") |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
212 s = cls["status"] |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
213 self.assertEqual(s._value, '4') |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
214 |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
215 def test_link_with_value_and_default(self): |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
216 """Make sure default value is not used if there |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
217 is a value in the form.""" |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
218 def lookup(key) : |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
219 self.assertEqual(key, key.strip()) |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
220 return "Status%s"%key |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
221 self.form.list.append(MiniFieldStorage("issue@status", "2")) |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
222 self.form.list.append(MiniFieldStorage("issue@status", "1")) |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
223 status = hyperdb.Link("status") |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
224 # set default_value |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
225 status.__dict__['_Type__default_value'] = "4" |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
226 |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
227 self.client.db.classes = dict \ |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
228 ( issue = MockNull(getprops = lambda : dict(status = status)) |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
229 , status = MockNull(get = lambda id, name : id, lookup = lookup, get_default_value = lambda: 4) |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
230 ) |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
231 self.client.form = self.form |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
232 |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
233 cls = HTMLClass(self.client, "issue") |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
234 s = cls["status"] |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
235 self.assertEqual(s._value, '2') |
|
4040
b6a2251394dd
Make cgi.templating more fault-tolerant towards invalid requests.
Stefan Seefeld <stefan@seefeld.name>
parents:
4011
diff
changeset
|
236 |
|
3972
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
237 def test_multilink(self): |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
238 """`lookup` of an item will fail if leading or trailing whitespace |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
239 has not been stripped. |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
240 """ |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
241 def lookup(key) : |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
242 self.assertEqual(key, key.strip()) |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
243 return "User%s"%key |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
244 self.form.list.append(MiniFieldStorage("nosy", "1, 2")) |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
245 nosy = hyperdb.Multilink("user") |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
246 self.client.db.classes = dict \ |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
247 ( issue = MockNull(getprops = lambda : dict(nosy = nosy)) |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
248 , user = MockNull(get = lambda id, name : id, lookup = lookup) |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
249 ) |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
250 cls = HTMLClass(self.client, "issue") |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
251 cls["nosy"] |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
252 |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
253 def test_anti_csrf_nonce(self): |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
254 '''call the csrf creation function and do basic length test |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
255 |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
256 Store the data in a mock db with the same api as the otk |
| 6826 | 257 db. Make sure nonce is 54 chars long. Lookup the nonce in |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
258 db and retrieve data. Verify that the nonce lifetime is |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
259 correct (within 1 second of 1 week - lifetime), the uid is |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
260 correct (1), the dummy sid is correct. |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
261 |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
262 Consider three cases: |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
263 * create nonce via module function setting lifetime |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
264 * create nonce via TemplatingUtils method setting lifetime |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
265 * create nonce via module function with default lifetime |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
266 |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
267 ''' |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
268 |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
269 # the value below is number of seconds in a week. |
|
5211
f4b6a2a3e605
Fix expiration dates and expire csrf tokens properly
John Rouillard <rouilj@ieee.org>
parents:
5201
diff
changeset
|
270 week_seconds = 604800 |
|
f4b6a2a3e605
Fix expiration dates and expire csrf tokens properly
John Rouillard <rouilj@ieee.org>
parents:
5201
diff
changeset
|
271 |
|
f4b6a2a3e605
Fix expiration dates and expire csrf tokens properly
John Rouillard <rouilj@ieee.org>
parents:
5201
diff
changeset
|
272 otks=self.client.db.getOTKManager() |
|
f4b6a2a3e605
Fix expiration dates and expire csrf tokens properly
John Rouillard <rouilj@ieee.org>
parents:
5201
diff
changeset
|
273 |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
274 for test in [ 'module', 'template', 'default_time' ]: |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5226
diff
changeset
|
275 print("Testing:", test) |
|
5211
f4b6a2a3e605
Fix expiration dates and expire csrf tokens properly
John Rouillard <rouilj@ieee.org>
parents:
5201
diff
changeset
|
276 |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
277 if test == 'module': |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
278 # test the module function |
|
5488
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5485
diff
changeset
|
279 nonce1 = anti_csrf_nonce(self.client, lifetime=1) |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
280 # lifetime * 60 is the offset |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
281 greater_than = week_seconds - 1 * 60 |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
282 elif test == 'template': |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
283 # call the function through the TemplatingUtils class |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
284 cls = TemplatingUtils(self.client) |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
285 nonce1 = cls.anti_csrf_nonce(lifetime=5) |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
286 greater_than = week_seconds - 5 * 60 |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
287 elif test == 'default_time': |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
288 # use the module function but with no lifetime |
|
5488
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5485
diff
changeset
|
289 nonce1 = anti_csrf_nonce(self.client) |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
290 # see above for web nonce lifetime. |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
291 greater_than = week_seconds - 10 * 60 |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
292 |
| 6826 | 293 self.assertEqual(len(nonce1), 54) |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
294 |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
295 uid = otks.get(nonce1, 'uid', default=None) |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
296 sid = otks.get(nonce1, 'sid', default=None) |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
297 timestamp = otks.get(nonce1, '__timestamp', default=None) |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
298 |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
299 self.assertEqual(uid, 10) |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
300 self.assertEqual(sid, self.client.session_api._sid) |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
301 |
|
5211
f4b6a2a3e605
Fix expiration dates and expire csrf tokens properly
John Rouillard <rouilj@ieee.org>
parents:
5201
diff
changeset
|
302 now = time.time() |
|
f4b6a2a3e605
Fix expiration dates and expire csrf tokens properly
John Rouillard <rouilj@ieee.org>
parents:
5201
diff
changeset
|
303 |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5226
diff
changeset
|
304 print("now, timestamp, greater, difference", |
|
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5226
diff
changeset
|
305 now, timestamp, greater_than, now - timestamp) |
|
5211
f4b6a2a3e605
Fix expiration dates and expire csrf tokens properly
John Rouillard <rouilj@ieee.org>
parents:
5201
diff
changeset
|
306 |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
307 |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
308 # lower bound of the difference is above. Upper bound |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
309 # of difference is run time between time.time() in |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
310 # the call to anti_csrf_nonce and the time.time() call |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
311 # that assigns ts above. I declare that difference |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
312 # to be less than 1 second for this to pass. |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
313 self.assertEqual(True, |
|
5211
f4b6a2a3e605
Fix expiration dates and expire csrf tokens properly
John Rouillard <rouilj@ieee.org>
parents:
5201
diff
changeset
|
314 greater_than <= now - timestamp < (greater_than + 1) ) |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
315 |
|
6832
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
316 def test_number__int__(self): |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
317 # test with number |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
318 p = NumberHTMLProperty(self.client, 'testnum', '1', None, 'test', |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
319 2345678.2345678) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
320 self.assertEqual(p.__int__(), 2345678) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
321 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
322 property = MockNull(get_default_value = lambda: None) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
323 p = NumberHTMLProperty(self.client, 'testnum', '1', property, |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
324 'test', None) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
325 with self.assertRaises(TypeError) as e: |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
326 p.__int__() |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
327 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
328 def test_number__float__(self): |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
329 # test with number |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
330 p = NumberHTMLProperty(self.client, 'testnum', '1', None, 'test', |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
331 2345678.2345678) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
332 self.assertEqual(p.__float__(), 2345678.2345678) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
333 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
334 property = MockNull(get_default_value = lambda: None) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
335 p = NumberHTMLProperty(self.client, 'testnum', '1', property, |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
336 'test', None) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
337 with self.assertRaises(TypeError) as e: |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
338 p.__float__() |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
339 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
340 def test_number_field(self): |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
341 import sys |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
342 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
343 _py3 = sys.version_info[0] > 2 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
344 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
345 # python2 truncates while python3 rounds. Sigh. |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
346 if _py3: |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
347 expected_val = 2345678.2345678 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
348 else: |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
349 expected_val = 2345678.23457 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
350 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
351 # test with number |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
352 p = NumberHTMLProperty(self.client, 'testnum', '1', None, 'test', |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
353 2345678.2345678) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
354 self.assertEqual(p.field(), |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
355 ('<input name="testnum1@test" size="30" type="text" ' |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
356 'value="%s">')%expected_val) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
357 self.assertEqual(p.field(size=10), |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
358 ('<input name="testnum1@test" size="10" type="text" ' |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
359 'value="%s">')%expected_val) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
360 self.assertEqual(p.field(size=10, dataprop="foo", dataprop2=5), |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
361 ('<input dataprop="foo" dataprop2="5" ' |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
362 'name="testnum1@test" size="10" type="text" ' |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
363 'value="%s">'%expected_val)) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
364 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
365 self.assertEqual(p.field(size=10, klass="class1", |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
366 **{ "class": "class2 class3", |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
367 "data-prop": "foo", |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
368 "data-prop2": 5}), |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
369 ('<input class="class2 class3" data-prop="foo" ' |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
370 'data-prop2="5" klass="class1" ' |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
371 'name="testnum1@test" size="10" type="text" ' |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
372 'value="%s">')%expected_val) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
373 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
374 # get plain representation if user can't edit |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
375 p.is_edit_ok = lambda: False |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
376 self.assertEqual(p.field(), p.plain()) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
377 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
378 # test with string which is wrong type |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
379 p = NumberHTMLProperty(self.client, 'testnum', '1', None, 'test', |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
380 "2345678.2345678") |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
381 self.assertEqual(p.field(), |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
382 ('<input name="testnum1@test" size="30" type="text" ' |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
383 'value="2345678.2345678">')) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
384 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
385 # test with None value, pretend property.__default_value = Null which |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
386 # is the default. It would be returned by get_default_value |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
387 # which I mock. |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
388 property = MockNull(get_default_value = lambda: None) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
389 p = NumberHTMLProperty(self.client, 'testnum', '1', property, |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
390 'test', None) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
391 self.assertEqual(p.field(), |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
392 ('<input name="testnum1@test" size="30" type="text" ' |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
393 'value="">')) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
394 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
395 def test_number_plain(self): |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
396 import sys |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
397 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
398 _py3 = sys.version_info[0] > 2 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
399 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
400 # python2 truncates while python3 rounds. Sigh. |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
401 if _py3: |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
402 expected_val = 2345678.2345678 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
403 else: |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
404 expected_val = 2345678.23457 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
405 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
406 p = NumberHTMLProperty(self.client, 'testnum', '1', None, 'test', |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
407 2345678.2345678) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
408 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
409 self.assertEqual(p.plain(), "%s"%expected_val) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
410 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
411 def test_number_pretty(self): |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
412 # test with number |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
413 p = NumberHTMLProperty(self.client, 'testnum', '1', None, 'test', |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
414 2345678.2345678) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
415 self.assertEqual(p.pretty(), "2345678.235") |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
416 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
417 # test with string which is wrong type |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
418 p = NumberHTMLProperty(self.client, 'testnum', '1', None, 'test', |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
419 "2345678.2345678") |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
420 self.assertEqual(p.pretty(), "2345678.2345678") |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
421 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
422 # test with boolean |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
423 p = NumberHTMLProperty(self.client, 'testnum', '1', None, 'test', |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
424 True) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
425 self.assertEqual(p.pretty(), "1.000") |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
426 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
427 # test with None value, pretend property.__default_value = Null which |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
428 # is the default. It would be returned by get_default_value |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
429 # which I mock. |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
430 property = MockNull(get_default_value = lambda: None) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
431 p = NumberHTMLProperty(self.client, 'testnum', '1', property, |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
432 'test', None) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
433 self.assertEqual(p.pretty(), '') |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
434 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
435 with self.assertRaises(ValueError) as e: |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
436 p.pretty('%0.3') |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
437 |
|
5156
882fa4d9bead
issue2550795: @dispname query args in page.html search links
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
438 def test_string_url_quote(self): |
|
882fa4d9bead
issue2550795: @dispname query args in page.html search links
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
439 ''' test that urlquote quotes the string ''' |
|
882fa4d9bead
issue2550795: @dispname query args in page.html search links
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
440 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', 'test string< foo@bar') |
|
882fa4d9bead
issue2550795: @dispname query args in page.html search links
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
441 self.assertEqual(p.url_quote(), 'test%20string%3C%20foo%40bar') |
|
882fa4d9bead
issue2550795: @dispname query args in page.html search links
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
442 |
|
5157
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
443 def test_string_email(self): |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
444 ''' test that email obscures the email ''' |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
445 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', 'rouilj@foo.example.com') |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
446 self.assertEqual(p.email(), 'rouilj at foo example ...') |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
447 |
|
6339
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
448 def test_string_wrapped(self): |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
449 test_string = ('A long string that needs to be wrapped to' |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
450 ' 80 characters and no more. Put in a link issue1.' |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
451 ' Put in <html> to be escaped. Put in a' |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
452 ' https://example.com/link as well. Let us see if' |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
453 ' it will wrap properly.' ) |
|
7864
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
454 |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
455 test_result_wrap = {} |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
456 test_result_wrap[80] = ('A long string that needs to be wrapped to 80' |
|
6339
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
457 ' characters and no more. Put in a\n' |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
458 'link <a href="issue1">issue1</a>. Put in' |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
459 ' <html> to be escaped. Put in a <a' |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
460 ' href="https://example.com/link"' |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
461 ' rel="nofollow noopener">' |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
462 'https://example.com/link</a> as\n' |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
463 'well. Let us see if it will wrap properly.') |
|
7864
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
464 test_result_wrap[20] = ( |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
465 'A long string that\n' |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
466 'needs to be wrapped\n' |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
467 'to 80 characters and\n' |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
468 'no more. Put in a\nlink <a href="issue1">issue1</a>. Put in\n' |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
469 '<html> to be\n' |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
470 'escaped. Put in a\n' |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
471 '<a href="https://example.com/link" rel="nofollow ' |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
472 'noopener">https://example.com/link</a>\n' |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
473 'as well. Let us see\n' |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
474 'if it will wrap\n' |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
475 'properly.') |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
476 test_result_wrap[100] = ( |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
477 'A long string that needs to be wrapped to 80 characters and no more. Put in a link <a href="issue1">issue1</a>. Put in\n' |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
478 '<html> to be escaped. Put in a <a href="https://example.com/link" rel="nofollow noopener">https://example.com/link</a> as well. Let us see if it will wrap\n' |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
479 'properly.') |
|
6339
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
480 |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
481 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
482 test_string) |
|
7864
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
483 |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
484 for i in [80, 20, 100]: |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
485 wrapped = p.wrapped(columns=i) |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
486 print(wrapped) |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
487 self.assertEqual(wrapped, test_result_wrap[i]) |
|
6339
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
488 |
|
5157
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
489 def test_string_plain_or_hyperlinked(self): |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
490 ''' test that email obscures the email ''' |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
491 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', 'A string <b> with rouilj@example.com embedded < html</b>') |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
492 self.assertEqual(p.plain(), 'A string <b> with rouilj@example.com embedded < html</b>') |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
493 self.assertEqual(p.plain(escape=1), 'A string <b> with rouilj@example.com embedded &lt; html</b>') |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
494 self.assertEqual(p.plain(hyperlink=1), 'A string <b> with <a href="mailto:rouilj@example.com">rouilj@example.com</a> embedded &lt; html</b>') |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
495 self.assertEqual(p.plain(escape=1, hyperlink=1), 'A string <b> with <a href="mailto:rouilj@example.com">rouilj@example.com</a> embedded &lt; html</b>') |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
496 |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
497 self.assertEqual(p.hyperlinked(), 'A string <b> with <a href="mailto:rouilj@example.com">rouilj@example.com</a> embedded &lt; html</b>') |
|
6338
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
498 # check designators |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
499 for designator in [ "issue1", "issue 1" ]: |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
500 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', designator) |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
501 self.assertEqual(p.hyperlinked(), |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
502 '<a href="issue1">%s</a>'%designator) |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
503 |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
504 # issue 100 > 10 which is a magic number for the mocked hasnode |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
505 # If id number is greater than 10 hasnode reports it does not have |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
506 # the node. |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
507 for designator in ['issue100', 'issue 100']: |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
508 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
509 designator) |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
510 self.assertEqual(p.hyperlinked(), designator) |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
511 |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
512 # zoom class does not exist |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
513 for designator in ['zoom1', 'zoom100', 'zoom 1']: |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
514 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
515 designator) |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
516 self.assertEqual(p.hyperlinked(), designator) |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
517 |
|
5157
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
518 |
|
6096
c914b3d8362f
If rst missing skip; initial attempt to test structuredtext.
John Rouillard <rouilj@ieee.org>
parents:
6095
diff
changeset
|
519 @skip_rst |
|
6095
3ada6a3f48e1
fixed ReStructuredText encoding with Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6059
diff
changeset
|
520 def test_string_rst(self): |
|
3ada6a3f48e1
fixed ReStructuredText encoding with Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6059
diff
changeset
|
521 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'A string with cmeerw@example.com *embedded* \u00df')) |
|
6098
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
522 |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
523 # test case to make sure include directive is disabled |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
524 q = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'\n\n.. include:: XyZrMt.html\n\n<badtag>\n\n')) |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
525 q_result=u'''<div class="document"> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
526 <div class="system-message"> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
527 <p class="system-message-title">System Message: WARNING/2 (<tt class="docutils"><string></tt>, line 3)</p> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
528 <p>"include" directive disabled.</p> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
529 <pre class="literal-block"> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
530 .. include:: XyZrMt.html |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
531 |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
532 </pre> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
533 </div> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
534 <p><badtag></p> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
535 </div> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
536 ''' |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
537 |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
538 # test case to make sure raw directive is disabled |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
539 r = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'\n\n.. raw:: html\n\n <badtag>\n\n')) |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
540 r_result='''<div class="document"> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
541 <div class="system-message"> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
542 <p class="system-message-title">System Message: WARNING/2 (<tt class="docutils"><string></tt>, line 3)</p> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
543 <p>"raw" directive disabled.</p> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
544 <pre class="literal-block"> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
545 .. raw:: html |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
546 |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
547 <badtag> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
548 |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
549 </pre> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
550 </div> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
551 </div> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
552 ''' |
|
6284
3f7538316724
issue2551099 - disable processing of data url's in markdown.
John Rouillard <rouilj@ieee.org>
parents:
6282
diff
changeset
|
553 # test case to make sure javascript and data url's aren't turned |
|
3f7538316724
issue2551099 - disable processing of data url's in markdown.
John Rouillard <rouilj@ieee.org>
parents:
6282
diff
changeset
|
554 # into links |
|
3f7538316724
issue2551099 - disable processing of data url's in markdown.
John Rouillard <rouilj@ieee.org>
parents:
6282
diff
changeset
|
555 s = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'<badtag>\njavascript:badcode data:text/plain;base64,SGVsbG8sIFdvcmxkIQ==')) |
|
3f7538316724
issue2551099 - disable processing of data url's in markdown.
John Rouillard <rouilj@ieee.org>
parents:
6282
diff
changeset
|
556 s_result = '<div class="document">\n<p><badtag>\njavascript:badcode data:text/plain;base64,SGVsbG8sIFdvcmxkIQ==</p>\n</div>\n' |
|
6103
af16c135fb98
url's with javascript scheme should not be links in reST
John Rouillard <rouilj@ieee.org>
parents:
6099
diff
changeset
|
557 |
|
6339
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
558 # test url recognition |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
559 t = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'link is https://example.com/link for testing.')) |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
560 t_result = '<div class="document">\n<p>link is <a class="reference external" href="https://example.com/link">https://example.com/link</a> for testing.</p>\n</div>\n' |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
561 |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
562 # test text that doesn't need to be processed |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
563 u = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'Just a plain old string here. Nothig to process.')) |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
564 u_result = '<div class="document">\n<p>Just a plain old string here. Nothig to process.</p>\n</div>\n' |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
565 |
|
6099
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
566 self.assertEqual(p.rst(), u2s(u'<div class="document">\n<p>A string with <a class="reference external" href="mailto:cmeerw@example.com">cmeerw@example.com</a> <em>embedded</em> \u00df</p>\n</div>\n')) |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
567 self.assertEqual(q.rst(), u2s(q_result)) |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
568 self.assertEqual(r.rst(), u2s(r_result)) |
|
6103
af16c135fb98
url's with javascript scheme should not be links in reST
John Rouillard <rouilj@ieee.org>
parents:
6099
diff
changeset
|
569 self.assertEqual(s.rst(), u2s(s_result)) |
|
6339
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
570 self.assertEqual(t.rst(), u2s(t_result)) |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
571 self.assertEqual(u.rst(), u2s(u_result)) |
|
6095
3ada6a3f48e1
fixed ReStructuredText encoding with Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6059
diff
changeset
|
572 |
|
6096
c914b3d8362f
If rst missing skip; initial attempt to test structuredtext.
John Rouillard <rouilj@ieee.org>
parents:
6095
diff
changeset
|
573 @skip_stext |
|
c914b3d8362f
If rst missing skip; initial attempt to test structuredtext.
John Rouillard <rouilj@ieee.org>
parents:
6095
diff
changeset
|
574 def test_string_stext(self): |
|
c914b3d8362f
If rst missing skip; initial attempt to test structuredtext.
John Rouillard <rouilj@ieee.org>
parents:
6095
diff
changeset
|
575 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'A string with cmeerw@example.com *embedded* \u00df')) |
|
6099
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
576 self.assertEqual(p.stext(), u2s(u'<p>A string with <a href="mailto:cmeerw@example.com">cmeerw@example.com</a> <em>embedded</em> \u00df</p>\n')) |
|
6096
c914b3d8362f
If rst missing skip; initial attempt to test structuredtext.
John Rouillard <rouilj@ieee.org>
parents:
6095
diff
changeset
|
577 |
|
5157
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
578 def test_string_field(self): |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
579 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', 'A string <b> with rouilj@example.com embedded < html</b>') |
|
5485
b0359a7c5b6d
create input elements with attributes in a defined (sorted) order
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5414
diff
changeset
|
580 self.assertEqual(p.field(), '<input name="test1@test" size="30" type="text" value="A string <b> with rouilj@example.com embedded &lt; html</b>">') |
|
5157
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
581 |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
582 def test_string_multiline(self): |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
583 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', 'A string <b> with rouilj@example.com embedded < html</b>') |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
584 self.assertEqual(p.multiline(), '<textarea name="test1@test" id="test1@test" rows="5" cols="40">A string <b> with rouilj@example.com embedded &lt; html</b></textarea>') |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
585 self.assertEqual(p.multiline(rows=300, cols=100, **{'class':'css_class'}), '<textarea class="css_class" name="test1@test" id="test1@test" rows="300" cols="100">A string <b> with rouilj@example.com embedded &lt; html</b></textarea>') |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
586 |
|
3991
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
587 def test_url_match(self): |
|
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
588 '''Test the URL regular expression in StringHTMLProperty. |
|
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
589 ''' |
|
4009
e335ce40d6c8
Make URL matching code less matchy
Richard Jones <richard@users.sourceforge.net>
parents:
3991
diff
changeset
|
590 def t(s, nothing=False, **groups): |
|
3991
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
591 m = StringHTMLProperty.hyper_re.search(s) |
|
4009
e335ce40d6c8
Make URL matching code less matchy
Richard Jones <richard@users.sourceforge.net>
parents:
3991
diff
changeset
|
592 if nothing: |
|
4010
797eacd945af
add tests for and fix alex's examples
Richard Jones <richard@users.sourceforge.net>
parents:
4009
diff
changeset
|
593 if m: |
|
5793
6aad7b194e63
replace assertEquals wth assertEqual.
John Rouillard <rouilj@ieee.org>
parents:
5684
diff
changeset
|
594 self.assertEqual(m, None, '%r matched (%r)'%(s, m.groupdict())) |
|
4009
e335ce40d6c8
Make URL matching code less matchy
Richard Jones <richard@users.sourceforge.net>
parents:
3991
diff
changeset
|
595 return |
|
e335ce40d6c8
Make URL matching code less matchy
Richard Jones <richard@users.sourceforge.net>
parents:
3991
diff
changeset
|
596 else: |
|
5795
10747e4e4ec4
replace assertNotEquals with assertNotEqual
John Rouillard <rouilj@ieee.org>
parents:
5793
diff
changeset
|
597 self.assertNotEqual(m, None, '%r did not match'%s) |
|
3991
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
598 d = m.groupdict() |
|
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
599 for g in groups: |
|
5793
6aad7b194e63
replace assertEquals wth assertEqual.
John Rouillard <rouilj@ieee.org>
parents:
5684
diff
changeset
|
600 self.assertEqual(d[g], groups[g], '%s %r != %r in %r'%(g, d[g], |
|
3991
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
601 groups[g], s)) |
|
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
602 |
|
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
603 #t('123.321.123.321', 'url') |
|
6551
f1f8d75edd97
Add variations on test for _hyper_url functons
John Rouillard <rouilj@ieee.org>
parents:
6404
diff
changeset
|
604 t('https://example.com/demo/issue8#24MRV9BZYx:V:1B~sssssssssssssss~4~4', url="https://example.com/demo/issue8#24MRV9BZYx:V:1B~sssssssssssssss~4~4") |
|
4010
797eacd945af
add tests for and fix alex's examples
Richard Jones <richard@users.sourceforge.net>
parents:
4009
diff
changeset
|
605 t('http://localhost/', url='http://localhost/') |
|
3991
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
606 t('http://roundup.net/', url='http://roundup.net/') |
|
4010
797eacd945af
add tests for and fix alex's examples
Richard Jones <richard@users.sourceforge.net>
parents:
4009
diff
changeset
|
607 t('http://richard@localhost/', url='http://richard@localhost/') |
|
797eacd945af
add tests for and fix alex's examples
Richard Jones <richard@users.sourceforge.net>
parents:
4009
diff
changeset
|
608 t('http://richard:sekrit@localhost/', |
|
797eacd945af
add tests for and fix alex's examples
Richard Jones <richard@users.sourceforge.net>
parents:
4009
diff
changeset
|
609 url='http://richard:sekrit@localhost/') |
|
3991
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
610 t('<HTTP://roundup.net/>', url='HTTP://roundup.net/') |
|
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
611 t('www.a.ex', url='www.a.ex') |
|
4009
e335ce40d6c8
Make URL matching code less matchy
Richard Jones <richard@users.sourceforge.net>
parents:
3991
diff
changeset
|
612 t('foo.a.ex', nothing=True) |
|
e335ce40d6c8
Make URL matching code less matchy
Richard Jones <richard@users.sourceforge.net>
parents:
3991
diff
changeset
|
613 t('StDevValidTimeSeries.GetObservation', nothing=True) |
|
3991
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
614 t('http://a.ex', url='http://a.ex') |
|
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
615 t('http://a.ex/?foo&bar=baz\\.@!$%()qwerty', |
|
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
616 url='http://a.ex/?foo&bar=baz\\.@!$%()qwerty') |
|
4009
e335ce40d6c8
Make URL matching code less matchy
Richard Jones <richard@users.sourceforge.net>
parents:
3991
diff
changeset
|
617 t('www.foo.net', url='www.foo.net') |
|
3991
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
618 t('richard@com.example', email='richard@com.example') |
|
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
619 t('r@a.com', email='r@a.com') |
|
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
620 t('i1', **{'class':'i', 'id':'1'}) |
|
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
621 t('item123', **{'class':'item', 'id':'123'}) |
|
6551
f1f8d75edd97
Add variations on test for _hyper_url functons
John Rouillard <rouilj@ieee.org>
parents:
6404
diff
changeset
|
622 t('item 123', **{'class':'item', 'id':'123'}) |
|
4010
797eacd945af
add tests for and fix alex's examples
Richard Jones <richard@users.sourceforge.net>
parents:
4009
diff
changeset
|
623 t('www.user:pass@host.net', email='pass@host.net') |
|
797eacd945af
add tests for and fix alex's examples
Richard Jones <richard@users.sourceforge.net>
parents:
4009
diff
changeset
|
624 t('user:pass@www.host.net', url='user:pass@www.host.net') |
|
4011
e77bcbdc9b32
add tests for numbers too :)
Richard Jones <richard@users.sourceforge.net>
parents:
4010
diff
changeset
|
625 t('123.35', nothing=True) |
|
e77bcbdc9b32
add tests for numbers too :)
Richard Jones <richard@users.sourceforge.net>
parents:
4010
diff
changeset
|
626 t('-.3535', nothing=True) |
|
3991
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
627 |
|
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
628 def test_url_replace(self): |
|
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
629 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', '') |
|
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
630 def t(s): return p.hyper_re.sub(p._hyper_repl, s) |
|
4413
66603a9051f9
improve handling of '>' when URLs are converted to links
Richard Jones <richard@users.sourceforge.net>
parents:
4391
diff
changeset
|
631 ae = self.assertEqual |
|
6564
21c7c2041a4b
issue2551181 - allow issueXXX#fragment to generate a link with fragment
John Rouillard <rouilj@ieee.org>
parents:
6551
diff
changeset
|
632 ae(t('issue5#msg10'), '<a href="issue5#msg10">issue5#msg10</a>') |
|
21c7c2041a4b
issue2551181 - allow issueXXX#fragment to generate a link with fragment
John Rouillard <rouilj@ieee.org>
parents:
6551
diff
changeset
|
633 ae(t('issue5'), '<a href="issue5">issue5</a>') |
|
21c7c2041a4b
issue2551181 - allow issueXXX#fragment to generate a link with fragment
John Rouillard <rouilj@ieee.org>
parents:
6551
diff
changeset
|
634 ae(t('issue2255'), 'issue2255') |
|
6551
f1f8d75edd97
Add variations on test for _hyper_url functons
John Rouillard <rouilj@ieee.org>
parents:
6404
diff
changeset
|
635 ae(t('foo https://example.com/demo/issue8#24MRV9BZYx:V:1B~sssssssssssssss~4~4 bar'), |
|
f1f8d75edd97
Add variations on test for _hyper_url functons
John Rouillard <rouilj@ieee.org>
parents:
6404
diff
changeset
|
636 'foo <a href="https://example.com/demo/issue8#24MRV9BZYx:V:1B~sssssssssssssss~4~4" rel="nofollow noopener">' |
|
f1f8d75edd97
Add variations on test for _hyper_url functons
John Rouillard <rouilj@ieee.org>
parents:
6404
diff
changeset
|
637 'https://example.com/demo/issue8#24MRV9BZYx:V:1B~sssssssssssssss~4~4</a> bar') |
|
4288
ce684080e968
issue2550549: Some bugs issue classifiers were causing database lookup errors
Richard Jones <richard@users.sourceforge.net>
parents:
4040
diff
changeset
|
638 ae(t('item123123123123'), 'item123123123123') |
|
4391
d5239335fae3
make URL detection a little smarter about brackets per issue2550657
Richard Jones <richard@users.sourceforge.net>
parents:
4288
diff
changeset
|
639 ae(t('http://roundup.net/'), |
|
5684
97e2125e064c
When we generate links from URL's in messages, we add rel="nofollow"
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
640 '<a href="http://roundup.net/" rel="nofollow noopener">http://roundup.net/</a>') |
|
4391
d5239335fae3
make URL detection a little smarter about brackets per issue2550657
Richard Jones <richard@users.sourceforge.net>
parents:
4288
diff
changeset
|
641 ae(t('<HTTP://roundup.net/>'), |
|
5684
97e2125e064c
When we generate links from URL's in messages, we add rel="nofollow"
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
642 '<<a href="HTTP://roundup.net/" rel="nofollow noopener">HTTP://roundup.net/</a>>') |
|
4414
399569ff4aed
- fix small indentation glitch
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4413
diff
changeset
|
643 ae(t('<http://roundup.net/>.'), |
|
5684
97e2125e064c
When we generate links from URL's in messages, we add rel="nofollow"
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
644 '<<a href="http://roundup.net/" rel="nofollow noopener">http://roundup.net/</a>>.') |
|
4391
d5239335fae3
make URL detection a little smarter about brackets per issue2550657
Richard Jones <richard@users.sourceforge.net>
parents:
4288
diff
changeset
|
645 ae(t('<www.roundup.net>'), |
|
5684
97e2125e064c
When we generate links from URL's in messages, we add rel="nofollow"
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
646 '<<a href="http://www.roundup.net" rel="nofollow noopener">www.roundup.net</a>>') |
|
4391
d5239335fae3
make URL detection a little smarter about brackets per issue2550657
Richard Jones <richard@users.sourceforge.net>
parents:
4288
diff
changeset
|
647 ae(t('(www.roundup.net)'), |
|
5684
97e2125e064c
When we generate links from URL's in messages, we add rel="nofollow"
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
648 '(<a href="http://www.roundup.net" rel="nofollow noopener">www.roundup.net</a>)') |
|
4391
d5239335fae3
make URL detection a little smarter about brackets per issue2550657
Richard Jones <richard@users.sourceforge.net>
parents:
4288
diff
changeset
|
649 ae(t('foo http://msdn.microsoft.com/en-us/library/ms741540(VS.85).aspx bar'), |
|
5684
97e2125e064c
When we generate links from URL's in messages, we add rel="nofollow"
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
650 'foo <a href="http://msdn.microsoft.com/en-us/library/ms741540(VS.85).aspx" rel="nofollow noopener">' |
|
4391
d5239335fae3
make URL detection a little smarter about brackets per issue2550657
Richard Jones <richard@users.sourceforge.net>
parents:
4288
diff
changeset
|
651 'http://msdn.microsoft.com/en-us/library/ms741540(VS.85).aspx</a> bar') |
|
d5239335fae3
make URL detection a little smarter about brackets per issue2550657
Richard Jones <richard@users.sourceforge.net>
parents:
4288
diff
changeset
|
652 ae(t('(e.g. http://en.wikipedia.org/wiki/Python_(programming_language))'), |
|
5684
97e2125e064c
When we generate links from URL's in messages, we add rel="nofollow"
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
653 '(e.g. <a href="http://en.wikipedia.org/wiki/Python_(programming_language)" rel="nofollow noopener">' |
|
4391
d5239335fae3
make URL detection a little smarter about brackets per issue2550657
Richard Jones <richard@users.sourceforge.net>
parents:
4288
diff
changeset
|
654 'http://en.wikipedia.org/wiki/Python_(programming_language)</a>)') |
|
d5239335fae3
make URL detection a little smarter about brackets per issue2550657
Richard Jones <richard@users.sourceforge.net>
parents:
4288
diff
changeset
|
655 ae(t('(e.g. http://en.wikipedia.org/wiki/Python_(programming_language)).'), |
|
5684
97e2125e064c
When we generate links from URL's in messages, we add rel="nofollow"
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
656 '(e.g. <a href="http://en.wikipedia.org/wiki/Python_(programming_language)" rel="nofollow noopener">' |
|
4391
d5239335fae3
make URL detection a little smarter about brackets per issue2550657
Richard Jones <richard@users.sourceforge.net>
parents:
4288
diff
changeset
|
657 'http://en.wikipedia.org/wiki/Python_(programming_language)</a>).') |
|
4413
66603a9051f9
improve handling of '>' when URLs are converted to links
Richard Jones <richard@users.sourceforge.net>
parents:
4391
diff
changeset
|
658 ae(t('(e.g. http://en.wikipedia.org/wiki/Python_(programming_language))>.'), |
|
5684
97e2125e064c
When we generate links from URL's in messages, we add rel="nofollow"
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
659 '(e.g. <a href="http://en.wikipedia.org/wiki/Python_(programming_language)" rel="nofollow noopener">' |
|
4413
66603a9051f9
improve handling of '>' when URLs are converted to links
Richard Jones <richard@users.sourceforge.net>
parents:
4391
diff
changeset
|
660 'http://en.wikipedia.org/wiki/Python_(programming_language)</a>)>.') |
|
66603a9051f9
improve handling of '>' when URLs are converted to links
Richard Jones <richard@users.sourceforge.net>
parents:
4391
diff
changeset
|
661 ae(t('(e.g. http://en.wikipedia.org/wiki/Python_(programming_language>)).'), |
|
5684
97e2125e064c
When we generate links from URL's in messages, we add rel="nofollow"
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
662 '(e.g. <a href="http://en.wikipedia.org/wiki/Python_(programming_language" rel="nofollow noopener">' |
|
4413
66603a9051f9
improve handling of '>' when URLs are converted to links
Richard Jones <richard@users.sourceforge.net>
parents:
4391
diff
changeset
|
663 'http://en.wikipedia.org/wiki/Python_(programming_language</a>>)).') |
|
4647
11b6601629d7
#2550759: Trailing punctuation is no longer included when URLs are converted to links.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
4414
diff
changeset
|
664 for c in '.,;:!': |
|
11b6601629d7
#2550759: Trailing punctuation is no longer included when URLs are converted to links.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
4414
diff
changeset
|
665 # trailing punctuation is not included |
|
11b6601629d7
#2550759: Trailing punctuation is no longer included when URLs are converted to links.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
4414
diff
changeset
|
666 ae(t('http://roundup.net/%c ' % c), |
|
5684
97e2125e064c
When we generate links from URL's in messages, we add rel="nofollow"
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
667 '<a href="http://roundup.net/" rel="nofollow noopener">http://roundup.net/</a>%c ' % c) |
|
6551
f1f8d75edd97
Add variations on test for _hyper_url functons
John Rouillard <rouilj@ieee.org>
parents:
6404
diff
changeset
|
668 # trailing punctuation is not included without trailing space |
|
f1f8d75edd97
Add variations on test for _hyper_url functons
John Rouillard <rouilj@ieee.org>
parents:
6404
diff
changeset
|
669 ae(t('http://roundup.net/%c' % c), |
|
f1f8d75edd97
Add variations on test for _hyper_url functons
John Rouillard <rouilj@ieee.org>
parents:
6404
diff
changeset
|
670 '<a href="http://roundup.net/" rel="nofollow noopener">http://roundup.net/</a>%c' % c) |
|
4647
11b6601629d7
#2550759: Trailing punctuation is no longer included when URLs are converted to links.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
4414
diff
changeset
|
671 # but it's included if it's part of the URL |
|
11b6601629d7
#2550759: Trailing punctuation is no longer included when URLs are converted to links.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
4414
diff
changeset
|
672 ae(t('http://roundup.net/%c/' % c), |
|
5684
97e2125e064c
When we generate links from URL's in messages, we add rel="nofollow"
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
673 '<a href="http://roundup.net/%c/" rel="nofollow noopener">http://roundup.net/%c/</a>' % (c, c)) |
|
6551
f1f8d75edd97
Add variations on test for _hyper_url functons
John Rouillard <rouilj@ieee.org>
parents:
6404
diff
changeset
|
674 # including with a non / terminated path |
|
f1f8d75edd97
Add variations on test for _hyper_url functons
John Rouillard <rouilj@ieee.org>
parents:
6404
diff
changeset
|
675 ae(t('http://roundup.net/test%c ' % c), |
|
f1f8d75edd97
Add variations on test for _hyper_url functons
John Rouillard <rouilj@ieee.org>
parents:
6404
diff
changeset
|
676 '<a href="http://roundup.net/test" rel="nofollow noopener">http://roundup.net/test</a>%c ' % c) |
|
f1f8d75edd97
Add variations on test for _hyper_url functons
John Rouillard <rouilj@ieee.org>
parents:
6404
diff
changeset
|
677 # but it's included if it's part of the URL path |
|
f1f8d75edd97
Add variations on test for _hyper_url functons
John Rouillard <rouilj@ieee.org>
parents:
6404
diff
changeset
|
678 ae(t('http://roundup.net/%ctest' % c), |
|
f1f8d75edd97
Add variations on test for _hyper_url functons
John Rouillard <rouilj@ieee.org>
parents:
6404
diff
changeset
|
679 '<a href="http://roundup.net/%ctest" rel="nofollow noopener">http://roundup.net/%ctest</a>' % (c, c)) |
|
f1f8d75edd97
Add variations on test for _hyper_url functons
John Rouillard <rouilj@ieee.org>
parents:
6404
diff
changeset
|
680 |
|
3991
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
681 |
|
5989
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
682 def test_input_html4(self): |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
683 # boolean attributes are just the attribute name |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
684 # indicate with attr=None or attr="attr" |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
685 # e.g. disabled |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
686 |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
687 input=input_html4(required=None, size=30) |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
688 self.assertEqual(input, '<input required size="30" type="text">') |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
689 |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
690 input=input_html4(required="required", size=30) |
|
6059
f0da02e0ca81
Different fix for displaying booleans properly in xhtml vs html
John Rouillard <rouilj@ieee.org>
parents:
5989
diff
changeset
|
691 self.assertEqual(input, '<input required="required" size="30" type="text">') |
|
5989
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
692 |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
693 attrs={"required": None, "class": "required", "size": 30} |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
694 input=input_html4(**attrs) |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
695 self.assertEqual(input, '<input class="required" required size="30" type="text">') |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
696 |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
697 attrs={"disabled": "disabled", "class": "required", "size": 30} |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
698 input=input_html4(**attrs) |
|
6059
f0da02e0ca81
Different fix for displaying booleans properly in xhtml vs html
John Rouillard <rouilj@ieee.org>
parents:
5989
diff
changeset
|
699 self.assertEqual(input, '<input class="required" disabled="disabled" size="30" type="text">') |
|
5989
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
700 |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
701 def test_input_xhtml(self): |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
702 # boolean attributes are attribute name="attribute name" |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
703 # indicate with attr=None or attr="attr" |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
704 # e.g. disabled="disabled" |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
705 input=input_xhtml(required=None, size=30) |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
706 self.assertEqual(input, '<input required="required" size="30" type="text"/>') |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
707 |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
708 input=input_xhtml(required="required", size=30) |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
709 self.assertEqual(input, '<input required="required" size="30" type="text"/>') |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
710 |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
711 attrs={"required": None, "class": "required", "size": 30} |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
712 input=input_xhtml(**attrs) |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
713 self.assertEqual(input, '<input class="required" required="required" size="30" type="text"/>') |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
714 |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
715 attrs={"disabled": "disabled", "class": "required", "size": 30} |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
716 input=input_xhtml(**attrs) |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
717 self.assertEqual(input, '<input class="required" disabled="disabled" size="30" type="text"/>') |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
718 |
|
6377
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
719 |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
720 class HTMLPropertyTestClass(unittest.TestCase): |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
721 def setUp(self): |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
722 self.form = FieldStorage() |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
723 self.client = MockNull() |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
724 self.client.db = db = MockDatabase() |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
725 db.security.hasPermission = lambda *args, **kw: True |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
726 self.client.form = self.form |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
727 |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
728 self.client._props = MockNull() |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
729 # add client props for testing anti_csrf_nonce |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
730 self.client.session_api = MockNull(_sid="1234567890") |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
731 self.client.db.getuid = lambda : 10 |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
732 |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
733 class DateHTMLPropertyTestCase(HTMLPropertyTestClass): |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
734 |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
735 def test_DateHTMLWithText(self): |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
736 """Test methods when DateHTMLProperty._value is a string |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
737 rather than a hyperdb.Date() |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
738 """ |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
739 test_datestring = "2021-01-01 11:22:10" |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
740 test_date = hyperdb.Date("2") |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
741 |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
742 self.form.list.append(MiniFieldStorage("test1@test", test_datestring)) |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
743 self.client._props=test_date |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
744 |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
745 self.client.db.classes = dict \ |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
746 ( test = MockNull(getprops = lambda : test_date) |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
747 ) |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
748 |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
749 # client, classname, nodeid, prop, name, value, |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
750 # anonymous=0, offset=None |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
751 d = DateHTMLProperty(self.client, 'test', '1', self.client._props, |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
752 'test', '') |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
753 self.assertIs(type(d._value), str) |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
754 self.assertEqual(d.pretty(), "2021-01-01 11:22:10") |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
755 self.assertEqual(d.plain(), "2021-01-01 11:22:10") |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
756 input = """<input name="test1@test" size="30" type="text" value="2021-01-01 11:22:10"><a class="classhelp" data-calurl="test?@template=calendar&amp;property=test&amp;form=itemSynopsis&date=2021-01-01 11:22:10" data-height="200" data-width="300" href="javascript:help_window('test?@template=calendar&property=test&form=itemSynopsis&date=2021-01-01 11:22:10', 300, 200)">(cal)</a>""" |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
757 self.assertEqual(d.field(), input) |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
758 |
|
6099
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
759 # common markdown test cases |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
760 class MarkdownTests: |
|
6282
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
761 def mangleMarkdown2(self, s): |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
762 ''' markdown2's rel=nofollow support on 'a' tags isn't programmable. |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
763 So we are using it's builtin nofollow support. Mangle the string |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
764 so that it matches the test case. |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
765 |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
766 turn: <a rel="nofollow" href="foo"> into |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
767 <a href="foo" rel="nofollow noopener"> |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
768 |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
769 Also if it is a mailto url, we don't expect rel="nofollow", |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
770 so delete it. |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
771 |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
772 turn: <a rel="nofollow" href="mailto:foo"> into |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
773 <a href="mailto:foo"> |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
774 |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
775 Also when a title is present it is put in a different place |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
776 from markdown, so fix it to normalize. |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
777 |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
778 turn: |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
779 |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
780 <a rel="nofollow" href="http://example.com/" title="a title"> |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
781 into |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
782 <a href="http://example.com/" rel="nofollow noopener" title="a title"> |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
783 ''' |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
784 if type(self) == Markdown2TestCase and s.find('a rel="nofollow"') != -1: |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
785 if s.find('href="mailto:') == -1: |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
786 # not a mailto url |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
787 if 'rel="nofollow"' in s: |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
788 if 'title="' in s: |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
789 s = s.replace(' rel="nofollow" ', ' ').replace(' title=', ' rel="nofollow noopener" title=') |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
790 else: |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
791 s = s.replace(' rel="nofollow" ', ' ').replace('">', '" rel="nofollow noopener">') |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
792 |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
793 return s |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
794 else: |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
795 # a mailto url |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
796 return s.replace(' rel="nofollow" ', ' ') |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
797 return s |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
798 |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
799 |
|
6099
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
800 def test_string_markdown(self): |
|
6104
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
801 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'A string with <br> *embedded* \u00df')) |
|
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
802 self.assertEqual(p.markdown().strip(), u2s(u'<p>A string with <br> <em>embedded</em> \u00df</p>')) |
|
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
803 |
|
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
804 def test_string_markdown_link(self): |
|
7561
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
805 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
806 u2s(u'A link <http://localhost>')) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
807 m = p.markdown().strip() |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
808 m = self.mangleMarkdown2(m) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
809 |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
810 self.assertEqual( u2s(u'<p>A link <a href="http://localhost" rel="nofollow noopener">http://localhost</a></p>'), m) |
|
6104
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
811 |
|
6336
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
812 def test_string_markdown_link_item(self): |
|
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
813 """ The link formats for the different markdown engines changes. |
|
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
814 Order of attributes, value for rel (noopener, nofollow etc) |
|
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
815 is different. So most tests check for a substring that indicates |
|
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
816 success rather than the entire returned string. |
|
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
817 """ |
|
7561
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
818 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
819 u2s(u'An issue1 link')) |
|
6336
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
820 self.assertIn( u2s(u'href="issue1"'), p.markdown().strip()) |
|
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
821 # just verify that plain linking is working |
|
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
822 self.assertIn( u2s(u'href="issue1"'), p.plain(hyperlink=1)) |
|
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
823 |
|
7561
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
824 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
825 u2s(u'An [issue1](issue1) link')) |
|
6336
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
826 self.assertIn( u2s(u'href="issue1"'), p.markdown().strip()) |
|
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
827 # just verify that plain linking is working |
|
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
828 self.assertIn( u2s(u'href="issue1"'), p.plain(hyperlink=1)) |
|
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
829 |
|
7561
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
830 p = StringHTMLProperty( |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
831 self.client, 'test', '1', None, 'test', |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
832 u2s(u'An [issue1](https://example.com/issue1) link')) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
833 self.assertIn( u2s(u'href="https://example.com/issue1"'), |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
834 p.markdown().strip()) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
835 |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
836 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
837 u2s(u'An [issu1](#example) link')) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
838 self.assertIn( u2s(u'href="#example"'), p.markdown().strip()) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
839 |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
840 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
841 u2s(u'An [issu1](/example) link')) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
842 self.assertIn( u2s(u'href="/example"'), p.markdown().strip()) |
|
6336
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
843 |
|
7561
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
844 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
845 u2s(u'An [issu1](./example) link')) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
846 self.assertIn( u2s(u'href="./example"'), p.markdown().strip()) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
847 |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
848 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
849 u2s(u'An [issu1](../example) link')) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
850 self.assertIn( u2s(u'href="../example"'), p.markdown().strip()) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
851 |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
852 p = StringHTMLProperty( |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
853 self.client, 'test', '1', None, 'test', |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
854 u2s(u'A [wuarchive_ftp](ftp://www.wustl.gov/file) link')) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
855 self.assertIn( u2s(u'href="ftp://www.wustl.gov/file"'), |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
856 p.markdown().strip()) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
857 |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
858 p = StringHTMLProperty( |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
859 self.client, 'test', '1', None, 'test', |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
860 u2s(u'An [issue1] (https://example.com/issue1) link')) |
|
6336
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
861 self.assertIn( u2s(u'href="issue1"'), p.markdown().strip()) |
|
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
862 if type(self) == MistuneTestCase: |
|
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
863 # mistune makes the https url into a real link |
|
7561
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
864 self.assertIn( u2s(u'href="https://example.com/issue1"'), |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
865 p.markdown().strip()) |
|
6336
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
866 else: |
|
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
867 # the other two engines leave the parenthesized url as is. |
|
7561
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
868 self.assertIn( u2s(u' (https://example.com/issue1) link'), |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
869 p.markdown().strip()) |
|
6336
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
870 |
|
7561
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
871 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
872 u2s(u'An [issu1](.../example) link')) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
873 if (isinstance(self, Markdown2TestCase) and |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
874 md2__version_info__ > (2, 4, 9)): |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
875 # markdown2 > 2.4.9 handles this differently |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
876 self.assertIn( u2s(u'href="#"'), p.markdown().strip()) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
877 else: |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
878 self.assertIn( u2s(u'href=".../example"'), p.markdown().strip()) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
879 |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
880 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
881 u2s(u'A [phone](tel:0016175555555) link')) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
882 if (isinstance(self, Markdown2TestCase) and |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
883 md2__version_info__ > (2, 4, 9)): |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
884 self.assertIn(u2s(u'href="#"'), p.markdown().strip()) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
885 else: |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
886 self.assertIn( u2s(u'href="tel:0016175555555"'), |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
887 p.markdown().strip()) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
888 |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
889 def test_string_email_markdown_link(self): |
|
6109
b108c9fc7aea
fix test for Python 2
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6104
diff
changeset
|
890 # markdown2 and markdown escape the email address |
|
6104
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
891 try: |
|
6109
b108c9fc7aea
fix test for Python 2
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6104
diff
changeset
|
892 from html import unescape as html_unescape |
|
b108c9fc7aea
fix test for Python 2
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6104
diff
changeset
|
893 except ImportError: |
|
6104
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
894 from HTMLParser import HTMLParser |
|
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
895 html_unescape = HTMLParser().unescape |
|
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
896 |
|
7561
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
897 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
898 u2s(u'A link <cmeerw@example.com>')) |
|
6282
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
899 m = html_unescape(p.markdown().strip()) |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
900 m = self.mangleMarkdown2(m) |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
901 |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
902 self.assertEqual(m, u2s(u'<p>A link <a href="mailto:cmeerw@example.com">cmeerw@example.com</a></p>')) |
|
6104
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
903 |
|
7561
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
904 p = StringHTMLProperty( |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
905 self.client, 'test', '1', None, 'test', |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
906 u2s(u'An bare email baduser@daemons.com link')) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
907 m = self.mangleMarkdown2(html_unescape(p.markdown().strip())) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
908 self.assertIn( u2s(u'href="mailto:baduser@daemons.com"'), |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
909 m) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
910 |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
911 p = StringHTMLProperty( |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
912 self.client, 'test', '1', None, 'test', |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
913 u2s(u'An [email_url](mailto:baduser@daemons.com) link')) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
914 m = self.mangleMarkdown2(html_unescape(p.markdown().strip())) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
915 |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
916 if isinstance(self, MistuneTestCase): |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
917 self.assertIn('<a href="mailto:baduser@daemons.com" rel="nofollow noopener">email_url</a>', m) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
918 else: |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
919 self.assertIn('<a href="mailto:baduser@daemons.com">email_url</a>', m) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
920 |
|
6104
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
921 def test_string_markdown_javascript_link(self): |
|
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
922 # make sure we don't get a "javascript:" link |
|
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
923 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'<javascript:alert(1)>')) |
|
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
924 self.assertTrue(p.markdown().find('href="javascript:') == -1) |
|
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
925 |
|
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
926 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'[link](javascript:alert(1))')) |
|
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
927 self.assertTrue(p.markdown().find('href="javascript:') == -1) |
|
6099
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
928 |
|
6284
3f7538316724
issue2551099 - disable processing of data url's in markdown.
John Rouillard <rouilj@ieee.org>
parents:
6282
diff
changeset
|
929 def test_string_markdown_data_link(self): |
|
3f7538316724
issue2551099 - disable processing of data url's in markdown.
John Rouillard <rouilj@ieee.org>
parents:
6282
diff
changeset
|
930 # make sure we don't get a "data:" link |
|
3f7538316724
issue2551099 - disable processing of data url's in markdown.
John Rouillard <rouilj@ieee.org>
parents:
6282
diff
changeset
|
931 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'<data:text/plain;base64,SGVsbG8sIFdvcmxkIQ==>')) |
|
3f7538316724
issue2551099 - disable processing of data url's in markdown.
John Rouillard <rouilj@ieee.org>
parents:
6282
diff
changeset
|
932 print(p.markdown()) |
|
3f7538316724
issue2551099 - disable processing of data url's in markdown.
John Rouillard <rouilj@ieee.org>
parents:
6282
diff
changeset
|
933 self.assertTrue(p.markdown().find('href="data:') == -1) |
|
3f7538316724
issue2551099 - disable processing of data url's in markdown.
John Rouillard <rouilj@ieee.org>
parents:
6282
diff
changeset
|
934 |
|
3f7538316724
issue2551099 - disable processing of data url's in markdown.
John Rouillard <rouilj@ieee.org>
parents:
6282
diff
changeset
|
935 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'[data link](data:text/plain;base64,SGVsbG8sIFdvcmxkIQ==)')) |
|
3f7538316724
issue2551099 - disable processing of data url's in markdown.
John Rouillard <rouilj@ieee.org>
parents:
6282
diff
changeset
|
936 print(p.markdown()) |
|
3f7538316724
issue2551099 - disable processing of data url's in markdown.
John Rouillard <rouilj@ieee.org>
parents:
6282
diff
changeset
|
937 self.assertTrue(p.markdown().find('href="data:') == -1) |
|
3f7538316724
issue2551099 - disable processing of data url's in markdown.
John Rouillard <rouilj@ieee.org>
parents:
6282
diff
changeset
|
938 |
|
6274
474de62f4ce0
Add test for hard linebreak fomatting in markdown
John Rouillard <rouilj@ieee.org>
parents:
6109
diff
changeset
|
939 |
|
474de62f4ce0
Add test for hard linebreak fomatting in markdown
John Rouillard <rouilj@ieee.org>
parents:
6109
diff
changeset
|
940 def test_string_markdown_forced_line_break(self): |
|
474de62f4ce0
Add test for hard linebreak fomatting in markdown
John Rouillard <rouilj@ieee.org>
parents:
6109
diff
changeset
|
941 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'This is a set of text \n:that should have a break \n:at newlines. Each \n:colon should be the start of an html line')) |
|
474de62f4ce0
Add test for hard linebreak fomatting in markdown
John Rouillard <rouilj@ieee.org>
parents:
6109
diff
changeset
|
942 # sigh different backends render this differently: |
|
474de62f4ce0
Add test for hard linebreak fomatting in markdown
John Rouillard <rouilj@ieee.org>
parents:
6109
diff
changeset
|
943 # of text <br /> |
|
474de62f4ce0
Add test for hard linebreak fomatting in markdown
John Rouillard <rouilj@ieee.org>
parents:
6109
diff
changeset
|
944 # of text<br> |
|
474de62f4ce0
Add test for hard linebreak fomatting in markdown
John Rouillard <rouilj@ieee.org>
parents:
6109
diff
changeset
|
945 # etc. |
|
474de62f4ce0
Add test for hard linebreak fomatting in markdown
John Rouillard <rouilj@ieee.org>
parents:
6109
diff
changeset
|
946 # Rather than using a different result for each |
|
474de62f4ce0
Add test for hard linebreak fomatting in markdown
John Rouillard <rouilj@ieee.org>
parents:
6109
diff
changeset
|
947 # renderer, look for '<br' and require three of them. |
|
474de62f4ce0
Add test for hard linebreak fomatting in markdown
John Rouillard <rouilj@ieee.org>
parents:
6109
diff
changeset
|
948 m = p.markdown() |
|
6282
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
949 print(m) |
|
6274
474de62f4ce0
Add test for hard linebreak fomatting in markdown
John Rouillard <rouilj@ieee.org>
parents:
6109
diff
changeset
|
950 self.assertEqual(3, m.count('<br')) |
|
474de62f4ce0
Add test for hard linebreak fomatting in markdown
John Rouillard <rouilj@ieee.org>
parents:
6109
diff
changeset
|
951 |
|
6099
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
952 def test_string_markdown_code_block(self): |
|
6275
bda491248fd8
Handle exception raised from markdown processing
John Rouillard <rouilj@ieee.org>
parents:
6274
diff
changeset
|
953 ''' also verify that embedded html is escaped ''' |
|
bda491248fd8
Handle exception raised from markdown processing
John Rouillard <rouilj@ieee.org>
parents:
6274
diff
changeset
|
954 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'embedded code block <pre>\n\n```\nline 1\nline 2\n```\n\nnew </pre> paragraph')) |
|
bda491248fd8
Handle exception raised from markdown processing
John Rouillard <rouilj@ieee.org>
parents:
6274
diff
changeset
|
955 self.assertEqual(p.markdown().strip().replace('\n\n', '\n'), u2s(u'<p>embedded code block <pre></p>\n<pre><code>line 1\nline 2\n</code></pre>\n<p>new </pre> paragraph</p>')) |
|
bda491248fd8
Handle exception raised from markdown processing
John Rouillard <rouilj@ieee.org>
parents:
6274
diff
changeset
|
956 |
|
bda491248fd8
Handle exception raised from markdown processing
John Rouillard <rouilj@ieee.org>
parents:
6274
diff
changeset
|
957 def test_string_markdown_code_block_attribute(self): |
|
6995
dc83ebff4c90
change test to use html normalizer when comparing html output.
John Rouillard <rouilj@ieee.org>
parents:
6992
diff
changeset
|
958 parser = NormalizingHtmlParser() |
|
6992
a5f30372ef7f
New markdown2 release changed output with code highlighting (take 2)
John Rouillard <rouilj@ieee.org>
parents:
6991
diff
changeset
|
959 |
|
6275
bda491248fd8
Handle exception raised from markdown processing
John Rouillard <rouilj@ieee.org>
parents:
6274
diff
changeset
|
960 ''' also verify that embedded html is escaped ''' |
|
bda491248fd8
Handle exception raised from markdown processing
John Rouillard <rouilj@ieee.org>
parents:
6274
diff
changeset
|
961 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'embedded code block <pre>\n\n``` python\nline 1\nline 2\n```\n\nnew </pre> paragraph')) |
|
6995
dc83ebff4c90
change test to use html normalizer when comparing html output.
John Rouillard <rouilj@ieee.org>
parents:
6992
diff
changeset
|
962 m = parser.normalize(p.markdown()) |
|
dc83ebff4c90
change test to use html normalizer when comparing html output.
John Rouillard <rouilj@ieee.org>
parents:
6992
diff
changeset
|
963 parser.reset() |
|
6275
bda491248fd8
Handle exception raised from markdown processing
John Rouillard <rouilj@ieee.org>
parents:
6274
diff
changeset
|
964 print(m) |
|
bda491248fd8
Handle exception raised from markdown processing
John Rouillard <rouilj@ieee.org>
parents:
6274
diff
changeset
|
965 if type(self) == MistuneTestCase: |
|
6995
dc83ebff4c90
change test to use html normalizer when comparing html output.
John Rouillard <rouilj@ieee.org>
parents:
6992
diff
changeset
|
966 self.assertEqual(m, parser.normalize('<p>embedded code block <pre></p>\n<pre><code class="lang-python">line 1\nline 2\n</code></pre>\n<p>new </pre> paragraph</p>')) |
|
6275
bda491248fd8
Handle exception raised from markdown processing
John Rouillard <rouilj@ieee.org>
parents:
6274
diff
changeset
|
967 elif type(self) == MarkdownTestCase: |
|
7561
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
968 self.assertEqual(m.replace('class="python"','class="language-python"'), parser.normalize('<p>embedded code block <pre></p>\n<pre><code class="language-python">line 1\nline 2\n</code></pre>\n<p>new </pre> paragraph</p>')) |
|
6279
9ec3a9bc4ea5
issue2551097 - fix call to markdown2 - fix fenced code blocks.
John Rouillard <rouilj@ieee.org>
parents:
6277
diff
changeset
|
969 else: |
|
6995
dc83ebff4c90
change test to use html normalizer when comparing html output.
John Rouillard <rouilj@ieee.org>
parents:
6992
diff
changeset
|
970 expected_result = parser.normalize('<p>embedded code block <pre></p>\n<div class="codehilite"><pre><span></span><code><span class="n">line</span> <span class="mi">1</span>\n<span class="n">line</span> <span class="mi">2</span>\n</code></pre></div>\n<p>new </pre> paragraph</p>') |
|
dc83ebff4c90
change test to use html normalizer when comparing html output.
John Rouillard <rouilj@ieee.org>
parents:
6992
diff
changeset
|
971 self.assertEqual(m, expected_result) |
|
6275
bda491248fd8
Handle exception raised from markdown processing
John Rouillard <rouilj@ieee.org>
parents:
6274
diff
changeset
|
972 |
|
6279
9ec3a9bc4ea5
issue2551097 - fix call to markdown2 - fix fenced code blocks.
John Rouillard <rouilj@ieee.org>
parents:
6277
diff
changeset
|
973 def test_markdown_return_text_on_exception(self): |
|
9ec3a9bc4ea5
issue2551097 - fix call to markdown2 - fix fenced code blocks.
John Rouillard <rouilj@ieee.org>
parents:
6277
diff
changeset
|
974 ''' string is invalid markdown. missing end of fenced code block ''' |
|
9ec3a9bc4ea5
issue2551097 - fix call to markdown2 - fix fenced code blocks.
John Rouillard <rouilj@ieee.org>
parents:
6277
diff
changeset
|
975 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'embedded code block <pre>\n\n``` python\nline 1\nline 2\n\n\nnew </pre> paragraph')) |
|
9ec3a9bc4ea5
issue2551097 - fix call to markdown2 - fix fenced code blocks.
John Rouillard <rouilj@ieee.org>
parents:
6277
diff
changeset
|
976 m = p.markdown().strip() |
|
9ec3a9bc4ea5
issue2551097 - fix call to markdown2 - fix fenced code blocks.
John Rouillard <rouilj@ieee.org>
parents:
6277
diff
changeset
|
977 print(m) |
|
9ec3a9bc4ea5
issue2551097 - fix call to markdown2 - fix fenced code blocks.
John Rouillard <rouilj@ieee.org>
parents:
6277
diff
changeset
|
978 self.assertEqual(m.replace('\n\n','\n'), '<p>embedded code block <pre></p>\n<p>``` python\nline 1\nline 2</p>\n<p>new </pre> paragraph</p>') |
|
9ec3a9bc4ea5
issue2551097 - fix call to markdown2 - fix fenced code blocks.
John Rouillard <rouilj@ieee.org>
parents:
6277
diff
changeset
|
979 |
|
9ec3a9bc4ea5
issue2551097 - fix call to markdown2 - fix fenced code blocks.
John Rouillard <rouilj@ieee.org>
parents:
6277
diff
changeset
|
980 def test_markdown_break_on_newline(self): |
|
6277
957a0fc20021
issue2551094 - markdown mismatch - new config for embedded newine
John Rouillard <rouilj@ieee.org>
parents:
6275
diff
changeset
|
981 self.client.db.config['MARKDOWN_BREAK_ON_NEWLINE'] = True |
|
957a0fc20021
issue2551094 - markdown mismatch - new config for embedded newine
John Rouillard <rouilj@ieee.org>
parents:
6275
diff
changeset
|
982 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'A string with\nline break\ntwice.')) |
|
957a0fc20021
issue2551094 - markdown mismatch - new config for embedded newine
John Rouillard <rouilj@ieee.org>
parents:
6275
diff
changeset
|
983 m = p.markdown() |
|
957a0fc20021
issue2551094 - markdown mismatch - new config for embedded newine
John Rouillard <rouilj@ieee.org>
parents:
6275
diff
changeset
|
984 self.assertEqual(2, m.count('<br')) |
|
957a0fc20021
issue2551094 - markdown mismatch - new config for embedded newine
John Rouillard <rouilj@ieee.org>
parents:
6275
diff
changeset
|
985 self.client.db.config['MARKDOWN_BREAK_ON_NEWLINE'] = False |
|
957a0fc20021
issue2551094 - markdown mismatch - new config for embedded newine
John Rouillard <rouilj@ieee.org>
parents:
6275
diff
changeset
|
986 |
|
957a0fc20021
issue2551094 - markdown mismatch - new config for embedded newine
John Rouillard <rouilj@ieee.org>
parents:
6275
diff
changeset
|
987 m = p.markdown() |
|
957a0fc20021
issue2551094 - markdown mismatch - new config for embedded newine
John Rouillard <rouilj@ieee.org>
parents:
6275
diff
changeset
|
988 self.assertEqual(0, m.count('<br')) |
|
957a0fc20021
issue2551094 - markdown mismatch - new config for embedded newine
John Rouillard <rouilj@ieee.org>
parents:
6275
diff
changeset
|
989 |
|
6280
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
990 def test_markdown_hyperlinked_url(self): |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
991 # classic markdown does not emit a \n at end of rendered string |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
992 # so rstrip \n. |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
993 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'http://example.com/')) |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
994 m = p.markdown(hyperlink=1) |
|
6282
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
995 m = self.mangleMarkdown2(m) |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
996 print(m) |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
997 self.assertEqual(m.rstrip('\n'), '<p><a href="http://example.com/" rel="nofollow noopener">http://example.com/</a></p>') |
|
6280
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
998 |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
999 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'<http://example.com/>')) |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1000 m = p.markdown(hyperlink=1) |
|
6282
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1001 m = self.mangleMarkdown2(m) |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1002 self.assertEqual(m.rstrip('\n'), '<p><a href="http://example.com/" rel="nofollow noopener">http://example.com/</a></p>') |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1003 |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1004 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'[label](http://example.com/ "a title")')) |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1005 m = p.markdown(hyperlink=1) |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1006 m = self.mangleMarkdown2(m) |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1007 self.assertEqual(m.rstrip('\n'), '<p><a href="http://example.com/" rel="nofollow noopener" title="a title">label</a></p>') |
|
6280
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1008 |
|
6299
fd0bdcbc68e4
issue2551104 - fix issue with markdown autolink next to punctuation
John Rouillard <rouilj@ieee.org>
parents:
6284
diff
changeset
|
1009 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'[label](http://example.com/).')) |
|
fd0bdcbc68e4
issue2551104 - fix issue with markdown autolink next to punctuation
John Rouillard <rouilj@ieee.org>
parents:
6284
diff
changeset
|
1010 m = p.markdown(hyperlink=1) |
|
fd0bdcbc68e4
issue2551104 - fix issue with markdown autolink next to punctuation
John Rouillard <rouilj@ieee.org>
parents:
6284
diff
changeset
|
1011 m = self.mangleMarkdown2(m) |
|
fd0bdcbc68e4
issue2551104 - fix issue with markdown autolink next to punctuation
John Rouillard <rouilj@ieee.org>
parents:
6284
diff
changeset
|
1012 self.assertEqual(m.rstrip('\n'), '<p><a href="http://example.com/" rel="nofollow noopener">label</a>.</p>') |
|
fd0bdcbc68e4
issue2551104 - fix issue with markdown autolink next to punctuation
John Rouillard <rouilj@ieee.org>
parents:
6284
diff
changeset
|
1013 |
|
6280
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1014 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'')) |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1015 m = p.markdown(hyperlink=1) |
|
6282
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1016 m = self.mangleMarkdown2(m) |
|
6280
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1017 self.assertIn(m, [ |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1018 '<p><img src="http://example.com/" alt=""/></p>\n', |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1019 '<p><img src="http://example.com/" alt="" /></p>\n', |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1020 '<p><img src="http://example.com/" alt=""></p>\n', |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1021 '<p><img alt="" src="http://example.com/" /></p>', # markdown |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1022 ]) |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1023 |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1024 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'An URL http://example.com/ with text')) |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1025 m = p.markdown(hyperlink=1) |
|
6282
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1026 m = self.mangleMarkdown2(m) |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1027 self.assertEqual(m.rstrip('\n'), '<p>An URL <a href="http://example.com/" rel="nofollow noopener">http://example.com/</a> with text</p>') |
|
6280
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1028 |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1029 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'An URL https://example.com/path with text')) |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1030 m = p.markdown(hyperlink=1) |
|
6282
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1031 m = self.mangleMarkdown2(m) |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1032 self.assertEqual(m.rstrip('\n'), '<p>An URL <a href="https://example.com/path" rel="nofollow noopener">https://example.com/path</a> with text</p>') |
|
6099
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1033 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1034 @skip_mistune |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1035 class MistuneTestCase(TemplatingTestCase, MarkdownTests) : |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1036 def setUp(self): |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1037 TemplatingTestCase.setUp(self) |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1038 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1039 from roundup.cgi import templating |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1040 self.__markdown = templating.markdown |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1041 templating.markdown = templating._import_mistune() |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1042 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1043 def tearDown(self): |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1044 from roundup.cgi import templating |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1045 templating.markdown = self.__markdown |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1046 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1047 @skip_markdown2 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1048 class Markdown2TestCase(TemplatingTestCase, MarkdownTests) : |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1049 def setUp(self): |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1050 TemplatingTestCase.setUp(self) |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1051 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1052 from roundup.cgi import templating |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1053 self.__markdown = templating.markdown |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1054 templating.markdown = templating._import_markdown2() |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1055 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1056 def tearDown(self): |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1057 from roundup.cgi import templating |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1058 templating.markdown = self.__markdown |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1059 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1060 @skip_markdown |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1061 class MarkdownTestCase(TemplatingTestCase, MarkdownTests) : |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1062 def setUp(self): |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1063 TemplatingTestCase.setUp(self) |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1064 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1065 from roundup.cgi import templating |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1066 self.__markdown = templating.markdown |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1067 templating.markdown = templating._import_markdown() |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1068 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1069 def tearDown(self): |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1070 from roundup.cgi import templating |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1071 templating.markdown = self.__markdown |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1072 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1073 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1074 class NoMarkdownTestCase(TemplatingTestCase) : |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1075 def setUp(self): |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1076 TemplatingTestCase.setUp(self) |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1077 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1078 from roundup.cgi import templating |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1079 self.__markdown = templating.markdown |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1080 templating.markdown = None |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1081 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1082 def tearDown(self): |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1083 from roundup.cgi import templating |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1084 templating.markdown = self.__markdown |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1085 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1086 def test_string_markdown(self): |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1087 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'A string http://localhost with cmeerw@example.com <br> *embedded* \u00df')) |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1088 self.assertEqual(p.markdown(), u2s(u'A string <a href="http://localhost" rel="nofollow noopener">http://localhost</a> with <a href="mailto:cmeerw@example.com">cmeerw@example.com</a> <br> *embedded* \u00df')) |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1089 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1090 class NoRstTestCase(TemplatingTestCase) : |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1091 def setUp(self): |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1092 TemplatingTestCase.setUp(self) |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1093 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1094 from roundup.cgi import templating |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1095 self.__ReStructuredText = templating.ReStructuredText |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1096 templating.ReStructuredText = None |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1097 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1098 def tearDown(self): |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1099 from roundup.cgi import templating |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1100 templating.ReStructuredText = self.__ReStructuredText |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1101 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1102 def test_string_rst(self): |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1103 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'A string with cmeerw@example.com *embedded* \u00df')) |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1104 self.assertEqual(p.rst(), u2s(u'A string with <a href="mailto:cmeerw@example.com">cmeerw@example.com</a> *embedded* \u00df')) |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1105 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1106 class NoStextTestCase(TemplatingTestCase) : |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1107 def setUp(self): |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1108 TemplatingTestCase.setUp(self) |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1109 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1110 from roundup.cgi import templating |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1111 self.__StructuredText = templating.StructuredText |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1112 templating.StructuredText = None |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1113 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1114 def tearDown(self): |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1115 from roundup.cgi import templating |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1116 templating.StructuredText = self.__StructuredText |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1117 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1118 def test_string_stext(self): |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1119 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'A string with cmeerw@example.com *embedded* \u00df')) |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1120 self.assertEqual(p.stext(), u2s(u'A string with <a href="mailto:cmeerw@example.com">cmeerw@example.com</a> *embedded* \u00df')) |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1121 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1122 |
|
7866
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1123 class ZUtilsTestcase(TemplatingTestCase): |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1124 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1125 def test_Iterator(self): |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1126 """Test all the iterator functions and properties. |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1127 """ |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1128 sequence = ['one', 'two', '3', 4] |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1129 i = Iterator(sequence) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1130 for j in [ # element, item, 1st, last, even, odd, number, |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1131 # letter, Letter, roman, Roman |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1132 (1, "one", 1, 0, True, 0, 1, 'a', 'A', 'i', 'I'), |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1133 (1, "two", 0, 0, False, 1, 2, 'b', 'B', 'ii', 'II'), |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1134 (1, "3", 0, 0, True, 0, 3, 'c', 'C', 'iii', 'III'), |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1135 (1, 4, 0, 1, False, 1, 4, 'd', 'D', 'iv', 'IV'), |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1136 # next() fails with 0 when past end of sequence |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1137 # everything else is left at end of sequence |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1138 (0, 4, 0, 1, False, 1, 4, 'd', 'D', 'iv', 'IV'), |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1139 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1140 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1141 ]: |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1142 element = i.next() # returns 1 if next item else 0 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1143 print(i.item) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1144 self.assertEqual(element, j[0]) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1145 self.assertEqual(i.item, j[1]) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1146 self.assertEqual(i.first(), j[2]) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1147 self.assertEqual(i.start, j[2]) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1148 self.assertEqual(i.last(), j[3]) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1149 self.assertEqual(i.end, j[3]) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1150 self.assertIs(i.even(), j[4]) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1151 self.assertEqual(i.odd(), j[5]) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1152 self.assertEqual(i.number(), j[6]) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1153 self.assertEqual(i.index, j[6] - 1) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1154 self.assertEqual(i.nextIndex, j[6]) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1155 self.assertEqual(i.letter(), j[7]) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1156 self.assertEqual(i.Letter(), j[8]) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1157 self.assertEqual(i.roman(), j[9]) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1158 self.assertEqual(i.Roman(), j[10]) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1159 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1160 class I: |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1161 def __init__(self, name, data): |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1162 self.name = name |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1163 self.data = data |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1164 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1165 sequence = [I('Al', 'd'), |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1166 I('Bob', 'e'), |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1167 I('Bob', 'd'), |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1168 I('Chip', 'd') |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1169 ] |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1170 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1171 iterator = iter(sequence) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1172 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1173 # Iterator is supposed take both sequence and Python iterator. |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1174 for source in [sequence, iterator]: |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1175 i = Iterator(source) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1176 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1177 element = i.next() # returns 1 if next item else 0 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1178 item1 = i.item |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1179 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1180 # note these can trigger calls by first/last to same_part(). |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1181 # It can return true for first/last even when there are more |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1182 # items in the sequence. I am just testing the current |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1183 # implementation. Woe to the person who tries to change |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1184 # Iterator.py. |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1185 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1186 self.assertEqual(element, 1) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1187 # i.start == 1, so it bypasses name check |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1188 self.assertEqual(i.first(name='namea'), 1) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1189 self.assertEqual(i.first(name='name'), 1) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1190 # i.end == 0 so it uses name check in object |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1191 self.assertEqual(i.last(name='namea'), 0) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1192 self.assertEqual(i.last(name='name'), 0) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1193 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1194 element = i.next() # returns 1 if next item else 0 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1195 item2 = i.item |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1196 self.assertEqual(element, 1) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1197 # i.start == 0 so it uses name check |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1198 # between item1 and item2 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1199 self.assertEqual(i.first(name='namea'), 0) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1200 self.assertEqual(i.first(name='name'), 0) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1201 # i.end == 0 so it uses name check in object |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1202 # between item2 and the next item item3 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1203 self.assertEqual(i.last(name='namea'), 0) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1204 self.assertEqual(i.last(name='name'), True) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1205 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1206 element = i.next() # returns 1 if next item else 0 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1207 item3 = i.item |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1208 self.assertEqual(element, 1) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1209 # i.start == 0 so it uses name check |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1210 self.assertEqual(i.first(name='namea'), 0) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1211 self.assertEqual(i.first(name='name'), 1) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1212 # i.end == 0 so it uses name check in object |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1213 # between item3 and the next item item4 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1214 self.assertEqual(i.last(name='namea'), 0) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1215 self.assertEqual(i.last(name='name'), 0) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1216 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1217 element = i.next() # returns 1 if next item else 0 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1218 item4 = i.item |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1219 self.assertEqual(element, 1) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1220 # i.start == 0 so it uses name check |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1221 self.assertEqual(i.first(name='namea'), 0) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1222 self.assertEqual(i.first(name='name'), 0) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1223 # i.end == 0 so it uses name check in object |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1224 # last two object have same name (1) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1225 self.assertEqual(i.last(name='namea'), 1) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1226 self.assertEqual(i.last(name='name'), 1) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1227 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1228 element = i.next() # returns 1 if next item else 0 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1229 self.assertEqual(element, 0) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1230 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1231 # this is the underlying call for first/last |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1232 # when i.start/i.end are 0 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1233 # use non-existing attribute name, same item |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1234 self.assertIs(i.same_part('namea', item2, item2), False) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1235 # use correct attribute name |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1236 self.assertIs(i.same_part('name', item2, item2), True) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1237 # use no attribute name |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1238 self.assertIs(i.same_part(None, item2, item2), True) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1239 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1240 # use non-existing attribute name, different item |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1241 # non-matching names |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1242 self.assertIs(i.same_part('namea', item1, item2), False) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1243 # use correct attribute name |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1244 self.assertIs(i.same_part('name', item1, item2), False) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1245 # use no attribute name |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1246 self.assertIs(i.same_part(None, item1, item2), False) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1247 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1248 # use non-existing attribute name, different item |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1249 # matching names |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1250 self.assertIs(i.same_part('namea', item2, item3), False) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1251 # use correct attribute name |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1252 self.assertIs(i.same_part('name', item2, item3), True) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1253 # use no attribute name |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1254 self.assertIs(i.same_part(None, item2, item3), False) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1255 |
|
5815
fe35a232c6dc
Make comment block raw to avoid travis ci warning on \d in comment block.
John Rouillard <rouilj@ieee.org>
parents:
5811
diff
changeset
|
1256 r''' |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1257 class HTMLPermissions: |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1258 def is_edit_ok(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1259 def is_view_ok(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1260 def is_only_view_ok(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1261 def view_check(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1262 def edit_check(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1263 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1264 def input_html4(**attrs): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1265 def input_xhtml(**attrs): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1266 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1267 class HTMLInputMixin: |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1268 def __init__(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1269 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1270 class HTMLClass(HTMLInputMixin, HTMLPermissions): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1271 def __init__(self, client, classname, anonymous=0): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1272 def __repr__(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1273 def __getitem__(self, item): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1274 def __getattr__(self, attr): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1275 def designator(self): |
|
5811
7d276bb8b46d
More invalid escape sequence fixes.
John Rouillard <rouilj@ieee.org>
parents:
5795
diff
changeset
|
1276 def getItem(self, itemid, num_re=re.compile(r'-?\d+')): |
|
5226
578e86e015f9
Changed function signature for properties to correspond to checkin:
John Rouillard <rouilj@ieee.org>
parents:
5211
diff
changeset
|
1277 def properties(self, sort=1, cansearch=True): |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1278 def list(self, sort_on=None): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1279 def csv(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1280 def propnames(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1281 def filter(self, request=None, filterspec={}, sort=(None,None), |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1282 def classhelp(self, properties=None, label='(list)', width='500', |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1283 def submit(self, label="Submit New Entry"): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1284 def history(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1285 def renderWith(self, name, **kwargs): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1286 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1287 class HTMLItem(HTMLInputMixin, HTMLPermissions): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1288 def __init__(self, client, classname, nodeid, anonymous=0): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1289 def __repr__(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1290 def __getitem__(self, item): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1291 def __getattr__(self, attr): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1292 def designator(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1293 def is_retired(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1294 def submit(self, label="Submit Changes"): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1295 def journal(self, direction='descending'): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1296 def history(self, direction='descending', dre=re.compile('\d+')): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1297 def renderQueryForm(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1298 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1299 class HTMLUserPermission: |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1300 def is_edit_ok(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1301 def is_view_ok(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1302 def _user_perm_check(self, type): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1303 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1304 class HTMLUserClass(HTMLUserPermission, HTMLClass): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1305 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1306 class HTMLUser(HTMLUserPermission, HTMLItem): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1307 def __init__(self, client, classname, nodeid, anonymous=0): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1308 def hasPermission(self, permission, classname=_marker): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1309 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1310 class HTMLProperty(HTMLInputMixin, HTMLPermissions): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1311 def __init__(self, client, classname, nodeid, prop, name, value, |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1312 def __repr__(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1313 def __str__(self): |
|
5414
3fa026621f69
Python 3 preparation: comparisons.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5388
diff
changeset
|
1314 def __lt__(self, other): |
|
3fa026621f69
Python 3 preparation: comparisons.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5388
diff
changeset
|
1315 def __le__(self, other): |
|
3fa026621f69
Python 3 preparation: comparisons.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5388
diff
changeset
|
1316 def __eq__(self, other): |
|
3fa026621f69
Python 3 preparation: comparisons.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5388
diff
changeset
|
1317 def __ne__(self, other): |
|
3fa026621f69
Python 3 preparation: comparisons.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5388
diff
changeset
|
1318 def __gt__(self, other): |
|
3fa026621f69
Python 3 preparation: comparisons.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5388
diff
changeset
|
1319 def __ge__(self, other): |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1320 def is_edit_ok(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1321 def is_view_ok(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1322 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1323 class StringHTMLProperty(HTMLProperty): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1324 def _hyper_repl(self, match): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1325 def hyperlinked(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1326 def plain(self, escape=0, hyperlink=0): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1327 def stext(self, escape=0): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1328 def field(self, size = 30): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1329 def multiline(self, escape=0, rows=5, cols=40): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1330 def email(self, escape=1): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1331 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1332 class PasswordHTMLProperty(HTMLProperty): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1333 def plain(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1334 def field(self, size = 30): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1335 def confirm(self, size = 30): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1336 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1337 class NumberHTMLProperty(HTMLProperty): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1338 def plain(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1339 def field(self, size = 30): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1340 def __int__(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1341 def __float__(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1342 |
|
5067
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5037
diff
changeset
|
1343 class IntegerHTMLProperty(HTMLProperty): |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5037
diff
changeset
|
1344 def plain(self): |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5037
diff
changeset
|
1345 def field(self, size = 30): |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5037
diff
changeset
|
1346 def __int__(self): |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5037
diff
changeset
|
1347 |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1348 class BooleanHTMLProperty(HTMLProperty): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1349 def plain(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1350 def field(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1351 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1352 class DateHTMLProperty(HTMLProperty): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1353 def plain(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1354 def now(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1355 def field(self, size = 30): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1356 def reldate(self, pretty=1): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1357 def pretty(self, format=_marker): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1358 def local(self, offset): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1359 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1360 class IntervalHTMLProperty(HTMLProperty): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1361 def plain(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1362 def pretty(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1363 def field(self, size = 30): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1364 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1365 class LinkHTMLProperty(HTMLProperty): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1366 def __init__(self, *args, **kw): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1367 def __getattr__(self, attr): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1368 def plain(self, escape=0): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1369 def field(self, showid=0, size=None): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1370 def menu(self, size=None, height=None, showid=0, additional=[], |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1371 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1372 class MultilinkHTMLProperty(HTMLProperty): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1373 def __init__(self, *args, **kwargs): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1374 def __len__(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1375 def __getattr__(self, attr): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1376 def __getitem__(self, num): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1377 def __contains__(self, value): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1378 def reverse(self): |
|
5903
c3728772c594
Add reverse option to hyperdb property wrapper by David Sowder
John Rouillard <rouilj@ieee.org>
parents:
5815
diff
changeset
|
1379 def sorted(self, property, reverse=False): |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1380 def plain(self, escape=0): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1381 def field(self, size=30, showid=0): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1382 def menu(self, size=None, height=None, showid=0, additional=[], |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1383 |
|
5414
3fa026621f69
Python 3 preparation: comparisons.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5388
diff
changeset
|
1384 def make_key_function(db, classname, sort_on=None): |
|
3fa026621f69
Python 3 preparation: comparisons.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5388
diff
changeset
|
1385 def keyfunc(a): |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1386 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1387 def find_sort_key(linkcl): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1388 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1389 def handleListCGIValue(value): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1390 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1391 class ShowDict: |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1392 def __init__(self, columns): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1393 def __getitem__(self, name): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1394 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1395 class HTMLRequest(HTMLInputMixin): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1396 def __init__(self, client): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1397 def _post_init(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1398 def updateFromURL(self, url): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1399 def update(self, kwargs): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1400 def description(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1401 def __str__(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1402 def indexargs_form(self, columns=1, sort=1, group=1, filter=1, |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1403 def indexargs_url(self, url, args): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1404 def base_javascript(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1405 def batch(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1406 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1407 class Batch(ZTUtils.Batch): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1408 def __init__(self, client, sequence, size, start, end=0, orphan=0, |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1409 def __getitem__(self, index): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1410 def propchanged(self, property): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1411 def previous(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1412 def next(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1413 |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
1414 #class TemplatingUtils: |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
1415 # def __init__(self, client): |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
1416 # def Batch(self, sequence, size, start, end=0, orphan=0, overlap=0): |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1417 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1418 class NoTemplate(Exception): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1419 class Unauthorised(Exception): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1420 def __init__(self, action, klass): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1421 def __str__(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1422 |
|
4720
fd72576e07ed
API break: rename Templates to Loader for zopetal and chameleon
anatoly techtonik <techtonik@gmail.com>
parents:
4647
diff
changeset
|
1423 class Loader: |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1424 def __init__(self, dir): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1425 def precompileTemplates(self): |
|
4727
5033c2ad80a7
templating: Rename LoaderBase.get() to LoaderBase.load() for clarity
anatoly techtonik <techtonik@gmail.com>
parents:
4720
diff
changeset
|
1426 def load(self, name, extension=None): |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1427 def __getitem__(self, name): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1428 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1429 class RoundupPageTemplate(PageTemplate.PageTemplate): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1430 def getContext(self, client, classname, request): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1431 def render(self, client, classname, request, **options): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1432 def __repr__(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1433 ''' |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1434 |
|
2716
305d346f8f3b
disable invalid assertions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2158
diff
changeset
|
1435 # vim: set et sts=4 sw=4 : |
