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

#import <Foundation/Foundation.h>

#import "testing/gtest/ios_enable_coverage.h"

#if !defined(NDEBUG) && BUILDFLAG(IOS_ENABLE_COVERAGE) && \
    TARGET_IPHONE_SIMULATOR
extern "C" void __llvm_profile_set_filename(const char* name);
#endif

namespace coverage_util {

void ConfigureCoverageReportPath() {
// Targets won't build on real devices with BUILDFLAG(IOS_ENABLE_COVERAGE)
// because of llvm library linking issue for arm64 architecture.
#if !defined(NDEBUG) && BUILDFLAG(IOS_ENABLE_COVERAGE) && \
    TARGET_IPHONE_SIMULATOR
  static dispatch_once_t once_token;
  dispatch_once(&once_token, ^{
    // Writes the profraw file to the simulator shared resources directory,
    // where the app has write rights, and will be preserved after app is
    // killed.
    NSString* shared_resources_path =
        NSProcessInfo.processInfo
            .environment[@"SIMULATOR_SHARED_RESOURCES_DIRECTORY"];
    // UUID ensures that there won't be a conflict when multiple apps are
    // launched in one test suite in EG2. %m enables on-line profile merging.
    // %c helps preserve coverage data at crash.
    NSString* file_name = [NSString
        stringWithFormat:@"%@-%%m-%%c.profraw", NSUUID.UUID.UUIDString];
    NSString* file_path =
        [shared_resources_path stringByAppendingPathComponent:file_name];

    // For documentation, see:
    // http://clang.llvm.org/docs/SourceBasedCodeCoverage.html
    __llvm_profile_set_filename(
        [file_path cStringUsingEncoding:NSUTF8StringEncoding]);

    // Print the path for easier retrieval.
    NSLog(@"Coverage data at %@.", file_path);
  });
#endif  // !defined(NDEBUG) && BUILDFLAG(IOS_ENABLE_COVERAGE) &&
        // TARGET_IPHONE_SIMULATOR
}

}  // namespace coverage_util
