~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_tree.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2007-10-24 12:49:17 UTC
  • mfrom: (2935.1.1 ianc-integration)
  • Revision ID: pqm@pqm.ubuntu.com-20071024124917-xb75eckyxx6vkrlg
Makefile fixes - hooks.html generation & allow python to be overridden (Ian Clatworthy)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2006 by Canonical Ltd
 
1
# Copyright (C) 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
16
16
 
17
17
"""Tests for Tree and InterTree."""
18
18
 
 
19
from bzrlib import errors
19
20
from bzrlib.tests import TestCaseWithTransport
20
21
from bzrlib.tree import InterTree
21
22
 
62
63
    calls = []
63
64
 
64
65
    def compare(self, want_unchanged=False, specific_files=None,
65
 
        extra_trees=None, require_versioned=False):
 
66
        extra_trees=None, require_versioned=False, include_root=False,
 
67
        want_unversioned=False):
66
68
        self.calls.append(
67
69
            ('compare', self.source, self.target, want_unchanged,
68
 
             specific_files, extra_trees, require_versioned)
 
70
             specific_files, extra_trees, require_versioned, 
 
71
             include_root, want_unversioned)
69
72
            )
70
73
    
71
74
    @classmethod
79
82
        """This test tests the way Tree.compare() uses InterTree."""
80
83
        old_optimisers = InterTree._optimisers
81
84
        try:
82
 
            InterTree._optimisers = set()
 
85
            InterTree._optimisers = []
83
86
            RecordingOptimiser.calls = []
84
87
            InterTree.register_optimiser(RecordingOptimiser)
85
88
            tree = self.make_branch_and_tree('1')
88
91
            # trivial usage
89
92
            tree.changes_from(tree2)
90
93
            # pass in all optional arguments by position
91
 
            tree.changes_from(tree2, 'unchanged', 'specific', 'extra', 'require')
 
94
            tree.changes_from(tree2, 'unchanged', 'specific', 'extra', 
 
95
                              'require', True)
92
96
            # pass in all optional arguments by keyword
93
97
            tree.changes_from(tree2,
94
98
                specific_files='specific',
95
99
                want_unchanged='unchanged',
96
100
                extra_trees='extra',
97
101
                require_versioned='require',
 
102
                include_root=True,
 
103
                want_unversioned=True,
98
104
                )
99
105
        finally:
100
106
            InterTree._optimisers = old_optimisers
101
107
        self.assertEqual(
102
108
            [
103
 
             ('compare', tree2, tree, False, None, None, False),
104
 
             ('compare', tree2, tree, 'unchanged', 'specific', 'extra', 'require'),
105
 
             ('compare', tree2, tree, 'unchanged', 'specific', 'extra', 'require'),
 
109
             ('compare', tree2, tree, False, None, None, False, False, False),
 
110
             ('compare', tree2, tree, 'unchanged', 'specific', 'extra',
 
111
              'require', True, False),
 
112
             ('compare', tree2, tree, 'unchanged', 'specific', 'extra',
 
113
              'require', True, True),
106
114
            ], RecordingOptimiser.calls)
 
115
 
 
116
    def test_changes_from_with_root(self):
 
117
        """Ensure the include_root option does what's expected."""
 
118
        wt = self.make_branch_and_tree('.')
 
119
        delta = wt.changes_from(wt.basis_tree())
 
120
        self.assertEqual(len(delta.added), 0)
 
121
        delta = wt.changes_from(wt.basis_tree(), wt, include_root=True)
 
122
        self.assertEqual(len(delta.added), 1)
 
123
        self.assertEqual(delta.added[0][0], '')
 
124
 
 
125
    def test_changes_from_with_require_versioned(self):
 
126
        """Ensure the require_versioned option does what's expected."""
 
127
        wt = self.make_branch_and_tree('.')
 
128
        self.build_tree(['known_file', 'unknown_file'])
 
129
        wt.add('known_file')
 
130
 
 
131
        self.assertRaises(errors.PathsNotVersionedError,
 
132
            wt.changes_from, wt.basis_tree(), wt, specific_files=['known_file',
 
133
            'unknown_file'], require_versioned=True)
 
134
 
 
135
        # we need to pass a known file with an unknown file to get this to
 
136
        # fail when expected.
 
137
        delta = wt.changes_from(wt.basis_tree(), wt, 
 
138
            specific_files=['known_file', 'unknown_file'] ,
 
139
            require_versioned=False)
 
140
        self.assertEqual(len(delta.added), 1)