blob: 71fa2a934c7c9afd9ac407211ff5e3703832af1e [file] [log] [blame]
# Copyright 2021 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# Defines a build-time test that verifies that two files have the same
# contents.
#
# Meant to be used during build migrations to ensure that two different
# actions are producing files with the same contents. Similar to the
# golden_file template, but with slightly different arguments and error
# messages to better convey why it's caused a build failure.
#
# Parameters
# first (required)
# Path to the first file.
#
# second (required)
# Path to the second file.
#
# display_text_diff_on_failure (optional)
# If true, this displays the results of a diff on the files to show what the
# difference is. Defaults to false.
#
# custom_error_message (optional)
# A custom error message to display to the user.
#
# Usual meanings (all invoker vars are forwarded)
# deps
# testonly
# etc.
template("verify_files_match") {
assert(defined(invoker.first), "first is a required parameter")
assert(defined(invoker.second), "second is a required parameter")
action(target_name) {
forward_variables_from(invoker,
"*",
[
"first",
"second",
])
if (!defined(display_text_diff_on_failure)) {
display_text_diff_on_failure = false
}
script = "//build/testing/verify_files_match.py"
stamp_file = "$target_gen_dir/$target_name.verified"
inputs = [
invoker.first,
invoker.second,
]
outputs = [ stamp_file ]
args = []
if (display_text_diff_on_failure) {
args += [ "--diff-on-failure" ]
}
if (defined(custom_error_message)) {
args += [ "--custom-error-message" ]
args += [ custom_error_message ]
}
args += [
"--stamp",
rebase_path(stamp_file, root_build_dir),
rebase_path(invoker.first, root_build_dir),
rebase_path(invoker.second, root_build_dir),
]
}
}