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
18
18
"""Tests for upgrades of various stacking situations."""
20
20
from bzrlib import (
26
25
from bzrlib.upgrade import upgrade
27
from bzrlib.tests.scenarios import load_tests_apply_scenarios
30
def upgrade_scenarios():
31
scenario_pairs = [ # old format, new format, model_change
32
# ('knit', 'rich-root', True),
33
('knit', '1.6', False),
34
# ('pack-0.92', '1.6', False),
35
('1.6', '1.6.1-rich-root', True),
38
for (old_name, new_name, model_change) in scenario_pairs:
39
name = old_name + ', ' + new_name
40
scenarios.append((name,
41
dict(scenario_old_format=old_name,
42
scenario_new_format=new_name,
43
scenario_model_change=model_change)))
47
load_tests = load_tests_apply_scenarios
50
28
class TestStackUpgrade(tests.TestCaseWithTransport):
51
29
# TODO: This should possibly be repeated for all stacking repositories,
52
30
# pairwise by rich/non-rich format; should possibly also try other kinds
53
31
# of upgrades like knit->pack. -- mbp 20080804
55
scenarios = upgrade_scenarios()
57
33
def test_stack_upgrade(self):
58
34
"""Correct checks when stacked-on repository is upgraded.
60
We initially stack on a repo with the same rich root support,
61
we then upgrade it and should fail, we then upgrade the overlaid
36
We initially stack on a repo with the same rich root support,
37
we then upgrade it and should fail, we then upgrade the overlaid
64
40
base = self.make_branch_and_tree('base',
80
56
self.assertRaises(errors.IncompatibleRepositories,
81
57
stacked.open_branch)
83
check.check_dwim('stacked', False, True, True)
59
stacked.open_branch().check()
84
60
stacked = bzrdir.BzrDir.open('stacked')
85
61
# but we can upgrade the stacked repository
86
62
upgrade('stacked', new_format)
88
64
stacked = bzrdir.BzrDir.open('stacked')
90
check.check_dwim('stacked', False, True, True)
65
stacked.open_branch().check()
68
def load_tests(basic_tests, module, test_loader):
69
"""Generate dynamic scenario tests.
71
Called by the bzrlib test framework.
73
scenario_pairs = [ # old format, new format, model_change
74
# ('knit', 'rich-root', True),
75
('knit', '1.6', False),
76
# ('pack-0.92', '1.6', False),
77
('1.6', '1.6.1-rich-root', True),
80
for (old_name, new_name, model_change) in scenario_pairs:
81
name = old_name + ', ' + new_name
82
scenarios.append((name,
83
dict(scenario_old_format=old_name,
84
scenario_new_format=new_name,
85
scenario_model_change=model_change)))
86
adapter = tests.TestScenarioApplier()
87
adapter.scenarios = scenarios
88
suite = tests.TestSuite()
89
tests.adapt_tests(basic_tests, adapter, suite)