def _compare_artifact_name_patterns()

in tools/migration/ctoolchain_comparator_lib.py [0:0]


def _compare_artifact_name_patterns(artifact_name_patterns_before,
                                    artifact_name_patterns_after):
  """Compares two "CToolchain.ArtifactNamePattern" lists."""
  category_to_values_before = {}
  category_to_values_after = {}
  for name_pattern in artifact_name_patterns_before:
    category_to_values_before[name_pattern.category_name] = (
        name_pattern.prefix, name_pattern.extension)
  for name_pattern in artifact_name_patterns_after:
    category_to_values_after[name_pattern.category_name] = (
        name_pattern.prefix, name_pattern.extension)

  category_names_before = set(category_to_values_before.keys())
  category_names_after = set(category_to_values_after.keys())

  before_after_diff = category_names_before - category_names_after
  after_before_diff = category_names_after - category_names_before

  diff_string = "Difference in 'artifact_name_pattern' field:"
  found_difference = False
  if before_after_diff:
    if not found_difference:
      print(diff_string)  # pylint: disable=superfluous-parens
      found_difference = True
    print(("* List before change contains entries for the following categories "
           "that the list after the change doesn't:\n%s") % _array_to_string(
               before_after_diff, ordered=True))
  if after_before_diff:
    if not found_difference:
      print(diff_string)  # pylint: disable=superfluous-parens
      found_difference = True
    print(("* List after change contains entries for the following categories "
           "that the list before the change doesn't:\n%s") % _array_to_string(
               after_before_diff, ordered=True))

  for category in category_to_values_before:
    value_before = category_to_values_before[category]
    value_after = category_to_values_after.get(category, None)
    if value_after and value_after != value_before:
      if not found_difference:
        print(diff_string)  # pylint: disable=superfluous-parens
        found_difference = True
      print(("* Value for category '%s' differs before and after the change:\n"
             "Value before change:\tprefix:'%s'\textension:'%s'\n"
             "Value after change:\tprefix:'%s'\textension:'%s'") %
            (category, value_before[0], value_before[1], value_after[0],
             value_after[1]))
  if found_difference:
    print("")  # pylint: disable=superfluous-parens
  return found_difference