~abentley/bzrtools/bzrtools.dev

« back to all changes in this revision

Viewing changes to tests/test_rspush.py

  • Committer: Aaron Bentley
  • Date: 2007-06-09 14:05:42 UTC
  • Revision ID: aaron.bentley@utoronto.ca-20070609140542-z4i71q3ubwmywno7
Don't squawk when bzrlib is the next dev version

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2007 Aaron Bentley
2
 
#
3
 
#    This program is free software; you can redistribute it and/or modify
4
 
#    it under the terms of the GNU General Public License as published by
5
 
#    the Free Software Foundation; either version 2 of the License, or
6
 
#    (at your option) any later version.
7
 
#
8
 
#    This program is distributed in the hope that it will be useful,
9
 
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
10
 
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
 
#    GNU General Public License for more details.
12
 
#
13
 
#    You should have received a copy of the GNU General Public License
14
 
#    along with this program; if not, write to the Free Software
15
 
#    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
 
 
17
 
 
18
 
import os
19
 
 
20
 
from bzrlib.bzrdir import BzrDir
21
 
from bzrlib.tests import TestCaseWithTransport, TestSkipped
22
 
 
23
 
from bzrlib.plugins.bzrtools.bzrtools import (
24
 
    history_subset,
25
 
    NoRsync,
26
 
    NotStandalone,
27
 
    rspush,
28
 
    rsync,
29
 
    RsyncNoFile,
30
 
)
31
 
 
32
 
 
33
 
class MockRSync(object):
34
 
 
35
 
    def __init__(self):
36
 
        self.calls = []
37
 
 
38
 
    def __call__(self, source, target, **kwargs):
39
 
        self.calls.append((source, target, kwargs))
40
 
        if target.endswith('revision-history'):
41
 
            output = open(target, 'wb')
42
 
            output.close()
43
 
 
44
 
 
45
 
class TestRSPush(TestCaseWithTransport):
46
 
 
47
 
    def test_rsync(self):
48
 
        cwd = os.getcwd()
49
 
        try:
50
 
            self.assertRaises(RsyncNoFile, rsync, "a", "b", silent=True)
51
 
        except NoRsync:
52
 
            raise TestSkipped('rsync not installed')
53
 
        self.assertRaises(RsyncNoFile, rsync, cwd + "/a", cwd + "/b",
54
 
                          excludes=("*.py",), silent=True)
55
 
        self.assertRaises(NoRsync, rsync, cwd + "/a", cwd + "/b",
56
 
                          excludes=("*.py",), silent=True,
57
 
                          rsync_name="rsyncc")
58
 
 
59
 
    def test_rspush_locking(self):
60
 
        tree = self.make_branch_and_tree('tree', format='dirstate-tags')
61
 
        tree.commit('some changes')
62
 
        mock_rsync = MockRSync()
63
 
        rspush(tree, 'example.org:foo', _rsync=mock_rsync)
64
 
        rspush(tree, 'example.org:foo', working_tree = False,
65
 
               _rsync=mock_rsync)
66
 
        tree2 = self.make_branch_and_tree('tree2',
67
 
                                          format='pack-0.92')
68
 
        rspush(tree2, 'example.org:foo', _rsync=mock_rsync)
69
 
 
70
 
    def test_refuse_lightweight_checkout(self):
71
 
        branch = self.make_branch('tree')
72
 
        checkout = branch.create_checkout('checkout', lightweight=True)
73
 
        checkout.commit('some changes')
74
 
        mock_rsync = MockRSync()
75
 
        self.assertRaises(NotStandalone, rspush, checkout, 'example.org:foo',
76
 
                          _rsync=mock_rsync)
77
 
 
78
 
    def test_refuse_checkout(self):
79
 
        branch = self.make_branch('tree')
80
 
        checkout = branch.create_checkout('checkout')
81
 
        checkout.commit('some changes')
82
 
        mock_rsync = MockRSync()
83
 
        self.assertRaises(NotStandalone, rspush, checkout, 'example.org:foo',
84
 
                          _rsync=mock_rsync)
85
 
 
86
 
    def test_refuse_shared(self):
87
 
        repo = self.make_repository('repo', shared=True)
88
 
        bzrdir = BzrDir.open('repo')
89
 
        bzrdir.create_branch()
90
 
        bzrdir.create_workingtree()
91
 
        tree = bzrdir.open_workingtree()
92
 
        tree.commit('some changes')
93
 
        mock_rsync = MockRSync()
94
 
        self.assertRaises(NotStandalone, rspush, tree, 'example.org:foo',
95
 
                          _rsync=mock_rsync)
96
 
 
97
 
    def do_history_subset(self, format):
98
 
        tree_a = self.make_branch_and_tree('tree_a', format=format)
99
 
        tree_a.lock_write()
100
 
        self.addCleanup(tree_a.unlock)
101
 
        tree_a.commit('foo')
102
 
        tree_b = tree_a.bzrdir.sprout('tree_b').open_workingtree()
103
 
        tree_a.commit('bar')
104
 
        try:
105
 
            self.assertTrue(history_subset('tree_b/', tree_a.branch))
106
 
        except NoRsync:
107
 
            raise TestSkipped('rsync not installed')
108
 
        self.assertFalse(history_subset('tree_a/', tree_b.branch))
109
 
 
110
 
    def do_history_subset_no_commits(self, format):
111
 
        tree_a = self.make_branch_and_tree('tree_a', format=format)
112
 
        tree_b = self.make_branch_and_tree('tree_b', format=format)
113
 
        try:
114
 
            self.assertTrue(history_subset('tree_b/', tree_a.branch))
115
 
        except NoRsync:
116
 
            raise TestSkipped('rsync not installed')
117
 
 
118
 
    def test_history_subset_dirstate(self):
119
 
        self.do_history_subset('dirstate')
120
 
 
121
 
    def test_history_subset_no_commits_dirstate(self):
122
 
        self.do_history_subset_no_commits('dirstate')
123
 
 
124
 
    def test_history_subset_pack(self):
125
 
        self.do_history_subset('pack-0.92')
126
 
 
127
 
    def test_history_subset_no_commits_pack(self):
128
 
        self.do_history_subset_no_commits('pack-0.92')