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 6 import os 7 import sys 8 import unittest 9 10 from branch_utility import BranchUtility, ChannelInfo 11 from fake_url_fetcher import FakeUrlFetcher 12 from object_store_creator import ObjectStoreCreator 13 from test_util import Server2Path 14 15 16 class 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 177 if __name__ == '__main__': 178 unittest.main() 179