~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_extract.py

  • Committer: NamNguyen
  • Date: 2007-08-01 06:14:14 UTC
  • mto: (2789.1.1 ianc-integration)
  • mto: This revision was merged to the branch mainline in revision 2790.
  • Revision ID: namnguyen-20070801061414-u0tzrfgcz6z604lz
``Branch.hooks`` now supports ``pre_commit`` hook.

The hook's signature is

::

  hook(local, master, old_revno, old_revid, new_revno, new_revid,
       deleted_paths, added_paths, future_revision_tree)

``deleted_paths`` and ``added_paths`` are lists of paths. Renamed paths are
recorded in both ``deleted_paths`` and ``added_paths`` (i.e. deleted then
added).

``future_revision_tree`` is obtained from ``CommitBuilder.revision_tree``
to save hooks from getting it from the branch again.

For example, hooks can get a file:

::

  for path in added_paths:
      id = future_revision_tree.path2id(path)
      if future_revision_tree.kind(id) == 'file':
          file = future_revision_tree.get_file(id)
          ...

or export a tree and do ``make check`` or similar

::

  import bzrlib.export
  bzrlib.export.export(future_revision_tree, 'tmp_space')


If the commit is to be rejected, hooks should raise an ``Exception``.

Show diffs side-by-side

added added

removed removed

Lines of Context:
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
from bzrlib import (
18
18
    branch,
23
23
 
24
24
 
25
25
class TestExtract(TestCaseWithTransport):
26
 
 
 
26
    
27
27
    def test_extract(self):
28
28
        self.build_tree(['a/', 'a/b/', 'a/b/c', 'a/d'])
29
 
        wt = self.make_branch_and_tree('a', format='rich-root-pack')
 
29
        wt = self.make_branch_and_tree('a')
30
30
        wt.add(['b', 'b/c', 'd'], ['b-id', 'c-id', 'd-id'])
31
31
        wt.commit('added files')
32
32
        b_wt = wt.extract('b-id')
36
36
        self.assertRaises(errors.BzrError, wt.id2path, 'b-id')
37
37
        self.assertEqual(b_wt.basedir, wt.abspath('b'))
38
38
        self.assertEqual(wt.get_parent_ids(), b_wt.get_parent_ids())
39
 
        self.assertEqual(wt.branch.last_revision(),
 
39
        self.assertEqual(wt.branch.last_revision(), 
40
40
                         b_wt.branch.last_revision())
41
41
 
42
42
    def extract_in_checkout(self, a_branch):
47
47
        return wt.extract('b-id')
48
48
 
49
49
    def test_extract_in_checkout(self):
50
 
        a_branch = self.make_branch('branch', format='rich-root-pack')
 
50
        a_branch = self.make_branch('branch')
51
51
        self.extract_in_checkout(a_branch)
52
52
        b_branch = branch.Branch.open('branch/b')
53
53
        b_branch_ref = branch.Branch.open('a/b')
54
54
        self.assertEqual(b_branch.base, b_branch_ref.base)
55
55
 
56
56
    def test_extract_in_deep_checkout(self):
57
 
        a_branch = self.make_branch('branch', format='rich-root-pack')
 
57
        a_branch = self.make_branch('branch')
58
58
        self.build_tree(['a/', 'a/b/', 'a/b/c/', 'a/b/c/d/', 'a/b/c/d/e'])
59
59
        wt = a_branch.create_checkout('a', lightweight=True)
60
60
        wt.add(['b', 'b/c', 'b/c/d', 'b/c/d/e/'], ['b-id', 'c-id', 'd-id',