/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/selftest/testdiff.py

  • Committer: Martin Pool
  • Date: 2005-08-24 08:59:32 UTC
  • Revision ID: mbp@sourcefrog.net-20050824085932-c61f1f1f1c930e13
- Add a simple UIFactory 

  The idea of this is to let a client of bzrlib set some 
  policy about how output is displayed.

  In this revision all that's done is that progress bars
  are constructed by a policy established by the application
  rather than being randomly constructed in the library 
  or passed down the calls.  This avoids progress bars
  popping up while running the test suite and cleans up
  some code.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
from bzrlib.selftest import TestCase
 
2
from bzrlib.diff import internal_diff
 
3
from cStringIO import StringIO
 
4
def udiff_lines(old, new):
 
5
    output = StringIO()
 
6
    internal_diff('old', old, 'new', new, output)
 
7
    output.seek(0, 0)
 
8
    return output.readlines()
 
9
 
 
10
def check_patch(lines):
 
11
    assert len(lines) > 1, \
 
12
        "Not enough lines for a file header for patch:\n%s" % "".join(lines)
 
13
    assert lines[0].startswith ('---'), \
 
14
        'No orig line for patch:\n%s' % "".join(lines)
 
15
    assert lines[1].startswith ('+++'), \
 
16
        'No mod line for patch:\n%s' % "".join(lines)
 
17
    assert len(lines) > 2, \
 
18
        "No hunks for patch:\n%s" % "".join(lines)
 
19
    assert lines[2].startswith('@@'),\
 
20
        "No hunk header for patch:\n%s" % "".join(lines)
 
21
    assert '@@' in lines[2][2:], \
 
22
        "Unterminated hunk header for patch:\n%s" % "".join(lines)
 
23
 
 
24
class TestDiff(TestCase):
 
25
    def test_add_nl(self):
 
26
        """diff generates a valid diff for patches that add a newline"""
 
27
        lines = udiff_lines(['boo'], ['boo\n'])
 
28
        check_patch(lines)
 
29
        assert lines[4] == '\\ No newline at end of file\n', \
 
30
            "expected no-nl, got %r" % lines[4]
 
31
 
 
32
    def test_add_nl_2(self):
 
33
        """diff generates a valid diff for patches that change last line and
 
34
        add a newline.
 
35
        """
 
36
        lines = udiff_lines(['boo'], ['goo\n'])
 
37
        check_patch(lines)
 
38
        assert lines[4] == '\\ No newline at end of file\n', \
 
39
            "expected no-nl, got %r" % lines[4]
 
40
 
 
41
    def test_remove_nl(self):
 
42
        """diff generates a valid diff for patches that change last line and
 
43
        add a newline.
 
44
        """
 
45
        lines = udiff_lines(['boo\n'], ['boo'])
 
46
        check_patch(lines)
 
47
        assert lines[5] == '\\ No newline at end of file\n', \
 
48
            "expected no-nl, got %r" % lines[5]
 
49
 
 
50
TEST_CLASSES = [ TestDiff ]