Handle case of deleted mojom file in Dart bindings presubmit script R=jamesr@chromium.org Review URL: https://codereview.chromium.org/1765013002 .
diff --git a/mojo/dart/tools/presubmit/check_mojom_dart.py b/mojo/dart/tools/presubmit/check_mojom_dart.py index d89f3f9..af5c04a 100755 --- a/mojo/dart/tools/presubmit/check_mojom_dart.py +++ b/mojo/dart/tools/presubmit/check_mojom_dart.py
@@ -310,11 +310,19 @@ return global_check(packages, latest_mtime) updated_mojom_dart_files = [] + deleted_mojom_files = [] + deleted_mojom_dart_files = [] packages_with_failures = [] check_failure = False # Check for updated .mojom without updated .mojom.dart for mojom_file in mojoms: + if not os.path.exists(mojom_file): + # File no longer exists. We cannot calculate the path of the associated + # .mojom.dart file, skip. + deleted_mojom_files.append(os.path.relpath(mojom_file, start=SRC_DIR)) + continue + try: mojom = _load_mojom(mojom_file) except Exception: @@ -339,10 +347,14 @@ if mojom_mtime > mojom_dart_mtime: check_failure = True - print("Package %s has old %s" % (package, mojom_dart_path)) + if mojom_dart_mtime == 0: + print("Package %s is missing %s" % (package, mojom_dart_path)) + else: + print("Package %s has old %s" % (package, mojom_dart_path)) if not (package in packages_with_failures): packages_with_failures.append(package) continue + # Remember that this .mojom.dart file was updated after the .mojom file. # This list is used to verify that all updated .mojom.dart files were # updated because their source .mojom file changed. @@ -361,15 +373,22 @@ package = path_relative_to_packages.split(os.sep)[0] # Path relative to src. mojom_dart_path = os.path.relpath(mojom_dart_file, start=SRC_DIR) + # If mojom_dart_path is not in updated_mojom_dart_files, a .mojom.dart # file was updated without updating the related .mojom file. if not (mojom_dart_path in updated_mojom_dart_files): + if not os.path.exists(mojom_dart_file): + deleted_mojom_dart_files.append(mojom_dart_path) + continue check_failure = True print("Package %s has new %s without updating source .mojom file." % (package, mojom_dart_path)) if not (package in packages_with_failures): packages_with_failures.append(package) + # TODO(johnmccutchan): Fuzzy detection of a deleted .mojom file without a + # deleted .mojom.dart file. + for package in packages_with_failures: _print_regenerate_message(package)