Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: tests/test_rpy.py

Issue 30047570: Issue 7467 - Migrate rpy to Python 3 (Closed) Base URL: https://hg.adblockplus.org/python-abp
Patch Set: Created April 18, 2019, 12:15 a.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « abp/filters/rpy.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/test_rpy.py
===================================================================
--- a/tests/test_rpy.py
+++ b/tests/test_rpy.py
@@ -14,11 +14,9 @@
# along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>.
"""Functional tests for testing rPython integration."""
-from __future__ import unicode_literals
from collections import namedtuple
import pytest
-import sys
from abp.filters.rpy import tuple2dict, line2dict, lines2dicts
@@ -27,114 +25,89 @@
_TEST_EXAMPLES = {
'header': {
- 'in': b'[Adblock Plus 2.0]',
+ 'in': '[Adblock Plus 2.0]',
'out': {
- b'type': b'Header',
- b'version': b'Adblock Plus 2.0',
+ 'type': 'Header',
+ 'version': 'Adblock Plus 2.0',
},
},
'metadata': {
- 'in': b'! Title: Example list',
+ 'in': '! Title: Example list',
'out': {
- b'type': b'Metadata',
- b'key': b'Title',
- b'value': b'Example list',
+ 'type': 'Metadata',
+ 'key': 'Title',
+ 'value': 'Example list',
},
},
'comment': {
- 'in': b'! Comment',
+ 'in': '! Comment',
'out': {
- b'type': b'Comment',
- b'text': b'Comment',
+ 'type': 'Comment',
+ 'text': 'Comment',
},
},
'empty': {
- 'in': b'',
+ 'in': '',
'out': {
- b'type': b'EmptyLine',
+ 'type': 'EmptyLine',
},
},
'include': {
- 'in': b'%include www.test.py/filtelist.txt%',
+ 'in': '%include www.test.py/filtelist.txt%',
'out': {
- b'type': b'Include',
- b'target': b'www.test.py/filtelist.txt',
+ 'type': 'Include',
+ 'target': 'www.test.py/filtelist.txt',
},
},
'filter_single': {
- 'in': b'foo.com##div#ad1',
+ 'in': 'foo.com##div#ad1',
'out': {
- b'type': b'Filter',
- b'text': b'foo.com##div#ad1',
- b'selector': {b'type': b'css', b'value': b'div#ad1'},
- b'action': b'hide',
- b'options': {b'domain': {b'foo.com': True}},
+ 'type': 'Filter',
+ 'text': 'foo.com##div#ad1',
+ 'selector': {'type': 'css', 'value': 'div#ad1'},
+ 'action': 'hide',
+ 'options': {'domain': {'foo.com': True}},
},
},
'filter_with_%': {
- 'in': b'%22banner%*%22idzone%',
+ 'in': '%22banner%*%22idzone%',
'out': {
- b'type': b'Filter',
- b'text': b'%22banner%*%22idzone%',
- b'selector': {b'type': b'url-pattern',
- b'value': b'%22banner%*%22idzone%'},
- b'action': b'block',
- b'options': {},
+ 'type': 'Filter',
+ 'text': '%22banner%*%22idzone%',
+ 'selector': {'type': 'url-pattern',
+ 'value': '%22banner%*%22idzone%'},
+ 'action': 'block',
+ 'options': {},
},
},
'filter_multiple': {
- 'in': b'foo.com,bar.com##div#ad1',
+ 'in': 'foo.com,bar.com##div#ad1',
'out': {
- b'type': b'Filter',
- b'text': b'foo.com,bar.com##div#ad1',
- b'selector': {b'type': b'css', b'value': b'div#ad1'},
- b'action': b'hide',
- b'options': {b'domain': {b'foo.com': True, b'bar.com': True}},
+ 'type': 'Filter',
+ 'text': 'foo.com,bar.com##div#ad1',
+ 'selector': {'type': 'css', 'value': 'div#ad1'},
+ 'action': 'hide',
+ 'options': {'domain': {'foo.com': True, 'bar.com': True}},
},
},
'filter_with_sitekey_list': {
- 'in': b'@@bla$ping,domain=foo.com|~bar.foo.com,sitekey=foo|bar',
+ 'in': '@@bla$ping,domain=foo.com|~bar.foo.com,sitekey=foo|bar',
'out': {
- b'text':
- b'@@bla$ping,domain=foo.com|~bar.foo.com,sitekey=foo|bar',
- b'selector': {b'value': b'bla', b'type': b'url-pattern'},
- b'action': b'allow',
- b'options': {
- b'ping': True,
- b'domain': {b'foo.com': True,
- b'bar.foo.com': False},
- b'sitekey': [b'foo', b'bar']},
- b'type': b'Filter',
+ 'text':
+ '@@bla$ping,domain=foo.com|~bar.foo.com,sitekey=foo|bar',
+ 'selector': {'value': 'bla', 'type': 'url-pattern'},
+ 'action': 'allow',
+ 'options': {
+ 'ping': True,
+ 'domain': {'foo.com': True,
+ 'bar.foo.com': False},
+ 'sitekey': ['foo', 'bar']},
+ 'type': 'Filter',
},
},
}
-def check_data_utf8(data):
- """Check if all the strings in a dict are encoded as unicode.
-
- Parameters
- ----------
- data: dict
- The dictionary to be checked
-
- Raises
- -------
- AssertionError
- If any of the strings encountered are not unicode
-
- """
- if isinstance(data, dict):
- for key, value in data.items():
- check_data_utf8(key)
- check_data_utf8(value)
- elif isinstance(data, (list, tuple)):
- for item in data:
- check_data_utf8(item)
- elif isinstance(data, type('')):
- raise AssertionError('{} is str. Expected bytes.'.format(data))
-
-
@pytest.mark.parametrize('foo,bar', [
('test_foo', 1),
({'foofoo': 'test', 'foobar': 2}, [1, 2, 3]),
@@ -150,18 +123,6 @@
assert exp == result
-@pytest.mark.skipif(sys.version.startswith('3.'), reason='Redundant on py3+.')
-@pytest.mark.parametrize('line_type', _TEST_EXAMPLES.keys())
-def test_line2dict_encoding(line_type):
- """Test that the resulting object has all strings encoded as utf-8.
-
- These tests will only be run on Python2.*. On Python3.*, these test
- cases are covered by test_line2dict() below.
- """
- data = line2dict(_TEST_EXAMPLES[line_type]['in'])
- check_data_utf8(data)
-
-
@pytest.mark.parametrize('line_type', list(_TEST_EXAMPLES.keys()))
def test_line2dict_format(line_type):
"""Test that the API result has the appropriate format.
@@ -192,7 +153,7 @@
By default, lines2dicts() does not correctly parse headers and metadata.
"""
tests = [t for t in _TEST_EXAMPLES.values()
- if t['out'][b'type'] not in {b'Header', b'Metadata'}]
+ if t['out']['type'] not in {'Header', 'Metadata'}]
ins = [ex['in'] for ex in tests]
outs = [ex['out'] for ex in tests]
« no previous file with comments | « abp/filters/rpy.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld