// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "components/update_client/test_utils.h"

#include <string_view>

#include "base/base_paths.h"
#include "base/files/file_path.h"
#include "base/files/file_util.h"
#include "base/path_service.h"
#include "testing/gtest/include/gtest/gtest.h"

namespace update_client {

base::FilePath GetTestFilePath(std::string_view file_name) {
  base::FilePath test_data_root;
  base::PathService::Get(base::DIR_SRC_TEST_DATA_ROOT, &test_data_root);
  return test_data_root.Append(FILE_PATH_LITERAL("components"))
      .Append(FILE_PATH_LITERAL("test"))
      .Append(FILE_PATH_LITERAL("data"))
      .Append(FILE_PATH_LITERAL("update_client"))
      .AppendUTF8(file_name);
}

base::FilePath DuplicateTestFile(const base::FilePath& temp_path,
                                 std::string_view file) {
  base::FilePath dest_path = temp_path.AppendUTF8(file);
  EXPECT_TRUE(base::CreateDirectory(dest_path.DirName()));
  EXPECT_TRUE(base::PathExists(GetTestFilePath(file)));
  EXPECT_TRUE(base::CopyFile(GetTestFilePath(file), dest_path));
  return dest_path;
}

}  // namespace update_client
