~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/blackbox/test_diff.py

  • Committer: John Arbash Meinel
  • Date: 2008-08-18 22:34:21 UTC
  • mto: (3606.5.6 1.6)
  • mto: This revision was merged to the branch mainline in revision 3641.
  • Revision ID: john@arbash-meinel.com-20080818223421-todjny24vj4faj4t
Add tests for the fetching behavior.

The proper parameter passed is 'unordered' add an assert for it, and
fix callers that were passing 'unsorted' instead.
Add tests that we make the right get_record_stream call based
on the value of _fetch_uses_deltas.
Fix the fetch request for signatures.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2006-2010 Canonical Ltd
 
1
# Copyright (C) 2005, 2006 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
12
12
#
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
 
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
 
17
17
 
18
18
"""Black-box tests for bzr diff.
21
21
import os
22
22
import re
23
23
 
24
 
from bzrlib import (
25
 
    tests,
26
 
    workingtree,
27
 
    )
28
 
from bzrlib.diff import (
29
 
    DiffTree,
30
 
    format_registry as diff_format_registry,
31
 
    )
 
24
import bzrlib
 
25
from bzrlib import workingtree
 
26
from bzrlib.branch import Branch
 
27
from bzrlib.tests import TestSkipped
 
28
from bzrlib.tests.blackbox import ExternalBase
32
29
 
33
30
 
34
31
def subst_dates(string):
37
34
                  'YYYY-MM-DD HH:MM:SS +ZZZZ', string)
38
35
 
39
36
 
40
 
class DiffBase(tests.TestCaseWithTransport):
 
37
class DiffBase(ExternalBase):
41
38
    """Base class with common setup method"""
42
39
 
43
40
    def make_example_branch(self):
129
126
        # Get an error from a file that does not exist at all
130
127
        # (Malone #3619)
131
128
        self.make_example_branch()
132
 
        out, err = self.run_bzr('diff does-not-exist', retcode=3,
133
 
            error_regexes=('not versioned.*does-not-exist',))
 
129
        out, err = self.run_bzr('diff does-not-exist', retcode=3)
 
130
        self.assertContainsRe(err, 'not versioned.*does-not-exist')
134
131
 
135
132
    def test_diff_illegal_revision_specifiers(self):
136
 
        out, err = self.run_bzr('diff -r 1..23..123', retcode=3,
137
 
            error_regexes=('one or two revision specifiers',))
138
 
 
139
 
    def test_diff_using_and_format(self):
140
 
        out, err = self.run_bzr('diff --format=default --using=mydi', retcode=3,
141
 
            error_regexes=('are mutually exclusive',))
142
 
 
143
 
    def test_diff_nonexistent_revision(self):
144
 
        out, err = self.run_bzr('diff -r 123', retcode=3,
145
 
            error_regexes=("Requested revision: '123' does not "
146
 
                "exist in branch:",))
147
 
 
148
 
    def test_diff_nonexistent_dotted_revision(self):
149
 
        out, err = self.run_bzr('diff -r 1.1', retcode=3)
150
 
        self.assertContainsRe(err,
151
 
            "Requested revision: '1.1' does not exist in branch:")
152
 
 
153
 
    def test_diff_nonexistent_dotted_revision_change(self):
154
 
        out, err = self.run_bzr('diff -c 1.1', retcode=3)
155
 
        self.assertContainsRe(err,
156
 
            "Requested revision: '1.1' does not exist in branch:")
 
133
        out, err = self.run_bzr('diff -r 1..23..123', retcode=3)
 
134
        self.assertContainsRe(err, 'one or two revision specifiers')
157
135
 
158
136
    def test_diff_unversioned(self):
159
137
        # Get an error when diffing a non-versioned file.
209
187
 
210
188
    def test_diff_branches(self):
211
189
        self.example_branches()
212
 
        # should open branch1 and diff against branch2,
 
190
        # should open branch1 and diff against branch2, 
213
191
        self.check_b2_vs_b1('diff -r branch:branch2 branch1')
214
192
        # Compare two working trees using various syntax forms
215
193
        self.check_b2_vs_b1('diff --old branch2 --new branch1')
305
283
        output = self.run_bzr('diff -r 1.. branch1', retcode=1)
306
284
        self.assertContainsRe(output[0], '\n\\-original line\n\\+repo line\n')
307
285
 
308
 
    def test_custom_format(self):
309
 
        class BooDiffTree(DiffTree):
310
 
 
311
 
            def show_diff(self, specific_files, extra_trees=None):
312
 
                self.to_file.write("BOO!\n")
313
 
                return super(BooDiffTree, self).show_diff(specific_files,
314
 
                    extra_trees)
315
 
 
316
 
        diff_format_registry.register("boo", BooDiffTree, 
317
 
            "Scary diff format")
318
 
        self.addCleanup(diff_format_registry.remove, "boo")
319
 
        self.make_example_branch()
320
 
        self.build_tree_contents([('hello', 'hello world!\n')])
321
 
        output = self.run_bzr('diff --format=boo', retcode=1)
322
 
        self.assertTrue("BOO!" in output[0])
323
 
 
324
286
 
325
287
class TestCheckoutDiff(TestDiff):
326
288
 
378
340
 
379
341
    def test_external_diff(self):
380
342
        """Test that we can spawn an external diff process"""
381
 
        self.disable_missing_extensions_warning()
382
343
        # We have to use run_bzr_subprocess, because we need to
383
344
        # test writing directly to stdout, (there was a bug in
384
345
        # subprocess.py that we had to workaround).
385
346
        # However, if 'diff' may not be available
386
347
        self.make_example_branch()
387
 
        # this will be automatically restored by the base bzr test class
388
 
        os.environ['BZR_PROGRESS_BAR'] = 'none'
389
 
        out, err = self.run_bzr_subprocess('diff -r 1 --diff-options -ub',
390
 
                                           universal_newlines=True,
391
 
                                           retcode=None)
 
348
        orig_progress = os.environ.get('BZR_PROGRESS_BAR')
 
349
        try:
 
350
            os.environ['BZR_PROGRESS_BAR'] = 'none'
 
351
            out, err = self.run_bzr_subprocess('diff -r 1 --diff-options -ub',
 
352
                                               universal_newlines=True,
 
353
                                               retcode=None)
 
354
        finally:
 
355
            if orig_progress is None:
 
356
                del os.environ['BZR_PROGRESS_BAR']
 
357
            else:
 
358
                os.environ['BZR_PROGRESS_BAR'] = orig_progress
 
359
            
392
360
        if 'Diff is not installed on this machine' in err:
393
 
            raise tests.TestSkipped("No external 'diff' is available")
 
361
            raise TestSkipped("No external 'diff' is available")
394
362
        self.assertEqual('', err)
395
363
        # We have to skip the stuff in the middle, because it depends
396
364
        # on time.time()