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

Delta Between Two Patch Sets: tests/test_render_script.py

Issue 29824555: Issue #4116: Make infile and outfile parameters of flrender script from python-abp optional (Closed)
Left Patch Set: Updated tests and README.md Created July 10, 2018, 4:07 p.m.
Right Patch Set: Removed unnecessary locals() call Created July 17, 2018, 9:39 a.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
Left: Side by side diff | Download
Right: Side by side diff | Download
« no previous file with change/comment | « abp/filters/sources.py ('k') | no next file » | no next file with change/comment »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
LEFTRIGHT
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
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 @pytest.fixture 87 @pytest.fixture
88 def dstfile(tmpdir): 88 def dstfile(tmpdir):
89 """Destination file for saving rendered list.""" 89 """Destination file for saving rendered list."""
90 return tmpdir.join('dst') 90 return tmpdir.join('dst')
91 91
92 92
93 def run_script(*args, **kw): 93 def run_script(*args, **kw):
94 """Run rendering script with given arguments and return its output.""" 94 """Run rendering script with given arguments and return its output."""
95 cmd = ['flrender'] + list(args) 95 cmd = ['flrender'] + list(args)
96 96
97 test_in = None 97 test_in = kw.pop('test_in', None)
98 if 'test_in' in kw.keys():
99 test_in = kw.pop('test_in')
Vasily Kuznetsov 2018/07/13 17:41:04 I just found that you can replace this and the two
Tudor Avram 2018/07/16 09:17:11 Done.
100 if test_in is not None: 98 if test_in is not None:
101 test_in = test_in.encode('utf-8') 99 test_in = test_in.encode('utf-8')
102 100
103 proc = subprocess.Popen(cmd, stderr=subprocess.PIPE, 101 proc = subprocess.Popen(cmd, stderr=subprocess.PIPE,
104 stdout=subprocess.PIPE, stdin=subprocess.PIPE, 102 stdout=subprocess.PIPE, stdin=subprocess.PIPE,
105 **kw) 103 **kw)
106 stdout, stderr = proc.communicate(input=test_in) 104 stdout, stderr = proc.communicate(input=test_in)
107 return proc.returncode, stderr.decode('utf-8'), stdout.decode('utf-8') 105 return proc.returncode, stderr.decode('utf-8'), stdout.decode('utf-8')
108 106
109 107
110 @pytest.mark.parametrize('test_input, args', [ 108 @pytest.mark.parametrize('test_input, args', [
111 ('None', ("'simple.txt'", 'str(dstfile)')), 109 ('None', ["'simple.txt'", 'str(dstfile)']),
Vasily Kuznetsov 2018/07/13 17:41:04 We iterate over the inner tuple, so according to o
112 ('None', ("'simple.txt'",)), 110 ('None', ["'simple.txt'"]),
113 ("rootdir.join('simple.txt').read()", ()), 111 ("rootdir.join('simple.txt').read()", []),
114 ]) 112 ])
115 def test_render_no_includes(test_input, args, rootdir, dstfile): 113 def test_render_no_includes(test_input, args, rootdir, dstfile):
116 _locals = locals() 114 test_input = eval(test_input)
117 test_input = eval(test_input, _locals) 115 args = list(map(eval, args))
Vasily Kuznetsov 2018/07/13 17:41:04 But this eval doesn't need the _locals, right? It
Tudor Avram 2018/07/16 09:17:11 Done.
118 args = [eval(arg, _locals) for arg in args]
Vasily Kuznetsov 2018/07/13 17:41:04 It seems that if you use map(eval, args) instead o
Tudor Avram 2018/07/16 09:17:12 Done.
119
120 _, _, stdout = run_script(*args, cwd=str(rootdir), test_in=test_input) 116 _, _, stdout = run_script(*args, cwd=str(rootdir), test_in=test_input)
121 117
122 if len(args) > 1: 118 if len(args) > 1:
123 assert 'Ok' in dstfile.read() 119 output = dstfile.read()
124 else: 120 else:
125 assert 'Ok' in stdout 121 output = stdout
122
123 assert 'Ok' in output
124 assert '! Checksum:' in output
126 125
127 126
128 def test_render_unicode(rootdir, dstfile): 127 def test_render_unicode(rootdir, dstfile):
129 code, err, _ = run_script(str(rootdir.join('unicode.txt')), str(dstfile)) 128 code, err, _ = run_script(str(rootdir.join('unicode.txt')), str(dstfile))
130 assert '\u1234' in dstfile.read(mode='rb').decode('utf-8') 129 assert '\u1234' in dstfile.read(mode='rb').decode('utf-8')
131 130
132 131
133 def test_render_with_includes(rootdir, dstfile): 132 def test_render_with_includes(rootdir, dstfile):
134 run_script(str(rootdir.join('includer.txt')), str(dstfile), 133 run_script(str(rootdir.join('includer.txt')), str(dstfile),
135 '-i', 'inc=' + str(rootdir.join('inc'))) 134 '-i', 'inc=' + str(rootdir.join('inc')))
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 203
205 @pytest.mark.slowtest 204 @pytest.mark.slowtest
206 def test_failed_web_include(rootdir, dstfile, webserver_port): 205 def test_failed_web_include(rootdir, dstfile, webserver_port):
207 url = 'http://localhost:{}/missing.txt'.format(webserver_port) 206 url = 'http://localhost:{}/missing.txt'.format(webserver_port)
208 webinc = rootdir.join('webinc.txt') 207 webinc = rootdir.join('webinc.txt')
209 webinc.write('[Adblock]\n%include {}%'.format(url)) 208 webinc.write('[Adblock]\n%include {}%'.format(url))
210 code, err, _ = run_script(str(webinc), str(dstfile)) 209 code, err, _ = run_script(str(webinc), str(dstfile))
211 assert code == 1 210 assert code == 1
212 assert err.startswith( 211 assert err.startswith(
213 "HTTP 404 Not found: '{0}' when including '{0}'".format(url)) 212 "HTTP 404 Not found: '{0}' when including '{0}'".format(url))
LEFTRIGHT

Powered by Google App Engine
This is Rietveld