function(check_file target filename)
  set(full_filename "${RunCMake_TEST_BINARY_DIR}/${target}_verify_interface_header_sets/${filename}")
  if(NOT EXISTS "${full_filename}")
    string(APPEND RunCMake_TEST_FAILED "File ${full_filename} should exist but does not\n")
    set(RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED}" PARENT_SCOPE)
    return()
  endif()

  if(filename MATCHES "^(.*)(\\.[a-z]+)$")
    set(header_filename "${CMAKE_MATCH_1}")
  endif()
  set(expected_contents "/* NOLINTNEXTLINE(misc-header-include-cycle,misc-include-cleaner) */\n#include <${header_filename}> /* IWYU pragma: associated */\n")
  file(READ "${full_filename}" actual_contents)

  if(NOT actual_contents STREQUAL expected_contents)
    string(REPLACE "\n" "\n  " expected_contents_formatted "${expected_contents}")
    string(REPLACE "\n" "\n  " actual_contents_formatted "${actual_contents}")
    string(APPEND RunCMake_TEST_FAILED "Expected contents of ${full_filename}:\n  ${expected_contents_formatted}\nActual contents:\n  ${actual_contents_formatted}\n")
    set(RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED}" PARENT_SCOPE)
    return()
  endif()
endfunction()

check_file(static a.h.c)
check_file(static dir/c.h.c)
check_file(static dir/cxx.h.cxx)

if(NOT RunCMake_GENERATOR STREQUAL "Xcode")
  check_file(config debug.h.c)
  if(RunCMake_GENERATOR_IS_MULTI_CONFIG)
    check_file(config release.h.c)
  endif()
endif()
