allow rpminfo.size to be null
This commit is contained in:
parent
4e86267186
commit
3c78edde1c
5 changed files with 12 additions and 8 deletions
|
|
@ -1205,8 +1205,8 @@ def get_rpm_ident(hdr):
|
|||
def get_rpm_ident_fields(hdr):
|
||||
"""Extract rpm header fields used for identification"""
|
||||
# these base fields should always exist
|
||||
fields = ('name', 'version', 'release', 'epoch', 'arch', 'buildtime', 'size')
|
||||
# size and buildtime aren't actually used for identification, but they are
|
||||
fields = ('name', 'version', 'release', 'epoch', 'arch', 'buildtime')
|
||||
# the buildtime field isn't actually used for identification, but is
|
||||
# required if the rpm is external
|
||||
data = get_header_fields(hdr, fields)
|
||||
# digest fields may vary
|
||||
|
|
|
|||
|
|
@ -7763,13 +7763,15 @@ def add_external_rpm(rpminfo, external_repo, strict=True):
|
|||
# [!] Calling function should perform access checks
|
||||
|
||||
# key required fields and types
|
||||
rpminfo = rpminfo.copy()
|
||||
rpminfo.setdefault('size', None)
|
||||
dtypes = (
|
||||
('name', str),
|
||||
('version', str),
|
||||
('release', str),
|
||||
('epoch', (int, type(None))),
|
||||
('arch', str),
|
||||
('size', int),
|
||||
('size', (int, type(None))),
|
||||
('buildtime', int))
|
||||
data = {}
|
||||
for field, allowed in dtypes:
|
||||
|
|
|
|||
|
|
@ -25,6 +25,8 @@ CREATE INDEX rpminfo_sigmd5 ON rpminfo(sigmd5);
|
|||
CREATE INDEX rpminfo_sha1header ON rpminfo(sha1header);
|
||||
CREATE INDEX rpminfo_sha256header ON rpminfo(sha256header);
|
||||
CREATE INDEX rpminfo_sha3_256header ON rpminfo(sha3_256header);
|
||||
-- rpminfo.size can be null
|
||||
ALTER TABLE rpminfo ALTER COLUMN size DROP NOT NULL;
|
||||
|
||||
|
||||
COMMIT;
|
||||
|
|
|
|||
|
|
@ -807,7 +807,7 @@ CREATE TABLE rpminfo (
|
|||
sha1header TEXT,
|
||||
sha256header TEXT,
|
||||
sha3_256header TEXT,
|
||||
size BIGINT NOT NULL,
|
||||
size BIGINT,
|
||||
buildtime BIGINT NOT NULL,
|
||||
metadata_only BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
extra TEXT,
|
||||
|
|
|
|||
|
|
@ -89,22 +89,22 @@ class TestAddExternalRPM(unittest.TestCase):
|
|||
|
||||
def test_add_ext_rpm_bad_data(self):
|
||||
rpminfo = self.rpminfo.copy()
|
||||
del rpminfo['size']
|
||||
del rpminfo['buildtime']
|
||||
|
||||
with self.assertRaises(koji.GenericError) as ex:
|
||||
kojihub.add_external_rpm(rpminfo, self.repo)
|
||||
self.assertEqual(f"size field missing: {rpminfo}", str(ex.exception))
|
||||
self.assertEqual(f"buildtime field missing: {rpminfo}", str(ex.exception))
|
||||
|
||||
self.get_rpm.assert_not_called()
|
||||
self.nextval.assert_not_called()
|
||||
self.assertEqual(len(self.inserts), 0)
|
||||
|
||||
rpminfo = self.rpminfo.copy()
|
||||
rpminfo['size'] = ['invalid type']
|
||||
rpminfo['buildtime'] = ['invalid type']
|
||||
|
||||
with self.assertRaises(koji.GenericError) as ex:
|
||||
kojihub.add_external_rpm(rpminfo, self.repo)
|
||||
self.assertEqual(f"Invalid value for size: {rpminfo['size']}",
|
||||
self.assertEqual(f"Invalid value for buildtime: {rpminfo['buildtime']}",
|
||||
str(ex.exception))
|
||||
|
||||
self.get_rpm.assert_not_called()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue