| OLD | NEW |
| 1 # This file is part of Adblock Plus <https://adblockplus.org/>, | 1 # This file is part of Adblock Plus <https://adblockplus.org/>, |
| 2 # Copyright (C) 2006-present eyeo GmbH | 2 # Copyright (C) 2006-present eyeo GmbH |
| 3 # | 3 # |
| 4 # Adblock Plus is free software: you can redistribute it and/or modify | 4 # Adblock Plus is free software: you can redistribute it and/or modify |
| 5 # it under the terms of the GNU General Public License version 3 as | 5 # it under the terms of the GNU General Public License version 3 as |
| 6 # published by the Free Software Foundation. | 6 # published by the Free Software Foundation. |
| 7 # | 7 # |
| 8 # Adblock Plus is distributed in the hope that it will be useful, | 8 # Adblock Plus is distributed in the hope that it will be useful, |
| 9 # but WITHOUT ANY WARRANTY; without even the implied warranty of | 9 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 11 # GNU General Public License for more details. | 11 # GNU General Public License for more details. |
| 12 # | 12 # |
| 13 # You should have received a copy of the GNU General Public License | 13 # You should have received a copy of the GNU General Public License |
| 14 # along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. | 14 # along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. |
| 15 | 15 |
| 16 """Functional tests for testing rPython integration.""" | 16 """Functional tests for testing rPython integration.""" |
| 17 from __future__ import unicode_literals | 17 from __future__ import unicode_literals |
| 18 | 18 |
| 19 from collections import namedtuple | 19 from collections import namedtuple, OrderedDict as Od |
| 20 import pytest | 20 import pytest |
| 21 import sys | 21 import sys |
| 22 | 22 |
| 23 from abp.filters.rpy import tuple2dict, line2dict, lines2dicts | 23 from abp.filters.rpy import tuple2dict, line2dict, lines2dicts |
| 24 | 24 |
| 25 | 25 |
| 26 _SAMPLE_TUPLE = namedtuple('tuple', 'foo,bar') | 26 _SAMPLE_TUPLE = namedtuple('tuple', 'foo,bar') |
| 27 | 27 |
| 28 _TEST_EXAMPLES = { | 28 _TEST_EXAMPLES = { |
| 29 'header': { | 29 'header': { |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 61 b'target': b'www.test.py/filtelist.txt', | 61 b'target': b'www.test.py/filtelist.txt', |
| 62 }, | 62 }, |
| 63 }, | 63 }, |
| 64 'filter_single': { | 64 'filter_single': { |
| 65 'in': b'foo.com##div#ad1', | 65 'in': b'foo.com##div#ad1', |
| 66 'out': { | 66 'out': { |
| 67 b'type': b'Filter', | 67 b'type': b'Filter', |
| 68 b'text': b'foo.com##div#ad1', | 68 b'text': b'foo.com##div#ad1', |
| 69 b'selector': {b'type': b'css', b'value': b'div#ad1'}, | 69 b'selector': {b'type': b'css', b'value': b'div#ad1'}, |
| 70 b'action': b'hide', | 70 b'action': b'hide', |
| 71 b'options': [(b'domain', [(b'foo.com', True)])], | 71 b'options': {b'domain': {b'foo.com': True}}, |
| 72 }, | 72 }, |
| 73 }, | 73 }, |
| 74 'filter_with_%': { | 74 'filter_with_%': { |
| 75 'in': b'%22banner%*%22idzone%', | 75 'in': b'%22banner%*%22idzone%', |
| 76 'out': { | 76 'out': { |
| 77 b'type': b'Filter', | 77 b'type': b'Filter', |
| 78 b'text': b'%22banner%*%22idzone%', | 78 b'text': b'%22banner%*%22idzone%', |
| 79 b'selector': {b'type': b'url-pattern', | 79 b'selector': {b'type': b'url-pattern', |
| 80 b'value': b'%22banner%*%22idzone%'}, | 80 b'value': b'%22banner%*%22idzone%'}, |
| 81 b'action': b'block', | 81 b'action': b'block', |
| 82 b'options': [], | 82 b'options': {}, |
| 83 }, | 83 }, |
| 84 }, | 84 }, |
| 85 'filter_multiple': { | 85 'filter_multiple': { |
| 86 'in': b'foo.com,bar.com##div#ad1', | 86 'in': b'foo.com,bar.com##div#ad1', |
| 87 'out': { | 87 'out': { |
| 88 b'type': b'Filter', | 88 b'type': b'Filter', |
| 89 b'text': b'foo.com,bar.com##div#ad1', | 89 b'text': b'foo.com,bar.com##div#ad1', |
| 90 b'selector': {b'type': b'css', b'value': b'div#ad1'}, | 90 b'selector': {b'type': b'css', b'value': b'div#ad1'}, |
| 91 b'action': b'hide', | 91 b'action': b'hide', |
| 92 b'options': [(b'domain', [(b'foo.com', True), (b'bar.com', | 92 b'options': {b'domain': {b'foo.com': True, b'bar.com': True}}, |
| 93 True)])], | |
| 94 }, | 93 }, |
| 95 }, | 94 }, |
| 95 'filter_with_sitekey_list': { |
| 96 'in': b'@@bla$ping,domain=foo.com|~bar.foo.com,sitekey=foo|bar', |
| 97 'out': |
| 98 Od([(b'text', |
| 99 b'@@bla$ping,domain=foo.com|~bar.foo.com,sitekey=foo|bar'), |
| 100 (b'selector', {b'value': b'bla', b'type': b'url-pattern'}), |
| 101 (b'action', b'allow'), |
| 102 (b'options', |
| 103 Od([(b'ping', True), |
| 104 (b'domain', Od([(b'foo.com', True), |
| 105 (b'bar.foo.com', False)])), |
| 106 (b'sitekey', [b'foo', b'bar'])])), |
| 107 (b'type', b'Filter')]), |
| 108 }, |
| 96 } | 109 } |
| 97 | 110 |
| 98 | 111 |
| 99 def check_data_utf8(data): | 112 def check_data_utf8(data): |
| 100 """Check if all the strings in a dict are encoded as unicode. | 113 """Check if all the strings in a dict are encoded as unicode. |
| 101 | 114 |
| 102 Parameters | 115 Parameters |
| 103 ---------- | 116 ---------- |
| 104 data: dict | 117 data: dict |
| 105 The dictionary to be checked | 118 The dictionary to be checked |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 176 """Test that the API returns the correct result in the appropriate format. | 189 """Test that the API returns the correct result in the appropriate format. |
| 177 | 190 |
| 178 By default, lines2dicts() does not correctly parse headers and metadata. | 191 By default, lines2dicts() does not correctly parse headers and metadata. |
| 179 """ | 192 """ |
| 180 tests = [t for t in _TEST_EXAMPLES.values() | 193 tests = [t for t in _TEST_EXAMPLES.values() |
| 181 if t['out'][b'type'] not in {b'Header', b'Metadata'}] | 194 if t['out'][b'type'] not in {b'Header', b'Metadata'}] |
| 182 ins = [ex['in'] for ex in tests] | 195 ins = [ex['in'] for ex in tests] |
| 183 outs = [ex['out'] for ex in tests] | 196 outs = [ex['out'] for ex in tests] |
| 184 | 197 |
| 185 assert lines2dicts(ins) == outs | 198 assert lines2dicts(ins) == outs |
| OLD | NEW |