metadata: relax versioning info check if Chromium is the canonical repo of a dependency

If Chromium is the canonical repository, the version of the dependency
is essentially Chromium.

Change-Id: Ifcb80dbeee0d36bf71234f8f48423e8f7aa9dcf0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/5772151
Reviewed-by: Rachael Newitt <renewitt@google.com>
Commit-Queue: Jiewei Qian <qjw@chromium.org>
changes/51/5772151/2
Jiewei Qian 7 months ago committed by LUCI CQ
parent f52dad9747
commit 75932421da

@ -218,16 +218,11 @@ class DependencyMetadata:
reason=f"Required field '{field_name}' is missing.")
results.append(error)
# At least one of the fields Version, Date or Revision must be
# provided.
version_value = self._metadata.get(known_fields.VERSION)
date_value = self._metadata.get(known_fields.DATE)
revision_value = self._metadata.get(known_fields.REVISION)
if ((not version_value
or version_util.version_is_unknown(version_value)) and
(not date_value or version_util.version_is_unknown(date_value))
and (not revision_value
or version_util.version_is_unknown(revision_value))):
# If the repository is hosted somewhere (i.e. Chromium isn't the
# canonical repositroy of the dependency), at least one of the fields
# Version, Date or Revision must be provided.
if (not (self.is_canonical or self.version or self.date
or self.revision)):
versioning_fields = [
known_fields.VERSION, known_fields.DATE, known_fields.REVISION
]

@ -325,6 +325,27 @@ class DependencyValidationTest(unittest.TestCase):
)
self.assertEqual(len(results), 0)
def test_dep_is_canonical_skips_versioning_requirement(self):
"""
Check versioning information isn't required for dependencies where
Chromium is the canonical repository.
"""
dependency = dm.DependencyMetadata()
dependency.add_entry(known_fields.NAME.get_name(),
"Test valid metadata")
dependency.add_entry(known_fields.URL.get_name(),
"This is the canonical repository")
dependency.add_entry(known_fields.VERSION.get_name(), "N/A")
dependency.add_entry(known_fields.LICENSE.get_name(), "Public Domain")
dependency.add_entry(known_fields.LICENSE_FILE.get_name(), "LICENSE")
dependency.add_entry(known_fields.SECURITY_CRITICAL.get_name(), "yes")
dependency.add_entry(known_fields.SHIPPED.get_name(), "yes")
results = dependency.validate(
source_file_dir=os.path.join(_THIS_DIR, "data"),
repo_root_dir=_THIS_DIR,
)
self.assertEqual(len(results), 0)
if __name__ == "__main__":
unittest.main()

Loading…
Cancel
Save