branch_utility_test.py revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
1#!/usr/bin/env python
2# Copyright (c) 2012 The Chromium Authors. All rights reserved.
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
5
6import os
7import sys
8import unittest
9
10from branch_utility import BranchUtility, ChannelInfo
11from fake_url_fetcher import FakeUrlFetcher
12from object_store_creator import ObjectStoreCreator
13from test_util import Server2Path
14
15
16class BranchUtilityTest(unittest.TestCase):
17
18  def setUp(self):
19    self._branch_util = BranchUtility(
20        os.path.join('branch_utility', 'first.json'),
21        os.path.join('branch_utility', 'second.json'),
22        FakeUrlFetcher(Server2Path('test_data')),
23        ObjectStoreCreator.ForTest())
24
25  def testSplitChannelNameFromPath(self):
26    self.assertEquals(('stable', 'extensions/stuff.html'),
27                      self._branch_util.SplitChannelNameFromPath(
28                      'stable/extensions/stuff.html'))
29    self.assertEquals(('dev', 'extensions/stuff.html'),
30                      self._branch_util.SplitChannelNameFromPath(
31                      'dev/extensions/stuff.html'))
32    self.assertEquals(('beta', 'extensions/stuff.html'),
33                      self._branch_util.SplitChannelNameFromPath(
34                      'beta/extensions/stuff.html'))
35    self.assertEquals(('master', 'extensions/stuff.html'),
36                      self._branch_util.SplitChannelNameFromPath(
37                      'master/extensions/stuff.html'))
38    self.assertEquals((None, 'extensions/stuff.html'),
39                      self._branch_util.SplitChannelNameFromPath(
40                      'extensions/stuff.html'))
41    self.assertEquals((None, 'apps/stuff.html'),
42                      self._branch_util.SplitChannelNameFromPath(
43                      'apps/stuff.html'))
44    self.assertEquals((None, 'extensions/dev/stuff.html'),
45                      self._branch_util.SplitChannelNameFromPath(
46                      'extensions/dev/stuff.html'))
47    self.assertEquals((None, 'stuff.html'),
48                      self._branch_util.SplitChannelNameFromPath(
49                      'stuff.html'))
50
51  def testNewestChannel(self):
52    self.assertEquals('master',
53        self._branch_util.NewestChannel(('master', 'dev', 'beta', 'stable')))
54    self.assertEquals('master',
55        self._branch_util.NewestChannel(('stable', 'beta', 'dev', 'master')))
56    self.assertEquals('dev',
57        self._branch_util.NewestChannel(('stable', 'beta', 'dev')))
58    self.assertEquals('dev',
59        self._branch_util.NewestChannel(('dev', 'beta', 'stable')))
60    self.assertEquals('beta',
61        self._branch_util.NewestChannel(('beta', 'stable')))
62    self.assertEquals('beta',
63        self._branch_util.NewestChannel(('stable', 'beta')))
64    self.assertEquals('stable', self._branch_util.NewestChannel(('stable',)))
65    self.assertEquals('beta', self._branch_util.NewestChannel(('beta',)))
66    self.assertEquals('dev', self._branch_util.NewestChannel(('dev',)))
67    self.assertEquals('master', self._branch_util.NewestChannel(('master',)))
68
69  def testNewer(self):
70    oldest_stable_info = ChannelInfo('stable', '963', 17)
71    older_stable_info = ChannelInfo('stable', '1025', 18)
72    old_stable_info = ChannelInfo('stable', '1084', 19)
73    sort_of_old_stable_info = ChannelInfo('stable', '1500', 28)
74    stable_info = ChannelInfo('stable', '1547', 29)
75    beta_info = ChannelInfo('beta', '1599', 30)
76    dev_info = ChannelInfo('dev', '1612', 31)
77    master_info = ChannelInfo('master', 'master', 'master')
78
79    self.assertEquals(older_stable_info,
80                      self._branch_util.Newer(oldest_stable_info))
81    self.assertEquals(old_stable_info,
82                      self._branch_util.Newer(older_stable_info))
83    self.assertEquals(stable_info,
84                      self._branch_util.Newer(sort_of_old_stable_info))
85    self.assertEquals(beta_info, self._branch_util.Newer(stable_info))
86    self.assertEquals(dev_info, self._branch_util.Newer(beta_info))
87    self.assertEquals(master_info, self._branch_util.Newer(dev_info))
88    # Test the upper limit.
89    self.assertEquals(None, self._branch_util.Newer(master_info))
90
91
92  def testOlder(self):
93    master_info = ChannelInfo('master', 'master', 'master')
94    dev_info = ChannelInfo('dev', '1612', 31)
95    beta_info = ChannelInfo('beta', '1599', 30)
96    stable_info = ChannelInfo('stable', '1547', 29)
97    old_stable_info = ChannelInfo('stable', '1500', 28)
98    older_stable_info = ChannelInfo('stable', '1453', 27)
99    oldest_stable_info = ChannelInfo('stable', '396', 5)
100
101    self.assertEquals(dev_info, self._branch_util.Older(master_info))
102    self.assertEquals(beta_info, self._branch_util.Older(dev_info))
103    self.assertEquals(stable_info, self._branch_util.Older(beta_info))
104    self.assertEquals(old_stable_info, self._branch_util.Older(stable_info))
105    self.assertEquals(older_stable_info,
106                      self._branch_util.Older(old_stable_info))
107    # Test the lower limit.
108    self.assertEquals(None, self._branch_util.Older(oldest_stable_info))
109
110  def testGetChannelInfo(self):
111    master_info = ChannelInfo('master', 'master', 'master')
112    self.assertEquals(master_info, self._branch_util.GetChannelInfo('master'))
113
114    dev_info = ChannelInfo('dev', '1612', 31)
115    self.assertEquals(dev_info, self._branch_util.GetChannelInfo('dev'))
116
117    beta_info = ChannelInfo('beta', '1599', 30)
118    self.assertEquals(beta_info, self._branch_util.GetChannelInfo('beta'))
119
120    stable_info = ChannelInfo('stable', '1547', 29)
121    self.assertEquals(stable_info, self._branch_util.GetChannelInfo('stable'))
122
123  def testGetLatestVersionNumber(self):
124    self.assertEquals(37, self._branch_util.GetLatestVersionNumber())
125
126  def testGetBranchForVersion(self):
127    self.assertEquals('1500',
128        self._branch_util.GetBranchForVersion(28))
129    self.assertEquals('1453',
130        self._branch_util.GetBranchForVersion(27))
131    self.assertEquals('1410',
132        self._branch_util.GetBranchForVersion(26))
133    self.assertEquals('1364',
134        self._branch_util.GetBranchForVersion(25))
135    self.assertEquals('1312',
136        self._branch_util.GetBranchForVersion(24))
137    self.assertEquals('1271',
138        self._branch_util.GetBranchForVersion(23))
139    self.assertEquals('1229',
140        self._branch_util.GetBranchForVersion(22))
141    self.assertEquals('1180',
142        self._branch_util.GetBranchForVersion(21))
143    self.assertEquals('1132',
144        self._branch_util.GetBranchForVersion(20))
145    self.assertEquals('1084',
146        self._branch_util.GetBranchForVersion(19))
147    self.assertEquals('1025',
148        self._branch_util.GetBranchForVersion(18))
149    self.assertEquals('963',
150        self._branch_util.GetBranchForVersion(17))
151    self.assertEquals('696',
152        self._branch_util.GetBranchForVersion(11))
153    self.assertEquals('396',
154        self._branch_util.GetBranchForVersion(5))
155
156  def testGetChannelForVersion(self):
157    self.assertEquals('master',
158        self._branch_util.GetChannelForVersion('master'))
159    self.assertEquals('dev',
160        self._branch_util.GetChannelForVersion(31))
161    self.assertEquals('beta',
162        self._branch_util.GetChannelForVersion(30))
163    self.assertEquals('stable',
164        self._branch_util.GetChannelForVersion(26))
165    self.assertEquals('stable',
166        self._branch_util.GetChannelForVersion(22))
167    self.assertEquals('stable',
168        self._branch_util.GetChannelForVersion(18))
169    self.assertEquals('stable',
170        self._branch_util.GetChannelForVersion(14))
171    self.assertEquals(None,
172        self._branch_util.GetChannelForVersion(32))
173    self.assertEquals(None,
174        self._branch_util.GetChannelForVersion(42))
175
176
177if __name__ == '__main__':
178  unittest.main()
179