mirror of
https://github.com/flatcar/scripts.git
synced 2025-09-25 07:31:01 +02:00
Treat packages with missing SHA1 as not duplicated.
TBR=Needed to fix preflight build. BUG=chromium-os:5311 TEST=Remove SHA1 from one of the packages in the Packages file, make sure that prebuilt.py treats that as a duplicated package. Also run new unit tests. Also ran buildbot.py Change-Id: Ie35a7c818fd659bcc2296605ace850aee2a88448 Review URL: http://codereview.chromium.org/5370005
This commit is contained in:
parent
74f0f17ad8
commit
adcb314d9f
@ -51,7 +51,8 @@ class PackageIndex(object):
|
|||||||
|
|
||||||
uri = self.header['URI']
|
uri = self.header['URI']
|
||||||
for pkg in self.packages:
|
for pkg in self.packages:
|
||||||
cpv, sha1 = pkg['CPV'], pkg['SHA1']
|
cpv, sha1 = pkg['CPV'], pkg.get('SHA1')
|
||||||
|
if sha1:
|
||||||
path = pkg.get('PATH', cpv + '.tbz2')
|
path = pkg.get('PATH', cpv + '.tbz2')
|
||||||
db[sha1] = urlparse.urljoin(uri, path)
|
db[sha1] = urlparse.urljoin(uri, path)
|
||||||
|
|
||||||
@ -180,9 +181,9 @@ class PackageIndex(object):
|
|||||||
uploads = []
|
uploads = []
|
||||||
base_uri = self.header['URI']
|
base_uri = self.header['URI']
|
||||||
for pkg in self.packages:
|
for pkg in self.packages:
|
||||||
sha1 = pkg['SHA1']
|
sha1 = pkg.get('SHA1')
|
||||||
uri = db.get(sha1)
|
uri = db.get(sha1)
|
||||||
if uri and uri.startswith(base_uri):
|
if sha1 and uri and uri.startswith(base_uri):
|
||||||
pkg['PATH'] = uri[len(base_uri):].lstrip('/')
|
pkg['PATH'] = uri[len(base_uri):].lstrip('/')
|
||||||
else:
|
else:
|
||||||
uploads.append(pkg)
|
uploads.append(pkg)
|
||||||
|
@ -221,6 +221,15 @@ class TestPopulateDuplicateDB(unittest.TestCase):
|
|||||||
self.assertEqual(db['2'], 'http://www.example.com/foo.tgz')
|
self.assertEqual(db['2'], 'http://www.example.com/foo.tgz')
|
||||||
self.assertEqual(db['3'], 'http://www.example.com/private.tbz2')
|
self.assertEqual(db['3'], 'http://www.example.com/private.tbz2')
|
||||||
|
|
||||||
|
def testMissingSHA1(self):
|
||||||
|
db = {}
|
||||||
|
pkgindex = SimplePackageIndex()
|
||||||
|
del pkgindex.packages[0]['SHA1']
|
||||||
|
pkgindex._PopulateDuplicateDB(db)
|
||||||
|
self.assertEqual(len(db), 2)
|
||||||
|
self.assertEqual(db['2'], 'http://www.example.com/foo.tgz')
|
||||||
|
self.assertEqual(db['3'], 'http://www.example.com/private.tbz2')
|
||||||
|
|
||||||
def testFailedPopulate(self):
|
def testFailedPopulate(self):
|
||||||
db = {}
|
db = {}
|
||||||
pkgindex = SimplePackageIndex(header=False)
|
pkgindex = SimplePackageIndex(header=False)
|
||||||
@ -228,9 +237,6 @@ class TestPopulateDuplicateDB(unittest.TestCase):
|
|||||||
pkgindex = SimplePackageIndex()
|
pkgindex = SimplePackageIndex()
|
||||||
del pkgindex.packages[0]['CPV']
|
del pkgindex.packages[0]['CPV']
|
||||||
self.assertRaises(KeyError, pkgindex._PopulateDuplicateDB, db)
|
self.assertRaises(KeyError, pkgindex._PopulateDuplicateDB, db)
|
||||||
pkgindex = SimplePackageIndex()
|
|
||||||
del pkgindex.packages[0]['SHA1']
|
|
||||||
self.assertRaises(KeyError, pkgindex._PopulateDuplicateDB, db)
|
|
||||||
|
|
||||||
|
|
||||||
class TestResolveDuplicateUploads(unittest.TestCase):
|
class TestResolveDuplicateUploads(unittest.TestCase):
|
||||||
@ -261,6 +267,18 @@ class TestResolveDuplicateUploads(unittest.TestCase):
|
|||||||
uploads = pkgindex.ResolveDuplicateUploads([dup_pkgindex])
|
uploads = pkgindex.ResolveDuplicateUploads([dup_pkgindex])
|
||||||
self.assertEqual(pkgindex.packages, expected_pkgindex.packages)
|
self.assertEqual(pkgindex.packages, expected_pkgindex.packages)
|
||||||
|
|
||||||
|
def testMissingSHA1(self):
|
||||||
|
db = {}
|
||||||
|
pkgindex = SimplePackageIndex()
|
||||||
|
dup_pkgindex = SimplePackageIndex()
|
||||||
|
expected_pkgindex = SimplePackageIndex()
|
||||||
|
del pkgindex.packages[0]['SHA1']
|
||||||
|
del expected_pkgindex.packages[0]['SHA1']
|
||||||
|
for pkg in expected_pkgindex.packages[1:]:
|
||||||
|
pkg.setdefault('PATH', pkg['CPV'] + '.tbz2')
|
||||||
|
uploads = pkgindex.ResolveDuplicateUploads([dup_pkgindex])
|
||||||
|
self.assertEqual(pkgindex.packages, expected_pkgindex.packages)
|
||||||
|
|
||||||
|
|
||||||
class TestWritePackageIndex(unittest.TestCase):
|
class TestWritePackageIndex(unittest.TestCase):
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user