| OLD | NEW |
| 1 #!/usr/bin/python | 1 #!/usr/bin/python |
| 2 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. | 2 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 import copy | 6 import copy |
| 7 import mox | 7 import mox |
| 8 import os | 8 import os |
| 9 import prebuilt | 9 import prebuilt |
| 10 import shutil | 10 import shutil |
| 11 import tempfile | 11 import tempfile |
| 12 import unittest | 12 import unittest |
| 13 import urllib |
| 13 from chromite.lib import cros_build_lib | 14 from chromite.lib import cros_build_lib |
| 14 from chromite.lib.binpkg import PackageIndex | 15 from chromite.lib.binpkg import PackageIndex |
| 15 | 16 |
| 16 PUBLIC_PACKAGES = [{'CPV': 'public1', 'SHA1': '1'}, | 17 PUBLIC_PACKAGES = [{'CPV': 'gtk+/public1', 'SHA1': '1'}, |
| 17 {'CPV': 'public2', 'SHA1': '2', 'PATH': 'foo.tgz'}] | 18 {'CPV': 'gtk+/public2', 'SHA1': '2', |
| 19 'PATH': 'gtk%2B/foo.tgz'}] |
| 18 PRIVATE_PACKAGES = [{'CPV': 'private', 'SHA1': '3'}] | 20 PRIVATE_PACKAGES = [{'CPV': 'private', 'SHA1': '3'}] |
| 19 | 21 |
| 20 | 22 |
| 21 def SimplePackageIndex(header=True, packages=True): | 23 def SimplePackageIndex(header=True, packages=True): |
| 22 pkgindex = PackageIndex() | 24 pkgindex = PackageIndex() |
| 23 if header: | 25 if header: |
| 24 pkgindex.header['URI'] = 'http://www.example.com' | 26 pkgindex.header['URI'] = 'http://www.example.com' |
| 25 if packages: | 27 if packages: |
| 26 pkgindex.packages = copy.deepcopy(PUBLIC_PACKAGES + PRIVATE_PACKAGES) | 28 pkgindex.packages = copy.deepcopy(PUBLIC_PACKAGES + PRIVATE_PACKAGES) |
| 27 return pkgindex | 29 return pkgindex |
| (...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 210 pkgindex = SimplePackageIndex(packages=False) | 212 pkgindex = SimplePackageIndex(packages=False) |
| 211 db = {} | 213 db = {} |
| 212 pkgindex._PopulateDuplicateDB(db) | 214 pkgindex._PopulateDuplicateDB(db) |
| 213 self.assertEqual(db, {}) | 215 self.assertEqual(db, {}) |
| 214 | 216 |
| 215 def testNormalIndex(self): | 217 def testNormalIndex(self): |
| 216 pkgindex = SimplePackageIndex() | 218 pkgindex = SimplePackageIndex() |
| 217 db = {} | 219 db = {} |
| 218 pkgindex._PopulateDuplicateDB(db) | 220 pkgindex._PopulateDuplicateDB(db) |
| 219 self.assertEqual(len(db), 3) | 221 self.assertEqual(len(db), 3) |
| 220 self.assertEqual(db['1'], 'http://www.example.com/public1.tbz2') | 222 self.assertEqual(db['1'], 'http://www.example.com/gtk%2B/public1.tbz2') |
| 221 self.assertEqual(db['2'], 'http://www.example.com/foo.tgz') | 223 self.assertEqual(db['2'], 'http://www.example.com/gtk%2B/foo.tgz') |
| 222 self.assertEqual(db['3'], 'http://www.example.com/private.tbz2') | 224 self.assertEqual(db['3'], 'http://www.example.com/private.tbz2') |
| 223 | 225 |
| 224 def testMissingSHA1(self): | 226 def testMissingSHA1(self): |
| 225 db = {} | 227 db = {} |
| 226 pkgindex = SimplePackageIndex() | 228 pkgindex = SimplePackageIndex() |
| 227 del pkgindex.packages[0]['SHA1'] | 229 del pkgindex.packages[0]['SHA1'] |
| 228 pkgindex._PopulateDuplicateDB(db) | 230 pkgindex._PopulateDuplicateDB(db) |
| 229 self.assertEqual(len(db), 2) | 231 self.assertEqual(len(db), 2) |
| 230 self.assertEqual(db['2'], 'http://www.example.com/foo.tgz') | 232 self.assertEqual(db['2'], 'http://www.example.com/gtk%2B/foo.tgz') |
| 231 self.assertEqual(db['3'], 'http://www.example.com/private.tbz2') | 233 self.assertEqual(db['3'], 'http://www.example.com/private.tbz2') |
| 232 | 234 |
| 233 def testFailedPopulate(self): | 235 def testFailedPopulate(self): |
| 234 db = {} | 236 db = {} |
| 235 pkgindex = SimplePackageIndex(header=False) | 237 pkgindex = SimplePackageIndex(header=False) |
| 236 self.assertRaises(KeyError, pkgindex._PopulateDuplicateDB, db) | 238 self.assertRaises(KeyError, pkgindex._PopulateDuplicateDB, db) |
| 237 pkgindex = SimplePackageIndex() | 239 pkgindex = SimplePackageIndex() |
| 238 del pkgindex.packages[0]['CPV'] | 240 del pkgindex.packages[0]['CPV'] |
| 239 self.assertRaises(KeyError, pkgindex._PopulateDuplicateDB, db) | 241 self.assertRaises(KeyError, pkgindex._PopulateDuplicateDB, db) |
| 240 | 242 |
| (...skipping 15 matching lines...) Expand all Loading... |
| 256 uploads = pkgindex.ResolveDuplicateUploads([empty]) | 258 uploads = pkgindex.ResolveDuplicateUploads([empty]) |
| 257 self.assertEqual(uploads, pristine.packages) | 259 self.assertEqual(uploads, pristine.packages) |
| 258 self.assertEqual(pkgindex.packages, pristine.packages) | 260 self.assertEqual(pkgindex.packages, pristine.packages) |
| 259 self.assertEqual(pkgindex.modified, False) | 261 self.assertEqual(pkgindex.modified, False) |
| 260 | 262 |
| 261 def testDuplicates(self): | 263 def testDuplicates(self): |
| 262 pkgindex = SimplePackageIndex() | 264 pkgindex = SimplePackageIndex() |
| 263 dup_pkgindex = SimplePackageIndex() | 265 dup_pkgindex = SimplePackageIndex() |
| 264 expected_pkgindex = SimplePackageIndex() | 266 expected_pkgindex = SimplePackageIndex() |
| 265 for pkg in expected_pkgindex.packages: | 267 for pkg in expected_pkgindex.packages: |
| 266 pkg.setdefault('PATH', pkg['CPV'] + '.tbz2') | 268 pkg.setdefault('PATH', urllib.quote(pkg['CPV'] + '.tbz2')) |
| 267 uploads = pkgindex.ResolveDuplicateUploads([dup_pkgindex]) | 269 uploads = pkgindex.ResolveDuplicateUploads([dup_pkgindex]) |
| 268 self.assertEqual(pkgindex.packages, expected_pkgindex.packages) | 270 self.assertEqual(pkgindex.packages, expected_pkgindex.packages) |
| 269 | 271 |
| 270 def testMissingSHA1(self): | 272 def testMissingSHA1(self): |
| 271 db = {} | 273 db = {} |
| 272 pkgindex = SimplePackageIndex() | 274 pkgindex = SimplePackageIndex() |
| 273 dup_pkgindex = SimplePackageIndex() | 275 dup_pkgindex = SimplePackageIndex() |
| 274 expected_pkgindex = SimplePackageIndex() | 276 expected_pkgindex = SimplePackageIndex() |
| 275 del pkgindex.packages[0]['SHA1'] | 277 del pkgindex.packages[0]['SHA1'] |
| 276 del expected_pkgindex.packages[0]['SHA1'] | 278 del expected_pkgindex.packages[0]['SHA1'] |
| (...skipping 16 matching lines...) Expand all Loading... |
| 293 pkgindex = SimplePackageIndex() | 295 pkgindex = SimplePackageIndex() |
| 294 self.mox.StubOutWithMock(pkgindex, 'Write') | 296 self.mox.StubOutWithMock(pkgindex, 'Write') |
| 295 pkgindex.Write(mox.IgnoreArg()) | 297 pkgindex.Write(mox.IgnoreArg()) |
| 296 self.mox.ReplayAll() | 298 self.mox.ReplayAll() |
| 297 f = pkgindex.WriteToNamedTemporaryFile() | 299 f = pkgindex.WriteToNamedTemporaryFile() |
| 298 self.assertEqual(f.read(), '') | 300 self.assertEqual(f.read(), '') |
| 299 | 301 |
| 300 | 302 |
| 301 if __name__ == '__main__': | 303 if __name__ == '__main__': |
| 302 unittest.main() | 304 unittest.main() |
| OLD | NEW |