~abentley/bzrtools/bzrtools.dev

« back to all changes in this revision

Viewing changes to zap.py

  • Committer: Aaron Bentley
  • Date: 2006-06-23 18:19:25 UTC
  • Revision ID: abentley@panoramicfeedback.com-20060623181925-ae3ff20c166cab49
Clean up style

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
from shutil import rmtree
2
2
 
3
 
from bzrlib import (
4
 
    bzrdir,
5
 
    revision as _mod_revision,
6
 
    )
7
3
from bzrlib.branch import Branch
8
4
from bzrlib.errors import NoWorkingTree, NotLocalUrl, NotBranchError
 
5
from bzrlib.delta import compare_trees
9
6
from bzrlib.workingtree import WorkingTree
10
7
 
11
 
from errors import (NotCheckout, UncommittedCheckout, ParentMissingRevisions,
12
 
                    NoParent)
13
 
 
14
 
 
15
 
def zap(path, remove_branch=False, allow_modified=False):
 
8
from errors import NotCheckout, UncommittedCheckout, ParentMissingRevisions
 
9
 
 
10
 
 
11
def zap(path, remove_branch=False):
16
12
    try:
17
 
        wt = bzrdir.BzrDir.open(path).open_workingtree(path,
18
 
                                                       recommend_upgrade=False)
 
13
        wt = WorkingTree.open(path)
19
14
    except (NoWorkingTree, NotBranchError):
20
15
        raise NotCheckout(path)
21
16
    tree_base = wt.bzrdir.transport.base
23
18
    branch_base = branch.bzrdir.transport.base
24
19
    if tree_base == branch_base:
25
20
        raise NotCheckout(path)
26
 
    if not allow_modified:
27
 
        delta = wt.changes_from(wt.basis_tree(), want_unchanged=False)
28
 
        if delta.has_changed():
29
 
            raise UncommittedCheckout()
 
21
    delta = compare_trees(wt.basis_tree(), wt, want_unchanged=False)
 
22
    if delta.has_changed():
 
23
        raise UncommittedCheckout()
30
24
    if remove_branch:
31
 
        parent_loc = branch.get_parent()
32
 
        if parent_loc is None:
33
 
            raise NoParent()
34
 
        parent = Branch.open(parent_loc)
35
 
        last_revision = _mod_revision.ensure_null(parent.last_revision())
36
 
        p_ancestry = parent.repository.get_ancestry(last_revision)
37
 
        if (last_revision != _mod_revision.NULL_REVISION and
38
 
            branch.last_revision() not in p_ancestry):
 
25
        parent = Branch.open(branch.get_parent())
 
26
        p_ancestry = parent.repository.get_ancestry(parent.last_revision())
 
27
        if branch.last_revision() not in p_ancestry:
39
28
            raise ParentMissingRevisions(branch.get_parent())
40
29
    rmtree(path)
41
30
    if remove_branch:
49
38
def test_suite():
50
39
    import os
51
40
    from unittest import makeSuite
52
 
 
 
41
    
53
42
    from bzrlib.bzrdir import BzrDir, BzrDirMetaFormat1
54
43
    from bzrlib.branch import BranchReferenceFormat
55
44
    from bzrlib.tests import TestCaseInTempDir
63
52
            BranchReferenceFormat().initialize(checkout, wt.branch)
64
53
            return checkout.create_workingtree()
65
54
 
66
 
        def make_checkout2(self):
67
 
            wt = self.make_checkout()
68
 
            wt2 = wt.branch.bzrdir.sprout('source2').open_workingtree()
69
 
            os.mkdir('checkout2')
70
 
            checkout = BzrDirMetaFormat1().initialize('checkout2')
71
 
            BranchReferenceFormat().initialize(checkout, wt2.branch)
72
 
            return checkout.create_workingtree()
73
 
 
74
55
        def test_is_checkout(self):
75
56
            self.assertRaises(NotCheckout, zap, '.')
76
57
            wt = BzrDir.create_standalone_workingtree('.')
84
65
            self.assertIs(True, os.path.exists('source'))
85
66
 
86
67
        def test_zap_branch(self):
87
 
            self.make_checkout2()
 
68
            self.make_checkout()
88
69
            base = WorkingTree.open('checkout').branch.base
89
70
            self.assertIs(True, os.path.exists('checkout'))
90
 
            self.assertRaises(NoParent, zap, 'checkout', remove_branch=True)
91
 
            self.assertIs(True, os.path.exists('checkout'))
92
 
            self.assertIs(True, os.path.exists('source'))
93
 
            zap('checkout2', remove_branch=True)
94
 
            self.assertIs(False, os.path.exists('checkout2'))
95
 
            self.assertIs(False, os.path.exists('source2'))
 
71
            zap('checkout', remove_branch=True)
 
72
            self.assertIs(False, os.path.exists('checkout'))
 
73
            self.assertIs(False, os.path.exists('source'))
96
74
 
97
75
        def test_checks_modified(self):
98
76
            checkout = self.make_checkout()
102
80
            checkout.commit('commit changes to branch')
103
81
            zap('checkout')
104
82
 
105
 
        def test_allow_modified(self):
106
 
            checkout = self.make_checkout()
107
 
            os.mkdir('checkout/foo')
108
 
            checkout.add('foo')
109
 
            self.assertRaises(UncommittedCheckout, zap, 'checkout')
110
 
            zap('checkout', allow_modified=True)
111
 
 
112
83
    return makeSuite(TestZap)