| Index: patchconv/tests/test_rietveld_to_git.py | 
| =================================================================== | 
| new file mode 100644 | 
| --- /dev/null | 
| +++ b/patchconv/tests/test_rietveld_to_git.py | 
| @@ -0,0 +1,84 @@ | 
| +# This file is part of Adblock Plus <https://adblockplus.org/>, | 
| +# Copyright (C) 2006-2016 Eyeo GmbH | 
| +# | 
| +# Adblock Plus is free software: you can redistribute it and/or modify | 
| +# it under the terms of the GNU General Public License version 3 as | 
| +# published by the Free Software Foundation. | 
| +# | 
| +# Adblock Plus is distributed in the hope that it will be useful, | 
| +# but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
| +# GNU General Public License for more details. | 
| +# | 
| +# You should have received a copy of the GNU General Public License | 
| +# along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>. | 
| + | 
| +from __future__ import print_function, unicode_literals | 
| + | 
| +import os | 
| +import subprocess | 
| +try: | 
| +    from StringIO import StringIO | 
| +except: | 
| +    from io import StringIO | 
| + | 
| +import mock | 
| +import pytest | 
| + | 
| +import patchconv | 
| + | 
| +TEST_DIR = os.path.dirname(__file__) | 
| + | 
| + | 
| +def get_test_cases(): | 
| +    for filename in os.listdir(TEST_DIR): | 
| +        if filename.endswith('.txt'): | 
| +            yield filename | 
| + | 
| + | 
| +@pytest.fixture(params=list(get_test_cases())) | 
| +def patch_data(request): | 
| +    data = {'input': [], 'expect': []} | 
| +    current = [] | 
| +    with open(os.path.join(TEST_DIR, request.param)) as file: | 
| +        for line in file: | 
| +            print(line, end='') | 
| +            if line.startswith('INPUT'): | 
| +                current = data['input'] | 
| +            elif line.startswith('EXPECT'): | 
| +                current = data['expect'] | 
| +            elif not line.startswith('#'): | 
| +                if line.startswith('    '): | 
| +                    current.append(line[4:]) | 
| +                else: | 
| +                    current.append('') | 
| +    return data | 
| + | 
| + | 
| +def test_convert(patch_data): | 
| +    got = list(patchconv.rietveld_to_git(patch_data['input'])) | 
| +    print('GOT') | 
| +    for line in got: | 
| +        print('    ' + line, end='') | 
| +    assert got == patch_data['expect'] | 
| + | 
| + | 
| +def test_script(): | 
| +    process = subprocess.Popen( | 
| +        ['patchconv'], stdin=subprocess.PIPE, stdout=subprocess.PIPE | 
| +    ) | 
| +    in_patch = '''Index: README.txt | 
| +=================================================================== | 
| +--- a/README.txt | 
| +''' | 
| +    expect = '''diff --git a/README.txt b/README.txt | 
| +--- a/README.txt | 
| +''' | 
| +    out, err = process.communicate(input=in_patch.encode('ascii')) | 
| +    assert out == expect.encode('ascii') | 
| + | 
| +    stdin = StringIO(in_patch) | 
| +    stdout = StringIO() | 
| +    with mock.patch('sys.stdin', stdin), mock.patch('sys.stdout', stdout): | 
| +        patchconv.main() | 
| +    assert stdout.getvalue() == expect | 
|  |