| # 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" |
| |
| result_file = "$target_gen_dir/$target_name.verified" |
| |
| inputs = [ |
| invoker.first, |
| invoker.second, |
| ] |
| |
| outputs = [ result_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 += [ |
| "--result-file", |
| rebase_path(result_file, root_build_dir), |
| rebase_path(invoker.first, root_build_dir), |
| rebase_path(invoker.second, root_build_dir), |
| ] |
| } |
| } |