bzr branch
http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
| 
1558.15.2
by Aaron Bentley
 Implemented binary file handling for diff  | 
1  | 
from cStringIO import StringIO  | 
2  | 
||
3  | 
from bzrlib.diff import internal_diff  | 
|
4  | 
from bzrlib.errors import BinaryFile  | 
|
| 
1185.31.25
by John Arbash Meinel
 Renamed all of the tests from selftest/foo.py to tests/test_foo.py  | 
5  | 
from bzrlib.tests import TestCase  | 
| 
1558.15.2
by Aaron Bentley
 Implemented binary file handling for diff  | 
6  | 
|
7  | 
||
| 
1558.15.11
by Aaron Bentley
 Apply merge review suggestions  | 
8  | 
def udiff_lines(old, new, allow_binary=False):  | 
| 
974.1.6
by Aaron Bentley
 Added unit tests  | 
9  | 
output = StringIO()  | 
| 
1558.15.11
by Aaron Bentley
 Apply merge review suggestions  | 
10  | 
internal_diff('old', old, 'new', new, output, allow_binary)  | 
| 
974.1.6
by Aaron Bentley
 Added unit tests  | 
11  | 
output.seek(0, 0)  | 
12  | 
return output.readlines()  | 
|
13  | 
||
| 
1102
by Martin Pool
 - merge test refactoring from robertc  | 
14  | 
class TestDiff(TestCase):  | 
15  | 
def test_add_nl(self):  | 
|
16  | 
"""diff generates a valid diff for patches that add a newline"""  | 
|
| 
974.1.6
by Aaron Bentley
 Added unit tests  | 
17  | 
lines = udiff_lines(['boo'], ['boo\n'])  | 
| 
1185.16.145
by Martin Pool
 Remove all assert statements from test cases.  | 
18  | 
self.check_patch(lines)  | 
19  | 
self.assertEquals(lines[4], '\\ No newline at end of file\n')  | 
|
20  | 
            ## "expected no-nl, got %r" % lines[4]
 | 
|
| 
974.1.6
by Aaron Bentley
 Added unit tests  | 
21  | 
|
| 
1102
by Martin Pool
 - merge test refactoring from robertc  | 
22  | 
def test_add_nl_2(self):  | 
23  | 
"""diff generates a valid diff for patches that change last line and  | 
|
24  | 
        add a newline.
 | 
|
25  | 
        """
 | 
|
| 
974.1.6
by Aaron Bentley
 Added unit tests  | 
26  | 
lines = udiff_lines(['boo'], ['goo\n'])  | 
| 
1185.16.145
by Martin Pool
 Remove all assert statements from test cases.  | 
27  | 
self.check_patch(lines)  | 
28  | 
self.assertEquals(lines[4], '\\ No newline at end of file\n')  | 
|
29  | 
            ## "expected no-nl, got %r" % lines[4]
 | 
|
| 
974.1.6
by Aaron Bentley
 Added unit tests  | 
30  | 
|
| 
1102
by Martin Pool
 - merge test refactoring from robertc  | 
31  | 
def test_remove_nl(self):  | 
32  | 
"""diff generates a valid diff for patches that change last line and  | 
|
33  | 
        add a newline.
 | 
|
34  | 
        """
 | 
|
| 
974.1.6
by Aaron Bentley
 Added unit tests  | 
35  | 
lines = udiff_lines(['boo\n'], ['boo'])  | 
| 
1185.16.145
by Martin Pool
 Remove all assert statements from test cases.  | 
36  | 
self.check_patch(lines)  | 
37  | 
self.assertEquals(lines[5], '\\ No newline at end of file\n')  | 
|
38  | 
            ## "expected no-nl, got %r" % lines[5]
 | 
|
39  | 
||
40  | 
def check_patch(self, lines):  | 
|
41  | 
self.assert_(len(lines) > 1)  | 
|
42  | 
            ## "Not enough lines for a file header for patch:\n%s" % "".join(lines)
 | 
|
43  | 
self.assert_(lines[0].startswith ('---'))  | 
|
44  | 
            ## 'No orig line for patch:\n%s' % "".join(lines)
 | 
|
45  | 
self.assert_(lines[1].startswith ('+++'))  | 
|
46  | 
            ## 'No mod line for patch:\n%s' % "".join(lines)
 | 
|
47  | 
self.assert_(len(lines) > 2)  | 
|
48  | 
            ## "No hunks for patch:\n%s" % "".join(lines)
 | 
|
49  | 
self.assert_(lines[2].startswith('@@'))  | 
|
50  | 
            ## "No hunk header for patch:\n%s" % "".join(lines)
 | 
|
51  | 
self.assert_('@@' in lines[2][2:])  | 
|
52  | 
            ## "Unterminated hunk header for patch:\n%s" % "".join(lines)
 | 
|
53  | 
||
| 
1558.15.2
by Aaron Bentley
 Implemented binary file handling for diff  | 
54  | 
def test_binary_lines(self):  | 
55  | 
self.assertRaises(BinaryFile, udiff_lines, [1023 * 'a' + '\x00'], [])  | 
|
56  | 
self.assertRaises(BinaryFile, udiff_lines, [], [1023 * 'a' + '\x00'])  | 
|
| 
1558.15.11
by Aaron Bentley
 Apply merge review suggestions  | 
57  | 
udiff_lines([1023 * 'a' + '\x00'], [], allow_binary=True)  | 
58  | 
udiff_lines([], [1023 * 'a' + '\x00'], allow_binary=True)  |